Para los rastreadores de IA, tu página puede ser un cascarón vacío
Los rastreadores de IA descargan el HTML inicial y nunca ejecutan tu JavaScript. Si el contenido se renderiza en el cliente, no ven nada que citar.
Que Google pueda indexar tu sitio no significa que la IA pueda leerlo.
Googlebot renderiza JavaScript. GPTBot, ClaudeBot y PerplexityBot descargan el HTML inicial y se detienen ahí. Si tu texto aparece recién después de que corre useEffect, lo que reciben es un <div id="root"></div> y nada más.
De dónde viene la diferencia
Renderizar JavaScript es caro: exige un motor de navegador por página. Los buscadores pueden pagarlo porque cubren toda la web y tienen una cola de renderizado. Los rastreadores de IA descargan en el momento en que alguien pregunta, así que se quedan con lo que llega en la primera respuesta y siguen adelante.
La diferencia no se ve desde el navegador. Tu página se ve bien para ti y bien en Google Search Console. Solo aparece en el HTML crudo.
Compruébalo tú mismo
Descarga la página como lo hace un rastreador: sin JavaScript, solo la respuesta.
curl -sL https://your-site.com/your-page | grep -c "<p>"
Un resultado cercano a cero en una página que sabes que tiene diez párrafos es el diagnóstico completo. Merece la pena mirar dos cosas más en esa salida:
- Si el cuerpo del texto aparece (busca una frase distintiva de tu página)
- Qué hay dentro del punto de montaje:
<div id="app">,<div id="root">,<div id="__next">
Si el punto de montaje está vacío y el texto no está, ese es el problema.
Cómo arreglarlo
La dirección es enviar el contenido en la primera respuesta, no añadirle un sustituto. De menor a mayor esfuerzo:
- Generación estática. El contenido se renderiza en el build. El mejor caso, y sirve para casi todas las páginas de marketing y los blogs.
- Renderizado en servidor. Se renderiza por petición en el servidor. Necesario cuando el contenido depende de la petición, y el rastreador lo lee igual de bien.
- Prerenderizado. Un servicio convierte tu SPA en HTML para los rastreadores. Un parche cuando la aplicación no se puede reestructurar, pero añade un segundo sistema que puede desincronizarse.
Un bloque <noscript> no es la solución. Ayuda un poco, pero el texto que el rastreador necesita debería estar en la página, no en un aviso dirigido a navegadores que ya tienen JavaScript desactivado.
Puedes ver cómo se ve tu página para un rastreador con la herramienta de vista sin JS: muestra cuánto texto sobrevive y si el punto de montaje está vacío.
Si quieres la visión completa en lugar de una sola comprobación, haz una auditoría completa: cubre las 32 reglas, incluidas las de renderizado, y devuelve una lista de correcciones priorizada.