Crawlers de IA e JavaScript: por que o ChatGPT pode ver uma página vazia

Por SEOgrinder · Publicado em · 10 min de leitura

Resposta curta: Em crawlers de IA e JavaScript vale uma regra simples: um bot que não executa scripts vê apenas o HTML que o seu servidor envia. Se o texto da sua página é montado no navegador, esse HTML pode ser uma casca vazia. Em uma medição da Vercel e da MERJ, de dezembro de 2024, nenhum dos principais crawlers de IA executou JavaScript, enquanto o crawler do Google e o AppleBot executaram. É um retrato de 2024, então teste as suas próprias páginas e coloque o conteúdo principal no próprio HTML: renderize-o no servidor ou gere-o com antecedência.

Como um crawler chega à sua página?

Todo acesso começa do mesmo jeito: uma requisição ao seu servidor, respondida com HTML. O que acontece depois decide quanto da sua página chega ao crawler.

Um navegador carrega os scripts para os quais o HTML aponta, executa-os e mostra o resultado. Um crawler pode parar no primeiro HTML. Ou pode renderizar: executa os scripts, espera e só depois lê.

Se o servidor envia o texto, os dois caminhos levam ao mesmo conteúdo. Se a página é montada no navegador, o primeiro HTML quase não contém nada. A documentação do Google chama isso de modelo “app shell”. Um bot sem JavaScript recebe mais ou menos isto:

<body>
  <div id="root"></div>
  <script src="/app.js"></script>
</body>

O título, o texto, a lista de produtos e os links só aparecem depois que o /app.js roda. Nem todo crawler o executa, e esse é todo o problema.

O que o Google faz com JavaScript

O Google é o caso fácil. A documentação dele sobre os fundamentos de SEO para JavaScript diz:

  • O Google Search executa JavaScript com uma versão “evergreen” do Chromium, isto é, mantida sempre atualizada.
  • Uma página passa por três fases: rastreamento (crawling), renderização e indexação.
  • Uma página com status 200 entra em uma fila para renderização, o que pode levar segundos ou mais. Em uma página com status diferente de 200, como um 404, a renderização pode ser pulada.
  • Title, meta description e canonical podem ser definidos com JavaScript.

A mesma página também dá o motivo deste artigo. O Google escreve que a renderização no servidor ou a pré-renderização continua sendo uma boa ideia, porque deixa a página mais rápida para usuários e crawlers e porque nem todos os bots executam JavaScript. “O Google indexa a minha página” não significa, portanto, que todo bot consegue lê-la.

Crawlers de IA e JavaScript: o que realmente se sabe

A medição mais conhecida vem da Vercel e da MERJ, publicada em dezembro de 2024 com o título The rise of the AI crawler. A conclusão: nenhum dos principais crawlers de IA executou JavaScript. O estudo cita entre eles GPTBot, OAI-SearchBot, ChatGPT-User e ClaudeBot. O Googlebot (listado no estudo para o Gemini) e o AppleBot renderizaram JavaScript.

Duas ressalvas devem vir junto com esse resultado. Primeiro, é um retrato de 2024, e não temos uma medição mais recente para citar. Os crawlers mudam, então tome o resultado como um alerta, não como uma lei. Segundo, ele diz o que um bot lê, não se uma página é citada em uma resposta. Ninguém pode prometer uma citação, com ou sem JavaScript.

Os bots têm funções diferentes. Eis o que os operadores dizem sobre eles:

OperadorBotFinalidade segundo o operador
OpenAIGPTBotTreinamento de modelos generativos de base
OpenAIOAI-SearchBotBusca no ChatGPT
OpenAIChatGPT-UserAcessos a pedido de um usuário, por exemplo uma pergunta no ChatGPT
AnthropicClaudeBotColeta conteúdo da web que pode contribuir para o treinamento
AnthropicClaude-SearchBotMelhora a qualidade dos resultados de busca
AnthropicClaude-UserAcessos quando um usuário pergunta algo ao Claude
PerplexityPerplexityBotExibe e linka sites nos resultados de busca da Perplexity

As fontes são OpenAI, Anthropic e Perplexity. A Perplexity tem ainda um bot separado para acessos a pedido de um usuário. Se os bots por trás das respostas de busca com IA leem apenas HTML, uma página com casca vazia não lhes dá nada para citar. Quais deles renderizam scripts é justamente o que o estudo de 2024 mediu, e o que você deve conferir nas suas próprias páginas.

