Como Deixar Seu Site Legível Pra IA

O Google não é mais o único lendo seu site.
Claude, ChatGPT, Perplexity, Copilot — todos crawleiam a web. Quando alguém pergunta "que ferramentas existem pra gerenciar tokens do Claude Code," a resposta vem do que o modelo já ingeriu. Se seu site não tá nesse dataset, você não existe. Nem na busca. Nem na conversa. Em lugar nenhum.
Passei uma tarde fazendo dois dos meus sites — helrabelo.dev e helskylabs.com — legíveis pra modelos de linguagem. Sem prompt engineering. Sem SaaS mágico. Com um arquivo de texto, um robots.txt atualizado e dados estruturados.

O Que É o llms.txt
Existe uma convenção crescente chamada llms.txt. Pensa nele como um robots.txt pra IA — um arquivo de texto puro na raiz do seu site que diz pro modelo o que seu site é, que conteúdo importa e onde encontrar.
Não é um padrão oficial. Não tem RFC. Mas os crawlers da Anthropic, OpenAI e Perplexity já procuram por ele. A spec mora em llmstxt.org e a ideia é direta: dar pro modelo um resumo estruturado que ele consegue consumir rápido em vez de fazer ele parsear toda a sua árvore DOM.
E aqui como ele aparece no browser — texto puro:

Uma versão resumida do meu helrabelo.dev/llms.txt:
# Hel Rabelo — Senior Full-Stack Engineer
> 11 anos de experiência. Construindo produtos indie no Helsky Labs.
> Produtos ativos: TokenCentric, TokenCap, Falavra, Gitography, BookBit.
## Tópicos do Blog
- Desenvolvimento assistido por IA (Claude Code, prompt engineering)
- Desenvolvimento nativo macOS (Swift, SwiftUI, Electron)
- Indie hacking (shipping, precificação, distribuição)
## Posts Principais
- [How I Actually Use Claude Code](/blog/how-i-actually-use-claude-code)
- [Claude.md Is Your Most Important Config File](/blog/claude-md-is-your-most-important-config-file)
...
## Conteúdo completo
Veja /llms-full.txt
96 linhas. Markdown puro. Um modelo consome isso num passo e entende quem eu sou, sobre o que eu escrevo e onde achar os detalhes.
llms-full.txt — O Conteúdo Completo
O llms.txt é o resumo. O llms-full.txt é a biblioteca inteira.
No helrabelo.dev, construí como uma rota dinâmica do Next.js que puxa todos os posts no momento da requisição e serve o markdown completo:
// app/llms-full.txt/route.ts
export async function GET() {
const posts = getAllPosts()
const content = posts
.map(post => `## ${post.title}\n\n${post.content}`)
.join('\n\n---\n\n')
return new Response(content, {
headers: {
'Content-Type': 'text/plain; charset=utf-8',
'Cache-Control': 'public, max-age=86400',
},
})
}
Cada post, texto completo, servido como texto puro com cache de 24 horas. Quando um crawler bate em /llms-full.txt, recebe o blog inteiro numa requisição. Sem JavaScript. Sem hidratação. Sem popups. Só conteúdo.
No helskylabs.com, a mesma rota inclui dados dos produtos — descrições, preços, plataformas, status — puxados da mesma fonte de dados que alimenta o site. Uma fonte de verdade, dois consumidores: humanos e modelos.
robots.txt — A Lista de Convidados
A maioria dos sites bloqueia crawlers desconhecidos por padrão. Instinto razoável. Mas crawlers de IA não são scrapers — são canais de distribuição. Bloquear eles é como bloquear o Googlebot em 2005.

