Generador de plugins llms.txt para Discourse 🤖

Generador de llms.txt para Discourse

:information_source: Resumen Genera automáticamente archivos llms.txt que hacen que el contenido de tu foro sea descubrible por Modelos de Lenguaje Grande (LLM) como ChatGPT, Claude y otros sistemas de IA
:hammer_and_wrench: Enlace al repositorio 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: Guía de instalación Cómo instalar plugins en Discourse

Características

Este plugin implementa el estándar llms.txt — una convención propuesta para proporcionar contenido compatible con LLM desde sitios web. Piensa en ello como un “robots.txt para IA” que ayuda a que el contenido de tu foro aparezca en respuestas generadas por IA.

Para documentación detallada de las características, consulta README.md

Para documentación técnica y desarrollo, consulta CONTRIBUTING.md

Aunque este video no trata específicamente sobre Discourse ni sus plugins, explica muy bien por qué los archivos llms.txt son importantes para tu foro.

Miles de sitios web, incluidas muchas de las empresas tecnológicas más grandes y respetadas del mundo, ya han implementado el estándar llms.txt en sus propios dominios. Algunos ejemplos incluyen:

  • :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: Protocolo de Contexto de Modelo — https://modelcontextprotocol.io/llms-full.txt

Cuando gigantes de la industria adoptan un estándar a gran escala, mucho antes de que se vuelva “oficial”, es una señal clara de que llms.txt resuelve un problema real y urgente. Estas empresas nunca implementan iniciativas a nivel de sitio sin una razón estratégica sólida. La rápida y masiva adopción de llms.txt en la industria tecnológica muestra cuán importante se ha vuelto el contenido estructurado para la IA, y que la propia industria está impulsando esta adopción, incluso más rápido que los organismos de estandarización formal.

Capacidades clave:

  1. Archivo de navegación principal (/llms.txt)

    • Resumen estructurado de tu foro con categorías, subcategorías y los temas más recientes
    • Ayuda a los sistemas de IA a entender la organización de tu foro instantáneamente
    • Se actualiza automáticamente a medida que tu foro crece
  2. Índice de contenido completo (/llms-full.txt)

    • Índice completo del foro con todos los temas categorizados y listos para ser consumidos por IA
    • Filtrado configurable por vistas y cantidad de temas
    • Extractos de publicaciones opcionales para una indexación más rápida por parte de la IA
  3. Archivos dinámicos por recurso

    • Genera llms.txt para cualquier categoría: /c/nombre-categoria/123/llms.txt
    • Genera llms.txt para cualquier tema: /t/slug-tema/456/llms.txt
    • Genera llms.txt para cualquier etiqueta: /tag/tutorial/llms.txt
    • Se crean bajo demanda sin almacenamiento físico
  4. Índice de sitemaps (/sitemaps.txt)

    • Lista completa de todas las URLs de llms.txt para un descubrimiento eficiente por parte de los rastreadores de IA
    • Se integra automáticamente con robots.txt y sitemap.xml
  5. Protección SEO

    • URLs canónicas en encabezados HTTP (cumple con RFC 6596)
    • Evita penalizaciones por contenido duplicado en motores de búsqueda
    • Atribución correcta a las URLs originales del foro
  6. Caché inteligente

    • Comprobaciones de contenido nuevo en segundo plano cada hora
    • Solo se regenera cuando es necesario
    • Tiempos de respuesta rápidos (menos de 50 ms)
  7. Control de bots

    • Bloquea rastreadores de IA específicos mientras permite el acceso al foro
    • Lista separada por comas de agentes de usuario a bloquear
    • Integración automática con robots.txt mediante el conector de vistas
  8. Privacidad y seguridad

    • Las categorías privadas se excluyen automáticamente
    • Verificaciones de permisos de Guardian para archivos dinámicos
    • Filtrado de seguridad a nivel de SQL
    • No se exponen datos personales

Beneficios para tu foro:

  • Mayor visibilidad: Tu contenido aparece en respuestas de ChatGPT, Claude y otras IAs
  • Atribución directa: Los sistemas de IA citan y enlazan de vuelta a tu foro
  • Más tráfico: Mayor descubrimiento a través de búsquedas impulsadas por IA
  • Mejor GEO: Optimización para motores generativos para sistemas de IA
  • Sin mantenimiento: Generación y actualizaciones automáticas

Configuración

Después de instalar el plugin, navega a Admin → Configuración → Plugins → discourse-llms-txt-generator

Paso 1: Habilitar el plugin

Establece llms_txt_enabled en true (habilitado por defecto)

