Tráfego orgânico na era da IA: SEO, AEO e GEO na prática
Como três sites conquistaram tráfego orgânico investindo zero reais: sitemap com 496 mil URLs, JSON-LD, llms.txt, versão .md por página e mais de 1.000 citações em respostas de IA. Com números reais e o que não funcionou.
Caio Domingues · CEO, BluePaper
· 12 min de leitura

Nos últimos meses eu construí e otimizei três propriedades bem diferentes entre si:
- BluePaper — este estúdio: ~32 páginas, blog, estudos de caso e páginas por vertical.
- CustoPorPrato (CPP) — plataforma de precificação para food business, com blog de 40+ artigos e páginas programáticas por nicho.
- Índice Custo por Prato — índice público de preços: 496 mil produtos, 410 supermercados, 27 estados, 6,1 milhões de preços coletados.
Três escalas completamente distintas, quase a mesma receita, aplicada em camadas. Os números mais relevantes são do CustoPorPrato, um micro-SaaS de nicho que começou como ferramenta para alguns amigos insatisfeitos com o que existia:
- Tráfego orgânico do Google: +884,9% — 1,6 mil sessões orgânicas no período. O percentual é alto porque a base de comparação era pequena; não vou esconder nenhum número aqui.
- 103 mil impressões e 3,2 mil cliques na busca, com posição média 5,5 (Search Console).
- O site apareceu em mais de 1.000 respostas de IA rastreadas pelo Ahrefs: 548 no ChatGPT, 178 no Perplexity, 160 no Copilot, 64 no Gemini, 21 em AI Overviews do Google.
- 117 sessões vieram diretamente de assistentes de IA — canal que o GA4 já classifica como categoria própria ("AI Assistant") e que não existia há 3 meses.

Os números são altos? Não. E o ponto aqui não é número alto — é que ainda é possível conquistar espaço com tráfego orgânico investindo zero reais, principalmente para quem está começando uma ideia e não tem (ou não quer gastar) dinheiro com tráfego pago.
Também vale dizer: eu não sou especialista em SEO. Este artigo documenta o que funcionou na prática, com as fontes oficiais linkadas no final — e os erros que eu teria evitado se tivesse lido a documentação antes.
SEO, AEO e GEO: três consumidores do mesmo conteúdo
Os três termos se confundem, então vale separar o que cada um significa:
- SEO (Search Engine Optimization): o clássico aparecer bem no Google, Bing e buscadores em geral. O padrão que existe há 20 anos: busca, clica, visita.
- AEO (Answer Engine Optimization): ser a resposta, não só o link. Featured snippets, FAQ rich results, assistentes de voz. Exige conteúdo estruturado como pergunta com resposta direta.
- GEO (Generative Engine Optimization): ser citado por LLMs — ChatGPT, Perplexity, Claude, AI Overviews. O termo vem de um paper acadêmico apresentado no KDD 2024 (citação no final).
Na prática, são três consumidores do mesmo conteúdo estruturado, cada um com um formato de entrega. E o conselho padrão do Google funciona para todos: conteúdo útil, indexável e com dados estruturados coerentes — o texto do schema precisa ser o mesmo texto visível na página.
SEO: o básico bem feito (e onde eu mais errei)
A parte menos glamourosa e a de maior retorno. Três erros que eu cometi e corrigi:
1. Canonical por página, nunca no layout. No Índice CPP, a página de produto aceita o parâmetro ?uf= para trocar o estado. Sem canonical explícito por página, o Google trataria cada variação como URL candidata: 27 URLs por produto disputando ranking entre si. No Next.js, isso significa alternates.canonical no generateMetadata() de cada rota — nunca um canonical fixo herdado do layout raiz, que apontaria todas as páginas para o mesmo lugar.
2. Description dinâmica por dado. As 400+ páginas de mercado começaram com a mesma frase genérica, e o Search Console acusou description duplicada em massa. A correção foi montar a description a partir do dado da própria página: nome do mercado, cidade, número de produtos, data da coleta. Se a página é gerada por template, a description também precisa ser — com os dados que tornam aquela página única.
3. noindex explícito no que não deve ranquear. Página de busca interna, páginas de "não encontrado" e rotas de infraestrutura (300 MB+ de JSON) levam noindex explícito — via metadata ou header X-Robots-Tag, ambos documentados no Google Search Central. Com meio milhão de páginas, crawl budget deixa de ser um conceito abstrato: cada visita do Googlebot a uma rota inútil é uma visita que não foi para uma página que importa.
O resultado composto disso: mais de 60% dos usuários do CPP hoje vieram de tráfego orgânico — 41 novos só na semana em que escrevi isso.

