New Search
The Advanced
Guide to SEO
Chapter 03
Now your site is crawlable, indexable and lightening fast. Time to ramp it up another notch with some new search elements. Search is moving towards a more semantic "real to life" environment. This means a world where engines understand the relationships between real world objects like people, places, movies, businesses etc. Time to get on board now and integrate this into your website!
Schema.org Metadata Implementation
Schema.org is a universal metadata markup introduced in 2011 by the major search engines. Its used to communicate to them the intended type of content on your website. There are still many people not taking full advantage of this!
We're going to cover several types of schema implementation, and how to get the correct markup into your HTML code.
Basic Attributes of Microdata
These five elements are best described with an example.
- itemscope
- itemtype
- itemprop
- itemid
- itemref
Here is some code without schema metadata:
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset=utf-8> <title>Example Page With No Metadata</title> </head> <body> <section> <h1>Anything You Want</h1> <span>Author: Derek Sivers</span> <span>Category : business</span> <a href="http://sivers.org/ayw/">About the book</a> </section> </body> </html>
You can see it is just pure HTML with no special markup. Now, here is the code with metadata;
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset=utf-8> <title>Example Page With Microdata</title> </head> <body> <section itemscope itemtype="http://schema.org/Book"> <h1 itemprop="name">Anything You Want</h1> <span>Author: <span itemprop="author">Derek Sivers</span></span> <span>Category : <span itemprop="genre">business</span></span> <a href="http://sivers.org/ayw/"><span itemprop="detail">About the Book<span></a> </section> </body> </html>
Let's look at each element one by one.
Itemscope
<section itemscope itemtype="http://schema.org/Book"> </section>
Everything about the book goes in between the itemscope element. You're telling the search engines "everything inside here is about a book"
Itemprop
<h1 itemprop="name">Anything You Want</h1>
The itemprop is simply the name of the book.
<span>Author: <span itemprop="author">Derek Sivers</span></span> <span>Category : <span itemprop="genre">business</span></span> <span>Category : <span itemprop="genre">business</span></span> <a href="http://sivers.org/ayw/"><span itemprop="detail">About the Book <span></a>
Itemprop is also the author and the category and the genre of the book. Pretty simple so far, right?
You're using a <span> tag to insert the itemprop elements.
Using Schema In Your Blog
I know many of you likely run blogs of some sort. Well you can put schema data into blogs as well! If you're using wordpress you'll want to check with the author of your theme to see if this is possible, or if wordpress will strip out the tags. This does depend on your specific wordpress setup, so I will show you a generic example below.
Code Without Schema
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset=utf-8> <title>Example of Blog Post Without Microdata</title> </head> <body> <div> <h1>A Cheat Sheet for Building High Ranking Authority... Without Cheating</h1> <p>First, let's define authority: domain authority is the likelihood of a single domain to rank well. The higher the rank the higher authority that site will have and vice a versa.</p> <p>Here's how to do that:</p> <p>1. Link a cluster of pages by topic</p> <p>2. Send more links to one particular page</p> <p>3. Send domain-based external links to hero pages</p> <p>4. Avoid cannibalizing keywords</p> <p>5. Drive external links to the hero page from relevant website</p> <p>6. Locate links high on a page</p> <p>7. Pictorial presentation to help you to understand the concept better.</p> <p>8. Fix broken pages</p> </div> </body> </html>
Code With Schema
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset=utf-8> <title>Example of Blog Post With Microdata</title> <a rel="author" href="https://profiles.google.com/103074333439002308043/about"> Bidhan Chatterjee</a></head> <body> <div itemscope itemtype="http://schema.org/Blog"> <h1>A Cheat Sheet for Building High Ranking Authority... Without Cheating</h1> <p>First, let's define authority: domain authority is the likelihood of a single domain to rank well. The higher the rank the higher authority that site will have and vice a versa.</p> <p>Here's how to do that:</p> <p>1. Link a cluster of pages by topic</p> <p>2. Send more links to one particular page</p> <p>3. Send domain-based external links to hero pages</p> <p>4. Avoid cannibalizing keywords</p> <p>5. Drive external links to the hero page from relevant website</p> <p>6. Locate links high on a page</p> <p>7. Pictorial presentation to help you to understand the concept better.</p> <p>8. Fix broken pages</p> </div> </body> </html>
Explanation of Elements
-
Rel = Author
You may be wondering why this is inside the <head></head> of the HTML. That is because Google now allows you to reference the author in this way.
It's as simple as it looks;
<a rel="author" href="https://profiles.google.com/103074333439002308043/about">Bidhan Chatterjee</a>That code goes in the <head> and then you point your Google Plus profile back at your blog - just like in the section on Google Authorship, which you can find later in this guide.
-
Intemscope
<div itemscope itemtype="http://schema.org/Blog">Again, just like before, this is used to signal the type of thing or item your document is talking about.
-
Bonus: Social Sharing Schema
You can also include social sharing data in your schema. The elements itemprop and interactioncount will do the trick, for example.
<meta itemprop="interactionCount" content="FacebookLikes:8"/> <meta itemprop="interactionCount" content="GooglePlus:3"/> -
Testing
As always you'll want to test your markup with the rich snippet tester provided by Google: http://www.google.com/webmasters/tools/richsnippets
Video Indexation Marking Up Your Videos With Schema.org
Using Schema.org to markup your videos can give you a powerful boost with click through rate. Just check out this example of how SEOmoz is utilizing video metadata to give them a giant visual boost in the SERPs;
It turns out adding the code is not too difficult, you just need to know the proper markup to use.
Before you begin, there's a few assumptions;
- You're "self-hosting" your video (this can not be done for YouTube embeds for example)
- You have access to the HTML so you'll be able to edit the code
Paste the Normal Video Code On Your Page
A typical example of video embed code may look like this;
<h1>Neil Patel</h1> <h2>Video: Advanced SEO for Bloggers</h2> <object ...> <param ...> <embed type="application/x-shockwave-flash" ...> </object> <p>An exclusive video with SEO and web marketing expert Neil Patel. Drive ridiculous amounts of leads to your blog and learn the 7 secrets of conversion rate optimization.</p>
Wrap In Video Object
Wrap the code in a <div>
Add the VideoObject data.
Add Basic Markup
Basic properties are;
- Name
- Thumbnail
- Duration
- Description
The name and description fields are added within <span> tags which wrap around existing content;
The duration and thumbnail properties go within <meta> tags which typically get added below the name and before the actual video;
Note: the duration is in ISO_8601 format. Learn more about it here: http://en.wikipedia.org/wiki/ISO_8601
Add Additional Markup
You can add any property for a MediaObject (the parent object of a VideoObject);
- associatedArticle
- bitrate
- contentSize
- contentURL
- duration
- embedURL
- encodesCreativeWork
- encodingFormat
- expires
- height
- playerType
- regionsAllowed
- requiresSubscription
- uploadDate
- width
Or you can add properties exclusive only to video;
- caption
- productionCompany
- thumbnail
- transcript
- videoFrameSize
- videoQuality
Here's an example with upload date, width and height added;
Go add your video markup and steal massive clicks from the competition!
Finished Code
<div itemprop="video" itemscope itemtype="http://schema.org/VideoObject"> <h2><span itemprop="name">Video: Advanced SEO for Bloggers</span></h2> <meta itemprop="duration" content="T1M33S" /> <meta itemprop="thumbnail" content="neil-patel-video-thumbnail.jpg" /> <meta itemprop="uploadDate" content="2012-04-01T08:00:00-05:00" /> <meta itemprop="width" content="640" /> <meta itemprop="height" content="480" /> <object ...> <param ...> <embed type="application/x-shockwave-flash" ...> </object> <p><span itemprop="description">An exclusive video with SEO expert Neil Patel. Drive ridiculous amounts of leads to your blog and learn the 7 secrets of conversion rate optimization.</span></p> </div>
Yahoo Search Monkey RDFa
RDFa Microformats are another markup language that Yahoo uses to identify and categorize information more easily on the net.
RDF stand for Resource Development Framework
You can use RDFs to describe items on an ecommerce site, schedules & content for search engines.
RDFs are not written in HTML they are written in XML format.
We're going to cover some examples of how to add this code to your content.
Understanding Identifiers
- Resource
- anything that exists at a URL
- Property
- aresource with a name (like the type of content on a webpage) - an author, homepage, book, movie etc.
- Property Value
- An aspect of the property; ie the author of a book or an actor in a movie
From there you can form "Statements". A statement is a subject, predicate and object.
For example;
The statement "The author of QuickSprout is Neil Patel" would be summed up as the following;
- Subject: http://www.quicksprout.com
- Predicate: Author
- Object: Neil Patel
An Example
-
All RDFs start with the XML declaration and the RDF wrapper tags
-
The you have to declare the RDF syntax and the URL the data is referring to;
-
Next we'll declare the exact items to be described in the document
Here, we are talking about the specific CD "Thriller" and referencing the URL that CD is on.
-
Add The Elements Which Are Properties Of the Resource
Using the wrapper tag
<cd:artist></cd:artist>(or country, price etc) you can declare the properties of the album you are referencing.
Completed Code Example
Here's an example of the completed code which you can use and modify for your needs
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.cdstore.com/cd01"> <rdf:Description rdf:about="http://www.cdstore.com/cd01/Thriller"> <cd:artist>Michael Jackson</cd:artist> <cd:country>USA</cd:country> <cd:company>Epic Records</cd:company> <cd:price>12.99</cd:price> <cd:year>1982</cd:year> </rdf:Description> </rdf:RDF>
Use the Validator to check your work! http://www.w3.org/RDF/Validator/
Adding the Dublin Core to Your Site
The Dublin Core is another metadata format which is used to describe data on the web. There are a variety of elements used by the Dublin Core, including;
- title
- the name given the resource
- creator
- the person or organization responsible for the content
- subject
- the topic covered
- description
- a textual outline of the content
- publisher
- those responsible for making the resource available
- contributor
- those who added to the content
- date
- when the resource was made available
- type
- a category for the content
- format
- how the resource is presented
- identifier
- numerical identifier for the content such as a URL
- source
- where the content originally derived from
- language
- in what language the content is written
- relation
- how the content relates to other resources, for instance, if it is a chapter in a book
- coverage
- where the resource is physically located
- rights
- a link to a copyright notice
An Example
An example of some of the Dublin Core metadata in action would be the following. This code represents a hypothetical document on quicksprout.com
<head profile="http://dublincore.org"> <title>The Neil Patel Guide to Dublin Core</title> <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" /> <meta name="DC.Identifier" schema="DCterms:URI" content="http://quicksprout.com/fakeitems/dublincore/" /> <meta name="DC.Format" schema="DCterms:IMT" content="text/html" /> <meta name="DC.Title" xml:lang="EN" content="Dublin Core Tutorial" /> <meta name="DC.Creator" content="Neil Patel" /> <meta name="DC.Subject" xml:lang="EN" content="Dublin Core Meta Tags" /> <meta name="DC.Publisher" content="I'm Kind of a Big Deal, LLC" /> <meta name="DC.Publisher.Address" content="neil@neilpatel.com" /> <meta name="DC.Contributor" content="Neil Patel" /> <meta name="DC.Date" scheme="ISO8601" content="2012-06-01" /> <meta name="DC.Type" content="text/html" /> <meta name="DC.Description" xml:lang="EN" content="This tutorial is a part of Neil Patel's advanced SEO guide." /> <meta name="DC.Identifier" content="http://quicksprout.com/fakeitems/dublincore/" /> <meta name="DC.Relation" content="QuickSprout.com" scheme="IsPartOf" /> <meta name="DC.Coverage" content="I'm Kind Of A Big Deal, LLC" /> <meta name="DC.Rights" content="Copyright 2012, Neil Patel, All rights reserved." /> <meta name="DC.Date.X-MetadataLastModified" scheme="ISO8601" content="2012-06-01" /> <meta name="DC.Language" scheme="dcterms:RFC1766" content="EN" />
Bonus: A Dublin Core Generator
If you have a webpage that already exists, try running it through this free DC generator. http://www.ukoln.ac.uk/metadata/dcdot/
Google Rel=Author Tag Implementation for Multiple Author Sites
There are two methods to implementing rel=author for multiple author sites.
Simple Method
With this simple method, all you will need to do is point a link from each post to the corresponding Google Profile page, using rel=author.
Link To The Individual Author Profile From Each Post
So let's say we have a blog with two posts: Post A and Post B. I wrote post A but Post B is a by a guest author. You will do as follows for each post
Post A: The Google Plus Badge
Go to https://developers.google.com/+/plugins/badge/personal-config as before to generate the code (don't forget to use your Google Plus ID!). But this time, you're only going to paste it into the individual posts you authored.
Option B: Use the rel=author tag
<a href="https://plus.google.com/109412257237874861202?rel=author">Neil Patel</a>
This again is the traditional rel=author tag. Substitute your name and Google Plus Profile ID and paste the code only in posts or pages you authored.
New Alternate Option: Use the Special Parameter Link
<a href="https://plus.google.com/112759904453577892472?rel=author>+Neil Patel<a/>
This is the simplest way to link to your author profile. Just put the above code (personalizing your name and link) only on the pages you authored.
Post B
You are going to repeat the above step, choosing whichever option is best for you. But this time you are going to add the author link for each guest author on their posts.
Option A: The Google Plus Badge
Cut and paste the Google Plus Badge code from https://developers.google.com/+/plugins/badge/personal-config this time using the profile information of the guest author.
Option B: Use the rel=author tag
A tag of this style for a guest author might look something like;
<a href="https://plus.google.com/100613060119695637213?rel=author">Guest Author</a>
Once you have done so for every page with a guest author, you are ready to move to step two.
Each Author Adds "Contributor" Link To Every Blog They Are a Guest Author On
Now, each author that can contributes to your site, must add a link to your site in the "contributor" section of their Google Plus profile. You can have as many links as you want in the "contributor" section, so no matter how many sites you write for, you can show you are the author.
Take for example Sujan Patel's profile, where he is a contributor to three sites;
Advanced Method
Link To The Individual Author Profile From Each Post
With this advanced method, every author is going to need their own page. SEOmoz does this well, as you can see below;
Some WordPress themes may have this functionality built in. If they do not, you can see the section on "setting up a custom author profile in WordPress".
Add rel= "author" Links From Blog Posts To Profile Page
Remember how in the single author blog, you pointed a "rel=author" link to your Google Plus Profile. In the case of a multiple author blog, you're going to point rel=author to your profile page on that website.
Add rel="me" From Bio Pages To Google Profile
Next, we have to create the third link in the chain: link from your bio page to your Google Plus Profile.
This establishes the final connection in the chain, which simply looks like this:
Post (rel=author) > Bio/Profile (rel=me) > Google Plus Profile
The chain works backwards too, as you're about to see in step four.
Google Plus Profile (contributor link) > Bio/Profile
Click on Compiler, then Compile All
You should now be familiar with adding a link from your Google Plus Profile back to the site you contribute to.
The important part in this last step, is that the link needs to go directly to your bio/profile page on the website you contribute to. The link from my Google profile pointing back to SEOmoz would be;
Google Rel=Author Tag Implementation for Single Author
Before You Begin: Set Up Your Google Profile
If you do not already have a Google profile set up at this point, you should do that know. This is equivalent to creating a Google Plus page now.
The concept with setting up your author profile is that you are basically putting a link in two places. You're reciprocal linking from your website to your Google profile. Like this;
Every Page On Your website (rel=author) > Google Plus Profile
Google Plus Profile (contributor) > Your Website
Its fairly simple to do, once you've walked through the steps, but there are a few options and specifics to know about.
Add Rel=Author To Your Site
Option A
Install the Google Plus Badge on your site
https://developers.google.com/+/plugins/badge/personal-config
Grab the code as shown in the above snapshot and paste it where you want it on your site. This will usually go in a sidebar widget if you're running WordPress.
Be sure to use your Google Plus Profile ID.
Option B
You can link from every page on your site to your Google Plus profile with the rel=author attribute.
This was the first method available when Author Profiles first came out.
You need to link your name from every page of your blog to your Google profile.
In a content management setup like WordPress, this can easily be done via the footer or sidebar widget if you have an "about" box with your name in it.
Here's the code. Simply cut and paste it into the sidebar or footer;
<a href="https://plus.google.com/109412257237874861202?rel=author">Neil Patel</a>
Obviously, substitute your name and your Google Plus profile ID.
Special Parameter Link
Most people do not know about this new simple method to link your blog pages back to your Google profile. It was introduced after the initial release of rel=author as an easy way to implement the link without needing to edit HTML.
First, be sure your author name appears on appear page of your site, and simply turn it into the following link;
<a href="https://plus.google.com/112759904453577892472?rel=author>+Neil Patel</a>
Notice the plus in front of my name? That helps signal to Google that you are using the special parameter at the end of the URL. And again, you obviously want to use your Google Plus Profile URL when doing this.
This method replaces the need to use the rel=author attribute or Google Plus badge.
Whichever of the three methods you have chosen to use, now you are ready to point your Google profile back to your site.
Link Back To Your Site From Your Google Profile
-
Go to your profile page while logged in and click edit.
-
Use the "contributor" section in your profile.
-
Add your blog as a link.
-
Test with the rich snippets testing tool http://www.google.com/webmasters/tools/richsnippets
-
This will show you if you have implemented the authorship correctly, and how your page may look in the SERPs.
Entity Search
Entity search is still very much in its earliest stages. Only certain types of people, websites or businesses will be able to utilize it, but it won't be long until everyone can participate.
This section will be one of just a few that talks a little bit more about the concepts.
What is Entity Search?
It is often also referred to as "the knowledge graph". It is about connecting people, places and things - more than just keywords - which don't have much of a meaning. For example the keyword "boston" could be the place but it could also be the band.
Let's look at the current knowledge graph for "boston"
How does that data get there? Google draws data from a large variety of data repositories around the web, such as wikipedia
The knowledge graph on the right hand side of the SERPs is only the most obvious place you'll see entity like results. They are sometimes hidden - but here's where you might see some entity type results.
Implied Site Search
Google hasn't been doing this long, but there is this thing called an implied site search. You probably know what a normal site search is:
But check out what you get with this:
The top six results are still all from quicksprout.com - Google has recognized quicksprout the company as a business - an entity - and can thus rewrite the search into a site search for the top results.
The Related Search Operator
Not many people use this, but check out the results for a related: search on quicksprout.com
You can clearly see the association of quicksprout having to do with the topics of web development, blogging and analytics. This is very much how entity relationships work. There are no significant keywords shared between these site - yet they are seen as related to one another.
To illustrate that this association to being an entity, doesn't apply to everyone automatically, here's a related: search with no results
Natural Language Search
You also see some entity results in "natural language search". This would be a search query that is a question, a complete sentence or a very long-tail description.
Take "what's the capital of florida?" for example
Google returns the answer to your question. This has nothing to do with "keywords" and everything to do with the idea of Florida being a state and Tallahassee being the capital of that state.
Is it becoming apparent that being viewed by Google as an entity could be a very good thing? It gives you the possibilities of appearing in more places around the web, and of boosting your authority.
The next section will cover some specific ways you can get included in entity based sources.
Adding Your Site To Entity Based Sources
The last section taught you all about the importance of appearing like an entity to Google and having as much related information tied to you as an entity as possible. How do we make that happen? By making sure you appear in Freebase.
Here's the most extensive list I know of, for the places Google uses to get its entity information.
- abc.state.va.us/Pricelist/RUM_(IMPORTED).html
- Adherents.com
- ArXiv
- Baseball Almanac
- Berlin International Film Festival
- Books and Writers kirjasto.sci.fi/
- bornrich.com
- Boston.com
- Bureau of Labor Statistics, Unemployment in US
- Bureau of Labor Statistics, Unemployment in US Counties
- Bureau of Labor Statistics, Unemployment in US States
- Câmara dos Deputados
- celebritynetworth.com
- Center for Responsive Politics
- ChefMoz
- chickipedia
- Claud Butler
- croctail.corpwatch.org/
- Crore
- Crunchbase.com
- Database
- databasebasketball.com
- databaseFootball.com
- DatabaseOlympics
- DayLife.com
- E-LIS
- en.citiZENdium.org/wiki/
- English Wikipedia
- Eurostat, Minimum Wage in Europe
- exploredia.com
- Factual
- famenetworth.com
- FDIC
- Food and Drug Administration
- Forbes
- France
- Freebase
- GEBCO Undersea Features Gazetteer
- Geographic Names Information System
- Geonames.org
- German Wikipedia
- Google Plus
- Healthcare Cost Report Information System
- https://protecfuelsaver.com/diesel-fuel-cleaner
- https://protecfuelsaver.com/gas-fuel-cleaner
- https://protecfuelsaver.com/oil-system-rehab
- https://protecfuelsaver.com/PROTEC-Internal-Engine-Cleaner
- Hulu
- IES NCES Public Library Survey
- imdb.com
- Infochimps
- InstantEncore
- Internet Movie Database
- Internet Speculative Fiction Database
- Internet Speculative Fiction Database
- ISO 15924
- ITIS
- Library of Congress
- Library of Congress id.loc.gov/
- Lurkmore.ru
- MBLWHOI Library
- Medpedia
- Metaweb topic merging algorithm
- Mexican INEGI statistics
- Million
- MusicBrainz
- MySpace
- Named entity recognition
- National Center for Education Statistics
- National Fire Department Census Database
- National Oceanic and Atmospheric Administration
- Nature
- Netflix
- Nielsen Company
- Official Website
- Open Library
- Open Library Project
- OurAirports
- Paragliding Earth
- Pocket Statistical Data on Switzerland 2006
- Pocket Statistical Data on Switzerland 2007
- Public domain
- PubMed Central
- Quotationsbook
- Ranker.com
- Reference.com
- Securities and Exchange Commission sec.org
- Simon Property Group
- SkyGrid
- Slovak Statistical Office
- Stanford University
- StarCraft and StarCraft II Wiki
- The Football Database
- The Hollywood Reporter
- The National Institute of Statistics, Spain
- The TVDB
- The World Factbook
- therichest.org
- topics.nytimes.com
- TVRage
- tvrage.com
- U.S. Food and Drug Administration National Drug Code Directory
- UN Stats
- Unified Medical Language System Release 2011ABv
- United States Census Bureau
- United States Census Bureau, Population
- United States Department of Housing and Urban Development
- United States International Trade Commission
- United States Securities and Exchange Commission
- Virtual INternet Authority File viaf.org/
- Wikipedia
- Wikipedia Categories
- Wikipedia infoboxes
- World Bank, World Development Indicators
Freebase draws from all of the above places for data. If you are not in freebase, this is how you can add yourself.
Freebase
Note: Please don't look at this like directory submission or a place to spam. Freebase is a publicly edited database (started by MetaWeb, bought by Google). Its not a place to drop links or create extra submissions (that probably won't do much). You're goal is to be sure your entity information is complete and accurate.
-
Create an account
-
Once your account is created, set yourself to be in edit mode (makes it easier when browsing topics to edit)
-
Then check to see if your entity exists
Double entries are not liked very much (and they'll get deleted anyway). From any page, use the search box to see if your entity exists
-
If it does NOT exist - look for your "topic"
Your topic is the category the entity should most fit into. For example "Zappos" is a Company. "American Idol" would be a TV Program, etc.
QuickSprout seems to fit best into "Internet Company" - so you want to go to that topic page
-
When on your topic page, click to "view all"
-
Then you need to "add more topics"
-
Run the Search again for your entity just to be certain (when you don't see it pop up, click "create new topic")
-
Then you'll see your new topic in the list - click on it
-
Since you're automatically in edit mode (from step 2) you'll be able to add and edit all information for your new topic.
Again, this is not a sales page. Think of this like a Wikipedia entry - factual.
Hopefully by the end of this section you've gained some in depth understanding of how important things like schema and entity search are. And you've helped make your websites more "future search" friendly!