Paso 2: Configurar la indexación

Establece llms_txt_allow_indexing en true para permitir el acceso a los rastreadores de IA (habilitado por defecto)

Esta configuración controla si los archivos llms.txt aparecen en tu robots.txt como permitidos o bloqueados.

Paso 3: Establecer filtros de contenido

Configura estas opciones según el tamaño de tu foro:

  • llms_txt_min_views: Vistas mínimas de temas para incluir (por defecto: 50)
  • llms_txt_posts_limit: Cantidad de temas a incluir
    • small: 500 temas (recomendado para foros grandes)
    • medium: 2,500 temas (recomendado para la mayoría de los foros)
    • large: 5,000 temas
    • all: Todos los temas (úsalo con precaución en foros grandes)

Paso 4: Opcional - Agregar descripción personalizada

Rellena llms_txt_full_description con 2-4 frases que describan el propósito y la comunidad de tu foro. Esto ayuda a los sistemas de IA a proporcionar información más precisa sobre tu foro.

Ejemplo:

Este foro está dedicado a discutir la programación en Python, con enfoque en desarrollo web,
ciencia de datos y aprendizaje automático. Nuestra comunidad incluye principiantes y desarrolladores experimentados
que comparten soluciones prácticas y mejores prácticas.

Paso 5: Opcional - Bloquear bots específicos

Si deseas bloquear ciertos rastreadores de IA, ingresa sus nombres de agente de usuario en llms_txt_blocked_user_agents como una lista separada por comas:

Ejemplo: Omgilibot, ChatGPT-User, CCBot

Paso 6: Verificar la instalación

Visita tu foro en:

  • /llms.txt - Archivo de navegación principal
  • /llms-full.txt - Índice de contenido completo
  • /sitemaps.txt - Mapa del sitio completo

Verifica tu /robots.txt para confirmar la integración.

Configuraciones

Nombre Valor por defecto Descripción
llms_txt_enabled true Habilitar o deshabilitar el plugin
llms_txt_allow_indexing true Permitir que los rastreadores de IA accedan a los archivos llms.txt (afecta a robots.txt)
llms_txt_blocked_user_agents "" Lista separada por comas de agentes de usuario de bots a bloquear de los archivos llms.txt
llms_txt_intro_text Texto personalizado Texto de introducción que aparece en el archivo llms.txt principal
llms_txt_full_description "" Descripción personalizada para llms-full.txt para ayudar a la IA a entender el contexto de tu foro
llms_txt_min_views 50 Vistas mínimas de temas requeridas para inclusión en llms-full.txt
llms_txt_posts_limit medium Límite de cantidad de temas: small (500), medium (2,500), large (5,000) o all
llms_txt_include_excerpts false Incluir extractos de publicaciones en llms-full.txt (aumenta significativamente el tamaño del archivo)
llms_txt_post_excerpt_length 500 Longitud máxima del extracto en caracteres (100-5000) si los extractos están habilitados
llms_txt_latest_topics_count 50 Cantidad de temas más recientes a mostrar en el archivo llms.txt principal
llms_txt_cache_minutes 60 Duración de la caché en minutos para el archivo de navegación

Notas importantes:

  • Habilitar llms_txt_include_excerpts con llms_txt_posts_limit establecido en all puede causar tamaños de archivo extremadamente grandes (potencialmente 10-100+ MB) y alta carga del servidor en foros grandes
  • Las categorías privadas se excluyen automáticamente de todos los archivos llms.txt
  • Los archivos dinámicos por recurso (categorías, temas, etiquetas) no se almacenan en caché y se generan bajo demanda
  • El plugin utiliza conectores de vistas para la integración con robots.txt; no es necesario editar robots.txt manualmente

Detalles técnicos

Arquitectura:

  • Generación bajo demanda sin archivos pregenerados
  • Caché inteligente con comprobaciones de fondo cada hora
  • Consciente de permisos usando Discourse Guardian
  • Filtrado de seguridad a nivel de SQL para contenido privado
  • URLs canónicas en encabezados HTTP para evitar penalizaciones SEO

Rendimiento:

  • Archivo de navegación almacenado en caché durante 60 minutos (configurable)
  • Archivo de contenido completo generado bajo demanda
  • La caché inteligente solo se regenera cuando existe contenido nuevo
  • Tiempo de respuesta inferior a 50 ms para contenido en caché

Compatibilidad:

  • Discourse 2.7.0+
  • Ruby 2.7+
  • Probado en Discourse 3.6.0.beta3

