He estado experimentando con Microdata y pensé en probarlo en mi blog. Resulta que la plantilla que estaba usando ya agregó algo de marcado. No fue genial y entonces arreglé lo que pude.
Para tratar de forzar mi suerte, he agregado más marcas a mi última publicación, pero la Herramienta de prueba de datos estructurados de Google (SDTT) no está contenta con los itemprop='image'
atributos y no estoy seguro de por qué.
Tengo entendido, ignorando todo el código intermedio, que he estructurado los datos de esta manera:
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<div itemprop='articleBody'>
<a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
<a href="2.png" itemprop="url"><img itemprop="image sharedContent" src="2.png" /></a>
<a href="3.png" itemprop="url"><img itemprop="image sharedContent" src="3.png" /></a>
</div>
</div>
Y esto me parece correcto.
BlogPosting
puede tener las propiedades articleBody
y de image
acuerdo con https://schema.org/BlogPosting , pero de acuerdo con el SDTT:
El atributo itemtype tiene un valor no válido.
De hecho, acabo de probar el SDTT con el código de ejemplo anterior y no se puede validar.
Obviamente me estoy perdiendo algo. ¿Qué estoy haciendo mal?
fuente
Respuestas:
schema.org/BlogPosting image permite ImageObject y URL, sin embargo, Google solo permite ImageObject , de ahí el error. El marcado previsto es:
Otra discrepancia es schema.org/ImageObject recomienda
contentUrl
, pero Google recomiendaurl
, de ahí mi uso anterior.En respuesta al código de su comentario , su estructura sigue siendo incorrecta. Lo tomaré línea por línea:
Punto menor, pero a menos que vayas por XHTML,
itemscope='itemscope'
está mal. Usoitemscope
(como lo hizo más adelante).Su ImageObject es un elemento secundario de la propiedad articleBody, pero no lo ha asociado de esta manera. De esta manera, tiene un articleBody sin propiedades asociadas y un ImageObject no asociado. Deberías usar
Además,
/>
es incorrecto, incluso si está intentando XHTML, ya que este elemento tiene elementos secundarios y un cierre</div>
. Solo utilícelo>
como lo incluí en el fragmento anterior.¿Qué hace sharedContent aquí? sharedContent espera un CreativeWork cuando se usa como una propiedad de SocialMediaPosting, nunca como una propiedad de ImageObject y nunca en una img.
El otro fragmento de código que coloca la propiedad sharedContent como se muestra a continuación también es incorrecto.
Si bien sharedContent está ahora en el lugar correcto, aún debe ser CreativeWork. Sus ImageObjects aún no están asociados con BlogPosting, como lo muestra la Herramienta de prueba de datos estructurados.
El siguiente es el código correcto.
fuente
ImageObject
fallasharedContent
como elemento secundario: pastebin.com/cSgVZNyE . La eliminación losharedContent
hace feliz: pastebin.com/rieWwSM6 . Envolver cada unoimage
en un padresharedContent
( pastebin.com/AmpBDqJs ) se valida felizmente, pero ¿es esto porque el STDD de Google simplemente lo ignora? El STDD está bastante contento sicontentURL
se usa también : pastebin.com/23wBvx8F . Entonces, ¿parece que lo hice correctamente y Google lo hizo incorrectamente? Eso tiene que ser el primero. 😉 Creo que puedo apaciguarlos a todos agregando todas las etiquetas relevantes. ¡Gracias! 😀sharedContent
: he usado todo eso mal. Lo he eliminado por ahora. Al ver otra vez el esquema que veo, no creo que necesite usarlo en aCreativeWork
. Simplemente ignore el/>
, fue escrito a toda prisa 😉, y el código original es XHTML. Acabo de mezclar los dos en mi ejemplo (de ahí las dos versiones deitemscope
). El código final es correcto, honesto! 😁Tuve un problema similar con Google Structured Data Tester marcando mis imágenes como no válidas. Aparentemente no acepta imágenes donde la fuente es un dominio localhost. Tan pronto como lo implementé en el servidor provisional, el marcado estructurado pasó la validación.
fuente