Renderizado y JavaScript: por qué tu sitio puede quedar invisible para la IA

Tu sitio se ve perfecto en el navegador, pero la IA lo lee vacío. Pasa seguido, y casi siempre la causa es la misma: el contenido aparece recién cuando el navegador ejecuta JavaScript, y muchos rastreadores toman el HTML antes de ese paso. Si el texto importante llega tarde, el modelo se queda con una página en blanco y pierde todo lo que tenías para decir.

Cómo lee un rastreador

Un rastreador pide la URL y recibe el HTML inicial que devuelve el servidor. La documentación de Google sobre conceptos básicos de JavaScript SEO describe que el renderizado ocurre en una fase posterior y diferida: Googlebot primero rastrea, encola la página y recién después ejecuta el JavaScript cuando hay recursos disponibles. Ese proceso pesado y en dos etapas lo aplica un buscador maduro.

Los rastreadores de las plataformas de IA suelen ser más simples. Muchos se quedan con el HTML crudo y no ejecutan JavaScript, o lo hacen de forma limitada. La propia especificación de llms.txt reconoce el problema de raíz: convertir HTML lleno de menús, avisos y JavaScript a texto plano para un modelo es difícil e impreciso. Todo lo que dependa de JS para aparecer corre el riesgo de nunca ser leído.

El síntoma típico

Aplicaciones hechas con frameworks del lado del cliente (una SPA clásica) suelen enviar un HTML casi vacío con un <div id="root"></div> y todo el contenido se arma después en el navegador. Para un humano funciona bien, porque su navegador ejecuta el JavaScript en milisegundos. Para un rastreador que se queda en el HTML inicial, esa página no dice nada: ni título, ni texto, ni enlaces.

Cómo servir contenido que la IA sí lee

La solución es entregar el contenido ya presente en el HTML inicial. Tenés varias formas de lograrlo:

  • SSR (renderizado en el servidor): el servidor genera el HTML completo en cada pedido. Ideal para contenido que cambia seguido.
  • SSG (generación estática): las páginas se construyen una vez en el momento del build y se sirven como HTML fijo. Rápido y muy amigable para rastreadores.
  • ISR (regeneración incremental): combina lo estático con actualizaciones periódicas, útil para catálogos grandes.
  • Prerendering: se genera una versión HTML de cada ruta para servir a los bots, útil cuando ya tenés una SPA en producción y no querés reescribirla.

Frameworks como Next.js, Nuxt, Astro o SvelteKit traen estas estrategias listas para usar. La regla práctica se resume en una línea: el texto que querés que la IA cite tiene que estar en el HTML que devuelve el servidor.

Cómo comprobar qué ve el bot

  1. Abrí la página y usá “Ver código fuente” (Ctrl+U). Ese es el HTML crudo, parecido a lo que recibe un rastreador que no ejecuta JavaScript.
  2. Buscá con Ctrl+F un párrafo clave de tu contenido. Si aparece en el código fuente, un bot lo puede leer. Si no aparece, depende de JavaScript.
  3. Comparalo con el DOM renderizado (clic derecho, “Inspeccionar”). La brecha entre ambos es exactamente lo que un rastreador simple se pierde.
  4. Repetí con las páginas de producto, precios y FAQ, que son las que más rinden en respuestas de IA.

Una prueba complementaria: pegá la URL en una IA con navegación (por ejemplo ChatGPT con búsqueda o Perplexity) y preguntale de qué trata la página. La respuesta te muestra qué logró extraer.

Checklist rápido

  • El título, los encabezados y el texto principal están en el HTML inicial.
  • Los enlaces internos son etiquetas <a href> reales, no botones que navegan solo con JavaScript.
  • Las imágenes con información llevan atributo alt descriptivo.
  • Los datos estructurados viajan en el HTML, no se inyectan tarde con scripts.

Este chequeo complementa lo que trabajamos en accesibilidad técnica y en la configuración de llms.txt y robots.txt. Con el contenido visible en el HTML, el paso siguiente es estructurarlo para que el modelo lo entienda sin ambigüedad con datos estructurados JSON-LD. Si tu sitio es nuevo y todavía no aparece, ayuda entender la zona gris de indexación.

Fuentes