Day 26 - Schema Markup

CCarter

Final Boss ®
Moderator
BuSo Pro
Boot Camp
Digital Strategist
Joined
Sep 15, 2014
Messages
4,341
Likes
8,855
Degree
8
1header.jpg


Warning: This requires html knowledge and borders on the intermediate to advance level of editing html.

Today we are going to go over some basic Schema.org Markup. Basically what the markups do is allow your brand exposure in search engines and on platforms which read the schema markup and "Enhance" Your exposure within them. What? Basically this:

2breadcrumbs.jpg


^^ Example of breadcrumbs within the search engine results pages due to schema markup.

Certain places like Pinterest only support the pure Schema markup instead of JSON-LD versions, so before you decide on either or (I suggest both by the way - just not overlapping), make sure you've done market research and know where your competitors are generating their traffic from.

If a majority of your competitors are generating traffic from Pinterest, then you'll want to go with the normal schema.org markup so Pinterest can turn your content into rich pins. (You will need to test it out within their Pinterest Rich Pins Validator: https://developers.pinterest.com/docs/rich-pins/validator/)

Google has a great rich media snippet validator which will showcase what data it found on the site you inputted, use this for ALL testing as you go along: https://developers.google.com/structured-data/testing-tool/

It may not be obvious but you need to be able to edit the html of your website, edit the theme you are using from your CMS (Wordpress), or you can use Google Tag Manager to slickly insert JSON-LD version of this: Using Google Tag Manager to Add Schema.

Organization Markup: sameAs

Let's get into it, I'm going to show you the two types of Schema markup, the pure markup which edits your html elements and the JSON-LD, which is script code, similar to javascript which is for displaying JSON data. This can simply be placed anywhere on a page and doesn't require editing any html elements which could possibly screw up some code. Using A simple organization markup with html editing we get this:

Code:
<div itemscope itemtype="http://schema.org/Organization">
<link itemprop="url" href="https://www.serpwoo.com/">
<ul>
<li><a itemprop="sameAs" href="https://www.youtube.com/user/SERPWoo">YouTube</a></li>
<li><a itemprop="sameAs" href="https://twitter.com/serpwoo">Twitter</a></li>
<li><a itemprop="sameAs" href="https://www.facebook.com/SERPWoo">Facebook</a></li>
<li><a itemprop="sameAs" href="https://www.linkedin.com/company/serpwoo">LinkedIn</a></li>
</ul>
</div>

^^ That associates my Youtube, Twitter, Facebook, and Linkedin profiles with the website https://www.serpwoo.com/.

This is the same code using JSON-LD:

Code:
<script type="application/ld+json">
[{
  "@context": "http://schema.org",
  "@type": "WebSite",
  "url": "https://www.serpwoo.com/",
  "name": "SERPWoo",
"sameAs": [
"https://www.youtube.com/user/SERPWoo",
"https://twitter.com/serpwoo",
"https://www.facebook.com/SERPWoo",
"https://www.linkedin.com/company/serpwoo"
]}]
</script>

Now you'll have a choice to use either one, but for some platforms like Pinterest you can only use the first one to get within their rich media validation graces.

The desired end result of sameAs is the following within Google:

3dre.jpg


^^ Your brand and it's social accounts properly credited within the Google Knowledge Graph. Note this will not get you into the knowledge graph, but once your brand has enough authority it will properly credit the social profiles and etc. (Quick write up: Getting into the Knowledge Graph).

--

Organization Markup: Local Business Markup

Code:
<div itemscope itemtype="http://schema.org/LocalBusiness">
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">1940 Riverside Drive</span><br>
<span itemprop="addressLocality">Los Angeles</span><br>
<span itemprop="addressRegion">CA</span><br>
<span itemprop="postalCode">90039</span><br>
<span itemprop="addressCountry">United States</span><br>
<span itemprop="telephone">(323)663-0258</span>
<span itemprop="faxNumber">(323)663-1389</span>
<span itemprop="email">info@kesslercrew.com</span>
</div>
</div>

End results from on page implementation:

4address.png


--

Organization Markup: Full Organization Markup EXAMPLE

