Google Structured Data - Schema.org Annotations

I'd venture to say that schema markup IS an authority signal.

I have seen crappy MFA sites make it into the knowledge graph, specifically in the hummingbird style q&a boxes, with few links, mostly spam.

At the same time, they were the only site fully dedicated to the topic
Totally agree. I think when you get into all the top traffic sites using it it's then an authority signal (just kind of a vague term and trying to define it).

Actually, wouldn't be too hard or a bad idea to get the Alexa of top sites and do a quick scrape on all of them for any schema markup to see if they have it or not for a mini white paper. I'll see if I can whip that together today or this weekend.
 
As something we ran into at work .. and is quite confusing in the docs.

If you have a page with a list of items ... each with their own page.

The LIST page should use the "url" property to link to the detail page.
The DETAIL page should use the "sameAs" property to refer to the official website.

We use this for organizations -
One page with a list of organizations, each one with a detailed page with a link to the official website.

Same would be products...say drills

List page with overview of drills, the >>more link uses the "url" property.
The product page uses the "sameAs" property to link to the manufacturer's page.

::emp::
 
For my post above, about 20% of the top sites provided by Quantcast (~90,000 USA sites) have Schema/RDF snippets. This is not counting Open Graph. Writing up a small report with more data n' stuff about it.
 
Article Markup

This one has always been a bit elusive for me, but I finally got it working. The article markup with author data:

Code:
<script type="application/ld+json">
[{
  "@context": "http://schema.org",
  "@type": "Article",
  "author": { "name": "CCarter", "sameAs": ["https://twitter.com/MercenaryCarter"] },
  "name": "ORM Goggle Mode (Online Reputation Management)",
  "headline": "ORM Goggle Mode (Online Reputation Management)",
  "datePublished": "2015-07-29",
  "image": ["https://www.serpwoo.com/img/learning-center/guide/orm-goggle-mode/Homer-Simpson-doh.png"],
  "description": "Learn how to enable/disable ORM Goggle mode, and the benefits of being able to visualize the SERPs in tagged color."
}]
</script>


^^ this has some requirements, like dataPublished in ISO 8601 format, image is a requirement, can actually be multiple, and I believe description as well. I added that "sameAs" one, and it went through perfectly in the Google Structured Data Test. There is a variable for the article's full body but I left that out cause of formatting errors I was receiving (doesn't take html code).
 
Totally agree. I think when you get into all the top traffic sites using it it's then an authority signal (just kind of a vague term and trying to define it).

Actually, wouldn't be too hard or a bad idea to get the Alexa of top sites and do a quick scrape on all of them for any schema markup to see if they have it or not for a mini white paper. I'll see if I can whip that together today or this weekend.
Yeah, I woudn't call it authority signal also. To me it's more of a usability signal I think. G favors sites that makes their job easier. So because Schema is improving CTRs that's why they might favour those sites more than others that don't use markups. BTW, great info here!
 
Something to keep in mind that I came across today @ https://developers.google.com/structured-data/schema-org
Google is in the process of adding JSON-LD support to more markup-powered features. So far, JSON-LD is supported for all Knowledge Graph features, sitelink search boxes, Event Rich Snippets, and Recipe Rich Snippets; Google recommends the use of JSON-LD for those features. For the remaining Rich Snippets types and breadcrumbs, Google recommends the use of microdata or RDFa.

So as stated above, if you're want to use markup outside of Knowledge Graph features, sitelink search boxes, Event Rich Snippets, and Recipe Rich Snippets, then make sure to utilise either microdata or RDFa.
 
I love necroing, you don't have to bring flowers to the event.

Does google get confused when you list multiple reviews on one page?
Say you publish a list of fridges?

Will they show the most relevant snippet(the correct one) from your page to the query or are they going to mess it up?

I'll tag you @CCarter , just to say thanks again. This isn't to piss you off, just a way of saying thanks.

