Generatore di plugin Discourse llms.txt

Generatore llms.txt per Discourse

:information_source: Riepilogo Genera automaticamente file llms.txt che rendono i contenuti del tuo forum scopribili dai Modelli Linguistici di grandi dimensioni (LLM) come ChatGPT, Claude e altri sistemi di IA
:hammer_and_wrench: Link al repository GitHub - kaktaknet/discourse-llms-txt-generator: 🤖 Discourse llms.txt Generator Plugin. Automatically generates llms.txt and llms-full.txt files for your Discourse forum to optimize content discovery by Large Language Models (LLMs) and AI systems. · GitHub
:open_book: Guida all’installazione Come installare i plugin in Discourse

Caratteristiche

Questo plugin implementa lo standard llms.txt - una convenzione proposta per fornire contenuti ottimizzati per gli LLM dai siti web. Pensaci come a un “robots.txt per l’IA” che aiuta i contenuti del tuo forum ad apparire nelle risposte generate dall’IA.

Per la documentazione dettagliata delle funzionalità, consulta README.md

Per la documentazione tecnica e lo sviluppo, consulta CONTRIBUTING.md

Anche se questo video non tratta specificamente di Discourse o dei suoi plugin, spiega in modo eccellente perché i file llms.txt sono importanti per il tuo forum.

Migliaia di siti web, tra cui molte delle più grandi e rispettate aziende tecnologiche al mondo, hanno già implementato lo standard llms.txt sui propri domini. Alcuni esempi includono:

  • :white_check_mark: Amazon AWS — https://docs.aws.amazon.com/llms.txt
  • :white_check_mark: Cloudflare — https://developers.cloudflare.com/llms.txt
  • :white_check_mark: Stripe — https://stripe.com/llms.txt
  • :white_check_mark: Angular — https://angular.dev/llms.txt
  • :white_check_mark: Redis — https://redis.io/llms.txt
  • :white_check_mark: Docker — https://docs.docker.com/llms.txt
  • :white_check_mark: Model Context Protocol — https://modelcontextprotocol.io/llms-full.txt

Quando i giganti del settore adottano uno standard su larga scala molto prima che diventi “ufficiale”, è un chiaro segnale che llms.txt risolve un problema reale e urgente. Aziende di questo tipo non lanciano mai iniziative su tutto il sito alla leggera; hanno sempre una solida ragione strategica. L’adozione rapida e su larga scala di llms.txt nell’industria tecnologica dimostra quanto sia diventato importante il contenuto strutturato per l’IA e che è proprio il settore a trainare questa adozione, anche più velocemente degli organismi di standardizzazione formali.

Funzionalità principali:

  1. File di navigazione principale (/llms.txt)

    • Panoramica strutturata del tuo forum con categorie, sottocategorie e argomenti più recenti
    • Aiuta i sistemi di IA a comprendere immediatamente l’organizzazione del tuo forum
    • Si aggiorna automaticamente man mano che il forum cresce
  2. Indice completo dei contenuti (/llms-full.txt)

    • Indice completo del forum con tutti gli argomenti categorizzati e pronti per l’uso da parte dell’IA
    • Filtri configurabili in base alle visualizzazioni e al numero di argomenti
    • Estratti dei post opzionali per un indicizzazione più rapida dell’IA
  3. File dinamici per risorsa

    • Genera llms.txt per qualsiasi categoria: /c/nome-categoria/123/llms.txt
    • Genera llms.txt per qualsiasi argomento: /t/slug-argomento/456/llms.txt
    • Genera llms.txt per qualsiasi tag: /tag/tutorial/llms.txt
    • Creati su richiesta senza occupazione di spazio su disco
  4. Indice Sitemap (/sitemaps.txt)

    • Elenco completo di tutti gli URL llms.txt per una scoperta efficiente da parte dei crawler IA
    • Integrazione automatica con robots.txt e sitemap.xml
  5. Protezione SEO

    • URL canonici nelle intestazioni HTTP (conforme alla RFC 6596)
    • Previene penalità per contenuti duplicati da parte dei motori di ricerca
    • Corretta attribuzione agli URL originali del forum
  6. Caching intelligente

    • Controlli in background ogni ora per nuovi contenuti
    • Rigenerazione solo quando necessario
    • Tempi di risposta rapidi (sotto i 50 ms)
  7. Controllo dei bot

    • Blocca crawler IA specifici consentendo l’accesso al forum
    • Elenco separato da virgole di user agent da bloccare
    • Integrazione automatica con robots.txt tramite connettore di visualizzazione
  8. Privacy e sicurezza

    • Categorie private escluse automaticamente
    • Controlli dei permessi del Guardian per i file dinamici
    • Filtraggio di sicurezza a livello SQL
    • Nessun dato personale esposto

