Ativando o suporte nativo a LLMs.txt no Discourse

:bookmark: Este guia explica como tornar sua comunidade descobrível e utilizável por agentes de IA e rastreadores de LLMs por meio do padrão llms.txt. Ele abrange tanto o documento padrão gerado automaticamente quanto os arquivos personalizados enviados.

:person_raising_hand: Nível de usuário necessário: Administrador

Resumo

O Discourse inclui suporte nativo para o padrão llms.txt, uma convenção proposta para fornecer uma visão geral amigável para LLMs de um site. Pense nisso como o “robots.txt para IA”: um pequeno arquivo Markdown em /llms.txt que ajuda os modelos de linguagem de grande escala (LLMs) e agentes de IA a entenderem sobre o que seu site trata e como acessá-lo de forma responsável.

Você pode escolher entre duas abordagens, ou combiná-las:

  1. Deixe o Discourse gerar um documento padrão automaticamente a partir das configurações do seu site
  2. Envie seu próprio arquivo llms.txt personalizado para ter controle total sobre o conteúdo

Um upload personalizado sempre tem prioridade sobre o documento gerado.

O que é llms.txt?

llms.txt é um padrão proposto que fornece um mapa curado e amigável para agentes de um site. Ele é servido na raiz do site (/llms.txt) e segue um formato Markdown preciso:

  • Um título H1 com o nome do site (a única seção obrigatória)
  • Uma citação de bloco (blockquote) com um breve resumo
  • Seções Markdown opcionais com mais detalhes
  • Seções delimitadas por H2 contendo listas de links úteis

Diferente do sitemap.xml, que lista páginas para mecanismos de busca, o llms.txt é uma visão geral concisa projetada para caber na janela de contexto de um LLM. Os detalhes ficam por trás dos links, que são buscados apenas quando necessário.

A partir do Discourse v2026.1.0, o Discourse pode servir o llms.txt a partir da raiz do site.

Como o Discourse serve /llms.txt

O Discourse trata as solicitações para /llms.txt nesta ordem:

  1. Se você enviou um arquivo personalizado, o Discourse o serve inalterado como text/plain
  2. Se nenhum arquivo personalizado for enviado e o padrão gerado estiver habilitado, o Discourse gera e serve o documento
  3. Caso contrário, o Discourse retorna um 404

O documento gerado é idêntico para visitantes anônimos e usuários conectados, e não é afetado por redirecionamentos de login required.

O documento padrão gerado

Quando nenhum arquivo personalizado é enviado e o recurso está habilitado, o Discourse constrói um documento conciso usando as configurações existentes do seu site e o idioma padrão do site. Ele inclui:

  • O título do site (da configuração title), com o nome do host como alternativa
  • Uma citação de bloco de resumo usando seu site_description, ou short_site_description como alternativa
  • Uma política de comunidade humana afirmando que o site é para discussão humana e que os agentes devem escrever apenas quando um humano explicitamente os pedir para isso
  • Uma política de acesso para agentes pedindo que os agentes busquem apenas o que precisam, respeitem o robots.txt e os controles de rastreadores, e honrem o HTTP 429 com o intervalo Retry-After
  • Uma referência ao Discourse MCP, apontando os agentes para o servidor Discourse MCP como a interface preferida e consciente de permissões
  • Uma seção de Interface preferida para agentes com o link de configuração do Discourse MCP
  • Uma seção de Acesso público à web com links para /search, /filter, /latest e /categories, além de /sitemap.xml quando a configuração enable_sitemap estiver ativada
  • Uma seção Opcional com links para /about, /guidelines, /tos e /privacy

Se o seu site tiver login_required habilitado, o documento adiciona uma nota de que o conteúdo está disponível apenas para membros autenticados e omite os links de descoberta pública descritos acima. Os links são conscientes do caminho base (base-path aware), então funcionam corretamente em instalações em subpastas.

Você pode ver o anúncio e discutir o modelo gerado em Automatically generated llms.txt. O próprio Meta atualmente serve um arquivo personalizado e específico do site.

Habilitar o documento padrão gerado

O padrão gerado é entregue por meio do sistema de Upcoming Changes como uma mudança beta na qual os administradores podem optar por entrar ou sair.

  1. Vá para Admin → Configure → Upcoming Changes, ou visite /admin/config/upcoming-changes
  2. Encontre a mudança que gera um /llms.txt padrão quando nenhum arquivo personalizado é enviado
  3. No menu suspenso Enabled for, escolha Everyone para habilitá-lo para todos os visitantes
  4. Para desativá-lo, escolha No one

Mudanças promovidas aparecem aqui automaticamente quando estão prontas, e os administradores são notificados no painel. Se você preferir que nenhum arquivo llms.txt seja servido, defina esta mudança como No one ou envie um arquivo personalizado mínimo.

Enviar um llms.txt personalizado

Se você preferir controlar exatamente o conteúdo, pode enviar seu próprio arquivo.

  1. Prepare um arquivo llms.txt em formato .txt ou .md (o tamanho máximo do arquivo é 512 KB)
  2. Vá para Admin → Settings → Security, ou visite /admin/config/security, e procure por LLMs TXT
  3. Envie seu arquivo e salve a configuração