Seen on https://www.serpwoo.com/blog/experts/rich-snippets-microdata-for-ecommerce/,
3. Review and Ratings.

The review tag on serpwoo gave me errors on google markup validator with your code:
Code:
<div itemscope itemtype="http://schema.org/Thing">
<h2 itemprop="name"> Super Book </h2>
<div itemprop="description">Ultra interesting. Super impressive.</div>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<div>Book rating:
<span itemprop="ratingValue">88</span> out of
<span itemprop="bestRating">100</span> with
<span itemprop="ratingCount">20</span> ratings
</div>
</div>
</div>

Google high lighted <div itemscope itemtype="http://schema.org/Thing"> and <h2 itemprop="name"> Super Book </h2>. The latter uses h2 instead of div and /div. The former needed to be schema.org/Product instead.

The below code shows up correct in serps for me.

Code:
<div itemscope itemtype="http://schema.org/Product">
  <div itemprop="name">Product name</div>
  <div itemprop="description">Product description</div>
  <div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">

  <div>Product name rating:
  <span itemprop="ratingValue">5</span> out of <span itemprop="bestRating"> 5</span> with <span itemprop="ratingCount">100</span> ratings at the whim of pewep.
  </div>
  </div>
  <span itemprop="offers" itemscope itemtype="http://schema.org/AggregateOffer">
  Product name was $<span itemprop="lowPrice">50</span> to $<span itemprop="highPrice">100</span>.
  <meta itemprop="priceCurrency" content="USD" />
  </span>
</div>
 
Last edited:
I know this is old but this could be interesting to wordpress users

This one is a function for Schema Article.
Code:
function json_schema() {

global $post,$wp_query;



echo '<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Article",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "'. get_permalink($post->ID) .'"
  },
  "headline": "'. get_the_title($post->ID) .'",
  "image": [
    "'. get_the_post_thumbnail_url($post->ID, $size=full) .'"
   ],
  "datePublished": "'. get_the_time('Y-m-d') .'",
  "dateModified": "'. get_the_modified_time('Y-m-d') .'",
  "author": {
    "@type": "Person",
    "name": "'. get_the_author_meta('display_name', $post->post_author) .'"
  },
   "publisher": {
    "@type": "Organization",
    "name": "'. get_bloginfo('name') .'",
    "logo": {
      "@type": "ImageObject",
      "url": "'. esc_url(get_option('buso_logo_pic')) .'"
    }
  },
  "description": "'. get_post_meta($post->ID, '_aioseop_description', true) .'"
}
</script>';

}

* For the description I'm using All in One SEO plugin description field. If you use another you must modified that line.
* For the logo, I'm using BUSO lightning function :D

-----

And this one should be in the header. Same thing with the description, and you must insert your twitter username.

Twitter uses open graph tags if their specific tags are not found! Only tag needed is twitter:card

Code:
  <meta property="og:site_name" content="<?php echo get_bloginfo('name'); ?>" />
  <meta property="og:title" content="<?php echo get_the_title($post->ID); ?>" />
  <meta property="og:type" content="article" />
  <meta property="og:url" content="<?php echo get_permalink($post->ID); ?>" />
  <meta property="og:image" content="<?php echo get_the_post_thumbnail_url($post->ID, $size=full); ?>" />
  <meta property="og:description" content="<?php echo get_post_meta($post->ID, '_aioseop_description', true); ?>" />
  <meta name="twitter:card" content="summary_large_image" />
  <meta name="twitter:site" content="@YOURUSERNAME" />
  <meta property="article:modified_time" content="<?php echo get_the_modified_time('Y-m-d'); ?>" />
  <meta property="article:published_time" content="<?php echo get_the_time('Y-m-d'); ?>" />
  <meta property="article:author" content="<?php echo get_the_author_meta('display_name', $post->post_author); ?>" />

----

This should cover Facebook, Twitter and Pinterest.

For Pinterest Rich Pins you must validate your site here https://developers.pinterest.com/tools/url-debugger/
 
Back