O logotipo do editor do BlogPosting 'logo.itemtype tem um valor inválido' na Ferramenta de teste de dados estruturados do Google

13

O seguinte é executado na Ferramenta de teste de dados estruturados do Google, conforme o esperado:

<div>
    <div itemprop="publisher" itemscope id="organization-example" itemtype="https://schema.org/Organization">
        <a itemprop="url" href="https://example.com">
            <img itemprop="image logo" src="https://example.com/images/logo.png" alt="LOGO">
            <span itemprop="name">EXAMPLE</span>
            <span itemprop="description">This is an EXAMPLE</span>
        </a>
    </div>
</div>

<div itemscope itemtype="https://schema.org/WebPage" itemref="organization-example">
</div>

Mas quando tento usar um, BlogPostingele quebra a logopropriedade:

<div>
    <div itemprop="publisher" itemscope id="organization-example" itemtype="https://schema.org/Organization">
        <a itemprop="url" href="https://example.com">
            <img itemprop="image logo" src="https://example.com/images/logo.png" alt="LOGO">
            <span itemprop="name">EXAMPLE</span>
            <span itemprop="description">This is an EXAMPLE</span>
        </a>
    </div>
</div>

<article
    itemscope
    itemtype="https://schema.org/BlogPosting"
    itemref="organization-example"
>
</article>

Com o erro:

https://example.com/images/logo.png (O atributo logo.itemtype tem um valor inválido.)

Alguém pode explicar o porquê? E que medidas eu poderia tomar para corrigi-lo?

Arth
fonte
Você deve evitar o uso itempropna mesma linha que um itemtype, pois o editor é filho de Organization, WebPage e BlogPosting. Melhor usar <body itemscope itemtype="https://schema.org/Organization">então <article itemscope itemtype="https://schema.org/BlogPosting"> <span itemprop="publisher">etc ... Não deve haver necessidade de repetir o logotipo várias vezes, principalmente em um post do blog.
Simon Hayter
@SimonHayter Obrigado, mas o Publisher não é filho da Organização, e a Organização está no topo da Página da Web, então eu queria referenciá-lo no BlogPosting. Você está sugerindo a estrutura Organization-> BlogPosting-> Publisher? Isso parece incorreto.
Arth
@SimonHayter Também https://schema.org/WebPage e todo o site está repleto de exemplos fazendo exatamente isso ... itempropna mesma linha que itemtype.
Arth
Momento loiro, eu vou totalmente errado. Eu darei uma olhada mais tarde e volto para você :)
Simon Hayter

Respostas:

15

Acontece que, por BlogPostingser um dos tipos suportados pelo Google como um possível Rich Snippet, eles aplicam mais validação:

Diretrizes da documentação da Pesquisa Google para artigos

Isso requer que o Publicador de um artigo logoseja do tipo ImageObjecte tenha um widthe heightem pixels. BlogPostingé um subtipo de Article.

Este snippet atualizado valida por meio da Ferramenta de teste de dados estruturados do Google :

<div id='web-page-example' itemprop="mainEntityOfPage" itemscope itemtype="https://schema.org/WebPage" itemref="headline-example">
    <div>
        <div itemprop="publisher" itemscope id="organization-example" itemtype="https://schema.org/Organization">
            <a itemprop="url" href="https://example.com">
                <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
                   <img itemprop="url" src="https://example.com/images/logo.png" alt="LOGO">
                   <meta itemprop="width" content="600">
                   <meta itemprop="height" content="60">
                </span>   
                <span itemprop="name">EXAMPLE</span>
                <span itemprop="description">This is an EXAMPLE</span>
            </a>
        </div>
    </div>  
    <div
        id="blog-posting-example"
        itemprop="mainEntity"
        itemscope
        itemtype="https://schema.org/BlogPosting"
        itemref="organization-example web-page-example"
    >
        <span itemprop="author" itemscope itemtype="https://schema.org/Person">
            <span itemprop="name">Example Author</span>
        </span>
        <time itemprop="datePublished" datetime="2016-05-09T11:40:04+02:00">9th May 2016</time>
        <time itemprop="dateModified" datetime="2016-05-09T11:40:04+02:00">9th May 2016</time>
        <h1 id="headline-example" itemprop="name headline">Example Headline</h1>
        <span itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
            <img itemprop="url" src="https://example.com/images/blog.png" alt="LOGO">
            <meta itemprop="width" content="800">
            <meta itemprop="height" content="400">
        </span>
    </div>
</div>  
Arth
fonte
11

Uma resposta brilhante e útil de @Arth acima.

Para complementar a resposta acima (não competir com ela), aqui estão os mesmos dados estruturados usando o mesmo vocabulário schema.org , mas desta vez em JSON-LD:

    "publisher": {
        "@type": "Organization",
        "name": "myOrganization",
        "logo": {
            "@type": "ImageObject",
            "name": "myOrganizationLogo",
            "width": "60",
            "height": "600",
            "url": "http://my-organization.org/my-logo.png"
        }
    }

NB acordo com https://developers.google.com/search/docs/data-types/articles

  1. O logotipo deve ser um retângulo, não um quadrado.

  2. O logotipo deve caber em um 60x600pxretângulo. E ser exatamente 60pxalto (preferencial) ou exatamente 600pxlargo. (Por exemplo, 450x45pxnão seria aceitável, mesmo que caiba no 600x60pxretângulo.)

Rounin
fonte