Eu tenho experimentado o Microdata e pensei em experimentar no meu blog. Acontece que o modelo que eu estava usando já adicionou alguma marcação. Não foi ótimo e então eu arrumei o que pude.
Para tentar dar sorte, eu adicionei mais marcações à minha postagem mais recente, mas a Ferramenta de Teste de Dados Estruturados (SDTT) do Google está descontente com os itemprop='image'
atributos e não sei por que.
Entendo, ignorando todo o código intermediário, que estruturei os dados da seguinte maneira:
<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>
E isso parece correto para mim.
BlogPosting
pode ter as propriedades articleBody
e de image
acordo com https://schema.org/BlogPosting , mas de acordo com o SDTT:
O atributo itemtype possui um valor inválido.
Na verdade, eu apenas tentei o SDTT com o código de exemplo acima e ele está falhando na validação.
Então, obviamente, estou perdendo alguma coisa. O que estou fazendo errado?
fonte
Respostas:
A imagem schema.org/BlogPosting permite ImageObject e URL, no entanto, o Google permite apenas ImageObject , daí o erro. A marcação pretendida é:
Outra discrepância é schema.org/ImageObject recomenda
contentUrl
, mas o Google recomendaurl
, portanto, meu uso acima.Em resposta ao código do seu comentário , sua estrutura ainda está incorreta. Vou levá-lo linha por linha:
Ponto secundário, mas a menos que você esteja usando o XHTML,
itemscope='itemscope'
está errado. Useitemscope
(como você fez mais tarde).Seu ImageObject é filho da propriedade articleBody, mas você não a associou dessa maneira. Assim, você tem um articleBody sem propriedades associadas e um ImageObject não associado. Você deveria usar
Além disso,
/>
está incorreto, mesmo se você estiver tentando usar XHTML, pois esse elemento tem filhos e um fechamento</div>
. Basta usar>
como eu incluí no snippet acima.O que o sharedContent está fazendo aqui? sharedContent espera um CreativeWork quando usado como uma propriedade do SocialMediaPosting - nunca como uma propriedade do ImageObject e nunca em um img.
Seu outro trecho de código que coloca a propriedade sharedContent como abaixo também está errado.
Embora o sharedContent esteja agora no lugar certo, ele ainda precisa ser um CreativeWork. Seus ImageObjects ainda não estão associados ao BlogPosting, como mostra a Ferramenta de Teste de Dados Estruturados.
A seguir está o código correto.
fonte
ImageObject
falha comsharedContent
um filho dela: pastebin.com/cSgVZNyE . A remoçãosharedContent
faz com que seja feliz: pastebin.com/rieWwSM6 . O agrupamento de cadaimage
um em um paisharedContent
( pastebin.com/AmpBDqJs ) valida com satisfação, mas é porque o STDD do Google simplesmente o ignora? O STDD fica muito feliz secontentURL
for usado também : pastebin.com/23wBvx8F . Parece que eu fiz isso corretamente e o Google fez errado? Isso tem que ser o primeiro. 😉 Acho que posso apaziguar todos eles adicionando todas as tags relevantes. Obrigado!sharedContent
- eu usei tudo errado. Eu o removi por enquanto. Vendo outra vez o esquema que vejo, acho que não preciso usá-lo em um arquivoCreativeWork
. Apenas ignore/>
, ele foi digitado com pressa 😉 e o código original é XHTML. Acabei de misturar os dois no meu exemplo (daí as duas versões doitemscope
). O código final está correto, honesto! 😁Eu tive um problema semelhante com o Google Structured Data Tester marcando minhas imagens como inválidas. Aparentemente, ele não aceita imagens em que a origem é um domínio de host local. Assim que implantei no servidor intermediário, a marcação estruturada passou na validação.
fonte