THE TECHNICAL
SEO RENAISSANCE
MICHAEL KING
MANAGING DIRECTOR, IPULLRANK
@IPULLRANK
DOWNLOAD THESE SLIDES
http://bit.ly/tech-renaissance
An Abridged History of SEO
From my perspective at least
IPULLRANK.COM @ IPULLRANK
First There Were Webmasters
Before the web world splintered into 50 million different jobs, there was just the Webmaster. In 1995 I was even one
of them for Microsoft’s ActiveX team.
IPULLRANK.COM @ IPULLRANK
Then Came Search Engines
Before Search Engines we just found things on directories or resource pages.
IPULLRANK.COM @ IPULLRANK
SEO Grew out of Webmaster/Info Retrieval World
Basically, it was just a bunch of nerds trying to get money and succeeding.
IPULLRANK.COM @ IPULLRANK
For A Long Time, It Was Just About Hacks and Tricks
Remember bolding every single instance of a keyword on the page?
IPULLRANK.COM @ IPULLRANK
Then Google Showed Up
IPULLRANK.COM @ IPULLRANK
It Was Still About Hacks, Tricks and Testing Things
Remember page rank sculpting?
IPULLRANK.COM @ IPULLRANK
Then Google Got Better
That was a bad day for a lot of people.
IPULLRANK.COM @ IPULLRANK
And Better
Panda ruined a lot more people’s days.
IPULLRANK.COM @ IPULLRANK
And Better
With Penguin a lot of people figured it was time to finally go white hat.
IPULLRANK.COM @ IPULLRANK
At the Same Time More SEOs Came from Different Disciplines
IPULLRANK.COM @ IPULLRANK
And It All Became
About Content
Now we are the people that
make all of the things…right?
And People Started Saying You Don’t Need to Be Technical
That’s right. As an industry,
we finally got on the ‘just
make good content’ train.
IPULLRANK.COM @ IPULLRANK
Yet, the Web is More Technical than Ever Before
We are being dragged into a
technical SEO renaissance.
IPULLRANK.COM @ IPULLRANK
Lucky for You This Is The Point Where I have My Own Agency
Shameless plug.
Changes in Web
Technologies
What is pushing this renaissance?
IPULLRANK.COM @ IPULLRANK
JavaScript is Not Going Away
Nearly every site on the web is using JavaScript to perform some type of transformation on the page. It’s
obvious that Google needed to solve for this.
IPULLRANK.COM @ IPULLRANK
Growth of AngularJS
AngularJS, the single page
application, MVW
framework continues to
grow dramatically in the top
million websites.
IPULLRANK.COM @ IPULLRANK
AngularJS is Popular in Most Verticals
It’s likely that you’ll run into an AngularJS site soon enough in your optimization duties
IPULLRANK.COM @ IPULLRANK
ReactJS is Growing Too
Similarly, Facebook’s MVW
framework is growing as
well. Although, it has a built
in feature for making sure
that it renders proper HTML,
but it’s still a framework you
should know how to
optimize for.
Check out this post https://builtvisible.com/react-js-seo/
IPULLRANK.COM @ IPULLRANK
Ironically, React (Facebook) is SEO-ready, Angular (Google) is Not
Angular 1 did not have anything to make it easier to crawl. React has ReactDOMServer.renderToString to allow React to serve
fully rendered HTML from the server.
View Source is Dead
Inspect Element Only
IPULLRANK.COM @ IPULLRANK
HTTP/2 – Perhaps the Most Important Thing
All you need to know right now is that it’s fast as hell.
Adoption is Super Low For Now Though
We Need More from Our
SEO Tools
Many of them are far behind search engines
What are rankings in 2016?
So, You’re #1? Cool Story, Bro.
Where they
at tho?
IPULLRANK.COM @ IPULLRANK
On What Device, OS and Location?
Different browser and OS configurations will show you different results. So what truly is a mobile
ranking?
+ + = Ranking #3+
Nexus 5 Android NYCChrome
Safari
+ + = Ranking #1+
iPhone 6 iOS NYC
Are we measuring for context
and actionability or just
vanity?
Please Give Me Position 0 in My Rankings
Please Give Me My Results in Context of Paid
#1 is really #8
in this SERP
What is cloaking in 2016?
IPULLRANK.COM @ IPULLRANK
304 Response Codes
The Not-Modified response code tells clients that they do not need to download a page again if it has already been downloaded.
IPULLRANK.COM @ IPULLRANK
Googlebot Respects the 304
What is cloaking when Google accepts 304 response codes and does not revisit that content after
indexation?
IPULLRANK.COM @ IPULLRANK
What is Cloaking in the Adaptive/Responsive Era?
Many people show less or more content based on the context of the browser/user, so what is
cloaking now?
Google accepts directives in
HTTP headers.
IPULLRANK.COM @ IPULLRANK
X-Robots-Tag HTTP Header
Many of the popular crawling tools do not look for this in the response headers.
IPULLRANK.COM @ IPULLRANK
Hreflang HTTP Header
I have not seen a tool that looks for this HTTP header. However, this implementation is preferred over the many lines
of hreflang tags on every page.
IPULLRANK.COM @ IPULLRANK
Rel-Canonical HTTP Header
Many tools do not look for the rel-canonical HTTP header.
All of these HTTP headers are
better than clogging up the
<head> of the code.
IPULLRANK.COM @ IPULLRANK
JavaScript Redirects for Mobile
Google allows client side redirects for automation redirection of mobile to desktop and vice versa. Many crawling tools do not
account for this.
Many SEO tools do not
account for these things
IPULLRANK.COM @ IPULLRANK
Chrome DevTools Does
Natively in Chrome’s Developer Tools you can see all of the HTTP Request and
Response Headers in the Network tab section.
IPULLRANK.COM @ IPULLRANK
Geolocation Emulation is Built-in to Chrome
If you’re running into issues with finding local rankings now that Google has gotten rid of
nearEquals you can just change your location on the browser level.
IPULLRANK.COM @ IPULLRANK
Remote Debugging
You can also see this for a specific mobile devices with the remote debugging features of Chrome.
Crawlability
What can be crawled at this point?
IPULLRANK.COM @ IPULLRANK
Google is Crawling Headless
Make no mistake that Google has not been crawling with just text driven crawlers for a long time.
IPULLRANK.COM @ IPULLRANK
Adam Audette Said It So You KNOW It’s True
Adam ran a few tests a little under a year ago further proving out these capabilities
IPULLRANK.COM @ IPULLRANK
Also an Ex-Googler Confirmed It
A former Google developer said the headless crawling was his primary project from 2006 – 2010.
IPULLRANK.COM @ IPULLRANK
I Said it in 2011
IPULLRANK.COM @ IPULLRANK
JsCrawlability.com
Eric Wu has been doing tests to get a better determination of what it is that Google can actually see.
http://www.jscrawlability.com
But Mike, what does it
matter?
IPULLRANK.COM @ IPULLRANK
Well I Captured Video of Headless Googlebot
It’s a question of what does Googlebot do on your site. Using LuckyOrange I captured Googlebot sessions from Search Console’s Fetch and
Render and then I submitted it to the index. They load the page and leave. The mouse never moves, the headless browser never came back.
IPULLRANK.COM @ IPULLRANK
Get a Free Trial of LuckyOrange and Try it Yourself
This code will only place LuckyOrange on the page if a JS-enabled Googlebot comes to your site.
My test did not show what Googlebot from the wild does when it’s crawling.
IPULLRANK.COM @ IPULLRANK
Log Files Went out of Style?
No, log file analysis has not gone out of style. In fact, it’s more valuable than ever before.
LOOK AT YOUR LOG FILES!
IPULLRANK.COM @ IPULLRANK
Log File Analysis
We parse the logs and query them in MySQL, but you can use any number of tools for this.
IPULLRANK.COM @ IPULLRANK
Screaming Frog Log File Analyzer
The Screaming Frog team rolled out an awesome new tool recently for log file analysis.
IPULLRANK.COM @ IPULLRANK
Search Console’s Crawl Stats are Mediocre
I personally find what Google gives us to be pretty much useless. Don’t less this take the place of
going through your logs.
IPULLRANK.COM @ IPULLRANK
Log Files Help You Spot What Really Happens
I had a client come last year that was unsure whether it was Penguin or changes in their offline media
buying habits had led to the downturn in traffic. Layering the Googlebot logs made it clear.
0
50000000
100000000
150000000
200000000
250000000
0
500000
1000000
1500000
2000000
2500000
Unknown organic organic home organic dyor
organic er organic home,dyor,er organic cushion organic net of home
organic ritani organic diamonds direct home paid brand sessions
tv spend web sessions (as reported by adaptv) Top 800 Monthly SV impressions
Googlebot Visits
Penguin Update
IPULLRANK.COM @ IPULLRANK
Social Shares Influence Crawl Patterns
We find that there is a higher correlation with crawling and social shares than crawling and links. Commonly
held SEO knowledge would make you believe this is entirely dictated by links.
0
1000000
2000000
3000000
4000000
5000000
6000000
0
100000
200000
300000
400000
500000
600000
700000
Googlebot Visits Links Social Shares FB Twitter G+
IPULLRANK.COM @ IPULLRANK
Prerendering is the Best Practice
Using a solution like prerender.io is the best practice.
IPULLRANK.COM @ IPULLRANK
Prerender Can Cause Problems
However, we’ve seen Prerender setups misidentify Googlebot as a human users and serve the wrong the
AngularJS versions.
0
20000
40000
60000
80000
100000
120000
Googlebot Perceived as Human
IPULLRANK.COM @ IPULLRANK
Prerender Setup Serving Non-200
Prepping the prerender cache can cause outages and lead to pages falling in and out of the index.
0
2000
4000
6000
8000
10000
12000
14000
16000
206
301
302
304
403
404
405
410
500
503
504
206
301
302
304
403
404
410
503
504
206
301
302
304
404
405
410
500
503
504
206
301
302
304
401
404
405
410
500
503
504
206
301
302
304
403
404
405
410
502
503
504
1 2 3 4 5
-
hit
miss
pass
IPULLRANK.COM @ IPULLRANK
Also Prerendering is Not a Requirement
We got rid of prerender on 2 sections of the site and saw the traffic from Organic Search increase YoY.
Google can index it just fine.
IPULLRANK.COM @ IPULLRANK
AJAX Crawling Deprecated
Google has gotten rid of the AJAX crawling scheme because they don’t need it anymore. They have perfected their
ability to crawl headless at reasonable scale. They say don’t block the CSS or JS because it’s a browser.
They Say Don’t Prerender Just for Google
IPULLRANK.COM @ IPULLRANK
Prerender Does Speed Up Crawling
There is certainly value in prerendering for speed, but then that makes me wonder, why not just not
use Angular?
IPULLRANK.COM @ IPULLRANK
A Better Idea Is a Library that Doesn’t Need Prerender
Let’s stop going after the shiny object and go with the things that are built to work, shall we? Check
out MeteorJS – http://www.meteor.com
IPULLRANK.COM @ IPULLRANK
Or go with Angular2 Universal
Brad Green is the Google engineering product manager for AngularJS. He says Angular2 is better in
every way.
IPULLRANK.COM @ IPULLRANK
Don’t Forget Google Wants Progressive Enhancement
Thinking with the IoT in mind, progressive enhancement still makes sense. However, frameworks
like AngularJS are completely contradictory in that they don’t offer graceful degradation.
Scraping
The backbone of a lot of our analysis as SEOs
IPULLRANK.COM @ IPULLRANK
Most Tools use cURL or Similar
There are many similar libraries, but many SEO tools are built on library called cURL for managing HTTP requests. This
is a text based crawler.
This is a fundamental flaw of
many SEO tools because they
are not constructing the DOM
and its CSS/JS
transformations. Search
Engines are.
IPULLRANK.COM @ IPULLRANK
PhantomJS – For Scraping the Modern Web
There are many headless browsers out there such as Selenium, but PhantomJS is the go to.
http://www.phantomjs.org
IPULLRANK.COM @ IPULLRANK
HorsemanJS – The Easy PhantomJS
I prefer HorsemanJS which is a NodeJS module that is incredibly simple. http://www.horsemanjs.org
IPULLRANK.COM @ IPULLRANK
In-Browser Scraping
I wrote a post on how you can scrape using your browser’s Console.
IPULLRANK.COM @ IPULLRANK
Scrape the Unscrapable
Nothing is in unscrapable when you’re using a browser.
IPULLRANK.COM @ IPULLRANK
Multi-Page In-browser Scraping
If you want to scrape multiple pages check out ArtooJS https://medialab.github.io/artoo/
IPULLRANK.COM @ IPULLRANK
WebScraper.io
WebScraper is another high-powered in-browser scraping tool. No code required. http://www.webscraper.io
IPULLRANK.COM @ IPULLRANK
Or You Can Make Screaming Frog Headless
You can make Screaming Frog headless by placing a proxy with a headless browser in front of it. From my initial findings, there
is not much different aside from the order it identifies URLs and its ability to scrape content from pages.
IPULLRANK.COM @ IPULLRANK
Here’s the Code
Here’s the node code for how I did it. HorsemanJS is not the best tool for the proxy, but it’s great for a proof
of concept.
Screaming Frog pings for
robots.txt a lot. Make sure you
handle it with a cURL request
rather than a headless one.
For speed, don’t load images
Make sure you’re setting the
right headers before your return
the HTML. HorsemanJS does not
return headers.
IPULLRANK.COM @ IPULLRANK
PHP Wrapper for PhantomJS
For those of you that prefer PHP, the PHP PhantomJS wrapper is pretty decent as well.
http://jonnnnyw.github.io/php-phantomjs/
For speed, don’t load images
Content & Linking
You knew I wasn’t going to get up here and not talk
about these things, right?
IPULLRANK.COM @ IPULLRANK
Google Looks at Entities First
According to Paul Haahr, Google looks at entities first and it appears that we as an industry have talked
about this in theory, but not truly worked it into the optimization workflow.
IPULLRANK.COM @ IPULLRANK
AlchemyAPI
I encourage you to work AlchemyAPI into your keyword research and content optimization process.
IPULLRANK.COM @ IPULLRANK
Term Relevance
There’s also been a lot of talk about co-relevance, topic modeling and TF*IDF. This is a great
opportunity for technical elements to influence content creation.
IPULLRANK.COM @ IPULLRANK
In Fact Just Do Everything Cyrus Says
https://moz.com/blog/7-advanced-seo-concepts
IPULLRANK.COM @ IPULLRANK
Moz’s New Tool Will Help
Moz has made the related keywords concept more accessible by adding it to Moz Pro.
Searchmetrics also has a similar solution.
IPULLRANK.COM @ IPULLRANK
Onpage.Org’s TF-IDF Tool is Also Great
http://onpage.org
IPULLRANK.COM @ IPULLRANK
John Mueller Says 302s Pass PageRank
Don’t let Google mislead you about 302s vs. 301s.
IPULLRANK.COM @ IPULLRANK
These Rankings Say He’s Wrong
We had a client with millions for 302s and all we did was change them to 301s
June August September
HyperTraffic (1-3) 1272 1,283 1,473
Traffic (4-10) 979 983 837
Striking Distance (11-20) 167 161 110
Emerging (21-40) 106 103 98
Developmental (41-100) 156 90 87
Unranked 0 60 75
0
200
400
600
800
1000
1200
1400
1600
301 redirects
IPULLRANK.COM @ IPULLRANK
This Traffic Improvement Says He’s Wrong
Traffic went up pretty dramatically despite seasonality.
August 27th
301 redirects
11,039,188
10,455,517
11,348,902
12,049,481
11,250,148
12,902,847
11,040,192
13,158,296
11,287,790 12,203,998
12,508,164
13,158,296
14,041,313
15,609,390
0
2,000,000
4,000,000
6,000,000
8,000,000
10,000,000
12,000,000
14,000,000
16,000,000
18,000,000
April May Jun Jul Aug Sep Oct
Organic Visits
2014 2015
But. We need to stop
saying ‘just do 301
redirects.’
IPULLRANK.COM @ IPULLRANK
Instead Do Optimal 301 Redirects
Pattern matching on the .htaccess level is always faster than a list of redirects and always better than doing
it on the code/page level. Developers will respect that you understand what you’re talking about.
ReWriteRule url_pattern
file_reference [R=301, L]
redirect 301 /relative/path/to/file.php
http://www.yoursite.com/path/to/new/file.php
redirect 301 /relative/path/to/file.php
http://www.yoursite.com/path/to/new/file.php
redirect 301 /relative/path/to/file.php
http://www.yoursite.com/path/to/new/file.php
>
IPULLRANK.COM @ IPULLRANK
Internal Linking Structures
Internal Linking Structures are still an incredibly powerful asset. I’d like to see more tools like what Portent has built to visualize
them and understand where there is opportunity. https://www.portent.com/blog/seo/seo-force-directed-diagrams.htm
IPULLRANK.COM @ IPULLRANK
Searchmetrics Does a Great Job of This
I wish all the link indices had a stronger focus on internal linking structure and visualizing where there are
opportunities to flow more link equity throughout the site. Searchmetrics’ Site Structure tool does this well.
IPULLRANK.COM @ IPULLRANK
Paul’s Method is Good for Rolling Your Own
http://searchengineland.com/improve-internal-linking-calculate-internal-pagerank-r-246883
If Possible, Always Update your internal links on the database level
WordPress Example
UPDATE wp_posts SET post_content =
REPLACE (post_content,
'http://www.oldsiteurl.com',
'http://www.newsiteurl.com');
Google is becoming the
presentation layer of the web.
Help them do it.
IPULLRANK.COM @ IPULLRANK
Schema.org / JSON-LD
Schema.org is a lot more reasonable to implement now that they are allowing JSON-LD. Being in knowledge
boxes and such yields a lot more traffic than it takes away.
Page Speed
Google’s next big play
IPULLRANK.COM @ IPULLRANK
Google Expects Ludicrously Speedy
Google has an expectation that the above the fold content on the page will load within 1 second. You basically get 400 ms to
make that happen.
IPULLRANK.COM @ IPULLRANK
The Critical Rendering Path
IPULLRANK.COM @ IPULLRANK
DevTools Is Your Friend
In the Timeline section, DevTools gives you a point by point break down of each operation and how it impacts the site’s load
time. This is how you can determine what exactly is slowing down your pages.
IPULLRANK.COM @ IPULLRANK
How Your Code Is Laid Out Matters A LOT
IPULLRANK.COM @ IPULLRANK
This Is what PageSpeed Insights Helps With
IPULLRANK.COM @ IPULLRANK
External Resources Also Slow Down the Page
Chartbeat is typically a huge culprit and using rel-dns-prefetch can speed this up considerably.
In other words, AMP exists
because most developers are
doing it wrong.
IPULLRANK.COM @ IPULLRANK
AMP is a Spec to Enforce the Critical Rendering Path
Sound familiar?
IPULLRANK.COM @ IPULLRANK
Responsive Sites are
SLOOOOOOOW
One of the key things you
can do, aside from optimizing
for the critical rendering
path, is conditional loading.
IPULLRANK.COM @ IPULLRANK
PreBrowsing Directives
Browsers have preloading directives which allow the page to download elements in the background for later
viewing or within the same session.
IPULLRANK.COM @ IPULLRANK
Rel-Preconnect
Rel-preconnect will resolve the DNS, start the TCP handshake and negotiate the TLS tunnel
beforehand, effectively shaving hundreds of milliseconds to several seconds in page load.
IPULLRANK.COM @ IPULLRANK
When to Use Rel-Preconnect
When you see a long time for connections to happen or a lot of idle time, it’s a good idea to use rel-
preconnect.
<link rel=“preconnect”
href=“domain name”>
IPULLRANK.COM @ IPULLRANK
How Rel-Prerender Works
It loads the page in an invisible tab to make the page appear instantly.
IPULLRANK.COM @ IPULLRANK
Not to Be Confused with Prerender.io
IPULLRANK.COM @ IPULLRANK
Google Uses It in the SERPs
This could potentially be a way to definitively identify navigational queries. h/t @yoast
IPULLRANK.COM @ IPULLRANK
I Sent Thousands of Headless Visits
IPULLRANK.COM @ IPULLRANK
Rel-Prerender’d Pages Generally Perform Better
IPULLRANK.COM @ IPULLRANK
Use it With the GA API
Get the pageviews of the
ga:pagePath based on the
ga:previousPagePath set to
the current page that you’re
on.
You’ll get a list of the pages
your users are most likely to
visit next. Set one of these as
the rel-prerender.
IPULLRANK.COM @ IPULLRANK
Code.
Inject rel-prerender into the
page programmatically.
You could also session the
URLs the user is going to to
ensure you are always
prerendering a new page.
IPULLRANK.COM @ IPULLRANK
It Improved Our Site Speed 68.35%
One line of code did this magic.
Don’t use it on mobile.
Analytics packages aside
from Google Analytics may
show fake sessions.
IPULLRANK.COM @ IPULLRANK
Defer JS Load with Page Visibility API
…
IPULLRANK.COM @ IPULLRANK
Rel-Preload for Same Page Preloading
I haven’t played with it yet, but Ian says they’re using it on the Portent site.
https://www.smashingmagazine.com/2016/02/preload-what-is-it-good-for/
How to Go Forward
Things you should know and do to be prepared for
the technical renaissance
IPULLRANK.COM @ IPULLRANK
Understand the Document Object Model
https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction
IPULLRANK.COM @ IPULLRANK
Critical Rendering Path
https://developers.google.com/web/fundamentals/performance/critical-rendering-path/analyzing-crp?hl=en
IPULLRANK.COM @ IPULLRANK
Page Speed
https://www.portent.com/blog/design-dev/ultimate-site-speed-guide-what-impacts-site-speed.htm
IPULLRANK.COM @ IPULLRANK
Log File Analysis
https://builtvisible.com/log-file-analysis/
IPULLRANK.COM @ IPULLRANK
Understand SEO for JavaScript Frameworks
https://builtvisible.com/javascript-framework-seo/
IPULLRANK.COM @ IPULLRANK
Learn DevTools
http://ipullrank.com/6-things-you-should-know-about-in-chrome-devtools/
IPULLRANK.COM @ IPULLRANK
Accelerated Mobile & Instant Pages
Even if you’re not a publisher, I encourage you to watch these projects as I expect that Google and Facebook will grow the specs
dramatically once they’re adopted.
IPULLRANK.COM @ IPULLRANK
Read Up On HTTP/2
https://moz.com/blog/http2-a-fast-secure-bedrock-for-the-future-of-seo
IPULLRANK.COM @ IPULLRANK
Get Back to Testing All The Things
Let’s stop chasing the
content train and get back to
making experiences that
perform.
IPULLRANK.COM @ IPULLRANK
I Just Feel Like Michelangelo Has a Place In This Deck
That’s All I’ve Got
THANK YOU
Michael King
Managing Director, iPullRank
mike@ipullrank.com
http://ipullrank.com
@iPullRank

