O llms.txt é um ficheiro markdown na raiz do site que descreve o conteúdo de forma estruturada e legível por modelos de linguagem. Convenção emergente em 2024–2026, adoptada por Anthropic, Mistral e várias empresas técnicas. Coexiste com robots.txt e sitemap.xml — não os substitui. Este post mostra a estrutura mínima, a versão expandida llms-full.txt, e os erros típicos.
llms.txté markdown plain, vive em/llms.txtna raiz- Funciona como índice curado — não como sitemap exaustivo
- A variante
llms-full.txttraz o corpo expandido para single-fetch - Não substitui
robots.txt(acesso) nemsitemap.xml(indexação) - Esforço de implementação baixo; cenário de upside grande
O que é o llms.txt
O llms.txt é um ficheiro markdown público, hospedado na raiz do domínio (https://teu-dominio.com/llms.txt), que descreve a estrutura e o propósito do site em linguagem optimizada para modelos. A especificação foi proposta em 2024 e definiu três blocos canónicos: nome, descrição em uma linha, e secções de links curados agrupados por tópico.
A intenção é resolver um problema concreto. Quando um crawler de IA chega ao teu site, tem de inferir a estrutura através de HTML — headers, menus, classes CSS. Esse processo é frágil. Com llms.txt, recebe um sumário declarativo, em formato que os modelos extraem com fidelidade quase total.
Porque é que importa para GEO
Três motivos práticos. Primeiro, fidelidade: markdown estruturado tem menos ruído que HTML renderizado com JavaScript. Segundo, curadoria: és tu que decides o que entra, em vez de deixar o crawler adivinhar. Terceiro, single-fetch: a versão llms-full.txt permite que o modelo apanhe todo o contexto numa só chamada, em vez de fazer 10 ou 20 pedidos subsequentes.
Em termos de GEO, isto reflecte-se no que os motores citam. Quanto mais limpa for a representação do teu site, mais provável é que a citação seja correcta — URL certo, nome certo, descrição certa.
Estrutura mínima
A especificação canónica é simples. Title como h1, descrição como blockquote, e secções h2 com listas de links. Exemplo real, adaptado do llms.txt da destaque.ai:
# destaque.ai > Consultoria de Generative Engine Optimization em Portugal. > Opera a presença de marcas SaaS B2B em ChatGPT, Claude, Gemini e Perplexity. ## Serviço - [Como trabalhamos](https://destaque.ai/servico) - [Glossário GEO](https://destaque.ai/glossario) ## Empresa - [Sobre](https://destaque.ai/sobre) - [Contacto](https://destaque.ai/contacto) ## Blog - [Posts](https://destaque.ai/blog) ## Recursos para IA - [llms-full.txt](https://destaque.ai/llms-full.txt) - [ai.txt](https://destaque.ai/ai.txt)
Repara em três escolhas. Os links são absolutos, não relativos. As secções estão agrupadas por intenção (serviço, empresa, blog), não por tipo de página. E há uma secção explícita Recursos para IA que aponta para o llms-full.txt — facilita a vida ao crawler.
llms.txt vs llms-full.txt
O llms.txt é o índice. O llms-full.txt é o índice mais o corpo expandido das páginas-chave, concatenado em markdown.
Na prática: o crawler começa pelo llms.txt para mapear o terreno; se quiser profundidade, vai ao llms-full.txt e apanha tudo de uma vez. O custo de servir llms-full.txt é baixo (rota estática) e a poupança em pedidos do crawler é considerável.
Regra prática: se já tens 5 páginas-chave bem escritas, vale a pena gerar a versão expandida. Se ainda estás a construir conteúdo, foca-te primeiro no llms.txt.
llms.txt vs ai.txt vs robots.txt
Três ficheiros, três responsabilidades distintas:
robots.txt— controla acesso. Diz aos crawlers (incluindo GPTBot, ClaudeBot, etc.) o que podem ou não rastrear.sitemap.xml— controla indexação. Lista as URLs do site para os crawlers descobrirem páginas.llms.txt— controla compreensão. Explica em markdown o que cada bloco do site é.ai.txt— controla política de uso por IA. Especifica que crawlers de IA podem indexar e em que termos. Análogo ao robots.txt mas focado no uso por modelos generativos.
Devem coexistir os quatro. Cada um resolve um problema diferente do trabalho de visibilidade em IA.
Como criar o teu, em cinco passos
O processo é mais curto do que parece. Tipicamente uma tarde de trabalho.
- Identifica as páginas que importam. Tipicamente: home, serviço, sobre, contacto, índice do blog. Para a maioria dos sites de SaaS B2B, são 5 a 10 páginas.
- Escreve uma frase descritiva para cada. Curta, específica. “Como trabalhamos: as quatro fases do método.” é melhor que “Página de serviço.”.
- Agrupa por intenção, não por tipo de página. Serviço, empresa, recursos, blog. Não páginas estáticas e dinâmicas.
- Gera o ficheiro como rota estática ou route handler. Em Next.js, um route handler em
app/llms.txt/route.tsresolve. Em outros stacks, um static file napublic/. - Refere-o no robots.txt. Linha simples:
Sitemap: https://teu-dominio.com/llms.txt— não é sitemap formal, mas dá descoberta extra. Repete para ollms-full.txt.
Erros típicos
Vemos os mesmos quatro repetidamente:
- Tentar incluir tudo. O
llms.txté curadoria, não inventário. 200 links sem contexto valem menos que 30 bem descritos. - Sem hierarquia. Lista plana sem secções h2 dá ao modelo zero pistas sobre como o site está organizado.
- Linkar páginas obsoletas. Cada link que devolve 404 ou redirect é ruído. Audita pelo menos trimestralmente.
- Esquecer a actualização.
llms.txtnão se mantém sozinho. Se mudares a estrutura do site, actualiza imediatamente.
Como validar
Não há (ainda) validator oficial. O processo manual é simples:
curl https://teu-dominio.com/llms.txt— devolve o conteúdo? Headers indicamContent-Type: text/markdownoutext/plain?- Abre num browser. Quebra de linhas correctas, não escape de HTML?
- Roda o conteúdo num modelo (Claude, ChatGPT) e pede: “Lê este llms.txt e descreve a empresa.” A resposta faz sentido?
- Validar URLs com httpstat.us ou similar — todos respondem 200?
Perguntas frequentes
O llms.txt substitui o sitemap.xml ou o robots.txt?
Não. Três ficheiros, três propósitos: robots.txt (acesso), sitemap.xml (indexação), llms.txt (compreensão).
Os crawlers de IA leem mesmo o llms.txt?
Adopção parcial. Anthropic, Mistral e várias empresas técnicas já adoptaram. OpenAI e Google não confirmaram suporte oficial. Mesmo assim, vale a pena pelo custo baixo e pelo upside.
Tenho de criar também o llms-full.txt?
Recomendado. O llms.txt funciona como índice; o llms-full.txt traz o corpo expandido em markdown. Single-fetch para o crawler resolver tudo numa só chamada.
Fontes
- llmstxt.org — especificação canónica
- /llms.txt da destaque.ai — exemplo real
- /llms-full.txt da destaque.ai — versão expandida