Você tem uma documentação técnica caprichada. Guias, referências de API, exemplos de código. Tudo organizado, tudo atualizado. Aí alguém abre o ChatGPT e pergunta sobre o seu produto.
A resposta vem genérica. Ou errada. Ou mistura sua lib com outra que tem nome parecido.
Por quê?
Não é que os LLMs “não consigam processar sites inteiros”. Eles conseguem. O problema é outro: HTML de verdade é sujo. Navegação, sidebar, footer, ads, scripts, popups de cookies. Pra um modelo de linguagem, separar o que é conteúdo útil do que é ruído custa contexto. E contexto é o recurso mais caro que um LLM tem.
O llms.txt é uma proposta pra resolver esse problema. Um arquivo Markdown na raiz do seu site que funciona como um mapa do tesouro: aponta direto pro conteúdo que importa, sem obrigar o modelo a garimpar no meio do HTML.
O que é, de onde veio
O llms.txt é um arquivo Markdown servido em /llms.txt na raiz de um site. A proposta foi publicada em setembro de 2024 por Jeremy Howard, o mesmo cara por trás do FastAI e do Answer.AI.
A ideia é que o arquivo siga uma estrutura definida:
# Nome do Projeto
> Resumo curto do projeto com informações essenciais
> pra entender o resto do arquivo.
Notas importantes sobre o projeto.
## Docs
- [Guia rápido](https://exemplo.com/docs/quickstart.md): Introdução prática ao projeto
- [Referência da API](https://exemplo.com/docs/api.md): Documentação completa dos endpoints
## Exemplos
- [App de tarefas](https://exemplo.com/examples/todo.py): Exemplo completo mostrando os padrões do projeto
## Optional
- [Docs do framework base](https://exemplo.com/docs/framework.md): Documentação do framework usado internamente
Cada parte tem um propósito:
- O H1 é o nome do projeto (a única parte obrigatória)
- O blockquote é o resumo que define como o projeto deve ser descrito
- As seções H2 agrupam links por categoria (
## Docs,## Examples,## API) - A seção
## Optionalmarca conteúdo que pode ser ignorado quando o contexto disponível é curto - Cada link segue o formato
[nome](url): descrição curta
Além do llms.txt, a proposta sugere que cada página HTML do site tenha uma versão Markdown acessível adicionando .md na URL. Por exemplo: /docs/api.html teria uma versão limpa em /docs/api.html.md.
E como ele se diferencia do robots.txt e do sitemap.xml?
Três arquivos, três funções completamente diferentes:
- robots.txt é o porteiro. Ele diz quais crawlers podem acessar quais partes do site. Controle de acesso
- sitemap.xml é o índice do livro. Lista todas as páginas indexáveis pra motores de busca encontrarem. Descoberta
- llms.txt é a carta de apresentação. Seleciona o conteúdo mais relevante e organiza pra consumo por modelos de linguagem. Curadoria editorial
Eles coexistem. Nenhum substitui o outro.
Um ponto que a spec deixa claro: o llms.txt foi pensado pra inferência, não pra treinamento. Ou seja, a ideia é que ele seja útil no momento em que alguém pergunta algo a um LLM, não durante o treinamento do modelo.
Pra que serve na prática?
Tem dois cenários bem diferentes, e é bom não misturar.
O primeiro cenário é de ferramentas que aceitam contexto externo sob demanda. O Cursor, por exemplo, consegue ler o llms.txt de uma lib e usar como contexto pra gerar código. O Claude Code faz a mesma coisa. Agentes de desenvolvimento podem consumir o arquivo como parte do pipeline. Nesses casos, o llms.txt tem valor direto e comprovado: a ferramenta lê o arquivo, usa o conteúdo, e a resposta melhora.
O segundo cenário é quando alguém pergunta algo pro ChatGPT, Gemini ou Claude pelo chat. Nesse caso, nenhum grande provedor de AI documentou publicamente que seus sistemas usam llms.txt de sites externos como sinal de ranking, citação ou recuperação. O arquivo pode ser ignorado completamente.
Separe essas duas coisas na cabeça. A utilidade real hoje está no primeiro cenário.
Fora isso, o llms.txt oferece uma versão canônica de como o projeto deve ser descrito. Não é “controlar a narrativa” (você não controla nada, o modelo pode ignorar o arquivo), mas é oferecer uma fonte autoritativa. Se o modelo escolher usar, ele usa a versão certa.
E tem um benefício colateral que ninguém fala: o exercício de curar o que vai no llms.txt já tem valor como auditoria de conteúdo. Você é forçado a responder “quais são as 10 páginas mais importantes da minha documentação?” E essa pergunta, por si só, já melhora sua doc.
Agora, pra quem vale o esforço? O critério não é tipo de site. É a combinação de quantidade de conteúdo útil e risco de resposta errada por LLMs. Se você mantém docs de API, SDK ou biblioteca, faz sentido. Projeto open source com docs extensas que um LLM pode confundir com projetos similares, também. Se seu site é uma landing page ou um blog com 3 posts, não perca tempo. O llms.txt só aponta pra material existente, não cria conteúdo novo.
A anatomia na prática: quatro estilos diferentes
Vamos olhar como sites reais implementam o llms.txt. Cada um fez escolhas diferentes, e nenhum é perfeito.
1. Nosso próprio blog (fogonacaixadagua.com.br)
Quando fui olhar o llms.txt deste blog pra escrever este artigo, levei um susto. O arquivo existia, gerado automaticamente pelo plugin All in One SEO do WordPress. Eu nem sabia:
# Fogo na Caixa d'Água
## Posts
- [O líder que você acha que é não é o líder que o time percebe](https://fogonacaixadagua.com.br/2026/04/...) - O que te tornou referência técnica pode estar travando seu time agora.
- [E se o seu problema não for um problema de verdade?](https://fogonacaixadagua.com.br/2026/01/...) - Sente que as buchas não param de crescer?
- [Pare de desenhar arquitetura. Comece a desenhar falhas](https://fogonacaixadagua.com.br/2025/12/...) - Pare de desenhar caixinhas bonitas.
...
Funciona? Tecnicamente sim, existe um /llms.txt no ar. Mas olha o que falta: sem blockquote descrevendo o blog, sem curadoria (lista tudo, até posts de 2010), sem seção ## Optional, sem separação por tema. É um inventário, não um mapa.
Uma versão curada ficaria assim:
# Fogo na Caixa d'Água
> Blog técnico sobre engenharia de software, infraestrutura e liderança
> técnica. Escrito por DK. Foco em problemas reais do dia a dia de quem
> constrói e mantém sistemas em produção.
## Séries
- [CSI do Linux: Graylog](https://fogonacaixadagua.com.br/2025/12/graylog-logs-centralizados-tutorial/): Série em 3 partes sobre logs centralizados, auditoria de terminal e alertas com Graylog 7.0.7
- [O comando ls por dentro](https://fogonacaixadagua.com.br/2025/12/voce-acha-que-sabe-o-que-o-comando-ls-faz-pense-de-novo/): Deep dive no caminho do ls desde o shell até o sistema de arquivos
## Artigos
- [Pare de desenhar arquitetura. Comece a desenhar falhas](https://fogonacaixadagua.com.br/2025/12/pare-de-desenhar-arquitetura-comece-a-desenhar-falhas/): Failure-first system design na prática
## Optional
- [Instalando Fedora 20 no Cubieboard2](https://fogonacaixadagua.com.br/2015/03/instalando-fedora-20-no-cubieboard2-e-cubietruck/): Conteúdo legado, relevante apenas para hardware ARM antigo
A diferença é clara. O primeiro joga tudo. O segundo responde a pergunta “se um LLM só puder ler 5 links desse blog, quais devem ser?”
Escrever este artigo me deu tarefa de casa. O llms.txt que você vê hoje em fogonacaixadagua.com.br/llms.txt vai ser diferente amanhã.
2. Supabase
# Supabase Docs
For the complete documentation in a single file, see [Full Documentation](https://supabase.com/llms-full.txt).
## Documentation
- [Supabase Guides](https://supabase.com/llms/guides.txt)
- [Supabase Reference (JavaScript)](https://supabase.com/llms/js.txt)
- [Supabase Reference (Dart)](https://supabase.com/llms/dart.txt)
- [Supabase Reference (Swift)](https://supabase.com/llms/swift.txt)
- [Supabase Reference (Python)](https://supabase.com/llms/python.txt)
- [Supabase Reference (C#)](https://supabase.com/llms/csharp.txt)
- [Supabase CLI Reference](https://supabase.com/llms/cli.txt)
Minimalista. Sem blockquote, sem ## Optional. Mas faz algo esperto: segmenta a documentação por linguagem. Se um agente precisa só da referência JavaScript, não precisa carregar as docs de Dart, Swift, Python e C# junto. Economia de contexto na prática.
Repare também no llms-full.txt: um arquivo separado com toda a documentação expandida inline. Isso não faz parte da spec oficial (é uma convenção do ecossistema), mas é útil pra ferramentas que preferem um arquivo único.
3. Stripe
# Stripe Documentation
When installing Stripe packages, always check the npm registry for the latest
version rather than relying on memorized version numbers. Run `npm view stripe
version` or check https://www.npmjs.com/package/stripe before pinning a version.
For Python, check https://pypi.org/project/stripe/. Never hardcode an old version
number from training data — always install with `@latest` or verify the current
version first.
## Docs
- [Testing](https://docs.stripe.com/testing.md): Simulate payments to test your integration.
- [API Reference](https://docs.stripe.com/api.md)
- [Platforms and marketplaces](https://docs.stripe.com/connect.md): Build a SaaS platform or marketplace with Connect.
...
O Stripe faz duas coisas que valem notar. Primeiro: as instruções no topo falam diretamente com o LLM (“never hardcode an old version number from training data”). Isso é curadoria ativa, não só uma lista de links. Segundo: os links apontam para versões .md das páginas (testing.md, api.md), que são Markdown limpo, prontos pra consumo por modelos. O llms.txt é o mapa, as páginas .md são o conteúdo.
4. FastHTML (o exemplo canônico)
O llms.txt do FastHTML é o projeto do próprio Jeremy Howard, o autor da proposta. É o único dos quatro que segue a spec à risca: blockquote definindo o projeto, notas explicando o que o FastHTML não é (pra evitar confusão com FastAPI), e a seção ## Optional separando conteúdo dispensável. Se você quer um modelo pra seguir, comece por esse.
O que o llms.txt não faz
Essa parte é onde a maioria dos artigos sobre o tema peca. Então vamos ser diretos:
- Não autoriza nem bloqueia crawlers. Isso é função do robots.txt
- Não melhora ranking em motores de busca. Isso é SEO, outro assunto
- Não garante que LLMs vão citar seu site. Uma análise da SE Ranking com ~300 mil domínios não encontrou correlação mensurável entre ter
llms.txte ser citado por modelos de linguagem. Não é ciência definitiva, mas é o melhor dado público disponível - Não substitui conteúdo bom. Se a doc é ruim, o mapa só leva o LLM mais rápido pro conteúdo ruim
- Não é “SEO pra AI”. Pelo menos não hoje. Nenhum grande provedor documentou que usa
llms.txtde sites externos como sinal de ranking ou citação em produção
Dito isso, o ecossistema de ferramentas está reconhecendo a convenção. O Chrome Lighthouse já inclui auditoria de llms.txt nas verificações de “agentic browsing”. Isso não prova que o Google usa o arquivo pra ranking, mas mostra que ferramentas ao redor estão levando a sério.
Dois riscos que valem mencionar:
Manutenção. Um llms.txt desatualizado é pior que não ter nenhum. Se os links apontam pra APIs depreciadas, páginas que não existem mais, ou posicionamento antigo do produto, você está ativamente prejudicando a qualidade das respostas.
Geradores automáticos. Plugins como o All in One SEO geram o llms.txt automaticamente, o que é conveniente. Mas eles podem incluir páginas de staging, changelogs internos, ou conteúdo que você não gostaria que virasse contexto público. Se usar um gerador, revise o resultado.
No final das contas
O llms.txt hoje é mais uma convenção útil pra ferramentas de desenvolvimento do que um canal comprovado de aquisição via LLM. A evidência de impacto direto é fraca. Mas o exercício de curadoria tem valor real, independente de qualquer modelo ler o arquivo.
Depois de escrever este artigo, eu fui reescrever o llms.txt deste blog. E o processo de escolher “o que realmente importa” me obrigou a olhar pra própria documentação com olhos diferentes. Tinha post de 2010 no mesmo nível de uma série recente de 3 partes. Isso diz algo.
Se você mantém documentação técnica, tenta o seguinte: abre um editor, escreve um H1 com o nome do projeto, um blockquote com uma frase descrevendo o que ele faz, e lista os 5 links mais importantes. Não precisa de plugin, não precisa de ferramenta. Só a pergunta: “se alguém só puder ler 5 páginas do meu projeto, quais devem ser?”
A resposta vai te surpreender. Ou pela clareza, ou pela falta dela.


Deixe um comentário