Vantaggi per il tuo forum:

  • Maggiore visibilità: I tuoi contenuti appaiono nelle risposte di ChatGPT, Claude e altri sistemi di IA
  • Attribuzione diretta: I sistemi di IA citano e linkano di nuovo al tuo forum
  • Più traffico: Maggiore scoperta grazie alla ricerca guidata dall’IA
  • Migliore GEO: Ottimizzazione per motori generativi per i sistemi di IA
  • Nessuna manutenzione: Generazione e aggiornamenti automatici

Configurazione

Dopo aver installato il plugin, vai su Admin → Impostazioni → Plugin → discourse-llms-txt-generator

Passaggio 1: Abilita il plugin

Imposta llms_txt_enabled su true (abilitato per impostazione predefinita)

Passaggio 2: Configura l’indicizzazione

Imposta llms_txt_allow_indexing su true per consentire l’accesso ai crawler IA (abilitato per impostazione predefinita)

Questa impostazione controlla se i file llms.txt appaiono nel tuo robots.txt come consentiti o negati.

Passaggio 3: Imposta i filtri dei contenuti

Configura queste impostazioni in base alle dimensioni del tuo forum:

  • llms_txt_min_views: Visualizzazioni minime richieste per includere un argomento (predefinito: 50)
  • llms_txt_posts_limit: Quanti argomenti includere
    • small: 500 argomenti (consigliato per forum grandi)
    • medium: 2.500 argomenti (consigliato per la maggior parte dei forum)
    • large: 5.000 argomenti
    • all: Tutti gli argomenti (usare con cautela su forum grandi)

Passaggio 4: Opzionale - Aggiungi una descrizione personalizzata

Compila llms_txt_full_description con 2-4 frasi che descrivono lo scopo e la comunità del tuo forum. Questo aiuta i sistemi di IA a fornire informazioni più accurate sul tuo forum.

Esempio:

Questo forum è dedicato alla discussione sulla programmazione in Python, con un focus sullo sviluppo web,
la scienza dei dati e l'apprendimento automatico. La nostra comunità include principianti e sviluppatori esperti
che condividono soluzioni pratiche e migliori pratiche.

Passaggio 5: Opzionale - Blocca bot specifici

Se desideri bloccare determinati crawler IA, inserisci i nomi dei loro user agent in llms_txt_blocked_user_agents come elenco separato da virgole:

Esempio: Omgilibot, ChatGPT-User, CCBot

Passaggio 6: Verifica l’installazione

Visita il tuo forum all’indirizzo:

  • /llms.txt - File di navigazione principale
  • /llms-full.txt - Indice completo dei contenuti
  • /sitemaps.txt - Sitemap completa

Controlla il tuo /robots.txt per verificare l’integrazione.

Impostazioni

