Логотип BlogPosting Publisher 'logo.itemtype имеет недопустимое значение' в инструменте тестирования структурированных данных Google

13

Следующее запускается через инструмент тестирования структурированных данных Google, как и ожидалось:

<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>

Но когда я пытаюсь использовать BlogPostingэто нарушает logoсвойство:

<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>

С ошибкой:

https://example.com/images/logo.png (Атрибут logo.itemtype имеет недопустимое значение.)

Кто-нибудь может объяснить, почему? И какие шаги я могу предпринять, чтобы это исправить?

Arth
источник
Вам следует избегать использования itempropв той же строке, что и a itemtype, так как издатель является дочерним объектом для Organization, WebPage и BlogPosting. Лучше использовать, <body itemscope itemtype="https://schema.org/Organization">чем и <article itemscope itemtype="https://schema.org/BlogPosting"> <span itemprop="publisher">т. Д. Не должно быть необходимости повторять логотип несколько раз, особенно в блоге.
Саймон Хейтер
@SimonHayter Спасибо, но Publisher не является дочерним элементом Организации, и Организация находится на вершине веб-страницы, поэтому я хотел сослаться на нее из BlogPosting. Вы предлагаете структуру Organization-> BlogPosting-> Publisher? Это кажется неверным.
Арт
@SimonHayter Также https://schema.org/WebPage и весь сайт изобилует примерами, делающими именно это .. itempropв той же строке, что и itemtype.
Арт
Светлый момент, я совершенно не прав. Я посмотрю позже и вернусь к вам :)
Саймон Хейтер

Ответы:

15

Оказывается, потому что BlogPostingэто один из типов, поддерживаемых Google как возможный расширенный фрагмент кода, они применяют дополнительную проверку:

Правила поиска документации Google для статей

Это требует, чтобы Издатель Статьи logoбыл типом ImageObjectи имел widthи heightв пикселях. BlogPostingэто подтип Article.

Этот обновленный фрагмент проверяется с помощью инструмента тестирования структурированных данных 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
источник
11

Блестящий и полезный ответ от @Arth выше.

Чтобы дополнить ответ выше (не конкурировать с ним), здесь те же структурированные данные, использующие тот же словарь schema.org , но на этот раз в 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 Согласно https://developers.google.com/search/docs/data-types/articles

  1. Логотип должен быть прямоугольником, а не квадратом.

  2. Логотип должен располагаться в 60x600pxпрямоугольнике и быть либо точно 60pxвысоким (предпочтительно), либо точно 600pxшироким. (Например, 450x45pxбыло бы неприемлемо, даже если оно помещается в 600x60pxпрямоугольник.)

Rounin
источник