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.