Uma vez configurado, o Discourse serve seu arquivo inalterado em:

https://yourforum.com/llms.txt

Consulte o llmstxt.org para orientações sobre sintaxe e formato. Um upload personalizado sempre substitui o documento gerado. Para referência, você pode visualizar o arquivo do Meta.

Verificar sua configuração

Você pode verificar o que os agentes verão solicitando o arquivo em um navegador ou com curl:

curl https://yourforum.com/llms.txt

Boas práticas

  • Mantenha o arquivo conciso. llms.txt é um mapa, não um manifesto; cada token custa contexto, e um arquivo enorme leva a agentes confusos e piores resultados
  • Sirva o padrão gerado apenas se seu conteúdo corresponder às suas políticas. Se você precisar de uma redação diferente, copie o texto gerado, edite-o para se adequar à sua comunidade e envie-o como um arquivo personalizado
  • Estruture arquivos personalizados de acordo com a especificação: título H1, resumo em citação de bloco, depois seções H2 com listas de links, usando uma seção Optional para links secundários
  • Combine llms.txt com controles de rastreadores. Para ajustar o acesso automatizado, configure as configurações slow_down_crawler_user_agents e slow_down_crawler_rate (Admin → Settings → Security)
  • Lembre-se de que llms.txt descreve seu site, enquanto robots.txt controla o acesso. Eles servem a propósitos diferentes e se complementam

Problemas comuns e soluções

Recebo um 404 em /llms.txt

Isso acontece quando nenhum arquivo personalizado é enviado e o padrão gerado não está habilitado. Envie um arquivo personalizado, habilite o padrão gerado em Admin → Upcoming Changes, ou ambos.

Uso um plugin Gerador de llms.txt e o arquivo principal parou de funcionar

O Discourse Core serve o caminho /llms.txt, então ele tem precedência sobre plugins que o geram. Se você depende dos arquivos gerados dinamicamente pelo plugin (como um índice completo de tópicos), uma solução prática é enviar um llms.txt personalizado mínimo que aponte os agentes para o conteúdo gerado pelo plugin, por exemplo:

# [Título do seu site]

Vá para https://yourforum.com/llms-full.txt

O plugin também gera arquivos por categoria, por tópico e por tag que não são afetados.

Enviei um arquivo, mas /llms.txt retorna 404

Se o arquivo enviado não puder ser lido do armazenamento (por exemplo, está ausente de um objeto de armazenamento externo), o Discourse retorna 404 e não recorre ao documento gerado. Reenvie o arquivo para resolver isso.

Meu site exige login, como isso se comporta?

O documento gerado ainda funciona: ele contém a notificação de conta necessária e omite os links de descoberta pública. Um upload personalizado é sempre servido inalterado. Se você quiser que os agentes acessem o conteúdo, considere como suas configurações de login afetam a capacidade de rastreamento.

Perguntas frequentes

O Discourse lista automaticamente todos os meus tópicos em llms.txt?

O padrão gerado intencionalmente não lista tópicos individuais. É um mapa mínimo que descreve seu site, declara políticas de acesso e aponta os agentes para a interface Discourse MCP e algumas rotas de descoberta.

Em qual idioma o documento gerado está?

Ele é gerado no idioma padrão do seu site (a configuração default_locale), independentemente do idioma da solicitação.

Posso me excluir?

Sim. Defina a mudança como No one em Admin → Upcoming Changes. Alternativamente, envie um arquivo personalizado com seu próprio conteúdo.

Por que o documento gerado referencia o Discourse MCP?

O servidor Discourse MCP fornece ferramentas conscientes de permissões para tópicos, posts, busca, usuários, categorias e ações de comunidade suportadas. É a maneira preferida para os agentes trabalharem com sua comunidade, então uma configuração local do MCP é vinculada na seção “Interface preferida para agentes” quando disponível.

Recursos adicionais

14 curtidas

Não seria possível para o Discourse criar o llms.txt dinamicamente para o site? Isso parece ser um recurso muito mais útil e alinharia a funcionalidade com o 🤖 Discourse llms.txt Generator Plugin - #2 by Ivan_Rapekas, com o qual esse novo recurso entra em conflito, sobrescrevendo o caminho /llms.txt e retornando um erro 404, mesmo que o plugin esteja configurado corretamente.

Essa adição ao recurso está prevista em algum lugar do roadmap?

5 curtidas

Minha solução alternativa para este problema foi:

  • Criar um arquivo llms.txt no VS Code contendo apenas

    Vá para [https://<SUA_BASE_URL>/llms-full.txt](https://<SUA_BASE_URL>/llms-full.txt)
    
  • Fazer o upload deste arquivo na seção llms.txt do núcleo do Discourse em admin/config/security?filter=LLMs%20TXT. Salve.

  • Teste se https://<SUA_BASE_URL>/llms.txt exibe o conteúdo do arquivo de texto acima.

  • Agora, espera-se que os LLMs que acessam llms.txt sejam orientados a navegar para o llms-full.txt, que é gerado dinamicamente por 🤖 Discourse llms.txt Generator Plugin

1 curtida

Guia atualizado para refletir as mudanças anunciadas em llms.txt gerado automaticamente.

3 curtidas