Rastreadores de IA y JavaScript: por qué ChatGPT puede ver tu página vacía
Respuesta corta: Con los rastreadores de IA y JavaScript rige una regla sencilla: un bot que no ejecuta scripts solo ve el HTML que envía tu servidor. Si tu texto se construye en el navegador, ese HTML puede ser un armazón vacío. En una medición de Vercel y MERJ de diciembre de 2024, ninguno de los grandes rastreadores de IA ejecutaba JavaScript, mientras que el rastreador de Google y AppleBot sí lo hacían. Es una instantánea de 2024, así que prueba tus propias páginas y pon el contenido principal en el propio HTML: renderízalo en el servidor o genéralo con antelación.
¿Cómo llega un rastreador a tu página?
Toda petición empieza igual: una solicitud a tu servidor, que responde con HTML. Lo que ocurre después decide cuánto de tu página llega.
Un navegador carga los scripts a los que apunta el HTML, los ejecuta y muestra el resultado. Un rastreador puede detenerse tras el primer HTML. O puede renderizar: ejecuta los scripts, espera y solo después lee.
Si el servidor envía el texto, ambos caminos llevan al mismo contenido. Si la página se ensambla en el navegador, el primer HTML apenas contiene nada. La documentación de Google llama a esto el modelo «app shell». Un bot sin JavaScript recibe, más o menos, esto:
<body>
<div id="root"></div>
<script src="/app.js"></script>
</body>
El titular, el texto, la lista de productos y los enlaces solo aparecen cuando se ha ejecutado /app.js. No todos los rastreadores lo ejecutan, y ahí está el problema entero.
Qué hace Google con JavaScript
Google es el caso fácil. Su documentación sobre los fundamentos de SEO para JavaScript dice lo siguiente:
- Google Search ejecuta JavaScript con una versión «evergreen» de Chromium, es decir, siempre actualizada.
- Una página pasa por tres fases: rastreo, renderizado e indexación.
- Una página con estado 200 entra en una cola para el renderizado, que puede tardar segundos o más. En una página con un estado distinto de 200, como un 404, el renderizado puede omitirse.
- El título, la meta descripción y el canonical pueden establecerse con JavaScript.
La misma página da también la razón de ser de este artículo. Google escribe que el renderizado en servidor o el prerrenderizado siguen siendo una buena idea, porque hacen la página más rápida para usuarios y rastreadores, y porque no todos los bots pueden ejecutar JavaScript. Que «Google indexa mi página» no significa, por tanto, que cualquier bot pueda leerla.
Rastreadores de IA y JavaScript: lo que se sabe de verdad
La medición más conocida es de Vercel y MERJ, publicada en diciembre de 2024 con el título The rise of the AI crawler. Su conclusión: ninguno de los grandes rastreadores de IA ejecutaba JavaScript. El estudio cita entre ellos a GPTBot, OAI-SearchBot, ChatGPT-User y ClaudeBot. Googlebot (que el estudio incluye para Gemini) y AppleBot sí renderizaban JavaScript.
Junto a ese resultado hay que poner dos cautelas. La primera: es una instantánea de 2024 y no tenemos ninguna medición más reciente que citar. Los rastreadores cambian, así que tómalo como una advertencia y no como una ley. La segunda: dice qué lee un bot, no si una página se cita en una respuesta. Nadie puede prometer una cita, con o sin JavaScript.
Los bots tienen tareas distintas. Esto es lo que dicen sus operadores:
| Operador | Bot | Finalidad según el operador |
|---|---|---|
| OpenAI | GPTBot | Entrenamiento de modelos base generativos |
| OpenAI | OAI-SearchBot | Búsqueda en ChatGPT |
| OpenAI | ChatGPT-User | Accesos a petición de un usuario, por ejemplo una pregunta en ChatGPT |
| Anthropic | ClaudeBot | Recopila contenido web que puede contribuir al entrenamiento |
| Anthropic | Claude-SearchBot | Mejora la calidad de los resultados de búsqueda |
| Anthropic | Claude-User | Accede cuando un usuario le pregunta algo a Claude |
| Perplexity | PerplexityBot | Muestra y enlaza sitios web en los resultados de búsqueda de Perplexity |
Las fuentes son OpenAI, Anthropic y Perplexity. Perplexity tiene además un bot aparte para los accesos a petición de un usuario. Si los bots que están detrás de las respuestas de búsqueda con IA solo leen HTML, una página con un armazón vacío no les da nada que citar. Cuáles de ellos ejecutan scripts es justo lo que midió el estudio de 2024, y lo que conviene comprobar en tus propias páginas.
¿A quién afecta?
Te afecta si el texto o los enlaces de tus páginas no existen en el HTML que envía tu servidor:
- Páginas que se ensamblan por completo en el navegador. El servidor responde con un armazón y un paquete de scripts, y el script escribe el titular, el texto y la navegación.
- Contenido que los scripts cargan después. Listas de productos, precios, valoraciones, pestañas o secciones de «cargar más» que llegan de una llamada a una API una vez cargada la página.
- Enlaces que solo existen después de ejecutar los scripts. Un rastreador sin JavaScript solo puede seguir los enlaces que están en el HTML. El propio rastreo del sitio de SEOgrinder se topa con esto: avisa de que los enlaces que solo surgen en el navegador no se pueden seguir.
- Título, descripción, canonical y etiquetas Open Graph que establece un script. Google lo acepta. Un bot que se salta los scripts nunca las ve.
No te afecta si el servidor ya envía el texto. Los extras interactivos, como un menú, un gráfico o una calculadora, pueden seguir construyéndose en el navegador. SEOgrinder señala las páginas que solo existen en el navegador como «La página solo se construye en el navegador», porque muchos rastreadores de IA no ejecutan JavaScript y ven ahí una página casi vacía.
Tres pruebas en un minuto
No necesitas ninguna herramienta para averiguarlo. Las tres pruebas responden a la misma pregunta: ¿está mi texto en el HTML que envía el servidor?
- Ver el código fuente de la página. Abre tu página y elige «Ver código fuente de la página» (Ctrl+U, o Cmd+Option+U en Mac). No uses «Inspeccionar»: el inspector muestra la página después de que se hayan ejecutado los scripts. Busca en el código fuente una frase que puedas leer en la página.
- Pedir la página con curl. En una terminal, ejecuta
curl -sL https://example.com/tu-pagina | grep -io "una frase corta de tu página", usando una frase corta de tu propia página. Si se muestra la frase, está en el HTML, salvo que aparezca solo dentro de un elementoscript, lo cual no cuenta. Si no se muestra nada, revisa primero la ortografía y los caracteres especiales; si la ortografía es correcta, no está en el HTML. - Desactivar JavaScript. Abre las herramientas para desarrolladores, abre el menú de comandos (Ctrl+Shift+P, o Cmd+Shift+P en Mac), escribe «JavaScript», elige la opción para desactivarlo (en la interfaz en inglés, «Disable JavaScript») y recarga la página. Si el contenido principal ha desaparecido, un bot sin JavaScript ve lo mismo.
Cómo leer el resultado:
| Lo que ves | Qué significa |
|---|---|
| La frase está en el código fuente y en la salida de curl | El texto está en el HTML entregado. Esta parte está bien. |
| La frase falta en el código fuente, pero se ve en el navegador | La página se construye en el navegador. Los bots que se saltan los scripts no ven ningún texto. |
Dos límites: curl muestra lo que tu servidor envía a curl, no lo que envía a un bot concreto, por ejemplo cuando un firewall trata a los bots de otra manera. Y para ver lo que Google ha renderizado, usa la «Inspección de URLs» de Google Search Console.
Cómo solucionarlo: poner el contenido en el HTML
El objetivo es que los encabezados, el texto y los enlaces internos se vean en el código fuente. Hay dos caminos habituales para conseguirlo:
- Renderizado en servidor (SSR). El servidor construye el HTML terminado para cada petición.
- Prerrenderizado, también llamado generación estática (SSG). Las páginas se generan con antelación, por ejemplo al compilar el sitio, y el servidor se limita a entregar los archivos.
Ambos ponen el contenido en la primera respuesta. Además:
- Empieza por las páginas que importan. Rara vez hace falta rehacer el sitio entero. Comienza por las páginas que deben posicionarse o ser citadas.
- Pon lo esencial en el primer HTML. Es decir, el título, la meta descripción, el canonical, las etiquetas Open Graph, el texto principal y los enlaces de navegación escritos como elementos
<a href>de verdad. - Da el mismo contenido a rastreadores y a visitantes. Google presenta el «dynamic rendering», en el que los bots reciben una versión ya construida, solo como una solución provisional. Mostrar a los rastreadores algo distinto de lo que ven los visitantes es cloaking.
- Comprueba el resultado en el código fuente. Repite las tres pruebas después del cambio.
Nada de esto es una garantía de posicionamiento. Elimina un obstáculo técnico, nada más.
Cómo detecta SEOgrinder las páginas construidas en el navegador
SEOgrinder analiza el HTML que entrega tu servidor, no lo que un navegador hace con él. Introduce una dirección, inicia el análisis y las tareas aparecerán en la pestaña Tareas, ordenadas por impacto. Tres hallazgos pertenecen a este tema:
- La página solo se construye en el navegador. El hallazgo indica cuántas palabras, encabezados y enlaces internos contiene el HTML entregado, y señala que Google renderiza esas páginas con retraso y que muchos rastreadores de IA ven una página casi vacía.
- «N páginas solo se construyen en el navegador». El rastreo del sitio indica cuántas de las páginas rastreadas entregan un armazón HTML casi vacío. No cuentan las páginas con noindex ni las de inicio de sesión o registro.
- «N páginas de acceso o registro se crean en el navegador». Suele estar bien, porque esas páginas funcionan para los visitantes sin renderizado en servidor. Si una de ellas debe posicionarse, renderízala en el servidor.
Después de una corrección, pulsa Comprobar de nuevo: los informes se guardan hasta 24 horas en la caché, y este botón fuerza un análisis nuevo (unas pocas veces por hora). Entregar a la IA convierte el informe en una orden de trabajo en Markdown para un agente de programación como Claude Code, Cursor o GitHub Copilot, con una condición de cumplimiento comprobable por cada hallazgo.
Lo que SEOgrinder no hace: no mide si ChatGPT, Gemini o Perplexity nombran realmente tu marca. Comprueba la base técnica, es decir, si el contenido se puede leer siquiera.
Errores frecuentes
- Probar con «Inspeccionar» en lugar de «Ver código fuente». El inspector muestra el resultado después de ejecutar los scripts, que es justo lo que no recibe un bot sin JavaScript.
- Concluir que, como Google lo indexa, cualquier bot puede leerlo. Google ejecuta JavaScript, y su propia documentación dice que no todos los bots lo hacen.
- Establecer el título y las metaetiquetas solo con un script. Google lo permite, pero un bot que no ejecuta scripts nunca las ve. Ponlas en el primer HTML.
- Enlaces que son solo manejadores de clic. Usa enlaces
<a href>de verdad para que un rastreador pueda seguirlos sin ejecutar scripts. - Convertir el dynamic rendering en el plan definitivo. Google lo llama una solución provisional.
- Responder a cada dirección desconocida con el armazón y estado 200. Las aplicaciones renderizadas en el cliente suelen hacerlo, y esas páginas pueden tratarse como soft 404.
- Permitir los bots en el robots.txt y rechazarlos en el firewall. El texto está ahí, pero el bot recibe un error. SEOgrinder tiene un hallazgo para este caso: «Rastreadores de IA permitidos, pero rechazados por el servidor — revisar». Lee también nuestro artículo sobre el robots.txt para IA.
Preguntas frecuentes
¿Ve Google mi página con JavaScript?
Normalmente sí, pero más tarde. Google ejecuta JavaScript con un Chromium evergreen, y las páginas con estado 200 esperan en una cola para el renderizado. La indexación nunca está garantizada. La «Inspección de URLs» de Google Search Console muestra lo que ve Googlebot.
¿Basta con un sitemap?
No. Un sitemap dice a los rastreadores qué direcciones existen. No pone texto en el HTML de esas páginas.
¿Ejecutan JavaScript ChatGPT y Claude?
En la medición de Vercel y MERJ de 2024, los rastreadores de OpenAI y Anthropic que se citan en ella no lo hacían. No tenemos ninguna medición más reciente que citar, así que prueba tus propias páginas en lugar de fiarte de una u otra respuesta.
¿Tengo que reescribir mi sitio entero?
No necesariamente. Lo habitual como primer paso es aplicar el renderizado en servidor o el prerrenderizado en las páginas que deben posicionarse o ser citadas. Las partes interactivas pueden quedarse en el navegador.
Tu siguiente paso
Elige una página importante y haz las tres pruebas. Si el texto no aparece en el código fuente, haz el análisis gratuito en SEOgrinder y abre la pestaña Tareas. Corrige primero las páginas que más importan, renderizándolas en el servidor o generándolas con antelación, y pulsa después Comprobar de nuevo.