: Personal blog using structured data fails validation on publisher I am a private person, running a personal blog. There's no organisation nor profit behind the blog. Google Webmaster Tools tells
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".
More posts by @Lengel546
2 Comments
Sorted by latest first Latest Oldest Best
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>
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>
Terms of Use Create Support ticket Your support tickets Stock Market News! © vmapp.org2024 All Rights reserved.