¿Pueden los rastreadores de IA leer contenido renderizado con JavaScript?
A menudo no. Googlebot renderiza JavaScript en un paso posterior, pero la mayoría de los rastreadores de IA no documentan que lo hagan, y el propio Google señala que no todos los bots pueden ejecutar JavaScript. Si tu texto solo aparece cuando se ejecutan los scripts, un rastreador de IA puede recibir una página vacía. Sirve el contenido principal en el HTML inicial con renderizado en el servidor o páginas estáticas.
Las aplicaciones de una sola página y los frameworks del lado del cliente están por todas partes, y en un navegador se ven bien. Un rastreador que solo lee el HTML que envía tu servidor ve otra cosa: un <div id="root"></div>, unas etiquetas script y poco o ningún texto. Para las respuestas de IA, esa página no tiene nada que citar.
En esta página
- ¿Por qué los rastreadores de IA no ven el contenido JavaScript?
- ¿Cómo compruebo lo que recibe un rastreador?
- ¿Qué páginas corren más riesgo?
- ¿Cómo soluciono el contenido que solo existe con JavaScript?
- ¿Las pantallas de inicio de sesión, consentimiento y muro de pago también bloquean a los rastreadores de IA?
- ¿Cómo detecta AISeeWhy las páginas que dependen solo de JavaScript?
¿Por qué los rastreadores de IA no ven el contenido JavaScript?
Ejecutar JavaScript es caro. Un rastreador tiene que descargar los scripts, ejecutarlos en un motor de navegador y esperar a que carguen los datos. Google lo hace para Search: rastrea, pone las páginas en cola para renderizar y las renderiza con Chromium sin interfaz cuando los recursos lo permiten. Aun así, Google recomienda el renderizado en el servidor o el prerenderizado porque es más rápido para usuarios y rastreadores, y señala que no todos los bots pueden ejecutar JavaScript.
OpenAI, Anthropic y Perplexity no indican en la documentación de sus rastreadores que sus agentes ejecuten JavaScript. Apple dice que Applebot puede renderizar páginas en un navegador. Sin una declaración clara, lo más seguro es asumir que los rastreadores de IA solo leen el HTML inicial.
¿Cómo compruebo lo que recibe un rastreador?
Mira el HTML en bruto, no la página renderizada. Las herramientas de desarrollo del navegador muestran el DOM después de ejecutar los scripts, que no es lo que recibe un rastreador. Usa el código fuente de la página, o guarda el HTML en bruto desde la línea de comandos y busca en él:
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
Un resultado de 0 significa que la frase no está en el HTML que envió el servidor, así que los rastreadores que no ejecutan scripts no la encontrarán. Un vistazo al archivo te dice el resto: un artículo renderizado en el servidor tiene ahí todo su texto; una carcasa del lado del cliente tiene un elemento raíz vacío y una lista de scripts.
¿Qué páginas corren más riesgo?
- Aplicaciones de una sola página hechas con React, Vue, Angular o Svelte que lo renderizan todo en el navegador.
- Páginas que obtienen su texto principal de una API después de cargar, como los detalles de producto, los precios o las reseñas.
- Contenido dentro de pestañas, acordeones o secciones de «cargar más» que solo se solicita al hacer clic.
- Páginas tras un inicio de sesión, un muro de pago o un muro de consentimiento que el rastreador no puede atravesar.
- Páginas que fijan
noindexo la URL canónica solo mediante JavaScript. Google advierte de que, cuando venoindexen el HTML original, puede saltarse el renderizado por completo.
¿Cómo soluciono el contenido que solo existe con JavaScript?
La solución es enviar el contenido importante en la primera respuesta. Elige la opción más ligera que permita tu stack:
- Renderizado en el servidor (SSR): frameworks como Next.js, Nuxt, SvelteKit y Angular SSR renderizan la página en el servidor y la hidratan en el navegador.
- Generación estática o prerenderizado: construye el HTML en el momento del despliegue para las páginas que cambian poco, como artículos, documentación y páginas de aterrizaje.
- Mejora progresiva: pon el texto, los encabezados, los enlaces, los precios y el JSON-LD en el HTML y usa JavaScript solo para la interacción.
- Incluye lo que importa: si unas pestañas ocultan contenido, ponlo todo en el HTML y alterna la visibilidad con CSS o un script, en lugar de cargarlo al hacer clic.
No tienes que convertir toda una aplicación de golpe. Empieza por las páginas que quieres que citen: artículos, documentación, páginas de producto y de precios. Las áreas de cuenta y los paneles pueden seguir en el cliente, porque de todos modos están tras un inicio de sesión.
Evita servir a los rastreadores una página distinta a la de los usuarios según su user agent. Servir el mismo HTML a todos es más sencillo de mantener y evita cualquier duda de cloaking.
¿Las pantallas de inicio de sesión, consentimiento y muro de pago también bloquean a los rastreadores de IA?
Sí. Un rastreador no inicia sesión, no hace clic en un banner de cookies y no resuelve desafíos. Anthropic afirma que sus bots no intentarán saltarse los CAPTCHA. Si un gestor de consentimiento sustituye la página por una capa a pantalla completa en el HTML, o redirige a los visitantes nuevos a una página de consentimiento, el rastreador recibe eso en lugar de tu contenido.
Asegúrate de que las páginas públicas muestren su contenido en el HTML sea cual sea el estado del consentimiento, con el banner como capa superpuesta y no como sustituto. Mantén las páginas que quieres que citen fuera de los muros de inicio de sesión, y comprueba que no se redirige a un rastreador a una página de acceso.
¿Cómo detecta AISeeWhy las páginas que dependen solo de JavaScript?
AISeeWhy lee el HTML inicial tal como lo recibe cada rastreador, sin ejecutar scripts. Cuando una página casi no tiene texto visible pero sí un elemento raíz de framework y scripts, informa de un hallazgo P1: el contenido necesita JavaScript. También señala las redirecciones que envían a los rastreadores a un sitio distinto del que recibe un navegador.
Preguntas frecuentes
¿Googlebot renderiza JavaScript?
Sí. Google rastrea el HTML, pone las páginas en cola para renderizar y las renderiza con Chromium sin interfaz cuando los recursos lo permiten. Aun así, Google recomienda el renderizado en el servidor o el prerenderizado.
¿Los rastreadores de ChatGPT, Claude y Perplexity ejecutan JavaScript?
La documentación de rastreadores de sus proveedores no lo dice. Hasta que un proveedor indique lo contrario, asume que el rastreador lee el HTML inicial y asegúrate de que tu contenido esté en él.
¿Es buena idea el renderizado dinámico para bots?
Sirve como parche, pero añade una segunda vía de renderizado que mantener. El renderizado en el servidor o el HTML estático sirven el mismo contenido a todos y son la solución a largo plazo más simple.
¿Cuenta el JSON-LD añadido con JavaScript?
Google puede leerlo después de renderizar, pero los rastreadores que no ejecutan scripts no lo verán. Pon el JSON-LD en el HTML inicial.
Fuentes
- Google Search Central: fundamentos de SEO con JavaScript
- Apple: acerca de Applebot
- OpenAI: descripción general de los rastreadores de OpenAI
- Anthropic: ¿Anthropic rastrea datos de la web y cómo pueden bloquear el rastreador los dueños de sitios?
- Perplexity: los rastreadores de Perplexity