Générateur de plugins Discourse llms.txt 🤖

Générateur llms.txt pour Discourse

:information_source: Résumé Génère automatiquement des fichiers llms.txt qui rendent le contenu de votre forum découvrable par les grands modèles de langage (LLM) comme ChatGPT, Claude et d’autres systèmes d’IA
:hammer_and_wrench: Lien vers le dépôt 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: Guide d’installation Comment installer des plugins dans Discourse

Fonctionnalités

Ce plugin implémente la norme llms.txt — une convention proposée pour fournir aux sites web du contenu compatible avec les LLM. Pensez-y comme au “robots.txt pour l’IA”, qui aide votre contenu de forum à apparaître dans les réponses générées par l’IA.

Pour une documentation détaillée des fonctionnalités, consultez README.md

Pour la documentation technique et le développement, consultez CONTRIBUTING.md

Bien que cette vidéo ne concerne pas spécifiquement Discourse ni ses plugins, elle explique très bien pourquoi les fichiers llms.txt sont importants pour votre forum.

Des milliers de sites — y compris de nombreuses entreprises technologiques parmi les plus grandes et les plus respectées au monde — ont déjà mis en œuvre la norme llms.txt sur leurs propres domaines. Voici quelques exemples :

  • :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

Lorsque des géants de l’industrie adoptent une norme à grande échelle — bien avant qu’elle ne devienne « officielle » — c’est un signal clair que llms.txt répond à un problème réel et urgent. De telles entreprises ne lancent jamais des initiatives à l’échelle du site à la légère ; elles ont toujours une raison stratégique solide. L’adoption rapide et massive de llms.txt dans l’industrie technologique montre à quel point le contenu structuré pour l’IA est devenu important, et que c’est l’industrie elle-même qui conduit cette adoption — même plus rapidement que les organismes de normalisation officiels.

Fonctionnalités clés :

  1. Fichier de navigation principal (/llms.txt)

    • Aperçu structuré de votre forum avec catégories, sous-catégories et derniers sujets
    • Aide les systèmes d’IA à comprendre instantanément l’organisation de votre forum
    • Se met à jour automatiquement à mesure que votre forum s’étend
  2. Index complet du contenu (/llms-full.txt)

    • Index complet du forum avec tous les sujets classés et prêts à être consommés par l’IA
    • Filtrage configurable selon le nombre de vues et de sujets
    • Extraits de messages optionnels pour une indexation plus rapide par l’IA
  3. Fichiers dynamiques par ressource

    • Génération de llms.txt pour n’importe quelle catégorie : /c/nom-de-categorie/123/llms.txt
    • Génération de llms.txt pour n’importe quel sujet : /t/slug-sujet/456/llms.txt
    • Génération de llms.txt pour n’importe quel tag : /tag/tutoriel/llms.txt
    • Créés à la demande sans stockage physique
  4. Index des sitemaps (/sitemaps.txt)

    • Liste complète de toutes les URLs llms.txt pour une découverte efficace par les robots d’exploration IA
    • Intégration automatique avec robots.txt et sitemap.xml
  5. Protection SEO

    • URLs canoniques dans les en-têtes HTTP (conforme à la RFC 6596)
    • Évite les pénalités de contenu dupliqué de la part des moteurs de recherche
    • Attribution correcte aux URLs originales du forum
  6. Mise en cache intelligente

    • Vérifications en arrière-plan toutes les heures pour le nouveau contenu
    • Régénération uniquement si nécessaire
    • Temps de réponse rapides (moins de 50 ms)
  7. Contrôle des bots

    • Bloquez des robots d’exploration IA spécifiques tout en permettant l’accès au forum
    • Liste séparée par des virgules des user agents à bloquer
    • Intégration automatique de robots.txt via le connecteur de vue
  8. Confidentialité et sécurité

    • Catégories privées automatiquement exclues
    • Vérifications des permissions Guardian pour les fichiers dynamiques
    • Filtrage de sécurité au niveau SQL
    • Aucune donnée personnelle exposée

Avantages pour votre forum :

  • Visibilité accrue : Votre contenu apparaît dans les réponses de ChatGPT, Claude et d’autres IA
  • Attribution directe : Les systèmes d’IA citent et renvoient des liens vers votre forum
  • Plus de trafic : Découverte accrue grâce à la recherche pilotée par l’IA
  • Meilleur GEO : Optimisation pour les moteurs génératifs (Generative Engine Optimization) pour les systèmes d’IA
  • Aucune maintenance : Génération et mises à jour automatiques

Configuration

Après avoir installé le plugin, accédez à Admin → Paramètres → Plugins → discourse-llms-txt-generator

Étape 1 : Activer le plugin

Définissez llms_txt_enabled à true (activé par défaut)

Étape 2 : Configurer l’indexation

