Soporte para Búsqueda Enriquecida con RDFa


Hace mucho tiempo que llevo queriendo añadir soporte para resultados enriquecidos de búsqueda de Google al blog y por fin me he puesto a ello. Desde que migré de Blogger tengo habilitado el soporte para Open Graph y la búsqueda enriquecida es más de lo mismo, transformar la web en objetos con contenido semántico que puedan interpretarse de forma estandarizada.

Google recomienda encarecidamente el uso de JSON-LD como lenguaje para expresar estos datos estructurados pero yo he decidido hacerlo en RDFa para ser coherente con el diseño de Open Graph, o puede que sea porque ahora está de moda la Composition API de Vue 3 y veo en la solución de JSON-LD un formato que tiende a la redundancia innecesaria de la información, aunque su presentación es claramente superior. Espero no arrepentirme de esta decisión pero en cualquier caso, no es grave y puedo dar marcha atrás en cualquier momento.

Escribo este post porque los datos estructurados en RDFa no son tan intuitivos como si los programáramos en JSON-LD. El principal problema radica en que nadie se ha leído la documentación y Google no ofrece ejemplos. Por esta razón he decidido resumir en un snippet básico la estructura que tendrían estos datos para que fueran aceptados como un artículo válido por el buscador.

<article vocab="https://schema.org/" typeof="BlogPosting">
	<img property="image" src="https://example.com/image.png" />
	<h3 property="headline">Title</h3>
	<time property="datePublished">YYYY-MM-DDTHH:MM:SS</time>
	<div property="author" typeof="Person">
		<meta property="name" content="Author's Name" />
	</div>
	<div property="publisher" typeof="Organization">
		<meta property="name" content="Organization's Name" />
		<div property="logo" typeof="ImageObject">
			<meta property="url" content="https://example.com/logo.png" />
		</div>
	</div>
</article>

Aunque hay campos en este ejemplo que no son obligatorios en artículos no-AMP, como los de esta web, me parecen datos muy razonables y recomendables. El snippet puede usarse con esquemas de tipo BlogPosting pero también con Article y NewsArticle. Como norma básica, si queremos que los datos no se muestren en la web, tendremos que utilizar la etiqueta meta.

Es aconsejable comprobar que hemos estructurado bien el esquema con las herramientas que nos proporciona Google: