Rastreadores de IA não executam JavaScript

Publicado 2026-08-099 min de leituraAI crawlers · JavaScript rendering · server-side rendering · GPTBot

Em resumo

Os rastreadores de IA como GPTBot e ClaudeBot executam JavaScript?

Não. A análise conjunta da Vercel e da MERJ, em uma rede que atendeu 569 milhões de requisições do GPTBot em um único mês, não encontrou nenhuma evidência de que GPTBot, ClaudeBot, PerplexityBot ou o rastreador da Meta executem JavaScript: eles interpretam o HTML bruto que o servidor devolve e descartam os scripts. O Google é a exceção, porque o Gemini herda a infraestrutura de renderização do Googlebot. Se o seu catálogo paramétrico monta os dados de produto no cliente, um assistente de IA vê uma casca vazia onde deveriam estar as suas especificações.

A resposta curta

Rastreadores de IA não executam JavaScript. Quando o GPTBot, o ClaudeBot ou o PerplexityBot solicita uma página, ele faz um HTTP GET simples, pega os bytes que o servidor devolve e os interpreta como texto. Não há navegador, não há construção do DOM, não há hidratação e não há espera até que as chamadas XHR sejam resolvidas. A análise conjunta da Vercel e da MERJ, em uma rede que atendeu 569 milhões de requisições do GPTBot e 370 milhões do ClaudeBot em um único mês, não encontrou nenhuma evidência de execução de JavaScript por parte de qualquer rastreador de IA relevante. Os rastreadores até baixam arquivos de script em alguns casos — o GPTBot buscou JavaScript em 11,50% das requisições e o ClaudeBot em 23,84% — e depois simplesmente nunca os executam.

The crawler is not served a worse page. It is served the same page, and cannot execute the step that fills it in.

O Google é a exceção, e é justamente por isso que tantas equipes ainda não perceberam o problema. O Googlebot opera um serviço de renderização com Chromium headless, e o Gemini se apoia nessa infraestrutura. Assim, um catálogo paramétrico renderizado no cliente pode ranquear muito bem na Busca do Google e, ao mesmo tempo, estar completamente ausente do ChatGPT, do Claude e da Perplexity. Esses já não são o mesmo público: a pesquisa da Forrester com compradores em 2026 constatou que 94% dos compradores corporativos hoje usam IA durante o processo de compra, e a Adobe mediu o tráfego encaminhado por IA para sites de varejo crescendo 393% ano a ano no 1º trimestre de 2026.

O que o GPTBot realmente recebe

Vale ser preciso quanto aos dois documentos envolvidos, porque a maioria das equipes de catálogo só olha para o segundo deles.

O HTML bruto é o fluxo de bytes que o servidor de origem escreve na resposta. É o que o curl imprime, o que o view-source: mostra e o que um cliente HTTP somente texto interpreta.

O DOM renderizado é o que existe na memória depois que o navegador interpretou esse HTML, baixou e executou cada script, resolveu cada chamada fetch() e aplicou cada mutação. É o que o painel Elements das ferramentas de desenvolvedor do navegador mostra.

Em um catálogo SPA moderno, esses dois documentos quase não têm nada em comum. O HTML bruto é uma casca: um <div id="root">, um manifesto de precarregamento e uma centena de kilobytes de referências a bundles. Todo texto com significado — part number, encapsulamento, tolerância, faixa de temperatura de operação, status RoHS, status de ciclo de vida, estoque, faixa de preço — chega depois, vindo de uma chamada de API que o rastreador nunca vai fazer.

Um rastreador de IA vê o seu HTML bruto e nada mais. Se uma especificação não está nos bytes que o servidor devolve, essa especificação não existe do ponto de vista do modelo.

Quais clientes renderizam e quais não

ClienteOperadorExecuta JavaScriptPara que serve
GPTBotOpenAINãoColeta de dados de treinamento
OAI-SearchBotOpenAINãoIndexação de busca para o ChatGPT
ChatGPT-UserOpenAINãoBusca ao vivo para a pergunta de um usuário
ClaudeBotAnthropicNãoColeta de dados de treinamento
PerplexityBotPerplexityNãoIndexação de busca
Meta-ExternalAgentMetaNãoTreinamento e indexação
BytespiderByteDanceNãoColeta de dados de treinamento
GooglebotGoogleSim, Chromium headlessBusca e embasamento do Gemini
ApplebotAppleSim, pode renderizar em um navegadorSiri, Spotlight, Safari