Définissez llms_txt_allow_indexing à true pour autoriser l’accès aux robots d’exploration IA (activé par défaut)

Ce paramètre contrôle si les fichiers llms.txt apparaissent dans votre robots.txt comme autorisés ou interdits.

Étape 3 : Définir les filtres de contenu

Configurez ces paramètres en fonction de la taille de votre forum :

  • llms_txt_min_views : Nombre minimum de vues par sujet pour l’inclusion (par défaut : 50)
  • llms_txt_posts_limit : Nombre de sujets à inclure
    • small : 500 sujets (recommandé pour les grands forums)
    • medium : 2 500 sujets (recommandé pour la plupart des forums)
    • large : 5 000 sujets
    • all : Tous les sujets (à utiliser avec prudence sur les grands forums)

Étape 4 : Optionnel — Ajouter une description personnalisée

Remplissez llms_txt_full_description avec 2 à 4 phrases décrivant l’objectif de votre forum et sa communauté. Cela aide les systèmes d’IA à fournir des informations plus précises sur votre forum.

Exemple :

Ce forum est dédié à la discussion sur la programmation Python, en mettant l'accent sur le développement web,
l'analyse de données et l'apprentissage automatique. Notre communauté comprend des débutants et des développeurs expérimentés
partageant des solutions pratiques et les meilleures pratiques.

Étape 5 : Optionnel — Bloquer des bots spécifiques

Si vous souhaitez bloquer certains robots d’exploration IA, saisissez leurs noms d’user agent dans llms_txt_blocked_user_agents sous forme de liste séparée par des virgules :

Exemple : Omgilibot, ChatGPT-User, CCBot

Étape 6 : Vérifier l’installation

Visitez votre forum à :

  • /llms.txt — Fichier de navigation principal
  • /llms-full.txt — Index complet du contenu
  • /sitemaps.txt — Sitemap complet

Vérifiez votre /robots.txt pour confirmer l’intégration.

Paramètres

Nom Valeur par défaut Description
llms_txt_enabled true Activer ou désactiver le plugin
llms_txt_allow_indexing true Autoriser les robots d’exploration IA à accéder aux fichiers llms.txt (affecte robots.txt)
llms_txt_blocked_user_agents "" Liste séparée par des virgules des user agents de bots à bloquer des fichiers llms.txt
llms_txt_intro_text Texte personnalisé Texte d’introduction qui apparaît dans le fichier llms.txt principal
llms_txt_full_description "" Description personnalisée pour llms-full.txt afin d’aider l’IA à comprendre le contexte de votre forum
llms_txt_min_views 50 Nombre minimum de vues par sujet requis pour l’inclusion dans llms-full.txt
llms_txt_posts_limit medium Limite de nombre de sujets : small (500), medium (2 500), large (5 000) ou all
llms_txt_include_excerpts false Inclure des extraits de messages dans llms-full.txt (augmente considérablement la taille du fichier)
llms_txt_post_excerpt_length 500 Longueur maximale des extraits en caractères (100-5000) si les extraits sont activés
llms_txt_latest_topics_count 50 Nombre de derniers sujets à afficher dans le fichier llms.txt principal
llms_txt_cache_minutes 60 Durée de mise en cache en minutes pour le fichier de navigation

Remarques importantes :

  • L’activation de llms_txt_include_excerpts avec llms_txt_posts_limit défini sur all peut entraîner des tailles de fichiers extrêmement grandes (potentiellement 10-100+ Mo) et une charge serveur élevée sur les grands forums
  • Les catégories privées sont automatiquement exclues de tous les fichiers llms.txt
  • Les fichiers dynamiques par ressource (catégories, sujets, tags) ne sont pas mis en cache et sont générés à la demande
  • Le plugin utilise des connecteurs de vue pour l’intégration de robots.txt — aucune modification manuelle de robots.txt n’est nécessaire

Détails techniques

Architecture :

  • Génération à la demande sans fichiers pré-générés
  • Mise en cache intelligente avec vérifications en arrière-plan toutes les heures
  • Prise en compte des permissions via Discourse Guardian
  • Filtrage de sécurité au niveau SQL pour le contenu privé
  • URLs canoniques dans les en-têtes HTTP pour éviter les pénalités SEO

Performance :

  • Fichier de navigation mis en cache pendant 60 minutes (configurable)
  • Fichier de contenu complet généré à la demande
  • Le cache intelligent ne régénère que lorsque de nouveau contenu existe
  • Temps de réponse inférieur à 50 ms pour le contenu mis en cache

Compatibilité :

  • Discourse 2.7.0+
  • Ruby 2.7+
  • Testé sur Discourse 3.6.0.beta3

