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

ItemConteudo
Nome do arquivollms.txt
LocalizacaoRaiz do dominio (https://example.com/llms.txt)
FormatoMarkdown (texto puro)
CodificacaoUTF-8
Proponentellmstxt.org (Jeremy Howard e outros)
Status de padronizacaoPadrao de fato (nao e uma especificacao formal como RFC)
Bots que leemGPTBot, 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

ArquivoObjetivoAlvoConteudo
robots.txtPermitir/bloquear rastreamentoTodos os crawlersRegras Allow/Disallow
sitemap.xmlFornecer lista de paginasMecanismos de buscaURLs, datas de atualizacao, prioridade
llms.txtDescrever o conteudo do siteCrawlers de LLMVisao 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

Estrutura do formato llms.txt: H1 com nome do site, bloco de citacao com resumo, H2 para secoes, lista de conteudos e informacoes do site

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

ElementoSintaxe MarkdownFuncao
Titulo H1# Nome do SiteNome oficial do site. Apenas um por arquivo
Bloco de citacao> Texto de resumoDescricao geral do site. Colocar logo apos o H1
Titulo H2## Nome da SecaoAgrupamento dos conteudos
Link em lista- [Titulo](URL): DescricaoInformacao 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)

InformacaoLocal de EscritaExemplo
Nome do siteTitulo H1# AI Arte
Resumo do siteBloco de citacao> AI learning platform...
Secoes principaisH2 + lista de links- [Articles](URL): Descricao

Informacoes Recomendadas (melhoram a compreensao da IA)

InformacaoPor Que e Necessaria
Lista completa de conteudosPermite que a IA entenda o escopo total do site
Resumo de 1 linha por conteudoPermite que a IA entenda o conteudo da pagina antecipadamente
Estrutura de categorias/tagsMostra a estrutura da informacao do site
URL do siteDeclaracao explicita da URL canonica
URL do SitemapDirecionamento para a lista detalhada de URLs
Idiomas suportadosImportante para sites multilinguisticos
ContatoIdentifica 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.

ArquivoConteudoTamanho EstimadoUso
llms.txtVisao geral, estrutura e lista de links do site1 a 50KB"Sumario" do site inteiro
llms-full.txtTexto completo de todos os conteudos100KB a varios MBFornecer 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

Comparacao entre arquivo estatico e geracao dinamica: estatico e simples mas tem risco de ficar desatualizado; dinamico e sempre atual e com menor custo operacional

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

CondicaoRecomendacao
Ate 10 conteudos e raramente aumentaArquivo 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 manutencaoGeracao 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 VerificacaoComo 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 SiteTaxa de AdocaoRazao
Servicos e ferramentas de IAAltaA propria industria de IA tem alta consciencia de LLMO
Documentacao tecnicaAltaNecessidade de transmitir informacoes corretas a IA
Blogs de tecnologiaMediaAlta sensibilidade a tendencias tecnologicas
Sites corporativosBaixaNivel de conhecimento ainda baixo
E-commerceBaixaDados 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.