Quem é afetado?

Você é afetado se o texto ou os links das suas páginas não existem no HTML que o seu servidor envia:

  • Páginas montadas por inteiro no navegador. O servidor responde com uma casca e um pacote de scripts, e o script escreve o título, o texto e a navegação.
  • Conteúdo que scripts carregam depois. Listas de produtos, preços, avaliações, abas ou seções “carregar mais” que vêm de uma chamada de API depois que a página carregou.
  • Links que só existem depois que os scripts rodam. Um crawler sem JavaScript só consegue seguir links que estão no HTML. O próprio rastreamento do site pelo SEOgrinder esbarra nisso: ele registra que links que surgem só no navegador não podem ser seguidos.
  • Title, description, canonical e tags Open Graph definidos por um script. O Google aceita isso. Um bot que ignora scripts nunca os vê.

Você não é afetado se o servidor já envia o texto. Extras interativos, como um menu, um gráfico ou uma calculadora, ainda podem ser montados no navegador. O SEOgrinder aponta as páginas que existem só no navegador com a constatação “A página só é montada no navegador”, porque muitos crawlers de IA não executam JavaScript e veem ali uma página quase vazia.

Três testes em um minuto

Você não precisa de uma ferramenta para descobrir. Os três testes respondem à mesma pergunta: o meu texto está no HTML que o servidor envia?

  1. Veja o código-fonte da página. Abra a sua página e escolha “Ver código-fonte da página” (Ctrl+U, ou Cmd+Option+U no Mac). Não use “Inspecionar”: o inspetor mostra a página depois que os scripts rodaram. Procure no código-fonte uma frase que você consegue ler na página.
  2. Busque a página com curl. No terminal, execute curl -sL https://example.com/sua-pagina | grep -io "uma frase curta da sua página", usando uma frase curta da sua própria página. Se a frase for impressa, ela está no HTML, a menos que apareça apenas dentro de um elemento script, o que não vale. Se nada for impresso, confira primeiro a grafia e os caracteres especiais; fora isso, ela não está no HTML.
  3. Desligue o JavaScript. Abra as ferramentas do desenvolvedor, abra o menu de comandos (Ctrl+Shift+P, ou Cmd+Shift+P no Mac), digite “JavaScript”, escolha a opção que desativa o JavaScript (em inglês, “Disable JavaScript”) e recarregue a página. Se o conteúdo principal sumiu, um bot sem JavaScript vê o mesmo.

Como ler o resultado:

O que você vêO que significa
A frase está no código-fonte e na saída do curlO texto está no HTML entregue. Essa parte está certa.
A frase não está no código-fonte, mas aparece no navegadorA página é montada no navegador. Bots que ignoram scripts não veem texto.

Dois limites: o curl mostra o que o seu servidor envia ao curl, não o que ele envia a um bot específico, por exemplo quando um firewall trata bots de forma diferente. E, para ver o que o Google renderizou, use a Inspeção de URL do Google Search Console.

Como corrigir: coloque o conteúdo no HTML

O objetivo é que títulos, texto corrido e links internos estejam visíveis no código-fonte. Há dois caminhos comuns para chegar lá:

  • Renderização no servidor (SSR). O servidor monta o HTML pronto a cada requisição.
  • Pré-renderização, também chamada de geração estática (SSG). As páginas são geradas com antecedência, por exemplo na hora do build, e o servidor apenas entrega os arquivos.

Os dois colocam o conteúdo na primeira resposta. Além disso:

  • Comece pelas páginas que importam. Uma reescrita completa raramente é necessária. Comece pelas páginas que devem ranquear ou ser citadas.
  • Ponha o essencial no primeiro HTML. Isso inclui title, meta description, canonical, tags Open Graph, o texto principal e os links de navegação escritos como elementos <a href> de verdade.
  • Dê o mesmo conteúdo a crawlers e visitantes. O Google cita o “dynamic rendering”, em que os bots recebem uma versão pré-montada, apenas como paliativo. Mostrar aos crawlers algo diferente do que os visitantes veem é cloaking.
  • Confira o resultado no código-fonte. Repita os três testes depois da mudança.

Nada disso é garantia de ranking. Você remove um obstáculo técnico, nada mais.