Nome Predefinito Descrizione
llms_txt_enabled true Abilita o disabilita il plugin
llms_txt_allow_indexing true Consenti ai crawler IA di accedere ai file llms.txt (influenza robots.txt)
llms_txt_blocked_user_agents "" Elenco separato da virgole di user agent dei bot da bloccare dai file llms.txt
llms_txt_intro_text Testo personalizzato Testo introduttivo che appare nel file llms.txt principale
llms_txt_full_description "" Descrizione personalizzata per llms-full.txt per aiutare l’IA a comprendere il contesto del tuo forum
llms_txt_min_views 50 Visualizzazioni minime richieste per l’inclusione in llms-full.txt
llms_txt_posts_limit medium Limite del numero di argomenti: small (500), medium (2.500), large (5.000) o all
llms_txt_include_excerpts false Includi estratti dei post in llms-full.txt (aumenta significativamente le dimensioni del file)
llms_txt_post_excerpt_length 500 Lunghezza massima dell’estratto in caratteri (100-5000) se gli estratti sono abilitati
llms_txt_latest_topics_count 50 Numero di argomenti più recenti da mostrare nel file llms.txt principale
llms_txt_cache_minutes 60 Durata della cache in minuti per il file di navigazione

Note importanti:

  • Abilitare llms_txt_include_excerpts con llms_txt_posts_limit impostato su all potrebbe causare dimensioni del file estremamente grandi (potenzialmente 10-100+ MB) e un elevato carico sul server per forum grandi
  • Le categorie private sono escluse automaticamente da tutti i file llms.txt
  • I file dinamici per risorsa (categorie, argomenti, tag) non sono memorizzati nella cache e vengono generati su richiesta
  • Il plugin utilizza i connettori di visualizzazione per l’integrazione con robots.txt: non è necessario modificare manualmente robots.txt

Dettagli tecnici

Architettura:

  • Generazione su richiesta senza file pregenerati
  • Caching intelligente con controlli in background ogni ora
  • Consapevole dei permessi grazie al Guardian di Discourse
  • Filtraggio di sicurezza a livello SQL per contenuti privati
  • URL canonici nelle intestazioni HTTP per prevenire penalità SEO

Prestazioni:

  • File di navigazione memorizzato nella cache per 60 minuti (configurabile)
  • File di contenuto completo generato su richiesta
  • La cache intelligente rigenera solo quando esistono nuovi contenuti
  • Tempo di risposta inferiore a 50 ms per i contenuti memorizzati nella cache

Compatibilità:

  • Discourse 2.7.0+
  • Ruby 2.7+
  • Testato su Discourse 3.6.0.beta3