Code:
<script type="application/ld+json">
[{ "@context": "http://schema.org",
"@type": "Organization",
"name": "[COMMON NAME OF COMPANY]",
"legalName" : "[LEGAL NAME OF COMAPNY]",
"alternateName": "[ANY AKA NAMES]",
"url": "[URL OF COMPANY WEBSITE]",
"logo": "[GOOD QUALITY ONSITE LOGO]",
"foundingDate": "[YYYY]", //MUST BE IN ISO 8601 FORMAT
"founders": [
{
"@type": "Person",
"name": "[NAME OF FOUNDER #1]",
"sameAs":["[URL OF SOCIAL PROFILE #1 (twitter)]"]
},
{
"@type": "Person",
"name": "[NAME OF FOUNDER #2]",
"sameAs":["[URL OF SOCIAL PROFILE #1 (twitter)]"]
} ],
"address": {
"@type": "PostalAddress",
"streetAddress": "[FIRST LINE OF ADDRESS]",
"addressLocality": "[TOWN/CITY]",
"addressRegion": "[STATE/COUNTRY]",
"postalCode": "[POSTCODE]",
"addressCountry": "[COUNTRY CODE]" //MUST BE IN ISO 3166-1 ALPHA 2 FORMAT
},
"contactPoint": {
"@type": "ContactPoint",
"contactType": "[TYPES OF CALLS THIS NUMBER ACCEPTS]", //LIMITED TO THE FOLLOWING: "customer support", "technical support", "billing support", "bill payment", "sales", "reservations", "credit card support", "emergency", "baggage tracking", "roadside assistance", "package tracking"
"telephone": "[PHONE NUMBER WITH COUNTRY CODE]",
"email": "[EMAIL ADDRESS]"
},
"sameAs": [
"[URL OF WIKIPEDIA ARTICLE]",
"[URL OF SOCIAL PROFILE #1]",
"[URL OF SOCIAL PROFILE #2]",
"[URL OF SOCIAL PROFILE #3]"
]}]
</script>

-

Organization Markup: SERPWoo Example

Code:
<script type="application/ld+json">
[{ "@context": "http://schema.org",
"@type": "Organization",
"name": "SERPWoo",
"legalName" : "SERPWoo",
"alternateName": "SERP Woo",
"url": "https://www.serpwoo.com/",
"logo": "https://www.serpwoo.com/img/logo.png",
"foundingDate": "2014",
"founders": [
{
"@type": "Person",
"name": "CCarter",
"sameAs": ["https://twitter.com/mercenarycarter"]
},
{
"@type": "Person",
"name": "Jason Brown",
"sameAs": ["https://twitter.com/leanvertising", "https://twitter.com/eliquid"]
} ],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"url": "https://www.serpwoo.com/contact/",
"email": "support@serpwoo.com"
},
"sameAs": [
"https://www.youtube.com/user/SERPWoo",
"https://twitter.com/serpwoo",
"https://www.facebook.com/SERPWoo"
]}]
</script>

Since it's JSON-LD code (hidden except from search engines and bots), there is no end html preview.

--

Article/Content (Blogpost) Markup

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>

^^ For your blogposts and content mark that sucker up.

--

Enable Site Search Within Google


5cdon.jpg


Resulting in:

6green.jpg


^^ Search boxes within SERP Results are also possible with schema markup.

Here is the code for CDON's version:

Code:
<script type="application/ld+json">
[{
  "@context": "http://schema.org",
  "@type": "WebSite",
  "url": "http://www.simoahava.com/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "http://www.simoahava.com/?s={search_term}",
    "query-input": "required name=search_term" }
}]
</script>

Here would be my SERPWoo implementation, pretty simple stuff:

Code:
<script type="application/ld+json">
[{
  "@context": "http://schema.org",
  "@type": "WebSite",
  "url": "https://www.serpwoo.com/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://www.serpwoo.com/search/search.php?search=1&query={search_term}",
    "query-input": "required name=search_term" }
}]
</script>

--

Recipe Markup

