Os crawlers de IA conseguem ler conteúdo renderizado por JavaScript?
Muitas vezes não. O Googlebot renderiza JavaScript em uma etapa posterior, mas a maioria dos crawlers de IA não documenta fazer isso, e o próprio Google observa que nem todos os bots executam JavaScript. Se o seu texto só aparece depois que os scripts rodam, um crawler de IA pode receber uma página vazia. Sirva o conteúdo principal no HTML inicial, com renderização no servidor ou páginas estáticas.
Single-page apps e frameworks client-side estão por toda parte e, no navegador, parecem ótimos. Um crawler que lê apenas o HTML que seu servidor envia vê outra coisa: um <div id="root"></div>, algumas tags de script e pouco ou nenhum texto. Para as respostas de IA, essa página não tem nada a citar.
Neste artigo
Por que os crawlers de IA perdem o conteúdo em JavaScript?
Executar JavaScript é caro. O crawler precisa baixar os scripts, executá-los em um motor de navegador e esperar os dados carregarem. O Google faz isso para a Pesquisa: rastreia, enfileira páginas para renderização e as renderiza com Chromium headless quando há recursos. Mesmo assim, o Google recomenda renderização no servidor ou prerendering porque é mais rápido para usuários e crawlers, e observa que nem todos os bots executam JavaScript.
OpenAI, Anthropic e Perplexity não afirmam, na documentação de seus crawlers, que seus agentes executam JavaScript. A Apple diz que o Applebot pode renderizar páginas em um navegador. Sem uma declaração clara, a suposição segura para crawlers de IA é que eles leem apenas o HTML inicial.
Como verifico o que um crawler recebe?
Olhe o HTML bruto, não a página renderizada. As ferramentas de desenvolvedor do navegador mostram o DOM depois que os scripts rodaram, que não é o que um crawler recebe. Use o view-source ou salve o HTML bruto pela linha de comando e pesquise nele:
curl -s -o page.html \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
https://example.com/page
# Is a sentence from your main text in the raw HTML?
grep -c "a sentence from your main content" page.html
Um resultado 0 significa que a frase não está no HTML que o servidor enviou, então os crawlers que não executam scripts não a encontrarão. Uma olhada rápida no arquivo mostra o resto: um artigo renderizado no servidor tem todo o texto ali; uma casca client-side tem um elemento raiz vazio e uma lista de scripts.
Quais páginas correm mais risco?
- Single-page apps feitos com React, Vue, Angular ou Svelte que renderizam tudo no navegador.
- Páginas que buscam o texto principal em uma API depois de carregar, como detalhes de produto, preços ou avaliações.
- Conteúdo dentro de abas, acordeões ou seções “carregar mais” que só é pedido no clique.
- Páginas atrás de login, paywall ou tela de consentimento que o crawler não consegue passar.
- Páginas que definem
noindexou a URL canônica só por JavaScript. O Google avisa que, quando vênoindexno HTML original, pode pular a renderização por completo.
Como corrijo conteúdo que só existe em JavaScript?
A solução é enviar o conteúdo importante já na primeira resposta. Escolha a opção mais leve que sua stack permitir:
- Renderização no servidor (SSR): frameworks como Next.js, Nuxt, SvelteKit e Angular SSR renderizam a página no servidor e a hidratam no navegador.
- Geração estática ou prerendering: gere o HTML no momento do deploy para páginas que mudam pouco, como artigos, documentação e landing pages.
- Aprimoramento progressivo: coloque o texto, os títulos, os links, os preços e o JSON-LD no HTML e use JavaScript só para a interação.
- Embuta o que importa: se abas escondem conteúdo, coloque tudo no HTML e alterne a visibilidade com CSS ou script, em vez de buscá-lo no clique.
Você não precisa converter um app inteiro de uma vez. Comece pelas páginas que quer ver citadas: artigos, documentação, páginas de produto e de preços. Áreas de conta e dashboards podem continuar client-side, porque de qualquer forma ficam atrás de um login.
Evite servir aos crawlers uma página diferente da dos usuários com base no user agent. Renderizar o mesmo HTML para todos é mais simples de manter e evita qualquer dúvida sobre cloaking.
Telas de login, consentimento e paywall também bloqueiam crawlers de IA?
Sim. Um crawler não faz login, não clica em um banner de cookies e não resolve desafios. A Anthropic afirma que seus bots não tentam contornar CAPTCHAs. Se um gerenciador de consentimento substitui a página por uma sobreposição de tela cheia no HTML, ou redireciona visitantes novos para uma página de consentimento, o crawler recebe isso em vez do seu conteúdo.
Garanta que as páginas públicas renderizem o conteúdo no HTML independentemente do estado do consentimento, com o banner como sobreposição e não como substituição. Mantenha as páginas que quer ver citadas fora de telas de login e confira se um crawler não é redirecionado para uma página de entrada.
Como a AISeeWhy detecta páginas só em JavaScript?
A AISeeWhy lê o HTML inicial como cada crawler o recebe, sem executar scripts. Quando uma página tem quase nenhum texto visível, mas um elemento raiz de framework e scripts, ela reporta um problema P1 indicando que o conteúdo depende de JavaScript. Também sinaliza redirecionamentos que levam os crawlers a um lugar diferente da página que um navegador recebe.
Perguntas frequentes
O Googlebot renderiza JavaScript?
Sim. O Google rastreia o HTML, enfileira as páginas para renderização e as renderiza com Chromium headless quando há recursos. Ainda assim, recomenda renderização no servidor ou prerendering.
Os crawlers do ChatGPT, Claude e Perplexity executam JavaScript?
A documentação de crawlers dos fornecedores não diz isso. Até que um fornecedor afirme o contrário, presuma que o crawler lê o HTML inicial e garanta que seu conteúdo esteja nele.
Renderização dinâmica para bots é uma boa ideia?
Funciona como solução provisória, mas acrescenta um segundo caminho de renderização para manter. Renderização no servidor ou HTML estático entrega o mesmo conteúdo a todos e é a solução de longo prazo mais simples.
O JSON-LD adicionado por JavaScript vale?
O Google consegue lê-lo após a renderização, mas crawlers que não executam scripts não o verão. Coloque o JSON-LD no HTML inicial.
Fontes
- Google Search Central: noções básicas de SEO para JavaScript
- Apple: sobre o Applebot
- OpenAI: visão geral dos crawlers da OpenAI
- Anthropic: a Anthropic rastreia dados da web e como os donos de site podem bloquear o crawler?
- Perplexity: crawlers da Perplexity