Fui na direção oposta. Trecho do meu robots.txt:
User-agent: ClaudeBot
Allow: /
User-agent: GPTBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: Meta-ExternalAgent
Allow: /
21 crawlers de IA explicitamente liberados no helrabelo.dev. Oito no helskylabs.com. A lista inclui Anthropic (3 agentes), OpenAI (3), Perplexity, Google, Apple, Meta, Amazon, Cohere, ByteDance, Common Crawl, Diffbot e mais uns menores.
Sim, é redundante — a regra padrão User-agent: * já libera tudo. Mas regras explícitas sinalizam intenção. Alguns crawlers checam pelo próprio nome especificamente. E funciona como documentação: daqui a seis meses, eu sei exatamente quem eu convidei.
Dados Estruturados — JSON-LD
A terceira peça é JSON-LD. Isso não é novo — o Google usa há anos. Mas importa mais agora porque modelos de linguagem usam dados estruturados pra construir grafos de entidades.
Adicionei cinco tipos de schema no helrabelo.dev:
- PersonJsonLd — Meu perfil, expertise, links sociais
- WebsiteJsonLd — Metadados do site com ação de busca
- OrganizationJsonLd — Helsky Labs como entidade nomeada
- BlogPostJsonLd — Schema por post com autor, data, imagem, idioma
- BreadcrumbJsonLd — Hierarquia de navegação
No helskylabs.com, cada produto ganha seu próprio SoftwareApplication com preço, plataforma e categoria.
O efeito prático: quando um modelo encontra meu site nos dados de treinamento ou num pipeline de retrieval, ele não vê só texto. Vê estrutura. "Essa pessoa criou esse produto, que roda nessa plataforma, por esse preço." Essa é a diferença entre ser um parágrafo num dataset e ser um nó num grafo de conhecimento.
O Truque do rel="help"
Uma coisa que quase ninguém usa. No helskylabs.com, adicionei uma tag <link> no layout:
<link rel="help" type="text/plain" href="/llms.txt" />
Uma dica legível por máquina: "ei, existe um documento de ajuda pra entender esse site, e ele tá em /llms.txt." Crawlers que seguem tags <link> acham sem precisar adivinhar a URL.
O Que Eu Não Fiz
Não coloquei conteúdo atrás de login pra crawlers. Não adicionei meta tags noai. Não tentei negociar com cada crawler individualmente.
A aposta é simples: mais distribuição é melhor que menos distribuição. Se o Claude ou ChatGPT recomenda meu post sobre desenvolvimento Electron pra alguém que perguntou, isso é um leitor que eu nunca teria alcançado só pelo Google.
Alguém pode treinar um modelo com meu conteúdo sem atribuição? Pode. Já podem. Bloquear crawlers não impede isso — só impede os legítimos de te encontrar.

O Padrão de Implementação
Se você roda um site Next.js, a implementação toda leva umas duas horas:
llms.txtestático em/public— resumo escrito à mão do seu sitellms-full.txtdinâmico como rota de API — puxa conteúdo em tempo de requisiçãorobots.txtatualizado — liberar explicitamente os crawlers de IA principais- Componentes JSON-LD — dados estruturados no layout e nos templates de página
<link rel="help">opcional — ponteiro pro seu llms.txt
O llms.txt é o único que precisa de manutenção manual. O resto é gerado a partir do conteúdo e dados que já existem.
O Quadro Geral
SEO costumava significar "deixar o Google feliz." Agora significa "deixar todo sistema de recuperação de informação feliz." Google, Bing, Perplexity, Claude, ChatGPT, Apple Intelligence — todos consomem a web de formas diferentes, mas todos se beneficiam das mesmas coisas: markup limpo, dados estruturados e resumos machine-readable explícitos.
Os sites que fizerem isso agora vão ter uma vantagem composta. Cada ciclo de crawl, cada atualização de modelo, cada novo sistema de retrieval — seu conteúdo tá lá, estruturado, pronto pra ser citado.
Os que não fizerem vão se perguntar por que o tráfego tá estagnado mesmo com conteúdo bom.
É o mesmo jogo de 2005. O meio mudou. A estratégia não.