Code:
<script type="application/ld+json">
    [{
      "@context": "http://schema.org",
      "@type": "Recipe",
      "author": "John Smith",
      "cookTime": "PT1H",
      "datePublished": "2009-05-08",
      "description": "This classic banana bread recipe comes from my mom -- the walnuts add a nice texture and flavor to the banana bread.",
      "image": "bananabread.jpg",
      "recipeIngredient": [
        "3 or 4 ripe bananas, smashed",
        "1 egg",
        "3/4 cup of sugar"
      ],
      "interactionStatistic": {
        "@type": "InteractionCounter",
        "interactionType": "http://schema.org/Comment",
        "userInteractionCount": "140"
      },
      "name": "Mom's World Famous Banana Bread",
      "nutrition": {
        "@type": "NutritionInformation",
        "calories": "240 calories",
        "fatContent": "9 grams fat"
      },
      "prepTime": "PT15M",
      "recipeInstructions": "Preheat the oven to 350 degrees. Mix in the ingredients in a bowl. Add the flour last. Pour the mixture into a loaf pan and bake for one hour.",
      "recipeYield": "1 loaf"
    }]
    </script>

This implementation would result in Google SERPS looking similar to this:

7choco.png


^^ Recipes sites NEED the recipe markup, which Pinterest uses as one of their Rich Pins. If you don't know about that pinterest traffic, well...

--

Person Structured Data

Code:
<script type="application/ld+json">// <![CDATA[
[{ "@context" : "http://schema.org",
  "@type" : "Person",
  "name" : "CCarter",
  "url" : "http://www.moneyoverethics.com",
  "sameAs" : [ "https://twitter.com/mercenarycarter",
      "https://instagram.com/mercenarycarter/",
      "https://plus.google.com/u/0/107510098278976790199",
      "http://www.youtube.com/user/CCarterWF"]
}]
// ]]></script>

Here is the same code in microdata, uses the sameAs like the first post:

Code:
<div itemscope itemtype="http://schema.org/Person">
<span itemprop="name">CCarter</span>
<link itemprop="url" href="https://www.moneyoverethics.com/">
<ul>
<li><a itemprop="sameAs" href="http://www.youtube.com/user/CCarterWF">YouTube</a></li>
<li><a itemprop="sameAs" href="https://twitter.com/mercenarycarter">Twitter</a></li>
<li><a itemprop="sameAs" href="https://instagram.com/mercenarycarter/">InstaGram</a></li>
<li><a itemprop="sameAs" href="https://plus.google.com/u/0/107510098278976790199">Google+</a></li></ul>
</div>

More information available here: http://schema.org/Person

^^ This is great for bloggers who aren't an organization, but keep a personal blog.

--

Breadcrumbs

This is probably one of the more difficult ones to implement so I'm going to lift the content I already wrote about in another post about this from (Google Structured Data - Schema.org Annotations):


Breadcrumbs Structured Data

Breadcrumbs also have a mark up, they are important since it helps Google understand the relationships of your pages. I implemented this a while back on SERPWoo and now in the search results we see the following with Breadcrumbs next to the main URL:

8breadcrumbs.jpg


Here is the code, but here is the thing you have to really pay attention to the 'itemref' and 'id'. I'll explain below:

Code:
<div class="breadcrumbing">
<div id="a" itemscope itemtype="http://data-vocabulary.org/Breadcrumb" itemref="b">
<i class="fa fa-home"></i> &nbsp;
  <a href="/" itemprop="url">
    <span itemprop="title">SERPWoo</span>
  </a> &nbsp; / &nbsp;
</div>
<div id="b" itemscope itemtype="http://data-vocabulary.org/Breadcrumb" itemprop="child" itemref="c">
  <a href="/blog/" itemprop="url">
    <span itemprop="title">Blog</span>
  </a> &nbsp; / &nbsp;
</div>
<div id="c" itemscope itemtype="http://data-vocabulary.org/Breadcrumb" itemprop="child" itemref="d">
  <a href="/blog/review/" itemprop="url">
    <span itemprop="title">Review</span>
  </a> &nbsp; / &nbsp;
</div>
<div id="d" itemscope itemtype="http://data-vocabulary.org/Breadcrumb" itemprop="child">
  <a href="https://www.serpwoo.com/blog/review/scam-reporting-sites-drop/" itemprop="url">
    <span itemprop="title">Declining Traffic to RipoffReport.com, Scam.com, and other Scam Reporting Sites - SERP Reviews</span>
  </a>
</div>
</div>