Como o SEOgrinder detecta páginas montadas no navegador

O SEOgrinder olha o HTML que o seu servidor entrega, não o que um navegador faz com ele. Digite um endereço, inicie a análise, e as tarefas aparecem na aba Tarefas, ordenadas pelo impacto. Três constatações pertencem a este tema:

  • A página só é montada no navegador. A constatação informa quantas palavras, títulos e links internos o HTML entregue contém e observa que o Google renderiza essas páginas com atraso e que muitos crawlers de IA veem uma página quase vazia.
  • “N páginas só são montadas no navegador”. O rastreamento do site informa quantas das páginas percorridas entregam uma casca HTML quase vazia. Páginas com noindex e páginas de login ou de cadastro não entram na conta.
  • “N páginas de início de sessão ou registo nascem no navegador”. Isso geralmente não é um problema, porque tais páginas funcionam para os visitantes sem renderização no servidor. Se uma delas deve ranquear, renderize-a no servidor.

Depois de uma correção, clique em Verificar de novo: os relatórios ficam em cache por até 24 horas, e esse botão força uma execução nova (algumas vezes por hora). Entregar à IA transforma o relatório em uma ordem de trabalho em Markdown para um agente de programação como o Claude Code, o Cursor ou o GitHub Copilot, com um objetivo verificável por constatação.

O que o SEOgrinder não faz: ele não mede se o ChatGPT, o Gemini ou o Perplexity de fato citam a sua marca. Ele verifica a base técnica, isto é, se o conteúdo pode ser lido.

Erros comuns

  • Testar com “Inspecionar” em vez de “Ver código-fonte da página”. O inspetor mostra o resultado depois que os scripts rodaram, justamente o que um bot sem JavaScript não recebe.
  • Concluir “o Google indexa, então qualquer bot consegue ler”. O Google executa JavaScript, e a própria documentação dele diz que nem todos os bots o fazem.
  • Definir title e meta tags apenas com um script. O Google permite, mas um bot que não executa scripts nunca os vê. Coloque-os no primeiro HTML.
  • Links que são apenas manipuladores de clique. Use links <a href> de verdade, para que um crawler possa segui-los sem executar scripts.
  • Fazer do dynamic rendering o plano permanente. O Google o chama de paliativo.
  • Responder a todo endereço desconhecido com a casca e status 200. Aplicativos renderizados no cliente costumam fazer isso, e tais páginas podem ser tratadas como soft 404. A solução é devolver 404 de verdade para o que não existe.
  • Permitir bots no robots.txt e barrá-los no firewall. O texto existe, mas o bot recebe um erro. O SEOgrinder tem uma constatação para esse caso: “Rastreadores de IA permitidos, mas recusados pelo servidor — verificar”. Veja também o nosso artigo sobre robots.txt para crawlers de IA.

Perguntas frequentes

O Google enxerga a minha página em JavaScript?

Em geral sim, mas mais tarde. O Google executa JavaScript com um Chromium evergreen, e as páginas com status 200 esperam em uma fila pela renderização. A indexação nunca é garantida. A Inspeção de URL do Google Search Console mostra o que o Googlebot vê.

Um sitemap resolve?

Não. Um sitemap diz aos crawlers quais endereços existem. Ele não coloca texto no HTML dessas páginas.

O ChatGPT e o Claude executam JavaScript?

Na medição de 2024 da Vercel e da MERJ, os crawlers da OpenAI e da Anthropic citados nela não executaram. Não temos uma medição mais recente para citar, então teste as suas próprias páginas em vez de confiar em uma das respostas.

Preciso reescrever o meu site inteiro?

Não necessariamente. A renderização no servidor ou a pré-renderização das páginas que devem ranquear ou ser citadas é o primeiro passo habitual. As partes interativas podem continuar no navegador.

Vou ser citado por assistentes de IA se eu renderizar no servidor?

Ninguém pode prometer. Você garante que o texto pode ser lido, e isso é a condição para todo o resto.

Seu próximo passo

Escolha uma página importante e faça os três testes. Se o texto não está no código-fonte, faça a verificação gratuita no SEOgrinder e abra a aba Tarefas. Corrija primeiro as páginas mais importantes, renderizando-as no servidor ou gerando-as com antecedência, e depois clique em Verificar de novo.

Mais artigos do blog