Conformité aux normes :

  • Norme llms.txt (https://llmstxt.org/)
  • RFC 3986 (encodage URL pour les caractères internationaux)
  • RFC 6596 (en-têtes de liens canoniques)

Cas d’utilisation

Forums communautaires :
Vos discussions et solutions apparaissent lorsque les utilisateurs posent des questions pertinentes à des assistants IA, générant un trafic qualifié vers votre forum.

Sites de documentation :
Les systèmes d’IA peuvent référencer votre documentation et vos tutoriels, fournissant des informations précises avec une attribution appropriée.

Forums de support :
Les utilisateurs obtiennent des réponses directes à partir de votre base de connaissances via des assistants IA, avec des liens vers les discussions complètes.

Communautés techniques :
Les développeurs découvrent le contenu de votre forum grâce à des assistants de codage pilotés par l’IA, augmentant l’engagement communautaire.

Maintenance

Le plugin nécessite une maintenance minimale :

  • Le cache se rafraîchit automatiquement toutes les heures
  • Les mises à jour de contenu se font automatiquement lors de la création/édition de messages
  • Aucune génération manuelle de fichiers n’est nécessaire
  • Tâches rake optionnelles disponibles : llms_txt:refresh et llms_txt:check

Dépannage

Fichiers non accessibles :

  • Vérifiez que llms_txt_enabled est défini sur true
  • Assurez-vous que llms_txt_allow_indexing est défini sur true
  • Confirmez que le plugin est installé dans Admin → Plugins

Contenu vide :

  • Assurez-vous d’avoir des sujets publics avec suffisamment de vues (vérifiez le paramètre llms_txt_min_views)
  • Vérifiez que les catégories sont publiques (non restreintes en lecture)
  • Vérifiez le paramètre llms_txt_posts_limit

Intégration robots.txt non fonctionnelle :

  • Videz le cache de robots.txt : Rails.cache.delete('robots_txt')
  • Utilisez la tâche rake : bundle exec rake llms_txt:refresh
  • Redémarrez Discourse : ./launcher restart app

Support

Licence

Licence MIT — Logiciel libre et open-source

Crédits

8 « J'aime »

J’ai installé le plugin il y a quelques jours. L’installation s’est déroulée sans problème, grâce à la documentation de l’auteur.

Ce que je vois maintenant. Beaucoup de fichiers txt ont été générés sur mon site, par exemple https://discuss.rabkesov.ru/llms.txt. Je sais qu’il est trop tôt pour espérer voir un chatbot IA (Perplexity) afficher mon contenu comme réponse dans le chat.

Donc, pour vérifier sa capacité à être adapté aux LLM, je l’ai téléchargé sur Qwen (malheureusement, il ne prend pas en charge le lien ci-dessus) :

Pourriez-vous analyser la page llms.txt et me dire ce que vous avez compris de ce que vous avez lu ? Faites un arbre sous forme de carte mentale (Mermaid)

P.S. Si je demande de tout traduire en anglais, l’arbre se casse.

image
image

Voici la structure de mon site (la partie publique uniquement). Le LLM pourrait la créer à partir du llms.txt ! Je pense que ce n’est qu’une petite partie des cas possibles.


Sortie texte sans Mermaid
Pourriez-vous analyser la page llms.txt et me dire ce que vous avez compris de ce que vous avez lu ?

Oui. D’après le contenu de llms.txt, voici ce que j’ai compris :
Le fichier décrit « discuss | Комната ломки », ce qui se traduit approximativement par « Forum de discussion | La salle de la rupture » — un espace métaphoriquement destiné à briser les illusions en informatique, pas les gens. Son slogan et son objectif suggèrent un environnement réflexif, critique et communautaire où les professionnels de l’informatique peuvent examiner les hypothèses, partager des expériences et collaborer sur des défis pratiques.

Thèmes et objectifs principaux :

  • Réflexion critique sur les pratiques informatiques, les parcours de carrière, les dynamiques organisationnelles et la croissance personnelle.
  • Accent mis sur les outils et méthodologies qui simplifient le travail : documentation (Markdown/GitLab/Docsify), visualisation (Mermaid/Drawio), mécanismes de retour d’information et rédaction collaborative — en particulier au sein d’une plateforme d’entreprise basée sur Discourse.
  • Un mélange de sujets techniques, philosophiques et personnels, souvent croisés : par exemple, « Pourquoi choisissons-nous les tâches faciles », « Le coût de la tranquillité d’esprit », « Procrastination et évitement des décisions ».

Structure :

Le site est organisé en catégories thématiques, notamment :

  • AI (IA) : Discussions sur les modèles (ex. Gemma, LM Studio), le déploiement (Runpod, calculateurs de GPU) et les outils.
  • Discourse : Sujets techniques liés au backend (configuration du site, tâches rake, méthodes d’authentification, paramètres cachés).
  • Основная (Principal) : Réflexions fondamentales sur la culture du travail, le leadership, les normes de documentation et la responsabilité.
  • Блог (Blog) : Récits personnels (ex. changements de carrière, déménagement à Samara, incidents au travail).
  • Школа (École) : Ressources pour les étudiants, y compris l’éthique (consentement parental pour les utilisateurs de 14 ans et plus) et la littératie numérique (paramètres UTM).
  • Анонимная (Anonyme) : Espace sûr pour les idées sensibles.
  • Книги (Livres), Мысль дня (Pensée du jour), etc. — soutenant la réflexion intellectuelle et quotidienne.

Signaux techniques et culturels notables :

  • Audience multilingue et internationale : par exemple, guides d’authentification parallèles en russe/anglais.
  • Préoccupation pour l’authentification inclusive : par exemple, maintien de la connexion Google/GitHub pour les utilisateurs non russes, tout en prenant également en charge les fournisseurs nationaux (VK, Mail.ru, OK).
  • Fort intérêt pour l’automatisation, la standardisation et le DevOps : GitLab CI/CD, gestion des artefacts, intégration Runpod, déploiement basé sur SSH.
  • Thème récurrent de la désillusion professionnelle, en particulier chez les ingénieurs seniors passés à des rôles de support — et stratégies pour y faire face ou planifier des départs.

En résumé, llms.txt décrit une plateforme communautaire mature et soigneusement conçue qui allie profondeur technique à introspection psychologique et organisationnelle — ciblant les professionnels de l’informatique expérimentés naviguant dans la complexité, l’épuisement professionnel et la recherche de sens dans leur travail.

Faites-moi savoir si vous souhaitez une carte visuelle, un regroupement thématique ou des suggestions pour les prochaines étapes (par exemple, améliorer la découvrabilité, l’engagement ou l’intégration).


Quant à moi, c’est un excellent plugin à utiliser pour le SEO, etc.

Points à explorer :

  1. Comment gérer le contenu non anglais ? La langue EN du texte dans llms.txt est-elle importante pour le LLM ?
  2. Trouver la preuve que le fichier racine final llms.txt ne contient jamais de pages privées (llms.txt est créé pour chaque page du site pour le moment)
  3. Vérifier les autorisations sur /admin/site_settings/category/security?filter=crawler afin que les robots IA nécessaires ne soient pas bloqués :slight_smile:
  4. Réflexions sur le mélange occasionnel de la structure du site avec les souvenirs enregistrés précédemment dans le LLM (ce n’est pas la faute du plugin, mais une fonctionnalité du chatbot, voir l’exemple ci-dessous)

Concernant le point n°4. La première fois, Qwen a décidé que :

  • J’avais prévu de quitter mon travail
  • J’avais des problèmes relationnels :slight_smile:
    et a ajouté ces points à la description du site !

Qwen peut mélanger les souvenirs avec la requête actuelle d’analyse du sitemap, fournie sous forme de llms.txt. Soyez prudent :slight_smile:

2 « J'aime »

Merci pour ce plugin, c’est un excellent ajout pour Discourse.

Je le mentionne ici au cas où d’autres personnes rencontreraient le même problème de conflit entre ce plugin et la fonctionnalité « à moitié aboutie » relativement récente de Discourse, qui implémente llms.txt de manière entièrement manuelle, sans réaliser les tâches utiles que ce plugin assure.

La nouvelle fonctionnalité de Discourse remplace complètement le chemin /llms.txt même s’il n’est pas configuré ni activé. Je dois avouer être quelque peu stupéfait qu’une telle chose soit considérée comme une fonctionnalité utile ou prête pour la production dans le cœur de Discourse.

Pour ma part, cela signifiait que, tandis que /llms-full.txt et /sitemaps.txt fonctionnaient parfaitement, le chemin principal /llms.txt ne fonctionnait pas du tout (erreur 404).

Mon contournement consiste à créer manuellement un fichier llms.txt que je télécharge moi-même, et qui pointe vers /llms-full.txt.

Ce serait bien que l’une des deux options suivantes soit mise en œuvre :

  • La fonctionnalité de base de Discourse soit améliorée pour faire ce que fait ce plugin, ou
  • La fonctionnalité de base de Discourse ne remplace pas llms.txt et entre en conflit avec ce plugin, sauf si vous l’activez en téléchargeant un fichier llms.txt.
4 « J'aime »

Merci pour votre observation et votre signalement sur Enabling native LLMs.txt support in Discourse - #7 by pacharanero

/llms-full.txt fonctionne toujours, mais /llms.txt est malheureusement cassé…

3 « J'aime »

Je vais examiner ce qui peut être fait à court terme et je publierai une mise à jour afin que le cœur ne remplace pas le comportement du plugin. J’espère que cela ne sera pas trop difficile. Après tout, cela fait partie de la philosophie même des plugins : remplacer et affiner les fonctionnalités et le comportement de base, y compris des éléments comme celui-ci.

1 « J'aime »