the expanding nature of seo (martech 2016)
TRANSCRIPT
THE EXPANDING
NATURE OF SEO
3/21/2016
MICAH FISHER-KIRSHNER
WHO AM I?
SEO AdvisorshipsSEO Experience
+MicahFisher-Kirshner / @micahfk
THE VILLAGE
An expanding nature of SEO requires an understanding of the past
THE VILLAGE: BASIC WEB RESULTS
FLAT EARTH
We learned to recognize other optimizing tribes
SPHERICAL EARTH AT CENTER OF EVERYTHING
We saw the need for testing and understanding of our environment
SPHERICAL EARTH: CAFFEINE
CENTRAL SUN
Not all of us accepted the changes Google developed
CENTRAL SUN: PANDA
LUDDITES APPEAR!
• Galileo attacked
LUDDITES: THINKING OUTSIDE THE BOX
Those that recognized the central change saw branding’s importance
GALACTIC UNIVERSE
Nonetheless, we realized life is so much more than the desktop screen
GALACTIC UNIVERSE: MOBILEGEDDON
Today’s universe of optimization encompasses so much more
AMP
<!doctype html>
<!doctype html>
<html >⚡or
<html amp>
<!doctype html>
<html >⚡
<head>
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/
regular-HTML-version/">
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-
scale=1,initial-scale-1">
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-
boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s
steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s
steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-
o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-
animation:none;-ms-animation:none;animation:none}</style></noscript>
<script async src="https://cdn.ampproject.org/
v0.js"></script>
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s
steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s
steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-
o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-
animation:none;-ms-animation:none;animation:none}</style></noscript>
<script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s
steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s
steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-
o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-
animation:none;-ms-animation:none;animation:none}</style></noscript>
<script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>Hello World!</body>
</html>
Oh, but th
ere’s more!
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s
steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s
steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-
o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-
animation:none;-ms-animation:none;animation:none}</style></noscript>
<style amp-custom>
body {
background-color: white;
}
amp-img {
background-color: gray;
}
</style>
<script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>Hello World!</body>
</html>
You can style with only a single embedded stylesheet
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s
steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s
steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-
o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-
animation:none;-ms-animation:none;animation:none}</style></noscript>
<script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800">
</amp-img>
</body>
</html>
Images, videos, audios, and iframes add “amp-” to the tags
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s
steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s
steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-
o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-
animation:none;-ms-animation:none;animation:none}</style></noscript>
<script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>Hello World!</body>
</html>
Prohibited Tagsappletbase
embedformframe
framesethttp-equiv
objectparamscript*
[input elements*]
<!doctype html>
<html >⚡
<head>
<meta charset=“utf-8”>
<link rel="canonical" href=“https://www.example.com/regular-HTML-version/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale-1">
<script id="amp-access" type="application/json">
{
"authorization": "<% host %>/amp-access/api/amp-authorization.json?
rid=READER_ID&url=CANONICAL_URL&ref=DOCUMENT_REFERRER&_=RANDOM",
"pingback": "<% host %>/amp-access/api/amp-pingback?rid=READER_ID&ref=DOCUMENT_REFERRER&url=CANONICAL_URL",
"login": "<% host %>/amp-access/login/?rid=READER_ID&url=CANONICAL_URL"
}
</script>
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s
steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1
normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-
start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -
amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes
-amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-
animation:none;-ms-animation:none;animation:none}</style></noscript>
<script async custom-element="amp-access" src="https://cdn.ampproject.org/v0/amp-access-0.1.js"></script>
<script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>
<section AMP Access="access AND subscriber" amp-access-hide>
Thanks for being a subscriber!
</section>
</body>
</html>
Paywall Setup
1. Implement AMP Access callbacks in publisher backend
2. Configure AMP Access endpoints
3. Include AMP Access component
4. Define which parts are visible to subscribers and non-subscribers
Be sure to validate by adding #development=1 at the end of the URL
Learn More
The AMP Project
Technical Introduction
Github Code
AMP Blog
AMP Videos
Answers
Large variety, generally follows a theme
Already rank on the first page (generally position 5 or higher)
Clear and concise answer to the question
Well-structured code: headers, lists(but does NOT require Schema)
Domain relevance and authority
Always include a relevant picture!
Apple Search
Installed
Great CTR
Title and keywords
Overall engagement
Personalized app engagement
Low engagement
Keyword spamming
Bounces
Interstitials
Low ratings & reviews
Poor reviews
With Recovery Search provide accurate location data
Apple replaced Google as the default web search engine
Anchor text relevance(watch out on Google)
Great click through rates
Social signals with Facebook and Twitter
Very clean XML Sitemaps
App Indexing
Enable your app to handle deep links via HTTP URLs (new with iOS 9)
Add the App Indexing API/SDK
<html>
<head>
…
…
</head>
<body>Hello World!</body>
</html>
Add code to your corresponding web pages referencing the deep links: Rel Alternate
<link rel=“alternate”
href=android-app://com.example.android/http/
example.com/gizmo” />
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage", "@id":
"http://example.com/gizmos",
"potentialAction":
{
}
}
</script>
Add code to your corresponding web pages referencing the deep links: ViewAction
"@type": "ViewAction",
"target": "android- app://com.example.android/http/example.com/
gizmos" } } </script>
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitem ap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://example.com/gizmos</loc>
</url>
…
</urlset>
Add code to your corresponding web pages referencing the deep links: XML Sitemap
<xhtml:link rel="alternate" href="android-
app://com.example.android/example/gizmos" />
Allow Google to crawl requested app URLs
Learn More
Android
Apple
Installed
Proper implementation
Title and description
Content mismatch
Interstitials
Title
Descriptions
App Indexing
ASO
Rating volume
Star ratings
Review text
Links
More on App Packshttp://searchengineland.com/app-indexing-new-frontier-seo-app-packs-app-store-search-242319
Knowledge Graph
Connecting the world’s knowledge
2 graph styles
4 data citations
No Wiki page? Stop now
Verify your Google Plus page
https://support.google.com/business/answer/2911778
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Organization",
"name" : "Your Organization Name",
"url" : "http://www.your-site.com",
}
</script>
"sameAs" : [ "http://www.facebook.com/your-profile", "http://www.twitter.com/yourProfile", "http://plus.google.com/your_profile" ]
Add code to connect your social properties via sameAs: JSON-LD
<span itemscope itemtype="http://schema.org/Organization">
<link itemprop="url" href="http://www.your-company-site.com">
</span>
<a itemprop="sameAs" href="http://www.facebook.com/your-company">FB</a><a itemprop="sameAs" href="http://www.twitter.com/YourCompany">Twitter</a>
Add code to connect your social properties via sameAs: Microdata
Consider Noting
Event listings
Store hours
Location and contact info
https://developers.google.com/structured-data/customize/overview
Follow other Wikidata entry formats
Use notable citations for references
Other Properties
Headquarters location
Official website
Image / Logo
Social media sites
Industry
Founders / Start Date
Subsidiaries / Employees
Double-check your competitors
Edit directly as an official representative
HTTPS
Tiny call-out and a tiny ranking boost
Get a robust security certificate via a certificate authority
Hilton Hotel
Choose a high security level (2048 bits)
Redirect users and search engines to HTTPS with a 301 redirect
Enable HSTS with a supporting web server
Learn More
Documentation
URL information
Additional tips
No exceptions: Everything must be HTTPS
https://www.example.com/old-original-url/
http://www.example.com/redirect-URL/
http://www.example.com/final-URL/
https://www.example.com/final-URL/
Each hop is a 15% link value loss
301
canonical
A B
XML Sitemaps need non-redirecting URLs
Prepare for data problems
https://www.example.com/
MORE ON THE HORIZON
• Graphic summary of the How Tos, with something to represent “on the horizon”
SEO’s value continues to be uncovered
THE MULTIVERSE
Prepare for the next fundamental change in the SEO universe
100 Minutes Driving a Day
END POINT: SEO AS A FOUNDATION
Build the SEO foundation for each observed new trend
@micahfk ; +MicahFisher-Kirshner