Indice
- 1. O Que e llms.txt
- 2. Por Que e Necessario -- Diferenca em Relacao ao robots.txt
- 3. Especificacao do Formato -- O Que Escrever e Como
- 4. Informacoes a Incluir -- Obrigatorias, Recomendadas e Opcionais
- 5. Diferenca Entre llms.txt e llms-full.txt
- 6. Arquivo Estatico vs Geracao Dinamica -- Qual Escolher
- 7. Implementacao -- Exemplos de Codigo por Framework
- 8. Verificacao e Validacao Apos a Instalacao
- 9. Exemplos Reais de llms.txt em Sites
- FAQ
A era da busca por IA chegou. ChatGPT com busca na web, Perplexity, Google AI Overviews -- as oportunidades de os usuarios obterem informacoes por meio de IA estao crescendo rapidamente, e a importancia de "fazer a IA entender corretamente o seu site" esta cada vez maior.
E ai que entra o llms.txt. Se o robots.txt e o arquivo que diz aos crawlers de mecanismos de busca como Googlebot "voce pode/nao pode rastrear esta pagina", o llms.txt e o arquivo que diz aos crawlers de IA como GPTBot e ClaudeBot "nosso site e assim".
Neste artigo, explicamos em detalhes o formato do llms.txt, quais informacoes incluir, os criterios para decidir entre arquivo estatico e geracao dinamica, e codigo de implementacao para os principais frameworks.
1. O Que e llms.txt
O llms.txt e um arquivo de texto puro (formato Markdown) colocado no diretorio raiz do site, cujo objetivo e informar aos LLMs (Modelos de Linguagem de Grande Escala) a visao geral, a estrutura e a lista de conteudos do site.
Informacoes Basicas
| Item | Conteudo |
|---|---|
| Nome do arquivo | llms.txt |
| Localizacao | Raiz do dominio (https://example.com/llms.txt) |
| Formato | Markdown (texto puro) |
| Codificacao | UTF-8 |
| Proponente | llmstxt.org (Jeremy Howard e outros) |
| Status de padronizacao | Padrao de fato (nao e uma especificacao formal como RFC) |
| Bots que leem | GPTBot, ClaudeBot, PerplexityBot, Google-Extended etc. |
Em Uma Frase
robots.txt = "Nao entre" / llms.txt = "Nosso site e assim"
Enquanto o robots.txt e um arquivo de controle de acesso (permitir/bloquear), o llms.txt e um arquivo de descricao do conteudo do site (autoapresentacao). Os dois nao entram em conflito -- na verdade, sao feitos para serem usados juntos.
2. Por Que e Necessario -- Diferenca em Relacao ao robots.txt
"Mas se eu ja tenho sitemap e meta tags, a IA nao consegue entender meu site?" -- voce pode pensar assim. E verdade, mas o llms.txt tem vantagens proprias.
Comparacao de Funcoes: robots.txt / sitemap.xml / llms.txt
| Arquivo | Objetivo | Alvo | Conteudo |
|---|---|---|---|
| robots.txt | Permitir/bloquear rastreamento | Todos os crawlers | Regras Allow/Disallow |
| sitemap.xml | Fornecer lista de paginas | Mecanismos de busca | URLs, datas de atualizacao, prioridade |
| llms.txt | Descrever o conteudo do site | Crawlers de LLM | Visao geral, estrutura, resumo dos conteudos |
3 Razoes Pelas Quais o llms.txt e Necessario
Razao 1: LLMs nao conseguem rastrear todo o site de forma eficiente
O Googlebot rastreia bilhoes de paginas e constroi um indice massivo, mas os crawlers de LLM nao sao tao abrangentes. Ao colocar o llms.txt, voce pode informar a IA de forma eficiente: "os conteudos mais importantes deste site sao estes".
Razao 2: Aumenta a chance de ser citado nas respostas da IA
Quando ChatGPT ou Perplexity geram respostas com busca na web, explicitar no llms.txt a especialidade e o conteudo do site pode fazer com que o site seja reconhecido como uma fonte de informacao confiavel. Isso faz parte do LLMO (Otimizacao para Modelos de Linguagem de Grande Escala).
Para uma explicacao detalhada sobre LLMO, confira "O Que e LLMO?".
Razao 3: Permite transmitir metainformacoes que o sitemap.xml nao tem
O sitemap.xml e apenas uma lista de URLs. Com o llms.txt, voce tambem pode informar:
- Tema e area de especialidade do site
- Resumo e categoria de cada conteudo
- Frequencia de atualizacao e tamanho do site
- Se ha suporte multilinguistico
- Informacoes de contato
3. Especificacao do Formato -- O Que Escrever e Como
O llms.txt e escrito em formato Markdown. O formato baseado na especificacao do llmstxt.org e o seguinte:
Estrutura Basica
# Nome do Site
> Descricao geral do site. Em 1 a 3 frases, informe de forma concisa o tema, o publico-alvo e o valor oferecido.
## Nome da Secao 1
- [Titulo da Pagina](URL): Resumo da pagina
## Nome da Secao 2
- [Titulo da Pagina](URL): Resumo da pagina
- [Titulo da Pagina](URL): Resumo da pagina
Regras do Formato
| Elemento | Sintaxe Markdown | Funcao |
|---|---|---|
| Titulo H1 | # Nome do Site | Nome oficial do site. Apenas um por arquivo |
| Bloco de citacao | > Texto de resumo | Descricao geral do site. Colocar logo apos o H1 |
| Titulo H2 | ## Nome da Secao | Agrupamento dos conteudos |
| Link em lista | - [Titulo](URL): Descricao | Informacao de cada conteudo individual |
Exemplo Real
# My Tech Blog
> My Tech Blog is a software engineering blog covering web development, cloud infrastructure, and AI tools. Updated weekly with practical tutorials and comparisons.
## Main Sections
- [Articles](https://example.com/articles): 50+ in-depth technical articles
- [Tutorials](https://example.com/tutorials): Step-by-step coding tutorials
## Popular Articles
- [React vs Vue in 2026](https://example.com/articles/react-vs-vue): A detailed comparison of React and Vue.js for modern web development, covering performance, ecosystem, and learning curve.
- [Docker for Beginners](https://example.com/articles/docker-beginners): Complete guide to Docker containers for developers who have never used containerization.
## Site Information
- URL: https://example.com
- Sitemap: https://example.com/sitemap.xml
- Languages: en, ja
- Contact: admin@example.com
Pontos de Atencao
- Escrever em ingles por padrao. A especificacao e os exemplos do llms.txt sao em ingles, tornando essa a melhor pratica. Para sites multilinguisticos, escreva em ingles e especifique os idiomas suportados com
Languages: ja, en, es, .... Porem, para sites em um unico idioma (por exemplo, um site inteiramente em frances ou russo), escrever no idioma do site e perfeitamente aceitavel. Os principais LLMs (GPT, Claude, Gemini, etc.) processam a maioria dos idiomas com alta precisao, e os usuarios desses sites farao consultas no mesmo idioma, garantindo respostas consistentes. - A codificacao deve ser UTF-8. Com Shift-JIS ou outras codificacoes, os caracteres podem ficar corrompidos
- Evite caracteres especiais como em-dash (--). Como o arquivo e exibido como texto puro, pode haver problemas de exibicao em alguns navegadores. Use hifen (-) ou hifen duplo (--)
- URLs devem ser caminhos absolutos (URLs completas comecando com https://)
- Apenas um H1 por arquivo. Use H2 para dividir as secoes
4. Informacoes a Incluir -- Obrigatorias, Recomendadas e Opcionais
Muitas pessoas ficam em duvida sobre o que escrever, entao organizamos por prioridade.
Informacoes Obrigatorias (sem elas, o llms.txt perde o sentido)
| Informacao | Local de Escrita | Exemplo |
|---|---|---|
| Nome do site | Titulo H1 | # AI Arte |
| Resumo do site | Bloco de citacao | > AI learning platform... |
| Secoes principais | H2 + lista de links | - [Articles](URL): Descricao |
Informacoes Recomendadas (melhoram a compreensao da IA)
| Informacao | Por Que e Necessaria |
|---|---|
| Lista completa de conteudos | Permite que a IA entenda o escopo total do site |
| Resumo de 1 linha por conteudo | Permite que a IA entenda o conteudo da pagina antecipadamente |
| Estrutura de categorias/tags | Mostra a estrutura da informacao do site |
| URL do site | Declaracao explicita da URL canonica |
| URL do Sitemap | Direcionamento para a lista detalhada de URLs |
| Idiomas suportados | Importante para sites multilinguisticos |
| Contato | Identifica o responsavel pelo site |
Informacoes Opcionais (desejaveis, mas nao obrigatorias)
- Stack tecnologico: com o que o site foi construido (framework etc.)
- Frequencia de atualizacao: com que frequencia novos conteudos sao adicionados
- Quantidade total de conteudos: numero de artigos etc.
- Licenca / politica de citacao: se a IA pode citar ou nao
- Informacoes de API: se houver acesso programatico disponivel
Informacoes Que Nao Devem Ser Incluidas
- Informacoes confidenciais: URLs do painel de administracao, endpoints de APIs internas etc.
- Dados pessoais: informacoes pessoais alem do necessario (endereco, telefone etc.)
- Credenciais: chaves de API, senhas etc.
5. Diferenca Entre llms.txt e llms-full.txt
A especificacao do llmstxt.org define, alem do llms.txt, tambem um arquivo chamado llms-full.txt.
| Arquivo | Conteudo | Tamanho Estimado | Uso |
|---|---|---|---|
| llms.txt | Visao geral, estrutura e lista de links do site | 1 a 50KB | "Sumario" do site inteiro |
| llms-full.txt | Texto completo de todos os conteudos | 100KB a varios MB | Fornecer o texto completo a IA |
Quando o llms-full.txt e Necessario
- Documentacao tecnica: referencias de API, documentacao de bibliotecas etc., onde ter a IA entendendo o texto completo melhora a precisao das respostas
- Base de conhecimento: colecoes de FAQ, glossarios etc., conteudos que sao frequentemente citados em fragmentos
Quando o llms-full.txt Nao e Necessario
- Blogs e sites de midia: com muitos artigos, colocar tudo em um unico arquivo ficaria gigantesco. O resumo do llms.txt e suficiente
- E-commerce: informacoes de produtos sao melhor fornecidas via dados estruturados (JSON-LD etc.)
- Sites corporativos: com poucas paginas, o llms.txt sozinho ja cobre tudo
Para blogs e sites de midia em geral, o llms.txt sozinho e suficiente. Pense no llms-full.txt como algo voltado para documentacao tecnica.
6. Arquivo Estatico vs Geracao Dinamica -- Qual Escolher
Existem duas formas principais de operar o llms.txt.
Metodo 1: Arquivo Estatico
Colocar um arquivo de texto diretamente em public/llms.txt (ou caminho equivalente).
Vantagens:
- Implementacao mais simples possivel (basta colocar o arquivo)
- Zero carga no servidor
- Funciona sem framework
Desvantagens:
- Precisa atualizar o arquivo manualmente toda vez que adicionar ou modificar conteudo
- Se esquecer de atualizar, informacoes desatualizadas serao passadas a IA
- A quantidade de conteudos e categorias fica divergente entre o arquivo e o site real
Metodo 2: Geracao Dinamica
A aplicacao recebe a requisicao para /llms.txt e gera o texto dinamicamente, buscando as informacoes mais recentes do banco de dados.
Vantagens:
- Informacoes sempre atualizadas
- Ao adicionar um artigo, ele e refletido automaticamente no llms.txt
- Quantidade de conteudos e nomes de categorias sempre precisos
Desvantagens:
- Requer esforco de implementacao (definicao de rota + controller)
- Acesso ao banco de dados a cada requisicao (pode ser mitigado com cache)
- Necessita de framework
Criterios de Decisao
| Condicao | Recomendacao |
|---|---|
| Ate 10 conteudos e raramente aumenta | Arquivo estatico e suficiente |
| Mais de 10 conteudos ou atualizacao mensal+ | Geracao dinamica recomendada |
| Usa WordPress / Laravel / Django etc. | Geracao dinamica e facil de implementar |
| Site estatico (Hugo, Jekyll, Astro etc.) | Ideal gerar automaticamente no build |
| Operacao solo e quer minimizar manutencao | Geracao dinamica (uma vez implementada, e so deixar rodar) |
Conclusao: na duvida, geracao dinamica. O custo inicial de implementacao e maior, mas como voce pode "configurar e esquecer", o custo operacional a longo prazo e menor. O pior cenario e comecar com arquivo estatico e "esquecer de atualizar, passando informacoes desatualizadas para a IA".
7. Implementacao -- Exemplos de Codigo por Framework
A partir daqui, apresentamos como implementar a geracao dinamica do llms.txt nos principais frameworks.
Laravel (PHP)
Definicao de rota (routes/web.php):
use App\Http\Controllers\LlmsTxtController;
Route::get('/llms.txt', [LlmsTxtController::class, 'index']);
Controller (app/Http/Controllers/LlmsTxtController.php):
class LlmsTxtController extends Controller
{
public function index()
{
$articles = Article::published()
->with(['translations' => fn($q) => $q->where('locale', 'en')])
->orderBy('published_at')
->get();
$lines = [];
$lines[] = '# My Site Name';
$lines[] = '';
$lines[] = '> Site description here.';
$lines[] = '';
$lines[] = '## All Articles (' . $articles->count() . ')';
$lines[] = '';
foreach ($articles as $article) {
$t = $article->translations->first();
if (!$t) continue;
$url = 'https://example.com/en/articles/' . $article->slug;
$lines[] = '- [' . $t->title . '](' . $url . '): ' . $t->meta_description;
}
$content = implode("\n", $lines);
return response($content, 200)
->header('Content-Type', 'text/plain; charset=utf-8');
}
}
O ponto importante e declarar explicitamente Content-Type: text/plain; charset=utf-8. Se nao fizer isso, pode ser interpretado como HTML.
Django (Python)
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('llms.txt', views.llms_txt, name='llms_txt'),
]
# views.py
from django.http import HttpResponse
from .models import Article
def llms_txt(request):
articles = Article.objects.filter(
status='published'
).order_by('published_at')
lines = ['# My Site', '', '> Description.', '', '## Articles', '']
for a in articles:
lines.append(f'- [{a.title}](https://example.com/articles/{a.slug}): {a.meta_description}')
content = '\n'.join(lines)
return HttpResponse(content, content_type='text/plain; charset=utf-8')
Next.js (TypeScript)
// app/llms.txt/route.ts (App Router)
import { NextResponse } from 'next/server'
export async function GET() {
// Buscar dados do DB ou CMS
const posts = await getAllPosts()
const lines = [
'# My Site',
'',
'> Description.',
'',
'## Articles',
'',
...posts.map(p =>
`- [${p.title}](https://example.com/posts/${p.slug}): ${p.description}`
),
]
return new NextResponse(lines.join('\n'), {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
})
}
WordPress (PHP)
Adicionar no functions.php ou como plugin:
// functions.php
add_action('init', function() {
add_rewrite_rule('^llms\.txt$', 'index.php?llms_txt=1', 'top');
});
add_filter('query_vars', function($vars) {
$vars[] = 'llms_txt';
return $vars;
});
add_action('template_redirect', function() {
if (!get_query_var('llms_txt')) return;
header('Content-Type: text/plain; charset=utf-8');
$posts = get_posts(['numberposts' => -1, 'post_status' => 'publish']);
echo "# " . get_bloginfo('name') . "\n\n";
echo "> " . get_bloginfo('description') . "\n\n";
echo "## Articles (" . count($posts) . ")\n\n";
foreach ($posts as $post) {
$url = get_permalink($post);
$desc = get_the_excerpt($post);
echo "- [{$post->post_title}]({$url}): {$desc}\n";
}
exit;
});
No caso do WordPress, nao esqueca de salvar novamente as configuracoes de permalink (flush das regras de rewrite).
Geradores de Sites Estaticos (Hugo / Astro etc.)
Escreva um script para gerar automaticamente durante o build.
# build-llms-txt.sh (exemplo para Hugo)
#!/bin/bash
echo "# My Site" > public/llms.txt
echo "" >> public/llms.txt
echo "> Site description." >> public/llms.txt
echo "" >> public/llms.txt
echo "## Articles" >> public/llms.txt
echo "" >> public/llms.txt
for file in content/posts/*.md; do
title=$(grep '^title:' "$file" | sed 's/title: //')
slug=$(basename "$file" .md)
desc=$(grep '^description:' "$file" | sed 's/description: //')
echo "- [${title}](https://example.com/posts/${slug}): ${desc}" >> public/llms.txt
done
Se executar no pipeline de CI (GitHub Actions etc.) antes do build, o arquivo sera atualizado automaticamente a cada deploy.
8. Verificacao e Validacao Apos a Instalacao
Depois de instalar o llms.txt, verifique os seguintes pontos.
Checklist Basico
| Item de Verificacao | Como Verificar |
|---|---|
| E possivel acessar pela URL? | curl https://seusite.com/llms.txt |
| O Content-Type esta correto? | curl -I para confirmar text/plain; charset=utf-8 |
| Ha problemas de codificacao? | Abra diretamente no navegador e verifique se o texto aparece corretamente |
| Os links estao corretos? | Verifique se as URLs listadas sao acessiveis |
| O status HTTP e 200? | curl -o /dev/null -w "%{http_code}" |
| O robots.txt nao esta bloqueando? | Confirme que nao ha Disallow: /llms.txt no robots.txt |
Verificacoes Adicionais para Geracao Dinamica
- Confira o llms.txt apos adicionar um artigo: o novo artigo esta refletido?
- A contagem de conteudos esta correta: o numero em "All Articles (27)" bate com a quantidade real de artigos publicados?
- Artigos nao publicados nao estao aparecendo: confirme que rascunhos e agendamentos nao sao exibidos
Ferramentas de Validacao
Ate abril de 2026, nao existe um validador oficial para llms.txt. Porem, voce pode validar das seguintes formas:
- Pedir para ChatGPT ou Claude lerem: pergunte "Leia https://seusite.com/llms.txt e me conte sobre este site"
- Previsualizador de Markdown: cole o conteudo do llms.txt em um previsualizador para verificar se a estrutura renderiza corretamente
- Ferramentas de auditoria SEO: algumas ferramentas de auditoria SEO ja estao comecando a verificar a existencia do llms.txt
9. Exemplos Reais de llms.txt em Sites
Vamos observar as tendencias dos sites que adotaram o llms.txt.
Caracteristicas dos Sites Que Estao Adotando
| Tipo de Site | Taxa de Adocao | Razao |
|---|---|---|
| Servicos e ferramentas de IA | Alta | A propria industria de IA tem alta consciencia de LLMO |
| Documentacao tecnica | Alta | Necessidade de transmitir informacoes corretas a IA |
| Blogs de tecnologia | Media | Alta sensibilidade a tendencias tecnologicas |
| Sites corporativos | Baixa | Nivel de conhecimento ainda baixo |
| E-commerce | Baixa | Dados estruturados (JSON-LD) tem prioridade |
Caracteristicas de um Bom llms.txt
- Resumo conciso e claro -- a area de especialidade do site e compreendida de imediato
- Todo o conteudo listado com resumos -- a IA consegue entender a visao completa
- Estrutura de categorias explicita -- a organizacao da informacao fica clara
- Geracao dinamica -- sempre atualizado
Caracteristicas de um llms.txt Ruim
- Apenas nome do site e contato -- informacao insuficiente para ajudar a IA a entender
- Texto completo de todo o conteudo copiado -- o llms.txt e um "sumario", nao o "texto completo". O texto completo e funcao do llms-full.txt
- Informacoes desatualizadas abandonadas -- como dizer "10 artigos" quando na verdade ha 50, prejudicando a confiabilidade
- Informacoes confidenciais incluidas -- casos em que URLs do painel admin ou chaves de API aparecem no arquivo
FAQ
P. Se eu nao instalar o llms.txt, meu site nao aparecera nos resultados de busca da IA?
Nao. Mesmo sem o llms.txt, a IA consegue rastrear e exibir seu site nos resultados de busca. O llms.txt e apenas um "arquivo auxiliar que ajuda a IA a entender melhor". Porem, ao instala-lo, a IA consegue entender com mais precisao a estrutura e o conteudo do site, o que pode aumentar a chance de ser citado em buscas de IA. E uma posicao semelhante ao sitemap.xml no SEO -- nao e obrigatorio, mas ter e uma vantagem.
P. Se estou bloqueando crawlers de IA no robots.txt, o llms.txt tem alguma utilidade?
Se voce bloqueou com User-agent: GPTBot etc. no robots.txt, esse Bot nao rastreara seu site. Porem, o llms.txt em si e independente das regras do robots.txt. Ha possibilidade de a IA acessar o llms.txt por outra via (como quando um usuario cola a URL diretamente). Se voce esta bloqueando crawlers de IA intencionalmente, o mais coerente e tambem nao instalar o llms.txt.
P. Em qual idioma o llms.txt deve ser escrito?
Para sites multilinguisticos, ingles. Para sites em um unico idioma, o idioma do site tambem e valido. A especificacao e os exemplos sao predominantemente em ingles, o que o torna a escolha mais logica para sites multilinguisticos. No entanto, se o conteudo do site e inteiramente em um unico idioma, escrever o llms.txt nesse idioma e aceitavel. Os principais LLMs processam a maioria dos idiomas com alta precisao, e os usuarios consultarao no mesmo idioma do site, obtendo respostas consistentes.
P. Existe limite de tamanho para o llms.txt?
Nao ha um limite explicito na especificacao. Porem, na pratica, recomenda-se manter abaixo de 50KB. Mesmo sites com centenas de artigos, usando titulo + resumo de 1 linha por artigo, cabem facilmente em menos de 50KB. Se quiser incluir o texto completo, prepare um llms-full.txt separado.
P. Qual a frequencia ideal de atualizacao?
Com geracao dinamica, as informacoes mais recentes sao retornadas a cada requisicao, entao nao precisa se preocupar. Com arquivo estatico, o ideal e atualizar toda vez que adicionar ou modificar conteudo. No minimo, verifique e atualize mensalmente. Se chegar ao ponto de deixar informacoes desatualizadas, e melhor migrar para geracao dinamica.
P. Afeta o SEO?
O llms.txt nao afeta diretamente o SEO tradicional (ranking no Google). O Google usa o Googlebot para rastrear HTML e nao considera o llms.txt como fator de ranking. Porem, pode influenciar a possibilidade de citacao em buscas de IA como AI Overviews (respostas de IA exibidas nos resultados do Google), ChatGPT e Perplexity. Encare como uma estrategia de uma camada diferente do SEO tradicional (LLMO).
P. Existem plugins para WordPress?
Ate abril de 2026, ja existem alguns plugins WordPress que geram o llms.txt automaticamente. Porem, a qualidade e os recursos variam bastante, entao se optar por plugin, sempre verifique o conteudo gerado. Adicionar algumas dezenas de linhas de codigo ao functions.php tambem resolve o problema, entao e perfeitamente possivel fazer sem plugin.