So the very first element in the breadcrumb I am using the absolute path to the homepage '/' (can be https://www.serpwoo.com/ as well) - that itemrprop is the url. Notice the 'title = SERPWoo' which tells Google that URL's title is SERPWoo.

Now look at the 2nd line of the code you see id="a". That tells the structure that THIS '/' (homepage) is the first id 'a' in the structure. But look at the very end of the line, itemref="b" - that tells it there is a child for the home page and too look for an id like that within this structure. So the very next element has the id="b" which the first element was referring. But since this is a child of the parent, there is a new element itemprop="child" added.

This confirms with Google that element B is indeed a child of something. The IDs increase by alphabet letters, and the pattern is extremely easy to spot once you see it.

Also note the very last element the one id="d" (since it's only 4 levels for my site) doesn't have a final itemref="XYZ" at the end of the line since it's the final child, and essentially SHOULD be the page the user is on.

The breadcrumbs might be a bit harder to implement since you have to know a bit of coding if you don't already have a plugin or theme that supports this.

More information on this: https://developers.google.com/structured-data/breadcrumbs

--

Various

There are various markups you can implement onto your site, after some time, and with enough authority, visitors may start seeing results like this when searching (success):

9serp.jpg


10woo.png


^^ Quick answers to questions These type of queries are considered "conversational searches".
 
Here are some specific ones for different platforms (sans Google).

Twitter Cards - Enhanced Twitter Experience w/ Structured Data

I use the "Summary with Large Image" card time. What twitter cards do is they give summaries and automatically add whatever image you designated for that page when people tweet your url, which is great for engagement. Example:

11tweet.png


^^ The user simply linked to serpwoo's homepage (doesn't matter if it's a link shortener used) and the image was automatically added and as well the description pulled from the site without any additional input from the user - hence why this is the "Summary with Large Image" card.

Here is the code you add to your header between the <head></head> tags:

Code:
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@SERPWoo">
<meta name="twitter:creator" content="@SERPWoo">
<meta name="twitter:title" content="Monitor The Whole SERPs | SERPWoo - Niche Tracker">
<meta name="twitter:description" content="Monitors the whole SERPs for your keywords and industry while utilizing our 3rd party integrations, social signals, and A.I. Bots to help you dominate your SEO and ORM campaigns.">
<meta name="twitter:image:src" content="https://www.serpwoo.com/img/gallery/screenshot-big-3-31-2015.png">

^^ I use PicoCMS to create inputs for twittercards on each page, so each URL tweeted will have a different image and description that I selected but if there is no twittercard image it defaults to the image you see above (This is done within my code - not through twitter). That way anytime anyone tweets any URL there is a nice images attached to the tweet like in the above example.

To learn more go here: https://dev.twitter.com/cards/overview

Once you have the meta markup implemented you will have to Validate your site with twitter to test it, so they can make sure whatever you are doing is good, checking your markup automatically white-lists your site with twitter as well, link: https://cards-dev.twitter.com/validator

For you folks still messing around with Wordpress, this is the best plugin that I've tested: https://wordpress.org/plugins/jm-twitter-cards/

--

Facebook Open Graph w/ Structured Data

Alright here is another one, This time it's for Facebook. It's similar to the Twitter Cards, once a person posts a url it should pull this open graph data into Facebook for people to get an enhanced experience. Here is the code I utilize:

Code:
   <meta property="og:type" content="article" />
   <meta property="og:title" content="How To Find Parasites (Satellite Sites), Web 2.0s, and Social Platforms For SEO Within YOUR Niche" />
   <meta property="og:description" content="Grayhat guide to finding parasites, web 2.0, and social platforms competitors are using within your niche for SEO campaigns." />
   <meta property="og:url" content="https://www.serpwoo.com/blog/tutorials/finding-parasites-for-SEO" />
   <meta property="og:site_name" content="SERPWoo - Niche Tracker" />
   <meta property="og:image" content="https://www.serpwoo.com/img/blog/tutorials/2015/2/finding-parasites-for-seo.jpg" />

Example output:

12facebook.jpg


Here is more information about the Open Graph protocol: http://ogp.me/

And the official one for web: https://developers.facebook.com/docs/sharing/web

Here is the official Facebook plugin for Wordpress: https://wordpress.org/plugins/facebook/

PicoCMS Plugin: https://github.com/ahmet2106/pico-opengraph

--

Pinterest

13pin.jpg


Pinterest has several options and they go into extreme details of what's possible, so it's definitely worth checking out their whole options for anyone which is looking to gain more pinterest traffic: https://developers.pinterest.com/docs/rich-pins/overview/.

--

eCommerce:

For eCommerce specific, we did a post at SERPWoo regarding that which have their specific examples as well: Top eCommerce Rich Snippets Every Store Needs


Conclusion:

As the internet continues to change and expand, we'll update the code which we can and add new ones to this thread to help folks out. Bookmark this page and come back every now and then to get a refresher.

Additional Resources:

Facebook Open Graph: https://developers.facebook.com/docs/sharing/web

Google Validator: https://developers.google.com/structured-data/testing-tool/

Google Tag Manager: http://engageinteractive.co.uk/blog/using-google-tag-manager-to-add-schema-structured-data

Pinterest Rich Pins Validator: https://developers.pinterest.com/docs/rich-pins/validator/

Schema: https://schema.org/

Schema Creator: http://schema-creator.org/

- CCarter ( @MercenaryCarter)
 
This is huge, and nobody is talking about it here. It might appear overwhelming, but in reality it's not that bad.

- Get this put into your site and you're going to stand out in the search results and get more traffic.
- Any post that gets shared to social networks is going to stand out and get more traffic.
- Your brand authority is going to rise in Google, be shown in Google, and rise in people's minds, resulting in more traffic.​

Sure, it's kind of technical, but you're likely using Wordpress. The Yoast SEO plugin will install most of this for you, the most important parts for a typical blog site. You can get the SameAs for your social networks (get authority boosts for your work on those pages), you can get the right image sizes for FB, Twitter, G+, Pinterest, etc. and even set fallback image for posts that don't have the right sized images. You can set up breadcrumbs, logos, and most everything else. And for the rest, you can just copy and paste it into your plain text editor.

I'm willing to bet Drupal, Joomla, Blogger, and all of those CMS's and Web 2.0's have plugins to get this done for you too. You won't even need to know how to code a thing (even though its copy and paste) or get under the hood of your site.

There's no excuse to not use this stuff, since it has a direct impact on your bottom line for every piece of content you put out, and you only have to set it up once.
 
Is it ok to use regular Schema code on pages with recipes, and keep json ld on other pages?

BTW, this is great stuff!
 
Is it ok to use regular Schema code on pages with recipes, and keep json ld on other pages?

Yes you can mix and match to get the perfect setup. I have a specific set of json-ld on ALL of my pages, and when I need specialized stuff I will add custom json-ld to the end of the page or do the regular scheme markup for those pages. Just make sure to test the setting up with Google's Schema Validator and you should be good to go.
 
When I use this code on one of my category pages (with my info)
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>
and then check here https://developers.google.com/structured-data/testing-tool/ I don't get that "all good" green light. Am I doing something wrong?

Also, take a look here https://www.serpwoo.com/blog/review/scam-reporting-sites-drop/ there is problem
 
When I use this code on one of my category pages (with my info)

It's because Google added a bunch of new stuff for their AMP project.

They added "mainEntityOfPage", "dateModified", and "publisher". They also added to the image entry the "@type", "width", and "height".

Here is the new valid code for the same entity:

Code:
<script type="application/ld+json">
[{
  "@context": "http://schema.org",
  "@type": "Article",
  "mainEntityOfPage":{
  "@type":"WebPage",
  "@id":"https://www.serpwoo.com/learning-center/guide/orm-goggle-mode/"
  },
  "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",
  "dateModified": "2015-07-29",
  "publisher": {
  "@type": "Organization",
  "name": "SERPWoo",
  "logo": {
  "@type": "ImageObject",
  "url": "https://www.serpwoo.com/img/logo.png",
  "width": 600,
  "height": 60
  }
  },
  "image": { "@type": "ImageObject", "url" : "https://www.serpwoo.com/img/learning-center/guide/orm-goggle-mode/Homer-Simpson-doh.png", "width": 994, "height": 300 },
  "description": "Learn how to enable/disable ORM Goggle mode, and the benefits of being able to visualize the SERPs in tagged color"
}]
</script>

I am going to go through all the schema code in the original post and update them to reflect the new updates.


It's the AMP project problem again. The thing about it is whenever you see an error you can hover over the problem and it will have help links to click so you can go in and fix the problem yourself, example, invalidated code (after their update):

T38rW8m.gif


After clicking in and seeing examples of what the new updates were and the requirements, it was about a 10 minute fix across the whole website:

JWJjZNM.gif


So whenever you see a problem, just click on the red error and you'll be given instructions and examples on how to fix the problem.

That's the thing with the internet change is constant, you just have to stay on top of the big changes and you'll be good to go. So "maybe" now my website is AMP ready, I dunno since I do not plan on participating in the project until I know it's not going to be a waste of energy and time.
 
Thanks for explanation @CCarter . Yes I did find the problem also, it was image width. Firstly, width should be specified, and secondly according to their guides minimum width should be 696px. After adjustment all is working fine. Also, thanks for updated code.

As for categories, it's Wordpress thing. I have different templates for each WP category, and just pasting code into template doesn't do the job. But luckily, pasting code into dashboard category editor did work :smile:

You are completely right with staying on the top of things, and using those error explanations they give. It looks like I'm lazy bitch sometimes... :wink:
 
I've been adding html schema to a website and I have two questions that I wasn't able to find when I searched.
1) Does my sameAs for social media need to go at the footer of every page? Or can it just go at index.md?
2) This website is for digital marketing related services. But I'm specifically targeting a small area near me. So, I'm not a local business with an address, but I am located in one spot and trying to show up for local marketing terms. Is there any type of local schema that I can add to the site?
 
