Microdatos y Schema.org en HTML
¿Qué son los microdatos?
Los microdatos son una especificación del W3C (HTML5) que permite incrustar datos estructurados directamente dentro del marcado HTML de una página. Estos datos describen el contenido de forma que los motores de búsqueda y aplicaciones de terceros pueden interpretarlos sin ambigüedad.
En esencia, los microdatos añaden atributos itemscope, itemtype e itemprop a los elementos HTML, creando un pequeño vocabulario que describe el objeto (producto, artículo, persona, evento, etc.).
Schema.org: el vocabulario de referencia
Schema.org es una iniciativa conjunta de Google, Bing, Yahoo! y Yandex que define un amplio conjunto de tipos y propiedades para describir prácticamente cualquier entidad del mundo real. Cada tipo tiene su propia URL, por ejemplo https://schema.org/Person o https://schema.org/Article.
Al usar los tipos y propiedades de Schema.org dentro de los microdatos, garantizamos que los principales buscadores comprendan y utilicen la información para generar rich snippets, tarjetas de conocimiento y resultados enriquecidos.
Ventajas de usar microdatos + Schema.org
- Mejora del SEO: Los resultados enriquecidos aumentan la tasa de clics (CTR) y la visibilidad.
- Compatibilidad inmediata: No necesitas cargar archivos externos; la información está en línea con el HTML.
- Facilidad de implementación: Solo añades atributos a los elementos existentes.
- Interoperabilidad: Los mismos tipos pueden usarse con JSON‑LD o RDFa si cambias de estrategia.
Implementación paso a paso
- Identifica el tipo de entidad que describe tu contenido (Persona, Artículo, Producto, Evento, etc.).
- Selecciona el
itemtypecorrespondiente de Schema.org. - Envuelve el bloque HTML con
itemscopeyitemtype. - Añade
itempropa cada elemento que representa una propiedad del tipo. - Valida con la herramienta de pruebas de datos estructurados de Google (Rich Results Test).
Ejemplos prácticos en HTML
1️⃣ Persona (autor de un artículo)
<div itemscope itemtype="https://schema.org/Person">
<span itemprop="name">Laura Martínez</span>
<meta itemprop="jobTitle" content="Ingeniera de datos">
<meta itemprop="url" content="https://ejemplo.com/autores/laura">
</div>
2️⃣ Artículo de blog
<article itemscope itemtype="https://schema.org/Article">
<header>
<h1 itemprop="headline">Microdatos y Schema.org en HTML</h1>
<meta itemprop="datePublished" content="2025-11-13">
<meta itemprop="dateModified" content="2025-11-13">
<div itemprop="author" itemscope itemtype="https://schema.org/Person">
<span itemprop="name">Laura Martínez</span>
</div>
</header>
<section itemprop="articleBody">
...contenido del artículo...
</section>
<footer>
<meta itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<meta itemprop="name" content="TechBlog">
<meta itemprop="logo" content="https://ejemplo.com/logo.png">
</meta>
</footer>
</article>
3️⃣ Producto (e‑commerce)
<div class="product" itemscope itemtype="https://schema.org/Product">
<h2 itemprop="name">Cámara DSLR 24MP</h2>
<img src="cámara.jpg" alt="Cámara DSLR" itemprop="image">
<meta itemprop="sku" content="CAM-24MP-001">
<div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
<meta itemprop="priceCurrency" content="EUR">
<meta itemprop="price" content="799.99">
<link itemprop="availability" href="https://schema.org/InStock">
<time itemprop="priceValidUntil" datetime="2026-01-01">31 dic 2025</time>
</div>
</div>
4️⃣ Evento
<section itemscope itemtype="https://schema.org/Event">
<h2 itemprop="name">Conferencia DevOps 2025</h2>
<time itemprop="startDate" datetime="2025-12-05T09:00">5 dic 2025, 09:00</time>
<time itemprop="endDate" datetime="2025-12-05T17:00">17:00</time>
<div itemprop="location" itemscope itemtype="https://schema.org/Place">
<span itemprop="name">Centro de Convenciones Madrid</span>
<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
<span itemprop="streetAddress">Av. de la Constitución 1</span>,
<span itemprop="addressLocality">Madrid</span>,
<span itemprop="postalCode">28014</span>
</div>
</div>
<meta itemprop="description" content="Una jornada completa con charlas y talleres sobre CI/CD, automatización y cultura DevOps.">
</section>
Comparativa: Microdatos vs. JSON‑LD vs. RDFa
Microdatos (HTML inline)
- Se escribe directamente en el HTML existente.
- Fácil de leer para desarrolladores que ya conocen la estructura de la página.
- Puede entorpecer la legibilidad del markup si se abusa.
- Soportado por todos los principales buscadores.
JSON‑LD (script separado)
- Se coloca en un bloque
<script type="application/ld+json">independiente. - Separación clara entre contenido y datos estructurados → código más limpio.
- Requiere generar JSON válido; más fácil de mantener con plantillas.
- Preferido por Google para rich results.
RDFa (atributos extensos)
- Similar a microdatos pero con mayor expresividad (prefix, vocabularios).
- Ideal para entornos académicos o datos vinculados (Linked Data).
- Menos adoptado en SEO comercial.
Buenas prácticas y optimización
- Usa siempre URLs canónicas en
itemtype(https://schema.org/...) - Declara los campos obligatorios según la documentación de cada tipo para evitar warnings en la herramienta de Google.
- No dupliques información: si ya tienes
meta name="description", reutiliza el mismo texto enitemprop="description". - Minimiza el impacto de rendimiento: los atributos son ligeros; sin embargo, evita cargar recursos externos innecesarios solo para los datos estructurados.
- Valida siempre antes de publicar usando Rich Results Test y Schema.org Validator.
Solución de problemas (troubleshooting)
Problema común: "Missing required property"
El validador indica que falta una propiedad obligatoria (por ejemplo, price en Offer). Solución:
- Revisa la documentación del tipo en Schema.org/Offer.
- Asegúrate de que el atributo
itempropesté escrito exactamente como se define (mayúsculas/minúsculas importan). - Comprueba que el valor no sea vacío ni esté envuelto en otro elemento que rompa el scope.
Problema: “Invalid value for property”
Ejemplo: priceCurrency con valor “USD$”. La especificación requiere el código ISO 4217 (USD).
Corrige usando el valor estándar.
Problema de rendimiento: marcado excesivo
Si marcas cada párrafo con itemprop, el HTML se vuelve pesado. Limita el marcado a los datos realmente relevantes para los rich snippets.
Compatibilidad y escalabilidad
Los microdatos son compatibles con todos los navegadores modernos y con los rastreadores de los principales buscadores (Google, Bing, Yandex, Baidu). No requieren JavaScript, por lo que funcionan incluso cuando el sitio está renderizado del lado del servidor (SSR) o en entornos estáticos (Jekyll, Hugo, Eleventy).
Para sitios de gran escala (catálogos con cientos de miles de productos) se recomienda generar los fragmentos de microdatos de forma programática (por ejemplo, mediante plantillas en Liquid, Handlebars o Jinja2) y validar un subconjunto representativo en cada despliegue.
Futuro de los datos estructurados
Google está impulsando cada vez más JSON‑LD como formato preferido; sin embargo, los microdatos siguen siendo útiles para proyectos donde la simplicidad y la ausencia de scripts externos son prioritarias. La tendencia emergente es combinar ambos enfoques: usar microdatos para contenido crítico y JSON‑LD para información complementaria (por ejemplo, FAQ, HowTo).
Microdatos y Schema.org en HTML: Guía completa con ejemplos prácticos