Cumplimiento de estándares:

  • Estándar llms.txt (https://llmstxt.org/)
  • RFC 3986 (codificación de URL para caracteres internacionales)
  • RFC 6596 (Encabezados de enlace canónico)

Casos de uso

Foros comunitarios:
Tus discusiones y soluciones aparecen cuando los usuarios hacen preguntas relevantes a asistentes de IA, dirigiendo tráfico cualificado de vuelta a tu foro.

Sitios de documentación:
Los sistemas de IA pueden referenciar tu documentación y tutoriales, proporcionando información precisa con la atribución correspondiente.

Foros de soporte:
Los usuarios obtienen respuestas directas de tu base de conocimientos a través de asistentes de IA, con enlaces a discusiones completas.

Comunidades técnicas:
Los desarrolladores descubren el contenido de tu foro a través de asistentes de codificación impulsados por IA, aumentando la participación de la comunidad.

Mantenimiento

El plugin requiere un mantenimiento mínimo:

  • La caché se actualiza automáticamente cada hora
  • Las actualizaciones de contenido ocurren automáticamente al crear/editar publicaciones
  • No se necesita generación manual de archivos
  • Tareas rake opcionales disponibles: llms_txt:refresh y llms_txt:check

Solución de problemas

Archivos no accesibles:

  • Verifica que llms_txt_enabled esté en true
  • Comprueba que llms_txt_allow_indexing esté en true
  • Confirma que el plugin esté instalado en Admin → Plugins

Contenido vacío:

  • Asegúrate de tener temas públicos con suficientes vistas (verifica la configuración llms_txt_min_views)
  • Verifica que las categorías sean públicas (no restringidas para lectura)
  • Comprueba la configuración llms_txt_posts_limit

La integración con robots.txt no funciona:

  • Borra la caché de robots.txt: Rails.cache.delete('robots_txt')
  • Usa la tarea rake: bundle exec rake llms_txt:refresh
  • Reinicia Discourse: ./launcher restart app

Soporte

Licencia

Licencia MIT — Software libre y de código abierto

Créditos

8 Me gusta

Instalé el plugin hace un par de días. La instalación fue fluida, gracias a la documentación del autor.

Lo que veo ahora. Se generaron muchos archivos txt en mi sitio, por ejemplo https://discuss.rabkesov.ru/llms.txt. Sé que es pronto para esperar que un chatbot de IA (Perplexity) muestre mi contenido como respuesta en el chat.

Así que, para comprobar la capacidad de ser adecuado para LLM, lo subí a Qwen (desafortunadamente no admite el enlace anterior):

¿Podrías analizar la página llms.txt y decirme qué entendiste de lo que leíste? Haz un árbol en forma de mapa mental (Mermaid)

P.D. Si pido traducir todo al inglés, el árbol se rompe.

image
image

Aquí está la estructura de mi sitio (solo la parte pública). ¡Un LLM podría haberla creado a partir de llms.txt! Creo que es solo una pequeña parte de los casos posibles.


Salida de texto sin Mermaid
¿Podrías analizar la página llms.txt y decirme qué entendiste de lo que leíste?

Sí. Basado en el contenido de llms.txt, esto es lo que entendí:

El archivo describe “discuss | Комната ломки”, que se traduce aproximadamente como “Foro de Discusión | La Sala de Desarme” — un espacio metafóricamente destinado a desmantelar ilusiones en TI, no personas. Su lema y enfoque sugieren un entorno reflexivo, crítico y comunitario donde los profesionales de TI pueden examinar suposiciones, compartir experiencias y colaborar en desafíos prácticos.

Temas Centrales y Propósito:

  • Reflexión crítica sobre prácticas de TI, trayectorias profesionales, dinámicas organizacionales y crecimiento personal.
  • Énfasis en herramientas y metodologías que simplifican el trabajo: documentación (Markdown/GitLab/Docsify), visualización (Mermaid/Drawio), mecanismos de retroalimentación y redacción colaborativa — particularmente dentro de una plataforma corporativa basada en Discourse.
  • Una mezcla de temas técnicos, filosóficos y personales, a menudo interconectados: p. ej., “Por qué elegimos tareas fáciles”, “Costo de la tranquilidad”, “Procrastinación y evitación de decisiones”.

Estructura:

El sitio está organizado en categorías temáticas, que incluyen:

  • AI: Discusiones sobre modelos (p. ej., Gemma, LM Studio), implementación (Runpod, calculadoras de GPU) y herramientas.
  • Discourse: Temas técnicos del backend (configuración del sitio, tareas rake, métodos de autenticación, parámetros ocultos).
  • Основная (Principal): Reflexiones centrales sobre la cultura laboral, el liderazgo, los estándares de documentación y la responsabilidad.
  • Блог (Blog): Narrativas personales (p. ej., cambios de carrera, reubicación a Samara, incidentes en el lugar de trabajo).
  • Школа (Escuela): Recursos para estudiantes, incluida la ética (consentimiento paterno para usuarios mayores de 14 años) y la alfabetización digital (parámetros UTM).
  • Анонимная (Anónima): Espacio seguro para ideas sensibles.
  • Книги (Libros), Мысль дня (Pensamiento del Día), etc. — que apoyan la reflexión intelectual y diaria.

Señales Técnicas y Culturales Notables:

  • Audiencia multilingüe e internacional: p. ej., guías de autenticación paralelas en ruso/inglés.
  • Preocupación por la autenticación inclusiva: p. ej., preservar el inicio de sesión con Google/GitHub para usuarios no rusos, al tiempo que se admiten proveedores nacionales (VK, Mail.ru, OK).
  • Fuerte interés en la automatización, estandarización y DevOps: GitLab CI/CD, manejo de artefactos, integración de Runpod, implementación basada en SSH.
  • Tema recurrente de desilusión profesional, especialmente entre ingenieros sénior trasladados a roles de soporte, y estrategias para afrontarlo o planificar salidas.

En resumen, llms.txt describe una plataforma comunitaria madura y cuidadosamente diseñada que combina profundidad técnica con introspección psicológica y organizacional, dirigida a profesionales de TI experimentados que navegan por la complejidad, el agotamiento y la búsqueda de sentido en su trabajo.

Avísame si deseas un mapa visual, agrupación temática o sugerencias para los próximos pasos (p. ej., mejorar la capacidad de descubrimiento, la participación o la incorporación).


En cuanto a mí, es un gran plugin para usar en SEO, etc.

Algunos puntos a explorar:

  1. ¿Cómo manejar el contenido que no está en inglés? ¿Le importa al LLM el idioma EN del texto en llms.txt?
  2. Encontrar la prueba de que el archivo raíz final llms.txt nunca contiene páginas privadas (llms.txt se crea para cada página del sitio en este momento).
  3. Comprobar los permisos en /admin/site_settings/category/security?filter=crawler para que los bots de IA necesarios no estén bloqueados :slight_smile:
  4. Reflexiones sobre la mezcla ocasional de la estructura del sitio con los recuerdos que el LLM ha guardado previamente (esto no es culpa del plugin, sino una característica del chatbot, ver el ejemplo a continuación).

Sobre el punto #4. La primera vez, Qwen decidió que:

  • Planeaba dejar mi trabajo
  • Tenía problemas en mi relación :slight_smile:
    ¡y añadió estos puntos a la descripción del sitio!

Qwen puede mezclar recuerdos con la solicitud actual de analizar el mapa del sitio, proporcionado como llms.txt. Ten cuidado :slight_smile:

2 Me gusta

Gracias por este plugin, es una gran adición a Discourse.

Solo lo menciono por si alguien más tiene el mismo problema con el conflicto entre este plugin y la «mitad de función» bastante reciente de Discourse, que implementa llms.txt de manera completamente manual, sin hacer nada de lo útil que hace este plugin.

La nueva función de Discourse anula completamente la ruta /llms.txt incluso si no está configurada ni habilitada. Debo admitir que me dejo atónito que esto se considere una función útil o lista para producción en el núcleo de Discourse.

Para mí, esto significó que, aunque /llms-full.txt y /sitemaps.txt funcionaban perfectamente, la ruta principal /llms.txt no funcionaba en absoluto (404).

Mi solución alternativa es crear un archivo llms.txt manual que subo manualmente y que apunta a /llms-full.txt.

Sería bueno que:

  • La función del núcleo de Discourse se mejorara para hacer lo que hace este plugin, o
  • La función del núcleo de Discourse no anule llms.txt ni entre en conflicto con este plugin, a menos que la habilite subiendo un archivo llms.txt.
4 Me gusta

Gracias por tu observación y tu informe en Enabling native LLMs.txt support in Discourse - #7 by pacharanero

/llms-full.txt sigue funcionando, pero /llms.txt, lamentablemente, ya no.

3 Me gusta

Revisaré qué se puede hacer a corto plazo y publicaré una actualización para que el núcleo no sobrescriba el comportamiento del complemento. Espero que no sea demasiado complicado. Después de todo, eso forma parte de la filosofía general de los complementos: sobrescribir y afinar las funciones y comportamientos base, incluidas cosas como esta.

1 me gusta