1) Does my sameAs for social media need to go at the footer of every page? Or can it just go at index.md?
I have mine on every page, I've thought about this too but never researched it. It really doesn't do much at the moment until you are a mega brand where you'll have your own knowledge graph etc.

Is there any type of local schema that I can add to the site?
I doubt you'll be able to do that and rank using schema without a physical location. Unless you are writing "Chicago XYZ", and "Chicago Heights XYZ" content - that way you'll show up organically; but I don't see Google or anyone taking a localize schema into consideration when the website/brand has no physical address in or near the location. I could be wrong though.
 
Would you classify a review page or a collection page as content type = article?

When you have a review page or a collection page, and its updated or changed, is this the correct/standard thing to do:
------
<meta itemprop="datePublished" content="date">

<div itemprop="dateModified" content="date">Last Updated: 22 Feb 15</time>
----

Also, is it standard to put like 10 image sizes under image?
 
Last edited:
------
<meta itemprop="datePublished" content="date">

<div itemprop="dateModified" content="date">Last Updated: 22 Feb 15</time>
----
I've never heard of </time>, might be an error. Here is how the date updated should look for ease of use:

Code:
<div itemprop="dateModified" content="2017-02-22">Last Updated: 22 Feb 17</div>

or fancy with time:

Code:
<div itemprop="dateModified" content="2017-02-22T12:22:59+00:00">Last Updated: 22 Feb 17</div>

