ai
Schema de tipo de contenido
MetricSpot comprueba que el `@type` de JSON-LD coincida con lo que la página realmente es — Article, Product, HowTo, FAQPage, etc. Sin él, los agentes de IA adivinan.
Qué comprueba esta verificación
Analiza cada bloque <script type="application/ld+json"> de la página y verifica que al menos uno declare un @type que coincida con el propósito real de la página. Un post de blog debería declarar Article (o BlogPosting / NewsArticle); una página de producto, Product; una guía paso a paso, HowTo; una página de preguntas frecuentes, FAQPage. Una página que sólo emite schema WebPage o WebSite falla — esos tipos son demasiado genéricos para decirle algo útil a los agentes.
Por qué importa
JSON-LD es la estructura que los agentes de IA y los buscadores usan para entender una página sin parsear la prosa. Cuando @type es específico, ChatGPT, Perplexity y Google AI Overviews saben qué campos extraer (headline, author, datePublished para un Article; price, availability, aggregateRating para un Product) y cómo citar la página en sus respuestas.
Cuando @type falta o es genérico, el agente recurre a heurísticas sobre el texto del cuerpo — más lento, menos preciso y mucho más propenso a saltarse tu página en favor de la de un competidor mejor marcada. La misma lógica se aplica a los rich results de Google: sólo los tipos específicos desbloquean las funciones de SERP (estrellas de reseña, fichas de receta, acordeones de FAQ) que suben el CTR.
Cómo arreglarlo
Elige el @type que mejor encaje con la página y emite un bloque JSON-LD completo en el <head>.
Article / BlogPosting / NewsArticle — para contenido editorial. Usa NewsArticle para noticias con marca temporal; BlogPosting para posts de blog; el Article plano es la opción segura por defecto.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to enable HSTS on nginx",
"datePublished": "2026-05-11",
"dateModified": "2026-05-11",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe"
},
"image": "https://example.com/og/hsts.png",
"mainEntityOfPage": "https://example.com/blog/hsts"
}
</script>
HowTo — para guías paso a paso (recetas, instrucciones de reparación, tutoriales de configuración). Campos obligatorios: name, step.
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Enable HSTS on nginx",
"step": [
{ "@type": "HowToStep", "name": "Add the header", "text": "Add `add_header Strict-Transport-Security ...` to your server block." },
{ "@type": "HowToStep", "name": "Reload nginx", "text": "Run `nginx -t && systemctl reload nginx`." }
]
}
FAQPage — sólo cuando la página es realmente un Q&A. Mira Schema FAQ para el patrón completo.
Product — para páginas de producto individuales. Incluye offers, aggregateRating, review cuando los tengas.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "MetricSpot Premium",
"description": "Unlimited audits, scheduled monitoring, PDF reports.",
"brand": { "@type": "Brand", "name": "MetricSpot" },
"offers": {
"@type": "Offer",
"price": "29.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
Next.js — inyéctalo vía <Script> del App Router o un helper de metadata:
import Script from "next/script";
export default function Post() {
const schema = {
"@context": "https://schema.org",
"@type": "BlogPosting",
headline: "How to enable HSTS on nginx",
datePublished: "2026-05-11",
author: { "@type": "Person", name: "Jane Doe" }
};
return (
<Script id="ld" type="application/ld+json">
{JSON.stringify(schema)}
</Script>
);
}
Astro — fija el JSON-LD en el <head> de tu layout:
---
const schema = { "@context": "https://schema.org", "@type": "BlogPosting", /* … */ };
---
<script type="application/ld+json" set:html={JSON.stringify(schema)} />
WordPress — Yoast SEO, Rank Math y SEOPress autoemiten schema Article para los posts. Revisa el código fuente renderizado para confirmar que @type es Article / BlogPosting, no sólo WebPage. Para páginas de producto, WooCommerce emite schema Product por defecto.
Tras desplegar, valida con la Rich Results Test de Google y el Schema Markup Validator. Mira también: Datos estructurados JSON-LD, Schema Organization.
Preguntas frecuentes
¿Una página puede tener varios bloques @type?
Sí — habitual y recomendado. Un post de blog suele llevar Article + BreadcrumbList + Organization. Cada uno en su propio bloque <script type="application/ld+json">, o combinados en un único array @graph. No te contradigas (no declares la página como Article y Product a la vez).
¿Article o BlogPosting?
BlogPosting es una subclase de Article — un pelín más específico, sin desventajas. Usa BlogPosting para contenido de blog, NewsArticle para noticias con fecha, Article para guías editoriales o técnicas evergreen. Google los trata equivalentemente para rich results.
¿Y si mi página no encaja con ningún tipo?
Las landing genéricas pueden quedarse en WebPage — esta verificación lo marca como aviso suave, no como fallo. Pero la mayoría de los casos de “no encaja” sí encajan con algo: una página de precios es Product o Service, una página “Sobre nosotros” es AboutPage, una de contacto es ContactPage. Hojea la lista completa de tipos de schema.org antes de quedarte en WebPage por defecto.
Fuentes
Última actualización 2026-05-11