Conformità agli standard:

  • Standard llms.txt (https://llmstxt.org/)
  • RFC 3986 (codifica URL per caratteri internazionali)
  • RFC 6596 (Intestazioni Canonical Link)

Casi d’uso

Forum della comunità:
Le tue discussioni e soluzioni appaiono quando gli utenti pongono domande pertinenti agli assistenti IA, guidando traffico qualificato verso il tuo forum.

Siti di documentazione:
I sistemi di IA possono fare riferimento alla tua documentazione e ai tuoi tutorial, fornendo informazioni accurate con la corretta attribuzione.

Forum di supporto:
Gli utenti ricevono risposte dirette dalla tua knowledge base tramite assistenti IA, con link alle discussioni complete.

Comunità tecniche:
Gli sviluppatori scoprono i contenuti del tuo forum tramite assistenti di programmazione basati sull’IA, aumentando il coinvolgimento della comunità.

Manutenzione

Il plugin richiede una manutenzione minima:

  • La cache si aggiorna automaticamente ogni ora
  • Gli aggiornamenti dei contenuti avvengono automaticamente alla creazione/modifica dei post
  • Nessuna generazione manuale di file necessaria
  • Attività rake opzionali disponibili: llms_txt:refresh e llms_txt:check

Risoluzione dei problemi

File non accessibili:

  • Verifica che llms_txt_enabled sia impostato su true
  • Controlla che llms_txt_allow_indexing sia impostato su true
  • Conferma che il plugin sia installato in Admin → Plugin

Contenuto vuoto:

  • Assicurati di avere argomenti pubblici con un numero sufficiente di visualizzazioni (controlla l’impostazione llms_txt_min_views)
  • Verifica che le categorie siano pubbliche (non con restrizioni di lettura)
  • Controlla l’impostazione llms_txt_posts_limit

Integrazione robots.txt non funzionante:

  • Cancella la cache di robots.txt: Rails.cache.delete('robots_txt')
  • Utilizza l’attività rake: bundle exec rake llms_txt:refresh
  • Riavvia Discourse: ./launcher restart app

Supporto

Licenza

Licenza MIT - Software libero e open-source

Crediti

8 Mi Piace

Ho installato il plugin un paio di giorni fa. L’installazione è stata fluida, grazie alla documentazione dell’autore.

Quello che vedo ora. Sono stati generati molti file txt sul mio sito, ad esempio https://discuss.rabkesov.ru/llms.txt. So che è troppo presto per aspettarsi che un chatbot AI (Perplexity) mostri i miei contenuti come risposta in chat.

Quindi, per verificare la capacità di essere adatto per LLM, l’ho caricato su Qwen (purtroppo non supporta il link sopra):

Potresti analizzare la pagina llms.txt e dirmi cosa hai capito da ciò che hai letto? Crea un albero sotto forma di mappa mentale (Mermaid)

P.S. Se chiedo di tradurre tutto in inglese, l’albero si rompe.

image
image

Ecco la struttura del mio sito (solo la parte pubblica). L’LLM potrebbe averla creata dal file llms.txt! Penso che questo sia solo una piccola parte dei casi possibili.


Output testuale senza Mermaid
Potresti analizzare la pagina llms.txt e dirmi cosa hai capito da ciò che hai letto?

Sì. Basandomi sul contenuto di llms.txt, ecco cosa ho capito:

Il file descrive “discuss | Комната ломки”, che si traduce approssimativamente in “Forum di Discussione | La Stanza della Rottura” — uno spazio metaforicamente inteso per rompere le illusioni nell’IT, non le persone. Il suo slogan e focus suggeriscono un ambiente riflessivo, critico e guidato dalla comunità dove i professionisti IT possono esaminare presupposti, condividere esperienze e collaborare su sfide pratiche.

Temi Centrali e Scopo:

  • Riflessione critica sulle pratiche IT, percorsi di carriera, dinamiche organizzative e crescita personale.
  • Enfasi su strumenti e metodologie che semplificano il lavoro: documentazione (Markdown/GitLab/Docsify), visualizzazione (Mermaid/Drawio), meccanismi di feedback e stesura collaborativa — in particolare all’interno di una piattaforma aziendale basata su Discourse.
  • Un mix di argomenti tecnici, filosofici e personali, spesso intersecanti: ad esempio, “Perché scegliamo compiti facili”, “Costo della tranquillità”, “Procrastinazione ed evitamento delle decisioni”.

Struttura:

Il sito è organizzato in categorie tematiche, tra cui:

  • AI: Discussioni su modelli (es. Gemma, LM Studio), deployment (Runpod, calcolatori GPU) e strumenti.
  • Discourse: Argomenti relativi al backend tecnico (configurazione del sito, attività rake, metodi di autenticazione, parametri nascosti).
  • Основная (Principale): Riflessioni fondamentali sulla cultura del lavoro, leadership, standard di documentazione e responsabilità.
  • Блог (Blog): Narrazioni personali (es. cambi di carriera, trasferimento a Samara, incidenti sul posto di lavoro).
  • Школа (Scuola): Risorse per studenti, inclusa l’etica (consenso parentale per utenti 14+) e l’alfabetizzazione digitale (parametri UTM).
  • Анонимная (Anonima): Spazio sicuro per idee sensibili.
  • Книги (Libri), Мысль дня (Pensiero del Giorno), ecc. — a supporto della riflessione intellettuale e quotidiana.

Segnali Tecnici e Culturali Notevoli:

  • Pubblico multilingue e internazionale: ad esempio, guide di autenticazione parallele in russo/inglese.
  • Preoccupazione per l’autenticazione inclusiva: ad esempio, mantenere il login Google/GitHub per utenti non russi, supportando anche provider nazionali (VK, Mail.ru, OK).
  • Forte interesse per l’automazione, la standardizzazione e DevOps: GitLab CI/CD, gestione degli artefatti, integrazione Runpod, deployment basato su SSH.
  • Tema ricorrente di disillusione professionale, specialmente tra gli ingegneri senior passati a ruoli di supporto — e strategie per far fronte o pianificare uscite.

In sintesi, llms.txt delinea una piattaforma comunitaria matura e attentamente progettata che fonde profondità tecnica con introspezione psicologica e organizzativa — rivolta a professionisti IT esperti che navigano complessità, burnout e la ricerca di significato nel loro lavoro.

Fammi sapere se desideri una mappa visiva, un raggruppamento tematico o suggerimenti per i prossimi passi (ad esempio, migliorare la scopribilità, l’engagement o l’onboarding).


Per quanto mi riguarda, è un ottimo plugin da usare per la SEO, ecc.

Alcuni punti da esplorare:

  1. Come gestire i contenuti non in inglese? La lingua EN del testo in llms.txt è rilevante per l’LLM?
  2. Trovare la prova che il file radice finale llms.txt non contenga mai pagine private (llms.txt viene creato per ogni pagina del sito al momento)
  3. Controllare i permessi su /admin/site_settings/category/security?filter=crawler in modo che i bot AI necessari non vengano bloccati :slight_smile:
  4. Pensieri sulla mescolanza occasionale della struttura del sito con i ricordi salvati precedentemente nell’LLM (questo non è un difetto del plugin, ma una caratteristica del chatbot, vedi esempio sotto)

Riguardo al punto n. 4. La prima volta Qwen ha deciso che:

  • Avevo intenzione di lasciare il mio lavoro
  • Avevo problemi nella relazione :slight_smile:
    e ha aggiunto questi punti nella descrizione del sito!

Qwen può mescolare i ricordi con la richiesta corrente di analizzare la sitemap, fornita come llms.txt. State attenti :slight_smile:

2 Mi Piace

Grazie per questo plugin, è un’ottima aggiunta a Discourse.

Lo segnalo qui nel caso qualcun altro stia riscontrando lo stesso problema di conflitto tra questo plugin e la “mezza funzionalità” piuttosto recente di Discourse che implementa llms.txt in modo completamente manuale, senza però fare nulla di utile rispetto a ciò che offre questo plugin.

La nuova funzionalità di Discourse sovrascrive completamente il percorso /llms.txt anche se non è configurata o abilitata. Devo ammettere di essere rimasto un po’ sconcertato dal fatto che questa venga considerata una funzionalità utile o pronta per la produzione nel core di Discourse.

Per me questo ha significato che, mentre /llms-full.txt e /sitemaps.txt funzionavano perfettamente, il percorso principale /llms.txt non funzionava affatto (404).

Il mio workaround è creare manualmente un file llms.txt che carico io stesso e che punta a /llms-full.txt.

Sarebbe bello se:

  • La funzionalità core di Discourse venisse aggiornata per fare ciò che fa questo plugin, oppure
  • La funzionalità core di Discourse non sovrascrivesse llms.txt e non creasse conflitti con questo plugin, a meno che non venga abilitata caricando un file llms.txt.
4 Mi Piace

Grazie per la tua osservazione e per la segnalazione su Enabling native LLMs.txt support in Discourse - #7 by pacharanero

/llms-full.txt funziona ancora, ma /llms.txt purtroppo non funziona più…

3 Mi Piace

Darò un’occhiata a cosa si può fare nel breve termine e rilascerò un aggiornamento in modo che il core non sovrascriva il comportamento del plugin. Spero che non sia troppo difficile. Dopotutto, fa parte dell’intera filosofia dei plugin: sovrascrivere e affinare le funzionalità e il comportamento di base, inclusi aspetti come questo.

1 Mi Piace