2

I am a private person, running a personal blog. There's no organisation nor profit behind the blog.

Google Webmaster Tools tells me to add structured data in order to improve ratings and what not. Alright, fair enough. So I use the provided structure data markup help tool. I tick all the boxes, I mark everything that it asks for, I leave nothing empty.

Then I use the validate structured data tool and it tells me I have errors. Most of these fixed myself right away. (Odd however, that the markup help tool did not ask me to add these.)

Anyway, when I come to the required field publisher, which according to Schema.org can be a Person or Organization, I try with myself (Person) and the Google validator tells me that that's wrong.

So publisher is mandatory, and it has to be an Organization.

Should I just make up a fake organisation and pretend there is one? (We know from experience that Google do not like fakeries, so this method seems dangerous.)

Or should I just follow the Schema.org rules and ignore what the Google validator tells me - publisher can be a Person and keep it at that?

 <article itemscope itemtype="http://schema.org/Article" itemref="_author2" class="panel panel-default">
  <header class="panel-heading">
    <h2 class="panel-title"><a href="/2017-10-26/gronsakslasagne"><span itemprop="headline name">Grönsakslasagne</span></a><br><small itemprop="datePublished" content="2017-10-26T08:43:00">2017-10-26 08:43:00</small></h2>
  </header>
  <div class="panel-body">
    <p itemprop="articleBody"><img itemprop="image" src="/img/blog/thumbnails/63-gronsakslasagne-vvdb-se.jpg" alt="Grönsakslasagne vvdb.se" class="pull-left img thumb">[SNIP OUT SOME TEXT]</p>
    <p class="pull-right"><a itemprop="url" href="/2017-10-26/gronsakslasagne">Läs mer <i class="fa fa-arrow-right"></i></a></p>
  </div>
</article>

<!-- Further down -->

VDB.se v 1.4 by <span id="_author2" itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name publisher">Per Jansson</span></span>

As you can see, I added publisher to the last itemprop, together with name, figuring that would work, but Google Webmaster Tools tells me "no no, publisher cannot be a Person".

2

I have checked your blog using Structure Data Markup Tool and here is the method to fix the issue.

Structured data schema markup basically maps the real world entities in form of coding; so Google understand the "meaning" of content on the page.

That is why schema markup differentiates between an author and the publisher.

They consider "author" as a type "Person"and "publisher" as a type "Organization".

That is actually true in real world. E.g. A novel is written by an author and published by an organization.

schema.org doesn't say that "publisher" is a type of "Person". That's where the catch is

So here is your solution:

Google has provided an example of Structured Data Markup for Article. I am pasting the markup for you.

<div itemscope itemtype="http://schema.org/NewsArticle">
  <meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>
  <h2 itemprop="headline">Article headline</h2>
  <h3 itemprop="author" itemscope itemtype="https://schema.org/Person">
    By <span itemprop="name">John Doe</span>
  </h3>
  <span itemprop="description">A most wonderful article</span>
  <div itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
    <img src="https://google.com/thumbnail1.jpg"/>
    <meta itemprop="url" content="https://google.com/thumbnail1.jpg">
    <meta itemprop="width" content="800">
    <meta itemprop="height" content="800">
  </div>
  <div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
    <div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
      <img src="https://google.com/logo.jpg"/>
      <meta itemprop="url" content="https://google.com/logo.jpg">
      <meta itemprop="width" content="600">
      <meta itemprop="height" content="60">
    </div>
    <meta itemprop="name" content="Google">
  </div>
  <meta itemprop="datePublished" content="2015-02-05T08:00:00+08:00"/>
  <meta itemprop="dateModified" content="2015-02-05T09:20:00+08:00"/>
</div>

As illustrated in the initial question, if you want to give a name to the publisher then then first you need to declare a publisher of type Organization as follows

<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">

Then add a name of the publisher. (please replace Google with your value)

  <meta itemprop="name" content="Google">

If you just want to declare a type "Person" then you have to use "author" instead of "publisher" as follows (please replace "John Doe" with your value)

<h3 itemprop="author" itemscope itemtype="https://schema.org/Person">
<span itemprop="name">John Doe</span>
  • By the way, personally I would suggest you to use JSON LD Format instead of Microdata. This is because 1. Google Recommends it. 2. It is also recognized by Yahoo, Bing and Yandex which are the other 3 top search engines 3. You can dynamically inject it through CMS or through Google Tag Manager. – Bhargav Joshi Oct 28 '17 at 7:48
  • The publisher property expects Organization or Person as value. – unor Oct 28 '17 at 18:01
  • Despite of the schema.org standard, Google does not recognise Person as a valid value for publisher. – Ain Tohvri Apr 3 '18 at 22:19
0

From the perspective of Schema.org, it’s perfectly fine to have a Person as value for the publisher property. As you note, the publisher property expects either an Organization item or a Person item as value.

While Google’s SDTT reports it as an error, it’s not an actual error with your Schema.org or Microdata. What the SDTT really wants to say (it does a poor job in doing so): To get feature X in Google Search, you need to do Y.

In your case, it’s about the Articles rich result. Its documentation says:

publisher | Organization; required (AMP), ignored (non-AMP)

What this means:

  • For AMP HTML pages, you can only get the Article rich result in Google Search if the Article has an Organization as publisher.

  • For non-AMP HTML pages, you can get the Article rich result in Google Search whether or not you have a publisher, and if you have one, it doesn’t matter who it is.

If you can’t match all of SDTT’s requirements, it’s no problem to keep your structured data, if you want. Errors like these do no harm.

If you want to provide a Person as publisher

You have an issue with your markup: You are specifying the publisher property under Person, instead of specifying Person as value for the publisher property.

So instead of

<span id="_author2" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <span itemprop="name publisher">Per Jansson</span>
</span>

it should be

<span id="_author2" itemprop="author publisher" itemscope itemtype="http://schema.org/Person">
  <span itemprop="name">Per Jansson</span>
</span>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.