Sitemap com 496 mil URLs
O protocolo de sitemaps tem teto de 50 mil URLs ou 50 MB descomprimidos por arquivo. Com 496 mil URLs, a solução foi:
- Sitemap index apontando para shards: o shard 0 fica com as páginas do núcleo (home, comparativos, 27 estados, 410 mercados); os shards seguintes apontam para os produtos em blocos de 40 mil URLs.
- Curadoria: só produtos vendidos em 3+ estados entram no sitemap. O resto continua indexável via links internos, mas não é priorizado — sitemap é sinal de prioridade, não inventário completo.
- lastmod verdadeiro (data real da coleta): nunca um
new Date()por deploy. O Google usa o lastmod quando ele é consistente e confiável, e passa a ignorá-lo quando o dado "mente". Um site inteiro com lastmod de hoje a cada deploy é a definição de mentir. - priority e changefreq: preenchi por tipo de página, mas o Google ignora ambos (e o Bing trata changefreq como sinal fraco). Mantive por custo zero e por outros consumidores do sitemap.
SEO programático
A pergunta que define a estrutura: como as pessoas procuram pelo que você oferece?
- BluePaper: quem procura uma agência quer saber como fazer, quanto custa e como contratar. Páginas por vertical atendida e por keyword específica — um template igual com dados diferentes basta.
- CPP: páginas por tipo de negócio, por concorrente, por insumo e por estado.
- Índice CPP: 27 estados e 410 mercados, 100% estáticos no build; as páginas de produto são geradas sob demanda.
A regra que separa isso de spam: página programática precisa de dado real e único por página — preço mediano, cobertura, comparativo. Template com conteúdo raso é exatamente o que as políticas de spam do Google chamam de "scaled content abuse", e a punição é do domínio inteiro, não da página.
JSON-LD: o vocabulário completo
Tudo via schema.org, um bloco application/ld+json por schema — mais fácil de validar e depurar no Rich Results Test:
- Organization + WebSite (com SearchAction) em todo o site.
- BreadcrumbList em toda página de conteúdo.
- FAQPage: desde 2023 o Google restringiu os rich results de FAQ a sites governamentais e de saúde reconhecidos. O schema continua aqui porque (1) ele vale para qualquer consumidor, não só o Google, e (2) a regra continua valendo: o texto do schema é o mesmo visível na página.
- Dataset: um dos schemas mais subestimados. Metodologia (
measurementTechnique), variáveis medidas, cobertura temporal, licença,isAccessibleForFree— é o schema que alimenta o Google Dataset Search e transforma o índice numa fonte referenciável. - Product + AggregateOffer nas páginas de produto, com a faixa de preço real entre mercados.
- BlogPosting + HowTo nos artigos. O HowTo, como o FAQ, perdeu rich result em 2023; mantive como descrição semântica.
- Person/ProfilePage na página do autor. É o lado técnico do E-E-A-T: conteúdo assinado por alguém real, com histórico verificável.
AEO: estruturar para ser a resposta
- FAQ dinâmico: na página de cada estado, as perguntas ("Qual o mercado mais barato de SP?") escalam junto com o site e não desatualizam, porque a resposta é o próprio dado.
- Página de metodologia ("de onde vêm os dados"): o paper de GEO e as diretrizes de E-E-A-T apontam na mesma direção — transparência sobre origem aumenta a chance de ser tratado como fonte.
- Glossário embutido (CMV, markup, margem de contribuição, ficha técnica): termos definidos em uma frase, formato que answer engines capturam com facilidade.
- Resposta direta no primeiro parágrafo, contexto depois. É contraintuitivo — nos acostumamos a ser enrolados até o final para ter a resposta — mas aqui funciona melhor.
GEO: a parte nova (e o que é convenção, não padrão)
Aviso honesto: boa parte do que segue é convenção emergente, não padrão reconhecido.
a) llms.txt — o que é e o que NÃO é
É uma proposta (de Jeremy Howard, do Answer.AI) de um índice em markdown na raiz do site dizendo ao agente o que o site é e onde estão as páginas-chave; a variante llms-full.txt entrega o conteúdo completo num arquivo só. Três fatos que o hype costuma omitir:
- É convenção comunitária, não padrão formal. Não há RFC nem standardização IETF.
- O Google afirmou na documentação oficial que a Busca não usa llms.txt — nem para ranking, nem para AI Overviews. Nenhum grande provedor de LLM disse publicamente usá-lo como sinal de citação (ainda).
- Onde funciona hoje: agentes de código e navegação agêntica. Cursor, Claude Code, GitHub Copilot e afins buscam
/llms.txtao apontar para documentações, e o Lighthouse do Chrome ganhou auditoria de llms.txt na categoria "Agentic Browsing". Stripe, Vercel, Cloudflare, Resend e a própria Anthropic publicam o arquivo para esse público — não para indexação.
Publiquei mesmo assim: custo de manutenção quase zero, downside zero (o Google afirma que não ajuda nem atrapalha) e upside para agentes, que é o futuro para onde estamos indo. Mas quem vender llms.txt como "o novo SEO" está mentindo.

