Cómo ChatGPT procesa el código de una web (y por qué a veces parece que no lo hace)
Cuando se habla de SEO técnico y datos estructurados, muchos se preguntan si ChatGPT y otros modelos de IA son capaces de leer realmente el schema JSON-LD de una web.
La respuesta es clara: sí, lo leen. Pero el modo en que lo hacen puede generar confusión.
El proceso de lectura de ChatGPT paso a paso
- Petición al servidor
- ChatGPT no utiliza los bots oficiales (como GPTBot, ChatGPT-User, OAI-SearchBot), sino que suele apoyarse en servicios intermedios o scrapers que hacen la petición HTTP, (Web.run) no siempre ejecuta sus bots oficiales.
- Obviamente esto no es «oficial», pero es muy sencillo de averiguar si generas consultas a una URL y luego compruebas los logs en el servidor.
- Este detalle es clave: las CDNs o firewalls pueden servir una versión reducida del HTML a esos agentes desconocidos.
- Normalización del documento
- Se obtiene el HTML crudo, se descomprime y se analiza en un DOM.
- No se ejecuta JavaScript como un navegador real (no hay “renderizado completo”), salvo en configuraciones específicas con navegadores headless.
- Extracción del
<head>- Aquí busca
<title>, meta tags, canonical, robots, Open Graph… - Y, lo más importante, los bloques
<script type="application/ld+json">. - Aunque lleven clases extra ejemplo: (
class="rank-math-schema-pro"), ChatGPT puede leerlos. El problema surge cuando la CDN decide no servir esos bloques a ciertos user-agents. - Análisis del
<body>- Identifica jerarquía de encabezados (H1, H2, H3).
- Extrae párrafos que puedan convertirse en respuestas “answer-ready”.
- Revisa microdatos, listas, tablas y atributos
alten imágenes. - Validación de schema
- Se parsea el JSON-LD.
- Se comprueba el
@context, el@type(Organization, LocalBusiness, FAQPage, Service…) y los campos clave. - Se integran estas señales en el grafo semántico que ChatGPT usa para citar o resumir.
- Aquí busca
Problemas habituales en este proceso
🔴 El schema no aparece en la vista previa
- ChatGPT puede estar recibiendo una versión filtrada por la CDN.
- Algunos scrapers eliminan los
<script>por seguridad. - Scrapers básicos fallan si esperan exactamente
script[type="application/ld+json"]sin atributos extra.
🔴 Contenido solo con JavaScript
- Si el JSON-LD se inyecta dinámicamente tras la carga, ChatGPT no lo verá.
- Solución: siempre inyectar SSR (lado servidor).
🔴 Errores de formato
- Comas finales, comentarios en el JSON, URLs relativas o
@idincoherentes rompen la lectura.
Cómo replicar exactamente la lectura (checklist práctico)
1) Encabezados HTTP y redirecciones
curl -I -L https://yaggoseo.comn2) Descargar el HTML final “crudo”
curl -sL https://yaggoseo.com -o page.htmln3) Extraer el <head> completo desde el archivo
# Extrae el bloque … tal cualnsed -n '/]*>/,//p' page.html > head.htmln4) Ver si hay JSON-LD (schema) y listar cuántos bloques hay
grep -n 'application/ld+json' page.htmln5) Inspeccionar el/los schema(s)
# (rápido) muestra cada bloque JSON-LD con contexto: awk '//' page.html # (fino) si tienes jq: awk '//' page.html | sed 's///' | jq .6) Validación en buscadores
- Google Rich Results Test: URL o HTML completo.
- Schema.org Validator: revisión de sintaxis y tipos.
7) Señales de contenido “answer-ready”
# Extrae el H1-H3 rápido (aprox; no perfecto, pero útil)ngrep -niE ']*>.*' page.htmlnn# Busca un párrafo “answer-ready” cerca del H1:n# (manual: abre page.html y revisa el bloque tras el primer Ejemplos prácticos con Rank Math y Yoast SEO
Con Rank Math
- Permite crear plantillas de schema para tipos de contenido (LocalBusiness, Service, FAQPage) y añadirlas automáticamente.
- Inyecta JSON-LD directamente en el HTML inicial (SSR).
- Se pueden ampliar campos con filtros en
functions.php.
Con Yoast SEO
- Genera un grafo unificado con
Organization,WebSite,BreadcrumbList, etc. - Permite ampliarlo con el filtro
wpseo_schema_graphpara añadirLocalBusiness,FAQPageoService. - Ventaja: el grafo enlaza los nodos entre sí, mejorando la coherencia semántica.
El papel de las CDNs (Cloudflare y otras)
Además de Cloudflare, otras CDNs como Akamai, Fastly o Amazon CloudFront también pueden afectar la lectura:
- Modo seguridad: pueden servir HTML reducido a agentes no reconocidos.
- Bloqueos por ASN/geolocalización: muchos scrapers de IA usan IPs de AWS, Azure o GCP que pueden estar restringidas.
- Caché agresiva: si se cachea un HTML sin JSON-LD, ese es el que verá ChatGPT.
Ajustes recomendados
- Desactivar modos agresivos de protección (“Under Attack”, WAF estricto) para bots legítimos.
- Permitir explícitamente
GPTBot,ClaudeBot,PerplexityBotyGoogle-Other. - Configurar reglas para no filtrar
<script type="application/ld+json">. - Monitorizar logs de acceso para detectar bloqueos a scrapers de IA.
¿Por qué ChatGPT lee JavaScript (y por qué conviene optimizarlo)?
Aunque en la mayoría de los casos ChatGPT procesa el HTML inicial, en algunos entornos utiliza navegadores headless (Playwright/Puppeteer) para cargar páginas. Esto significa que sí puede llegar a leer parte del JavaScript y el DOM renderizado.
¿Qué implica?
- Si el contenido clave se carga solo por JavaScript (ej. una SPA sin SSR), ChatGPT podría tener dificultades o recibir una versión incompleta.
- Optimizar el JavaScript mejora la accesibilidad y velocidad tanto para usuarios como para bots de IA.
- Minimizar dependencias JS y usar Server-Side Rendering (SSR) asegura que el contenido y el schema estén disponibles desde el primer HTML.
Buenas prácticas de optimización
- Reducir el peso de JS y cargarlo de forma diferida (
defer,async). - Mantener el HTML inicial con contenido esencial y schema JSON-LD.
- Evitar que la carga de JS bloquee el render de datos estructurados.
- Implementar Core Web Vitals (LCP, INP, CLS) que también influyen en la elegibilidad de IA.
Conclusiones del Análisis
- ChatGPT sí es capaz de leer el JSON-LD de una web, incluso con atributos extra en la etiqueta
. - El problema suele estar en el canal de scraping: al no usar siempre bots oficiales, las CDNs pueden servir HTML reducido o incompleto.
- Rank Math y Yoast SEO permiten inyectar schema de forma robusta en el HTML inicial.
- Es recomendable revisar no solo Cloudflare, sino también otras CDNs para evitar bloqueos.
- Optimizar el JavaScript garantiza que tanto usuarios como modelos de IA accedan a un contenido limpio, rápido y completo.
- La clave es asegurar que el schema esté en el HTML inicial (SSR), bien estructurado y sin bloqueos, para que ChatGPT, Perplexity y otros LLM lo procesen correctamente.