The Technical Seo Renaissance - Mike King

  • 1.
    THE TECHNICAL SEO RENAISSANCE MICHAELKING MANAGING DIRECTOR, IPULLRANK @IPULLRANK
  • 2.
  • 3.
    An Abridged Historyof SEO From my perspective at least
  • 4.
    IPULLRANK.COM @ IPULLRANK FirstThere Were Webmasters Before the web world splintered into 50 million different jobs, there was just the Webmaster. In 1995 I was even one of them for Microsoft’s ActiveX team.
  • 5.
    IPULLRANK.COM @ IPULLRANK ThenCame Search Engines Before Search Engines we just found things on directories or resource pages.
  • 6.
    IPULLRANK.COM @ IPULLRANK SEOGrew out of Webmaster/Info Retrieval World Basically, it was just a bunch of nerds trying to get money and succeeding.
  • 7.
    IPULLRANK.COM @ IPULLRANK ForA Long Time, It Was Just About Hacks and Tricks Remember bolding every single instance of a keyword on the page?
  • 8.
  • 9.
    IPULLRANK.COM @ IPULLRANK ItWas Still About Hacks, Tricks and Testing Things Remember page rank sculpting?
  • 10.
    IPULLRANK.COM @ IPULLRANK ThenGoogle Got Better That was a bad day for a lot of people.
  • 11.
    IPULLRANK.COM @ IPULLRANK AndBetter Panda ruined a lot more people’s days.
  • 12.
    IPULLRANK.COM @ IPULLRANK AndBetter With Penguin a lot of people figured it was time to finally go white hat.
  • 13.
    IPULLRANK.COM @ IPULLRANK Atthe Same Time More SEOs Came from Different Disciplines
  • 14.
    IPULLRANK.COM @ IPULLRANK AndIt All Became About Content Now we are the people that make all of the things…right?
  • 15.
    And People StartedSaying You Don’t Need to Be Technical
  • 16.
    That’s right. Asan industry, we finally got on the ‘just make good content’ train.
  • 17.
    IPULLRANK.COM @ IPULLRANK Yet,the Web is More Technical than Ever Before
  • 18.
    We are beingdragged into a technical SEO renaissance.
  • 19.
    IPULLRANK.COM @ IPULLRANK Luckyfor You This Is The Point Where I have My Own Agency Shameless plug.
  • 20.
    Changes in Web Technologies Whatis pushing this renaissance?
  • 21.
    IPULLRANK.COM @ IPULLRANK JavaScriptis Not Going Away Nearly every site on the web is using JavaScript to perform some type of transformation on the page. It’s obvious that Google needed to solve for this.
  • 22.
    IPULLRANK.COM @ IPULLRANK Growthof AngularJS AngularJS, the single page application, MVW framework continues to grow dramatically in the top million websites.
  • 23.
    IPULLRANK.COM @ IPULLRANK AngularJSis Popular in Most Verticals It’s likely that you’ll run into an AngularJS site soon enough in your optimization duties
  • 24.
    IPULLRANK.COM @ IPULLRANK ReactJSis Growing Too Similarly, Facebook’s MVW framework is growing as well. Although, it has a built in feature for making sure that it renders proper HTML, but it’s still a framework you should know how to optimize for. Check out this post https://builtvisible.com/react-js-seo/
  • 25.
    IPULLRANK.COM @ IPULLRANK Ironically,React (Facebook) is SEO-ready, Angular (Google) is Not Angular 1 did not have anything to make it easier to crawl. React has ReactDOMServer.renderToString to allow React to serve fully rendered HTML from the server.
  • 26.
  • 27.
  • 28.
    IPULLRANK.COM @ IPULLRANK HTTP/2– Perhaps the Most Important Thing All you need to know right now is that it’s fast as hell.
  • 29.
    Adoption is SuperLow For Now Though
  • 30.
    We Need Morefrom Our SEO Tools Many of them are far behind search engines
  • 31.
  • 32.
    So, You’re #1?Cool Story, Bro. Where they at tho?
  • 33.
    IPULLRANK.COM @ IPULLRANK OnWhat Device, OS and Location? Different browser and OS configurations will show you different results. So what truly is a mobile ranking? + + = Ranking #3+ Nexus 5 Android NYCChrome Safari + + = Ranking #1+ iPhone 6 iOS NYC
  • 34.
    Are we measuringfor context and actionability or just vanity?
  • 35.
    Please Give MePosition 0 in My Rankings
  • 36.
    Please Give MeMy Results in Context of Paid #1 is really #8 in this SERP
  • 37.
  • 38.
    IPULLRANK.COM @ IPULLRANK 304Response Codes The Not-Modified response code tells clients that they do not need to download a page again if it has already been downloaded.
  • 39.
    IPULLRANK.COM @ IPULLRANK GooglebotRespects the 304 What is cloaking when Google accepts 304 response codes and does not revisit that content after indexation?
  • 40.
    IPULLRANK.COM @ IPULLRANK Whatis Cloaking in the Adaptive/Responsive Era? Many people show less or more content based on the context of the browser/user, so what is cloaking now?
  • 41.
    Google accepts directivesin HTTP headers.
  • 42.
    IPULLRANK.COM @ IPULLRANK X-Robots-TagHTTP Header Many of the popular crawling tools do not look for this in the response headers.
  • 43.
    IPULLRANK.COM @ IPULLRANK HreflangHTTP Header I have not seen a tool that looks for this HTTP header. However, this implementation is preferred over the many lines of hreflang tags on every page.
  • 44.
    IPULLRANK.COM @ IPULLRANK Rel-CanonicalHTTP Header Many tools do not look for the rel-canonical HTTP header.
  • 45.
    All of theseHTTP headers are better than clogging up the <head> of the code.
  • 46.
    IPULLRANK.COM @ IPULLRANK JavaScriptRedirects for Mobile Google allows client side redirects for automation redirection of mobile to desktop and vice versa. Many crawling tools do not account for this.
  • 47.
    Many SEO toolsdo not account for these things
  • 48.
    IPULLRANK.COM @ IPULLRANK ChromeDevTools Does Natively in Chrome’s Developer Tools you can see all of the HTTP Request and Response Headers in the Network tab section.
  • 49.
    IPULLRANK.COM @ IPULLRANK GeolocationEmulation is Built-in to Chrome If you’re running into issues with finding local rankings now that Google has gotten rid of nearEquals you can just change your location on the browser level.
  • 50.
    IPULLRANK.COM @ IPULLRANK RemoteDebugging You can also see this for a specific mobile devices with the remote debugging features of Chrome.
  • 51.
    Crawlability What can becrawled at this point?
  • 52.
    IPULLRANK.COM @ IPULLRANK Googleis Crawling Headless Make no mistake that Google has not been crawling with just text driven crawlers for a long time.
  • 53.
    IPULLRANK.COM @ IPULLRANK AdamAudette Said It So You KNOW It’s True Adam ran a few tests a little under a year ago further proving out these capabilities
  • 54.
    IPULLRANK.COM @ IPULLRANK Alsoan Ex-Googler Confirmed It A former Google developer said the headless crawling was his primary project from 2006 – 2010.
  • 55.
  • 56.
    IPULLRANK.COM @ IPULLRANK JsCrawlability.com EricWu has been doing tests to get a better determination of what it is that Google can actually see. http://www.jscrawlability.com
  • 57.
    But Mike, whatdoes it matter?
  • 58.
    IPULLRANK.COM @ IPULLRANK WellI Captured Video of Headless Googlebot It’s a question of what does Googlebot do on your site. Using LuckyOrange I captured Googlebot sessions from Search Console’s Fetch and Render and then I submitted it to the index. They load the page and leave. The mouse never moves, the headless browser never came back.
  • 59.
    IPULLRANK.COM @ IPULLRANK Geta Free Trial of LuckyOrange and Try it Yourself This code will only place LuckyOrange on the page if a JS-enabled Googlebot comes to your site. My test did not show what Googlebot from the wild does when it’s crawling.
  • 60.
    IPULLRANK.COM @ IPULLRANK LogFiles Went out of Style? No, log file analysis has not gone out of style. In fact, it’s more valuable than ever before. LOOK AT YOUR LOG FILES!
  • 61.
    IPULLRANK.COM @ IPULLRANK LogFile Analysis We parse the logs and query them in MySQL, but you can use any number of tools for this.
  • 62.
    IPULLRANK.COM @ IPULLRANK ScreamingFrog Log File Analyzer The Screaming Frog team rolled out an awesome new tool recently for log file analysis.
  • 63.
    IPULLRANK.COM @ IPULLRANK SearchConsole’s Crawl Stats are Mediocre I personally find what Google gives us to be pretty much useless. Don’t less this take the place of going through your logs.
  • 64.
    IPULLRANK.COM @ IPULLRANK LogFiles Help You Spot What Really Happens I had a client come last year that was unsure whether it was Penguin or changes in their offline media buying habits had led to the downturn in traffic. Layering the Googlebot logs made it clear. 0 50000000 100000000 150000000 200000000 250000000 0 500000 1000000 1500000 2000000 2500000 Unknown organic organic home organic dyor organic er organic home,dyor,er organic cushion organic net of home organic ritani organic diamonds direct home paid brand sessions tv spend web sessions (as reported by adaptv) Top 800 Monthly SV impressions Googlebot Visits Penguin Update
  • 65.
    IPULLRANK.COM @ IPULLRANK SocialShares Influence Crawl Patterns We find that there is a higher correlation with crawling and social shares than crawling and links. Commonly held SEO knowledge would make you believe this is entirely dictated by links. 0 1000000 2000000 3000000 4000000 5000000 6000000 0 100000 200000 300000 400000 500000 600000 700000 Googlebot Visits Links Social Shares FB Twitter G+
  • 66.
    IPULLRANK.COM @ IPULLRANK Prerenderingis the Best Practice Using a solution like prerender.io is the best practice.
  • 67.
    IPULLRANK.COM @ IPULLRANK PrerenderCan Cause Problems However, we’ve seen Prerender setups misidentify Googlebot as a human users and serve the wrong the AngularJS versions. 0 20000 40000 60000 80000 100000 120000 Googlebot Perceived as Human
  • 68.
    IPULLRANK.COM @ IPULLRANK PrerenderSetup Serving Non-200 Prepping the prerender cache can cause outages and lead to pages falling in and out of the index. 0 2000 4000 6000 8000 10000 12000 14000 16000 206 301 302 304 403 404 405 410 500 503 504 206 301 302 304 403 404 410 503 504 206 301 302 304 404 405 410 500 503 504 206 301 302 304 401 404 405 410 500 503 504 206 301 302 304 403 404 405 410 502 503 504 1 2 3 4 5 - hit miss pass
  • 69.
    IPULLRANK.COM @ IPULLRANK AlsoPrerendering is Not a Requirement We got rid of prerender on 2 sections of the site and saw the traffic from Organic Search increase YoY. Google can index it just fine.
  • 70.
    IPULLRANK.COM @ IPULLRANK AJAXCrawling Deprecated Google has gotten rid of the AJAX crawling scheme because they don’t need it anymore. They have perfected their ability to crawl headless at reasonable scale. They say don’t block the CSS or JS because it’s a browser.
  • 71.
    They Say Don’tPrerender Just for Google
  • 72.
    IPULLRANK.COM @ IPULLRANK PrerenderDoes Speed Up Crawling There is certainly value in prerendering for speed, but then that makes me wonder, why not just not use Angular?
  • 73.
    IPULLRANK.COM @ IPULLRANK ABetter Idea Is a Library that Doesn’t Need Prerender Let’s stop going after the shiny object and go with the things that are built to work, shall we? Check out MeteorJS – http://www.meteor.com
  • 74.
    IPULLRANK.COM @ IPULLRANK Orgo with Angular2 Universal Brad Green is the Google engineering product manager for AngularJS. He says Angular2 is better in every way.
  • 75.
    IPULLRANK.COM @ IPULLRANK Don’tForget Google Wants Progressive Enhancement Thinking with the IoT in mind, progressive enhancement still makes sense. However, frameworks like AngularJS are completely contradictory in that they don’t offer graceful degradation.
  • 76.
    Scraping The backbone ofa lot of our analysis as SEOs
  • 77.
    IPULLRANK.COM @ IPULLRANK MostTools use cURL or Similar There are many similar libraries, but many SEO tools are built on library called cURL for managing HTTP requests. This is a text based crawler.
  • 78.
    This is afundamental flaw of many SEO tools because they are not constructing the DOM and its CSS/JS transformations. Search Engines are.
  • 79.
    IPULLRANK.COM @ IPULLRANK PhantomJS– For Scraping the Modern Web There are many headless browsers out there such as Selenium, but PhantomJS is the go to. http://www.phantomjs.org
  • 80.
    IPULLRANK.COM @ IPULLRANK HorsemanJS– The Easy PhantomJS I prefer HorsemanJS which is a NodeJS module that is incredibly simple. http://www.horsemanjs.org
  • 81.
    IPULLRANK.COM @ IPULLRANK In-BrowserScraping I wrote a post on how you can scrape using your browser’s Console.
  • 82.
    IPULLRANK.COM @ IPULLRANK Scrapethe Unscrapable Nothing is in unscrapable when you’re using a browser.
  • 83.
    IPULLRANK.COM @ IPULLRANK Multi-PageIn-browser Scraping If you want to scrape multiple pages check out ArtooJS https://medialab.github.io/artoo/
  • 84.
    IPULLRANK.COM @ IPULLRANK WebScraper.io WebScraperis another high-powered in-browser scraping tool. No code required. http://www.webscraper.io
  • 85.
    IPULLRANK.COM @ IPULLRANK OrYou Can Make Screaming Frog Headless You can make Screaming Frog headless by placing a proxy with a headless browser in front of it. From my initial findings, there is not much different aside from the order it identifies URLs and its ability to scrape content from pages.
  • 86.
    IPULLRANK.COM @ IPULLRANK Here’sthe Code Here’s the node code for how I did it. HorsemanJS is not the best tool for the proxy, but it’s great for a proof of concept. Screaming Frog pings for robots.txt a lot. Make sure you handle it with a cURL request rather than a headless one. For speed, don’t load images Make sure you’re setting the right headers before your return the HTML. HorsemanJS does not return headers.
  • 87.
    IPULLRANK.COM @ IPULLRANK PHPWrapper for PhantomJS For those of you that prefer PHP, the PHP PhantomJS wrapper is pretty decent as well. http://jonnnnyw.github.io/php-phantomjs/ For speed, don’t load images
  • 88.
    Content & Linking Youknew I wasn’t going to get up here and not talk about these things, right?
  • 89.
    IPULLRANK.COM @ IPULLRANK GoogleLooks at Entities First According to Paul Haahr, Google looks at entities first and it appears that we as an industry have talked about this in theory, but not truly worked it into the optimization workflow.
  • 90.
    IPULLRANK.COM @ IPULLRANK AlchemyAPI Iencourage you to work AlchemyAPI into your keyword research and content optimization process.
  • 91.
    IPULLRANK.COM @ IPULLRANK TermRelevance There’s also been a lot of talk about co-relevance, topic modeling and TF*IDF. This is a great opportunity for technical elements to influence content creation.
  • 92.
    IPULLRANK.COM @ IPULLRANK InFact Just Do Everything Cyrus Says https://moz.com/blog/7-advanced-seo-concepts
  • 93.
    IPULLRANK.COM @ IPULLRANK Moz’sNew Tool Will Help Moz has made the related keywords concept more accessible by adding it to Moz Pro. Searchmetrics also has a similar solution.
  • 94.
    IPULLRANK.COM @ IPULLRANK Onpage.Org’sTF-IDF Tool is Also Great http://onpage.org
  • 95.
    IPULLRANK.COM @ IPULLRANK JohnMueller Says 302s Pass PageRank Don’t let Google mislead you about 302s vs. 301s.
  • 96.
    IPULLRANK.COM @ IPULLRANK TheseRankings Say He’s Wrong We had a client with millions for 302s and all we did was change them to 301s June August September HyperTraffic (1-3) 1272 1,283 1,473 Traffic (4-10) 979 983 837 Striking Distance (11-20) 167 161 110 Emerging (21-40) 106 103 98 Developmental (41-100) 156 90 87 Unranked 0 60 75 0 200 400 600 800 1000 1200 1400 1600 301 redirects
  • 97.
    IPULLRANK.COM @ IPULLRANK ThisTraffic Improvement Says He’s Wrong Traffic went up pretty dramatically despite seasonality. August 27th 301 redirects 11,039,188 10,455,517 11,348,902 12,049,481 11,250,148 12,902,847 11,040,192 13,158,296 11,287,790 12,203,998 12,508,164 13,158,296 14,041,313 15,609,390 0 2,000,000 4,000,000 6,000,000 8,000,000 10,000,000 12,000,000 14,000,000 16,000,000 18,000,000 April May Jun Jul Aug Sep Oct Organic Visits 2014 2015
  • 98.
    But. We needto stop saying ‘just do 301 redirects.’
  • 99.
    IPULLRANK.COM @ IPULLRANK InsteadDo Optimal 301 Redirects Pattern matching on the .htaccess level is always faster than a list of redirects and always better than doing it on the code/page level. Developers will respect that you understand what you’re talking about. ReWriteRule url_pattern file_reference [R=301, L] redirect 301 /relative/path/to/file.php http://www.yoursite.com/path/to/new/file.php redirect 301 /relative/path/to/file.php http://www.yoursite.com/path/to/new/file.php redirect 301 /relative/path/to/file.php http://www.yoursite.com/path/to/new/file.php >
  • 100.
    IPULLRANK.COM @ IPULLRANK InternalLinking Structures Internal Linking Structures are still an incredibly powerful asset. I’d like to see more tools like what Portent has built to visualize them and understand where there is opportunity. https://www.portent.com/blog/seo/seo-force-directed-diagrams.htm
  • 101.
    IPULLRANK.COM @ IPULLRANK SearchmetricsDoes a Great Job of This I wish all the link indices had a stronger focus on internal linking structure and visualizing where there are opportunities to flow more link equity throughout the site. Searchmetrics’ Site Structure tool does this well.
  • 102.
    IPULLRANK.COM @ IPULLRANK Paul’sMethod is Good for Rolling Your Own http://searchengineland.com/improve-internal-linking-calculate-internal-pagerank-r-246883
  • 103.
    If Possible, AlwaysUpdate your internal links on the database level WordPress Example UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');
  • 104.
    Google is becomingthe presentation layer of the web. Help them do it.
  • 105.
    IPULLRANK.COM @ IPULLRANK Schema.org/ JSON-LD Schema.org is a lot more reasonable to implement now that they are allowing JSON-LD. Being in knowledge boxes and such yields a lot more traffic than it takes away.
  • 106.
  • 107.
    IPULLRANK.COM @ IPULLRANK GoogleExpects Ludicrously Speedy Google has an expectation that the above the fold content on the page will load within 1 second. You basically get 400 ms to make that happen.
  • 108.
    IPULLRANK.COM @ IPULLRANK TheCritical Rendering Path
  • 109.
    IPULLRANK.COM @ IPULLRANK DevToolsIs Your Friend In the Timeline section, DevTools gives you a point by point break down of each operation and how it impacts the site’s load time. This is how you can determine what exactly is slowing down your pages.
  • 110.
    IPULLRANK.COM @ IPULLRANK HowYour Code Is Laid Out Matters A LOT
  • 111.
    IPULLRANK.COM @ IPULLRANK ThisIs what PageSpeed Insights Helps With
  • 112.
    IPULLRANK.COM @ IPULLRANK ExternalResources Also Slow Down the Page Chartbeat is typically a huge culprit and using rel-dns-prefetch can speed this up considerably.
  • 113.
    In other words,AMP exists because most developers are doing it wrong.
  • 114.
    IPULLRANK.COM @ IPULLRANK AMPis a Spec to Enforce the Critical Rendering Path Sound familiar?
  • 115.
    IPULLRANK.COM @ IPULLRANK ResponsiveSites are SLOOOOOOOW One of the key things you can do, aside from optimizing for the critical rendering path, is conditional loading.
  • 116.
    IPULLRANK.COM @ IPULLRANK PreBrowsingDirectives Browsers have preloading directives which allow the page to download elements in the background for later viewing or within the same session.
  • 117.
    IPULLRANK.COM @ IPULLRANK Rel-Preconnect Rel-preconnectwill resolve the DNS, start the TCP handshake and negotiate the TLS tunnel beforehand, effectively shaving hundreds of milliseconds to several seconds in page load.
  • 118.
    IPULLRANK.COM @ IPULLRANK Whento Use Rel-Preconnect When you see a long time for connections to happen or a lot of idle time, it’s a good idea to use rel- preconnect.
  • 119.
  • 120.
    IPULLRANK.COM @ IPULLRANK HowRel-Prerender Works It loads the page in an invisible tab to make the page appear instantly.
  • 121.
    IPULLRANK.COM @ IPULLRANK Notto Be Confused with Prerender.io
  • 122.
    IPULLRANK.COM @ IPULLRANK GoogleUses It in the SERPs This could potentially be a way to definitively identify navigational queries. h/t @yoast
  • 123.
    IPULLRANK.COM @ IPULLRANK ISent Thousands of Headless Visits
  • 124.
    IPULLRANK.COM @ IPULLRANK Rel-Prerender’dPages Generally Perform Better
  • 125.
    IPULLRANK.COM @ IPULLRANK Useit With the GA API Get the pageviews of the ga:pagePath based on the ga:previousPagePath set to the current page that you’re on. You’ll get a list of the pages your users are most likely to visit next. Set one of these as the rel-prerender.
  • 126.
    IPULLRANK.COM @ IPULLRANK Code. Injectrel-prerender into the page programmatically. You could also session the URLs the user is going to to ensure you are always prerendering a new page.
  • 127.
    IPULLRANK.COM @ IPULLRANK ItImproved Our Site Speed 68.35% One line of code did this magic.
  • 128.
    Don’t use iton mobile. Analytics packages aside from Google Analytics may show fake sessions.
  • 129.
    IPULLRANK.COM @ IPULLRANK DeferJS Load with Page Visibility API …
  • 130.
    IPULLRANK.COM @ IPULLRANK Rel-Preloadfor Same Page Preloading I haven’t played with it yet, but Ian says they’re using it on the Portent site. https://www.smashingmagazine.com/2016/02/preload-what-is-it-good-for/
  • 131.
    How to GoForward Things you should know and do to be prepared for the technical renaissance
  • 132.
    IPULLRANK.COM @ IPULLRANK Understandthe Document Object Model https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction
  • 133.
    IPULLRANK.COM @ IPULLRANK CriticalRendering Path https://developers.google.com/web/fundamentals/performance/critical-rendering-path/analyzing-crp?hl=en
  • 134.
    IPULLRANK.COM @ IPULLRANK PageSpeed https://www.portent.com/blog/design-dev/ultimate-site-speed-guide-what-impacts-site-speed.htm
  • 135.
    IPULLRANK.COM @ IPULLRANK LogFile Analysis https://builtvisible.com/log-file-analysis/
  • 136.
    IPULLRANK.COM @ IPULLRANK UnderstandSEO for JavaScript Frameworks https://builtvisible.com/javascript-framework-seo/
  • 137.
    IPULLRANK.COM @ IPULLRANK LearnDevTools http://ipullrank.com/6-things-you-should-know-about-in-chrome-devtools/
  • 138.
    IPULLRANK.COM @ IPULLRANK AcceleratedMobile & Instant Pages Even if you’re not a publisher, I encourage you to watch these projects as I expect that Google and Facebook will grow the specs dramatically once they’re adopted.
  • 139.
    IPULLRANK.COM @ IPULLRANK ReadUp On HTTP/2 https://moz.com/blog/http2-a-fast-secure-bedrock-for-the-future-of-seo
  • 140.
    IPULLRANK.COM @ IPULLRANK GetBack to Testing All The Things
  • 141.
    Let’s stop chasingthe content train and get back to making experiences that perform.
  • 142.
    IPULLRANK.COM @ IPULLRANK IJust Feel Like Michelangelo Has a Place In This Deck
  • 143.
  • 144.
    THANK YOU Michael King ManagingDirector, iPullRank mike@ipullrank.com http://ipullrank.com @iPullRank