I haven't used dateModified yet on my sites, but Google does support it: https://developers.google.com/search/docs/data-types/articles
 
Good stuff, not sure if that </time> was a typo or something weird I found while doing quick research.

I've settled with having this in my head
Code:
<meta property="article:modified_time" content="{{ modified|date("Y-m-j") }}" />

And this at the top of my article template:
Code:
<div itemprop="dateModified" content="date("Y-m-j")">Updated on date("M jS Y")</div>
 
Came across this list today which is worth to check if you're doing schema markup for a local business:
https://docs.google.com/spreadsheets/d/1Ed6RmI01rx4UdW40ciWgz2oS_Kx37_-sPi7sba_jC3w/edit

It lists specific schema markup options for a wide range of different industries.

If the industry of your organisation is not within that datasheet, it's well worth to straight up search for it on the schema.org website as well, you'd be surprised to see what exists.
 
@Ryuzaki mentioned in his example for Day 11 that is was worth signing up to the top 25 social networks or more. Is it worth including them all in schema within the sameAs function?

Your example shows

Code:
"sameAs": [
"https://www.youtube.com/user/SERPWoo",
"https://twitter.com/serpwoo",
"https://www.facebook.com/SERPWoo"
]}]

So instead of including the main 3 or 4 social media profiles I use, would it be worth including the other 20 or so profiles even though at this point I would rarely update them (maybe IFTTT content to them)

Cheers
 
Let's say I'm creating an article on Top 10 Stephen King Books -- should I use schema for Stephen King the person, Stephen King books as a product, or something else altogether?

Thanks.
 
Back