
Links em JavaScript podem tornar suas páginas invisíveis para buscas de IA

“O Google renderiza JavaScript” tem sido a resposta padrão para preocupações sobre renderização do lado do cliente por anos, e ficou mais fácil de acreditar em 2019, quando o Googlebot se tornou sempre verde, rodando continuamente na versão mais recente do Chromium.
O fluxo crescente de tráfego de pesquisa através de assistentes de IA torna essa sabedoria incompleta, pois os crawlers para assistentes de IA se comportam de maneira completamente diferente do Googlebot.
Para obter números em vez de suposições sobre o que isso significa para links JavaScript, realizei um experimento controlado. Configurei um site com metade de seus links internos codificados em HTML e a outra metade injetada por JavaScript (JS). Adicionei uma camada de registro que gravou cada solicitação de bot por 41 dias.
Os resultados foram mais desequilibrados do que eu esperava.
- O stack de crawlers do Google foi o único que executou JavaScript e seguiu os links injetados.
- Quase nenhum desse trabalho veio do Googlebot, o crawler que realmente constrói o índice de pesquisa.
- O Googlebot alcançou apenas 2% das páginas vinculadas por JavaScript.
- Enquanto isso, o GPTBot, ClaudeBot, Bingbot, PerplexityBot, os crawlers da Meta e da Amazon, e todos os outros bots que rastreei não encontraram absolutamente nada.
Como o experimento funcionou
O site de teste é um diretório de classificação de negócios brasileiro com aproximadamente 2.400 páginas, um projeto que possuo e opero. O experimento foi realizado na hierarquia do site: 21 seções de nível superior ramificando-se em divisões, grupos e classes, totalizando 1.062 páginas. As páginas restantes são páginas folhas planas que estavam fora do teste.
Dividi as 21 seções em dois grupos, alternando para evitar viés de agrupamento:
- Grupo HTML (11 seções): Cada link filho foi codificado em HTML bruto para que qualquer bot possa analisá-los e segui-los.
- Grupo JS (10 seções): Cada link filho, em todos os níveis da hierarquia, foi injetado por JavaScript após o carregamento da página. O HTML bruto continha um div vazio, e um bot que não executa JavaScript não veria links algum.
Para manter o teste limpo, removi todos os caminhos de descoberta alternativos:
- Sitemaps: Desativados para que todas as URLs do sitemap retornassem 404.
- Breadcrumbs: Removidos para que páginas profundas não pudessem vazar links de volta para a hierarquia.
- Painéis de hierarquia interna: Removidos pela mesma razão.
A única maneira de acessar uma página de divisão no grupo JS era renderizar JavaScript na página da seção pai.
A hierarquia do site foi dividida em 11 seções vinculadas em HTML e 10 seções vinculadas em JavaScript, com todos os caminhos de descoberta abaixo das seções JS exigindo execução de JavaScript.

Middleware registrou cada solicitação de bot em um banco de dados, incluindo detalhes sobre caminho, agente do usuário, referenciador, IP e timestamp. Os IPs do Googlebot e Bingbot foram verificados via DNS reverso para filtrar agentes de usuário falsificados. Cada solicitação foi marcada como pertencente ao grupo HTML ou ao grupo JS com base em seu caminho de URL.
Um detalhe de medição é importante. As páginas de seção para ambos os grupos estavam sempre vinculadas do índice em HTML simples. Um bot acessando uma página de seção do grupo JS não prova nada.
O sinal do experimento começa um nível mais profundo: um acesso a uma página de divisão no grupo JS só é possível se o bot renderizou o JavaScript da página pai e seguiu o link injetado.
Acompanhe, cresça e meça sua visibilidade em Google, pesquisa de IA, social, local e em todos os canais que influenciam decisões de compra.
Fase 1: Crawlers chegam quando o teste começa
Os crawlers chegaram rapidamente e rastrearam intensamente nas primeiras 72 horas.
O GPTBot varreu o site dentro de algumas horas após a implantação e rastreou todas as 759 páginas do grupo HTML no primeiro dia, até o nível de classe. No grupo JS, ele atingiu todas as 10 páginas de seção e parou. Nunca alcançou uma única página de divisão.
O ClaudeBot seguiu o mesmo padrão um dia depois: rastreamento HTML profundo e sistemático e uma parada brusca na fronteira do JavaScript.
Os dois crawlers do Google se comportaram de maneira diferente um do outro. O GoogleOther alcançou sua primeira página de divisão injetada por JS 54 minutos após o lançamento. O Googlebot levou 9,9 horas. Ambos trabalharam progressivamente mais fundo na hierarquia JS nos dias seguintes, o que só é possível se renderizarem as páginas pai e seguirem os links injetados. O Google documenta a renderização para o Googlebot. Para o GoogleOther, isso é uma observação dos meus registros, não um comportamento documentado.
O surto de rastreamento durou três dias. No quarto dia, a descoberta caiu cerca de 90% para ambos os grupos, e os números de cobertura congelaram.
Descoberta diária de páginas por crawler mostrando o surto de três dias do GoogleOther, a varredura de um dia do GPTBot e o Bingbot começando no dia 10.
O artigo destaca a importância de garantir que os links em sites sejam acessíveis a crawlers de IA, especialmente em um cenário onde a busca por IA está crescendo. Empresas brasileiras devem considerar a implementação de links em HTML para maximizar a visibilidade.
Noticias relacionadas
Devo Bloquear Crawlers de IA no Robots.txt ou no Nível do Servidor?
O artigo discute as melhores práticas para bloquear crawlers de IA, comparando o uso de robots.txt e bloqueios no nível do servidor. Apresenta prós e contras de cada abordagem.

Relatórios de IA do Google Search Console Lançados Globalmente
O Google anunciou que os relatórios de desempenho de IA do Search Console, que rastreiam impressões de AI Overviews e AI Mode, agora estão disponíveis para todos os sites mundialmente.

Experiência de John Mueller com Markdown para SEO de IA
John Mueller, do Google, compartilha sua experiência testando arquivos Markdown para consumo por LLMs, destacando que não há evidências de que isso melhore a visibilidade em buscas de IA.
Gostou do conteudo?
Receba toda semana as principais novidades sobre WebMCP.