Cada "Não" dessa tabela é comportamento medido no conjunto de dados da Vercel e da MERJ, não uma inferência. Cada "Sim" está documentado pelo próprio operador: o Google publica o seu pipeline de renderização, e a documentação de rastreadores da Apple afirma que o Applebot "pode renderizar o conteúdo do seu site dentro de um navegador". Os agentes mais recentes da Anthropic, Claude-SearchBot e Claude-User, são posteriores ao estudo e não foram medidos separadamente; desde então, nenhum operador anunciou um pipeline de renderização para eles.

A consequência prática é assimétrica de um jeito nada conveniente. Renderizar é a parte cara do rastreamento, e os operadores que pularam essa etapa são exatamente os que hoje estão entre o seu produto e o seu comprador.

Por que os catálogos paramétricos falham mais do que qualquer outra coisa

A análise da Adobe de abril de 2026 pontuou páginas de varejo quanto à legibilidade por máquinas e encontrou as páginas de detalhe de produto em 66% — a pior nota entre todos os tipos de página, abaixo das home pages (75%), das páginas de categoria (74%) e até das páginas de FAQ (80%). Essa ordem não é acidente. As páginas que carregam os dados mais estruturados, mais valiosos e mais decisivos para a compra são justamente as construídas com mais JavaScript.

Cinco padrões respondem pela maior parte do estrago:

  1. 01O estado dos filtros vive no cliente. O seu seletor paramétrico é um componente React que lê de um store local. Não existe uma URL renderizada no servidor para "0603, 100nF, X7R, 50V", então não há nada para o rastreador buscar e nada para citar.
  2. 02A tabela de especificações é uma resposta de API. A casca da página é renderizada e, em seguida, uma requisição a /api/product/attributes preenche a tabela. O rastreador para na casca.
  3. 03Preço e disponibilidade ficam no cliente de propósito. Faz sentido para cache. É fatal para a visibilidade por máquinas, porque um modelo que não enxerga estoque não vai recomendar o componente.
  4. 04Abas e acordeões adiam o seu conteúdo. Datasheets, notas de aplicação, certificados de conformidade e links de CAD costumam ser carregados apenas no clique. Um rastreador nunca clica.
  5. 05A rolagem infinita substitui a paginação. Do produto 51 em diante, simplesmente não existe URL rastreável.

A Partsgraph auditou 984 domínios de distribuidores e fabricantes no mundo todo — América do Norte, Europa e Ásia — em agosto de 2026. A pontuação mediana de visibilidade para IA foi de 50 em 100, e 70% do grupo recebeu nota D ou F. Cerca de metade não conseguiu entregar uma única página de catálogo legível a um cliente padrão sem navegador. A distribuição de eletrônicos foi o segmento mais fraco, com mediana de 34.

Como faço para testar se os rastreadores de IA conseguem ler o meu catálogo?

Faça o teste contra a sua própria origem. Testar o site de um concorrente falsificando o user-agent de um rastreador produz falsos negativos, porque os gerenciadores de bots corporativos verificam rastreadores pelo IP de origem, não pela string do user-agent — um cabeçalho falsificado vindo de um endereço não reconhecido é desafiado de qualquer forma, não importa o que o robots.txt diga.

  1. 01Baixe o HTML bruto. Escolha a sua página de produto mais valiosa.
curl -sS --compressed -o page.html -w "status=%{http_code} bytes=%{size_download}" "https://example.com/products/part-number"
  1. 01Procure o part number nos bytes. Não no navegador — no arquivo.
grep -c "MPN-12345" page.html

Se isso retornar 0, nenhum rastreador de IA consegue identificar que a página trata daquele componente.

  1. 01Procure três valores paramétricos pelos quais você esperaria que um engenheiro filtrasse.
grep -oiE "operating temperature|tolerance|package|rohs|lifecycle" page.html | sort | uniq -c
  1. 01Conte os blocos de dados estruturados.
grep -c "application/ld+json" page.html

Zero significa que não há registro de produto legível por máquina. Um ou mais significa que você deve extraí-lo e validar se ele realmente traz sku, mpn, gtin, brand, offers e as suas entradas de additionalProperty mais importantes, em vez de apenas uma trilha de breadcrumbs.

  1. 01Compare com a página renderizada. Abra a mesma URL em um navegador com o JavaScript desativado. O que sobrar é, aproximadamente, o que um rastreador recebe. A diferença entre isso e a página normal é a sua invisibilidade.
  1. 01Verifique o caminho inteiro, não uma página só. Repita o teste em uma página de categoria, em uma página de resultados de busca, em um link de datasheet e em um download de CAD. Um rastreador que consegue ler a página de produto, mas não chega até ela a partir de uma listagem de categoria rastreável, continua travado.

