← Tutte le idee Studio e formazione

Trails

I collegamenti nascosti tra 100 libri, scoperti con l'AI

Cosa fa

Un progetto che usa l'AI per trovare idee e temi in comune tra 100 libri e mostrarli come percorsi di lettura.

Come guadagna

Presentato su Hacker News dal suo creatore, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: percorsi di lettura in abbonamento, affiliazione con le librerie.

Rendilo tuo

  • Percorsi di lettura per gruppi di lettura e biblioteche italiane.
  • Collegamenti tra i libri del programma di letteratura delle superiori.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Fili tra i Libri": trova con l'AI idee e temi in comune tra cento classici della letteratura di pubblico dominio e li mostra come percorsi di lettura: passi di libri diversi che parlano della stessa cosa. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con la mappa dei temi
2. Tema: i passi collegati da libri diversi, con il contesto
3. Libro: i suoi temi e i collegamenti con gli altri
4. Percorsi di lettura curati (es. "Il viaggio", "La colpa")
5. Cerca un'idea e trova i passi che ne parlano

Stile: letterario: sfondo carta avorio #FAF6EE, inchiostro #1C1917, rosso cinabro #B91C1C per i fili tra i libri, carattere "EB Garamond" per i passi e "Inter" per l'interfaccia. Nessuna immagine generica di stock.

Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.

2. Database, account e sicurezza

Collega il progetto a Supabase e attiva la registrazione con email e password.

Crea queste tabelle:
- "libri": titolo, autore, anno, fonte del testo (pubblico dominio)
- "passi": libro, capitolo, testo di circa 150 parole, embedding
- "temi": nome, descrizione, passi collegati

Regole di sicurezza obbligatorie:
- tutto è pubblico in lettura
- si usano solo testi di pubblico dominio, con la fonte (es. Liber Liber, Progetto Gutenberg)
- solo la redazione modifica temi e percorsi

Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.

3. Passi simili in libri diversi

I cento libri di pubblico dominio (classici italiani e traduzioni libere) vengono divisi in passi di circa 150 parole; per ognuno si calcola l'embedding con un servizio di embedding e si salva con pgvector.

Per trovare i collegamenti, per ogni passo si cercano i più simili ma di libri diversi (codice nei Dettagli tecnici). Claude legge i gruppi di passi simili e propone un nome per il tema e una frase che spiega il collegamento; la redazione rivede e pubblica.

La ricerca libera ("la nostalgia di casa") trasforma la frase in embedding e mostra i passi più vicini da tutti i libri.

4. Percorsi di lettura

I percorsi sono sequenze curate di 8–12 passi da libri diversi su un tema, con una breve introduzione e il link al testo completo di ogni libro.

Per scuole e gruppi di lettura: esportazione di un percorso in PDF con i passi e domande per la discussione. Il sito vive con le donazioni e un piccolo abbonamento sostenitori.

5. Pagamenti con Stripe

Aggiungi un abbonamento a 3 € al mese (sostenitore). Gratis l'utente ha: lettura di temi e percorsi libera per tutti, 5 ricerche libere al giorno. Con il piano Pro sblocca: ricerche illimitate, percorsi personali e PDF per scuole e gruppi di lettura.

A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.

Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.

6. Controlli specifici di questo progetto

Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Diritti: verifica che ogni libro sia davvero di pubblico dominio in Italia (autore morto da più di 70 anni) e anche le traduzioni usate.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Passi simili, ma di altri libri

Per un passo trova i 5 più simili per significato escludendo lo stesso libro: sono i "fili" tra libri diversi.

create extension if not exists vector;

create table passi (
  id bigint generated always as identity primary key,
  libro_id int not null,
  capitolo text,
  testo text not null,
  embedding vector(1024) not null
);
create index on passi using hnsw (embedding vector_cosine_ops);
alter table passi enable row level security;
create policy "passi pubblici" on passi for select using (true);

create function fili(passo bigint, quanti int default 5)
returns table (id bigint, libro_id int, testo text, somiglianza float)
language sql stable as $
  select p.id, p.libro_id, p.testo, 1 - (p.embedding <=> o.embedding) as somiglianza
  from passi o, passi p
  where o.id = passo and p.libro_id <> o.libro_id      -- solo altri libri
  order by p.embedding <=> o.embedding
  limit quanti;
$;

Dividere un libro in passi

Divide il testo in passi di circa 150 parole senza spezzare i paragrafi, per calcolare poi gli embedding.

export function inPassi(testo: string, paroleCirca = 150): string[] {
  const paragrafi = testo.split(/\n\s*\n/).map((p) => p.replace(/\s+/g, " ").trim()).filter(Boolean);
  const passi: string[] = [];
  let corrente: string[] = [];
  let conteggio = 0;

  for (const p of paragrafi) {
    const parole = p.split(" ").length;
    if (conteggio + parole > paroleCirca * 1.5 && corrente.length) {
      passi.push(corrente.join(" "));
      corrente = [];
      conteggio = 0;
    }
    corrente.push(p);
    conteggio += parole;
    if (conteggio >= paroleCirca) {
      passi.push(corrente.join(" "));
      corrente = [];
      conteggio = 0;
    }
  }
  if (corrente.length) passi.push(corrente.join(" "));
  return passi;
}

Pezzi comuni a tutti i progetti

Glossario

Embedding
Un testo trasformato in numeri, che permette di cercare per significato e non solo per parole uguali.
pgvector
L'estensione di Postgres che salva gli embedding e trova i testi più simili per significato.
Pubblico dominio
Opere i cui diritti sono scaduti: in Italia di solito 70 anni dopo la morte dell'autore.