b) Versão .md gêmea de cada página
Toda página de conteúdo também existe em .md: conteúdo limpo, sem JS, sem nav, sem cookie banner. Não tem segredo — HTML para humanos, markdown para agentes, o mesmo conteúdo numa fração dos tokens. A estratégia: rotas explícitas (adicionar .md à URL) e content negotiation via header Accept: text/markdown na mesma URL, com três cuidados para não criar conteúdo duplicado:
- Header
Link: rel="canonical"apontando para o HTML; - Rotas
.mdfora do sitemap — a descoberta é via llms.txt erel=alternate; Content-Type: text/markdowncorreto.
c) robots.txt com grupos explícitos para crawlers de IA
GPTBot, OAI-SearchBot, ClaudeBot, Google-Extended, CCBot e outros. Detalhe que eu aprendi errando: um crawler que encontra um grupo com seu nome exato obedece só a esse grupo e ignora o User-agent: *. Então uma allowlist explícita precisa ser deliberada, grupo a grupo — se você cria um grupo para o GPTBot só com Allow: /, todos os Disallow do grupo genérico deixam de valer para ele. Use como referência o robots.txt da Resend ou da Cloudflare.
d) IndexNow
Notifica os mecanismos no momento em que conteúdo novo sobe, em vez de esperar recrawl. Precisão importa: IndexNow é adotado por Bing, Yandex, Seznam e Naver — o Google não participa do protocolo. Para o Google, o caminho continua sendo sitemap com lastmod honesto. E não subestime o Bing: é ele que alimenta boa parte das respostas do ChatGPT, e foi de lá que veio bastante acesso.
e) Dado próprio como moat
A tese central de GEO — e a única parte que considero durável independente de qual convenção vingar: motores generativos citam quem tem o dado que mais ninguém tem. O paper de GEO mediu que incluir estatísticas e fontes aumenta a visibilidade em respostas geradas; um índice com 6,1 milhões de preços coletados é a versão estrutural disso. llms.txt pode morrer, schema pode mudar, mas dado único e verificável não perde valor.
Erros, limites e pendências
- Atribuição é frágil: +884,9% sobre base pequena impressiona menos do que parece, e eu não consigo isolar quanto veio de cada camada. O que o Ahrefs mede como "AI responses" é amostragem, não censo.
- AggregateRating sem avaliações reais é tentação e armadilha: schema de review auto-atribuído viola as diretrizes de dados estruturados do Google e pode virar ação manual. Não faça.
- llms.txt é aposta, não garantia — repito porque é o ponto em que este artigo mais soaria vendedor se eu não repetisse.
E por último: leia a documentação do Google. Eu teria evitado muita dor de cabeça.
Referências
- GEO (paper acadêmico): Aggarwal et al., "GEO: Generative Engine Optimization", KDD 2024 — arxiv.org/abs/2311.09735
- llms.txt: proposta de Jeremy Howard (Answer.AI) — llmstxt.org
- Google Search Central, guia sobre IA na Busca — developers.google.com/search/docs/appearance/ai-features
- Google Search Central, dados estruturados — developers.google.com/search/docs/appearance/structured-data e o aviso sobre a redução de FAQ/HowTo rich results (ago/2023) — developers.google.com/search/blog/2023/08/howto-faq-changes
- Google Search Central, sitemaps (limite de 50 mil URLs / 50 MB; posição sobre lastmod/priority/changefreq) — developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap
- Google Search Central, políticas de spam (scaled content abuse) — developers.google.com/search/docs/essentials/spam-policies
- Protocolo de sitemaps — sitemaps.org/protocol.html
- IndexNow (Bing, Yandex, Seznam, Naver) — indexnow.org
Perguntas frequentes
- Qual a diferença entre SEO, AEO e GEO?
- SEO (Search Engine Optimization) é aparecer bem no Google, Bing e buscadores em geral — o padrão busca, clica, visita. AEO (Answer Engine Optimization) é ser a resposta, não só o link: featured snippets, FAQ rich results e assistentes de voz. GEO (Generative Engine Optimization) é ser citado por LLMs como ChatGPT, Perplexity, Claude e AI Overviews. Na prática são três consumidores do mesmo conteúdo estruturado, e o conselho do Google vale para todos: conteúdo útil, indexável e com dados estruturados coerentes.
- O llms.txt melhora o ranking no Google?
- Não. O Google afirmou na documentação oficial que a Busca não usa llms.txt — nem para ranking, nem para AI Overviews — e nenhum grande provedor de LLM disse publicamente usá-lo como sinal de citação. Onde ele funciona hoje é em agentes de código e navegação agêntica: Cursor, Claude Code e GitHub Copilot buscam /llms.txt ao apontar para documentações. Vale publicar pelo custo quase zero e pelo upside com agentes, mas quem vende llms.txt como "o novo SEO" está mentindo.
- Como fazer sitemap para um site com centenas de milhares de páginas?
- O protocolo de sitemaps limita cada arquivo a 50 mil URLs ou 50 MB descomprimidos. A solução é um sitemap index apontando para shards: um shard com as páginas do núcleo e os demais com o restante em blocos. Além disso, curadoria (só as páginas prioritárias entram no sitemap), lastmod com a data real de modificação do conteúdo — nunca a data do deploy — e saber que o Google ignora os campos priority e changefreq.
- SEO programático é penalizado pelo Google?
- Só quando é template com conteúdo raso — isso é o que as políticas de spam do Google chamam de scaled content abuse, e a punição atinge o domínio inteiro. Página programática legítima precisa de dado real e único por página: preço mediano, cobertura, comparativo. A pergunta que define a estrutura é como as pessoas procuram pelo que você oferece, e cada página precisa responder isso com dado que nenhuma outra página tem.
- Como aparecer nas respostas do ChatGPT e de outras IAs?
- A parte durável é ter dado que mais ninguém tem: o paper acadêmico de GEO mediu que incluir estatísticas e fontes aumenta a visibilidade em respostas geradas. Ajudam também uma página de metodologia explicando de onde vêm os dados, respostas diretas no primeiro parágrafo, schema.org coerente com o texto visível e não bloquear os crawlers de IA (GPTBot, ClaudeBot, PerplexityBot) no robots.txt. E não subestime o Bing: é ele que alimenta boa parte das respostas do ChatGPT.
Você também pode gostar
Continue explorando nosso conteúdo sobre landing pages e desenvolvimento web.
Drop de merch que não cai: infra pra aguentar tweet viral
Por que builder genérico cai em pico de tráfego e o que precisa ter na infra de página de drop pra aguentar 30k pessoas em 15 minutos. Checklist prático.
Linktree não basta: quando o creator precisa de site próprio
Os 5 sinais de que sua audiência ficou maior que Linktree, o que site próprio destrava e o caminho mínimo pra migrar sem virar projeto eterno.
Quando seu jogo precisa de dashboard de Live Ops (e quando ainda não)
Os sinais de que seu jogo está pedindo dashboard de Live Ops, o mínimo viável de uma v1 e quando faz sentido construir interno vs terceirizar a primeira versão.