Uma página aprovada vai mostrar o part number dezenas de vezes, os rótulos paramétricos presentes como texto e pelo menos um bloco JSON-LD. Para referência, uma página de produto bem construída costuma devolver de 60–200 KB de HTML contendo a tabela de especificações completa; uma casca de SPA quebrada devolve de 4–15 KB sem nada além de referências a bundles.

Como corrigir isso sem reescrever o site?

Você não precisa trocar de plataforma. Você precisa que os bytes na origem contenham os fatos. Há quatro caminhos, e eles não são mutuamente exclusivos.

AbordagemEsforçoO que resolvePrincipal risco
Renderização no servidor das rotas de produtoAltoTudo, de forma definitivaCusto de troca de plataforma e risco de regressão
Pré-renderização / renderização dinâmicaMédioO conteúdo do HTML brutoCache desatualizado em preço e estoque
JSON-LD renderizado no servidorBaixoFatos legíveis por máquinaIgnorado se o corpo do texto continuar vazio
Espelho em markdown e camada de sobreposiçãoBaixoConteúdo, documentos e acesso de agentesExige manter os links canônicos

A renderização no servidor das rotas de produto e de categoria é a resposta duradoura. Se você já está em um framework que dá suporte a isso, mover as rotas do catálogo para componentes de servidor ou para geração estática com revalidação incremental costuma ser questão de semanas, não de trimestres, porque a camada de dados já existe — ela só está sendo chamada do lado errado.

A pré-renderização é o paliativo honesto. Renderize cada página de produto uma vez, no build ou em uma rotina agendada, guarde o HTML em cache na borda e sirva-o para todo mundo. Entregue o mesmo documento a pessoas e a máquinas; fazer cloaking, servindo aos rastreadores uma página diferente, é ao mesmo tempo um risco de política e, na prática, contraproducente, porque o modelo vai citar a versão que recebeu.

O JSON-LD renderizado no servidor é a mudança de menor esforço e maior alavancagem. Coloque-o no HTML que o servidor emite, não em um gerenciador de tags.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "sku": "MPN-12345",
  "mpn": "MPN-12345",
  "name": "100 nF 50 V X7R 0603 ceramic capacitor",
  "brand": { "@type": "Brand", "name": "Example Components" },
  "additionalProperty": [
    { "@type": "PropertyValue", "name": "Capacitance", "value": "100 nF" },
    { "@type": "PropertyValue", "name": "Voltage rating", "value": "50 V" },
    { "@type": "PropertyValue", "name": "Dielectric", "value": "X7R" },
    { "@type": "PropertyValue", "name": "Operating temperature", "value": "-55 to +125 C" }
  ],
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "0.042",
    "availability": "https://schema.org/InStock"
  }
}
</script>

Um espelho em markdown é a forma mais barata de tornar uma página inequívoca. Sirva um equivalente em texto puro de cada página de produto em uma URL estável e linkada, com a tabela de especificações renderizada como uma tabela markdown. Clientes somente texto interpretam isso perfeitamente, gerá-lo a partir da mesma fonte de dados custa quase nada, e ele lhe dá uma superfície canônica para máquinas que não se desfaz quando o front-end é redesenhado. Vale notar que llms.txt não é isso: até 2026, nenhum grande operador de IA se comprometeu a lê-lo, e a equipe de Search Relations do Google recusou-se explicitamente a endossá-lo. Espelhos funcionam porque são páginas linkadas comuns.

Uma camada de sobreposição coloca tudo o que foi dito acima na frente do site existente, em vez de dentro dele. Um serviço sidecar ou um edge worker serve páginas renderizadas no servidor e legíveis por agentes, JSON-LD, espelhos em markdown e um endpoint MCP hospedado no seu próprio domínio, lendo do seu PIM atual. Nada muda no site voltado ao cliente. É essa a abordagem da Partsgraph, e é também o que um número crescente de fabricantes está construindo internamente: a Microchip lançou um servidor MCP público e gratuito para os dados dos seus produtos em novembro de 2025, e a TrustedParts, da ECIA, lançou um serviço de agente de IA para inventário em junho de 2026.

O que fazer primeiro, e em que ordem

  1. 01Rode o teste de seis passos acima nos seus dez principais produtos e registre a contagem de bytes.
  2. 02Renderize o JSON-LD no servidor nas páginas de produto. É a menor mudança com o maior efeito mensurável.
  3. 03Faça com que toda especificação, todo link de datasheet e todo link de CAD estejam presentes no HTML inicial, mesmo que a versão interativa continue no cliente.
  4. 04Dê a cada combinação de filtros paramétricos que importa uma URL real, rastreável e renderizada no servidor.
  5. 05Publique um espelho em markdown por produto e crie um link para ele na página.
  6. 06Só então se preocupe com rankings, prompts e participação nas respostas. A recuperação vem antes da citação; não há nada a otimizar enquanto o conteúdo não existir no corpo da resposta.

O mecanismo aqui não é sutil nem é objeto de disputa. Um modelo só pode citar o que recebeu, e o que ele recebeu é o seu HTML bruto. Todo o resto é uma etapa de renderização que nunca aconteceu.

Quer saber em que pé está o seu catálogo? O avaliador gratuito de visibilidade para IA da Partsgraph roda as verificações deste artigo no seu próprio domínio em [/audit](/audit).

Perguntas frequentes

O GPTBot renderiza JavaScript?

Não. A Vercel e a MERJ constataram que o GPTBot baixa arquivos JavaScript em cerca de 11,5% das suas requisições, mas nunca os executa. Ele extrai o conteúdo do HTML que o servidor devolve na resposta inicial. Tudo o que o seu bundle injeta no DOM depois do carregamento é invisível para ele.

Por que o Google enxerga a minha single-page app e o ChatGPT não?

O Googlebot roda um serviço de renderização com Chromium headless, então executa o seu JavaScript e indexa o DOM resultante. O Gemini se apoia nessa mesma infraestrutura. OpenAI, Anthropic e Perplexity operam clientes HTTP simples, sem motor de navegador, de modo que a mesma página pode ranquear no Google e estar completamente ausente de uma resposta de IA.

A pré-renderização ou a renderização dinâmica resolvem o problema?

Podem resolver, e são um paliativo legítimo para um catálogo que você não consegue migrar de plataforma rapidamente. Os riscos são o cache desatualizado em preço e estoque e a entrega aos rastreadores de uma página substancialmente diferente da que os usuários recebem. Mantenha o HTML pré-renderizado semanticamente idêntico à página renderizada e defina uma janela curta de revalidação para os campos voláteis.

O JSON-LD é suficiente sozinho?

Só se estiver no HTML que o servidor devolve. JSON-LD injetado por um gerenciador de tags ou por um script no cliente chega depois que o rastreador já terminou. Renderize a tag de script no servidor e trate o JSON-LD como um complemento ao texto legível do corpo da página, não como um substituto dele.

Como testo isso por conta própria em menos de um minuto?

Rode o curl contra uma URL de produto com compressão habilitada, salve a resposta e faça um grep nos bytes brutos procurando o seu part number e dois ou três valores paramétricos. Se eles não estiverem no arquivo, mas aparecerem no navegador, é o JavaScript que os monta — e nenhum rastreador de IA jamais vai vê-los.

Os rastreadores de IA respeitam o meu sitemap?

Eles o usam de forma inconsistente. A Vercel e a MERJ mediram 34,82% das buscas do ChatGPT terminando em 404, contra 8,22% do Googlebot, o que sugere descoberta de links a partir de fontes desatualizadas em vez de um rastreamento disciplinado do sitemap. Um sitemap preciso, com valores de lastmod corretos, ajuda, mas não compensa páginas que não devolvem conteúdo.

Isso também vale para downloads de CAD, BIM e datasheets?

Sim, e de forma ainda mais severa. Se um link de download é gerado por JavaScript, fica atrás de uma página intersticial ou é resolvido por uma URL assinada de curta duração, um cliente sem navegador simplesmente não consegue segui-lo. É como se o documento não existisse.

Fontes

  1. 01Vercel and MERJ, The rise of the AI crawler, December 2024
  2. 02Adobe Digital Insights, AI traffic and retail machine-readability, April 2026
  3. 03eCommerceNews, Adobe machine-readability scores by page type, April 2026
  4. 04TechCrunch, AI traffic to US retailers rose 393% in Q1, April 2026
  5. 05Forrester, The State Of Business Buying, 2026 (January 2026)
  6. 06Google Search Central, Google crawlers and user agents
  7. 07OpenAI, Overview of OpenAI crawlers
  8. 08Anthropic, Does Anthropic crawl data from the web?
  9. 09Apple Support, About Applebot
  10. 10Microchip Technology, MCP Server press release, November 2025
  11. 11ECIA, TrustedParts.com launches Inventory AI Agent Service, June 2026
  12. 12Search Engine Journal, Google says llms.txt is speculative for now
Teste no seu próprio catálogo

Veja exatamente o que os assistentes de IA conseguem e o que não conseguem ler dos seus produtos hoje — política de rastreamento, cobertura do catálogo, acesso às fichas técnicas —, com pontuação e comparação com 984 distribuidores e fabricantes do mundo todo.

Avaliar meu catálogo

Notas de campo relacionadas