WP Meetup Enschede
Javascript & SEO
Ik deel de 

slides achteraf.
Ik help onder andere deze
bedrijven met hun digitale
marketing, door hun websites te
optimaliseren voor gebruikers en
een klein beetje voor
zoekmachines. 

(dankjewel AMP…)
Even voorstellen
1998…
Toen “het internet” nog simpel was.
• Bereikbare URL’s (URL’s in de HTML
• Duplicate content (#)
• Schone, unieke URL’s
Crawlen Indexeren Presenteren
Wat heeft de query nodig?

Welke featured snippets, welke
data is hiervoor beschikbaar?
1 2 3
Crawlen = Links volgen.
Canonical URL’s
Voorbeeld van booking.com
- http://www.booking.com/
destinationfinder.html?
label=gen173nr-15Eg...
2e8;dcid=4;dsf_header=1;dsf_sourc
e=1;dsf_from_header_cta=1
- http://www.booking.com/
destinationfinder.html
Vertel tegen Google welke pagina zou
moeten ranken als ze dezelfde
content bevatten.
https://support.google.com/webmasters/answer/139066?hl=nl
• Op de eerste pagina, http://www.ah.nl/producten/?page=1, zet je in de <head>:
- <link rel="next" href="http://www.ah.nl/producten/?page=2" />
• Op de tweede, http://www.ah.nl/producten/?page=2:
- <link rel="prev" href="http://www.ah.nl/producten/?page=1" />
- <link rel="next" href="http://www.ah.nl/producten/?page=3" />
• En op de derde pagina, http://www.ah.nl/producten/?page=3:
- <link rel="prev" href=“http://www.ah.nl/producten/?page=2" />
Voorbeeld van ah.nl: Paginering, het gebruik van rel=next/prev
https://support.google.com/webmasters/answer/1663744?hl=nl
Als je niet hele gekke custom themes
maakt rankt je WordPress site al heel
snel, makkelijk en goed,
mits je content blijft maken
Mei 2015
130 Biljoen documenten*
*Juli 2016
SEO in 2018
- 4 ads
- Rich cards
- Google Local
- Organic results
SEO in 2018
- 4 ads
- Rich cards
- Google Local
- Organic results
Knowledge graph, AMP, video, events, featured snippets. Een grote kermis…
Knowledge graph, AMP, video, events, featured snippets. Een grote kermis…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
Maar er is nog meer…
JavaScript Object Notation Linked Data
https://json-ld.org/
JSON of JavaScript Object Notation, is een
gestandaardiseerd gegevensformaat. JSON maakt
gebruik van voor de mens leesbare tekst in de vorm van
data-objecten die bestaan uit een of meer attributen met
bijbehorende waarden. Het wordt hoofdzakelijk gebruikt
voor uitwisseling van data tussen server en webapplicatie,
als een alternatief voor XML.
Aldus Wikipedia.
• Google heeft echt enorm uitgebreide help pagina’s hiervoor
• Speciaal voor WordPress: 

Gutenberg is heel erg geschikt om JSON-LD aan een block te koppelen. Yoast zijn
plugin heeft al enkele opties en ik heb uit betrouwbare bron dat dit er wel wat meer
worden (en je hoeft niet eens premium te hebben! https://yoast.com/yoast-seo-8-2/ )
• Als je echt nog een stapje verder wilt in hoe je met featured 

snippets aan de slag kunt: deze presentation van Izzi is een 

prima beginplek:

https://www.slideshare.net/Is...g-epic-featured-snippets
Ik kan er uren over doorgaan, maar…
• Google gebruikt het liefst JSON-LD structured data om featured snippets te maken. Hier zijn een
paar voorbeelden van hele handige soorten JSON-LD:
• https://developers.google.com/search/docs/data-types/corporate-contacts
• https://developers.google.com/search/docs/data-types/logo
• https://developers.google.com/search/docs/data-types/social-profile-links
• https://developers.google.com/search/docs/guides/mark-up-listings
• https://developers.google.com/search/docs/data-types/products
- Reviews zijn misschien wel de mooiste van allemaal (let op! deze doen het niet op je homepage)
- https://developers.google.com/search/docs/data-types/reviews
Featured Snippets via JSON-LD
https://developers.google.com/structured-data/testing-tool/
Maar goed rendering: Mei 2015
Maar goed rendering: Mei 2015
Crawlen blijft een kwestie van links volgen:
• Google doet geen acties:
- Geen kliks op ‘laad meer’
- Geen scrollende paginering
- Geen lazy loading
Dus:
Meer en meer websites met Javascript
-
Hoe doet Google dat dan?
Crawl
https://www.youtube.com/watch?v=PFwUbgvpdaQ
-
Hoe doet Google dat dan?
Index
Crawl
https://www.youtube.com/watch?v=PFwUbgvpdaQ
-
Hoe doet Google dat dan?
Index
Directe indexatie.
‘First wave of indexing’
Crawl
https://www.youtube.com/watch?v=PFwUbgvpdaQ
-
Hoe doet Google dat dan?
Index
Directe indexatie.
‘First wave of indexing’
Nieuwe links
worden gecrawled
Crawl
https://www.youtube.com/watch?v=PFwUbgvpdaQ
-
Hoe doet Google dat dan?
Index
Render
Directe indexatie.
‘First wave of indexing’
Nieuwe links
worden gecrawled
Crawl
https://www.youtube.com/watch?v=PFwUbgvpdaQ
-
Hoe doet Google dat dan?
Index
Render
Directe indexatie.
‘First wave of indexing’
Nieuwe links
worden gecrawled
Als er rendertijd
beschikbaar komt
Crawl
https://www.youtube.com/watch?v=PFwUbgvpdaQ
-
Hoe doet Google dat dan?
Index
Render
Directe indexatie.
‘First wave of indexing’
Nieuwe links
worden gecrawled
Als er rendertijd
beschikbaar komt
Tweede indexatie.
‘Second wave of indexing’
Crawl
https://www.youtube.com/watch?v=PFwUbgvpdaQ
WRS with Chrome 41
1024 screens and max 10.000 pix
height
• Metadata die er niet direct is terugvinden 

title/meta descriptions
• Incorrecte HTTP codes aanpassen 

denk aan 404 pagina’s
• Canonical tags gebruiken 

aangepaste canonical gebruiken
• Headless Browsing

Dus Google gebruikt geen cookies, sessies, local storage etc.
• Timeouts van Content

Ongeveer 5 seconden is de time-out, test je pagina’s.
Wat doet Google niet in haar second wave?
En wat als het mis gaat…
Dan krijg je dus dit soort dingen:
- Google is totaal in de war. De canonical in de ‘first wave’ is kapot, de gerenderde
canonical word genegeerd (en is er ook niet altijd).
Hmm, dit gaat nog niet helemaal goed
- Dus per keer dat Google weer iets leuks heeft
geïndexeerd staat er weer iets anders.
-
Hoe dan?
view-source:
rendered content inspect:
-
Hoe dan?
view-source:
rendered content inspect:
First wave
-
Hoe dan?
view-source:
rendered content inspect:
First wave
Second wave
Als we die bronnen dan vergelijken:
Oude beste situatie
Hoe het meestal werkte
• Zelf doen:
- Puppeteer:

https://developers.google.com/web/tools/puppeteer/
- Rendertron

https://github.com/GoogleChrome/rendertron
• 3rd Party:
- Prerender.io

https://www.prerender.io
- Renderly.io

https://renderly.io/
Mogelijke oplossingen:
https://www.youtube.com/watch?v=ydThUDlBDfc
Google’s “Nieuwe richtlijnen”:
Dynamic Rendering
Hoe dynamic rendering dan werkt
Je verdeelt je traffic over je bezoekers en Googlebot (vroeger heette dat Cloaking)
Bijv. via een Reverse Proxy, Cloudflare workers etc.
Het totale plaatje
• Googlebot

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
• Googlebot Mobile

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible;
Googlebot/2.1; +http://www.google.com/bot.html)
• Let op! niet elke user agent met deze specificaties is Google. Wil je het zeker weten
doe dan een reverse look-up: https://support.google.com/webmasters/answer/80553
Splitten op User agents
https://support.google.com/webmasters/answer/1061943?hl=nl
> host 66.249.66.1
Dit is allemaal niet zo makkelijk maar alles hiervoor is aan boord:
Hoe test ik dat dan?
Dus als je de site met bijv. een tool als Screaming Frog crawlt.
Google helpt ook daarbij.
Google helpt ook daarbij.
Het gaat niet alleen om 

de snelheid van de website, 

maar ook om de perceptie hiervan.
https://www.slideshare.net/DistilledSEO/searchlove-boston-2018-emily-grossman-the-marketers-guide-to-performance-optimization
https://www.slideshare.net/jonhenshaw/page-speed?ref=https://www.deepcrawl.com/blog/events/webinar-recap-site-speed-jon-henshaw
Misschien wel het beste verhaal over hoe je
stapsgewijs je WordPress site kunt
optimaliseren:
https://www.slideshare.net/jonoalderson/06-
seconds-is-the-new-slow
Let op!

Test meer pagina’s dan alleen je
homepage, dus ook je categorie-,
dienst- of productpagina.
Mobile friendly test
Mobile friendly test
• Mobile testing Bookmarklet: 

javascript:(function()%7B window.open(%27https://search.google.com/test/mobile-
friendly%3Furl%3D%27%2Blocation.hostname)%7D)()%3B

• Rich Result Test Bookmarklet

javascript:(function()%7B window.open(%27https://search.google.com/test/rich-
results%3Furl%3D%27%2Blocation.hostname)%7D)()%3B
• Pagespeed Bookmarklet:

javascript:void(window.open(%27https://developers.google.com/speed/pagespeed/
insights/?url=%27+window.location.href,%27_blank%27));
Handige bookmarklets.
Bookmarklets
Vragen?
-
E-mail & hangout:
Skype:
Twitter:
Linkedin:
@chapter42
Roy.huiskes
roy@chapter42.com
http://l.chapter42.com/linkedin
Roy Huiskes
06 248 139 80
Bedankt voor jullie aandacht, nog even de takeaways:
✓ Als je Lazy-loading wilt gebruiken, 

kijk dan naar best practices.
✓ Test je gerenderde pagina’s in de 

Rich Result Tool en Mobile Testing Tool
✓ Gebruik altijd een vorm van
prerenderen. 

Google’s voorkeur is dynamic rendering.
✓ Test je pagina’s weer opnieuw.
✓ Gebruik de bookmarklets.

Javascript & SEO - Wp meetup enschede

  • 1.
  • 2.
    Ik deel de
 slides achteraf.
  • 3.
    Ik help onderandere deze bedrijven met hun digitale marketing, door hun websites te optimaliseren voor gebruikers en een klein beetje voor zoekmachines. 
 (dankjewel AMP…) Even voorstellen
  • 5.
  • 6.
    Toen “het internet”nog simpel was. • Bereikbare URL’s (URL’s in de HTML • Duplicate content (#) • Schone, unieke URL’s Crawlen Indexeren Presenteren Wat heeft de query nodig?
 Welke featured snippets, welke data is hiervoor beschikbaar? 1 2 3
  • 7.
  • 8.
    Canonical URL’s Voorbeeld vanbooking.com - http://www.booking.com/ destinationfinder.html? label=gen173nr-15Eg... 2e8;dcid=4;dsf_header=1;dsf_sourc e=1;dsf_from_header_cta=1 - http://www.booking.com/ destinationfinder.html Vertel tegen Google welke pagina zou moeten ranken als ze dezelfde content bevatten. https://support.google.com/webmasters/answer/139066?hl=nl
  • 9.
    • Op deeerste pagina, http://www.ah.nl/producten/?page=1, zet je in de <head>: - <link rel="next" href="http://www.ah.nl/producten/?page=2" /> • Op de tweede, http://www.ah.nl/producten/?page=2: - <link rel="prev" href="http://www.ah.nl/producten/?page=1" /> - <link rel="next" href="http://www.ah.nl/producten/?page=3" /> • En op de derde pagina, http://www.ah.nl/producten/?page=3: - <link rel="prev" href=“http://www.ah.nl/producten/?page=2" /> Voorbeeld van ah.nl: Paginering, het gebruik van rel=next/prev https://support.google.com/webmasters/answer/1663744?hl=nl
  • 10.
    Als je niethele gekke custom themes maakt rankt je WordPress site al heel snel, makkelijk en goed, mits je content blijft maken
  • 11.
  • 12.
  • 13.
    SEO in 2018 -4 ads - Rich cards - Google Local - Organic results
  • 14.
    SEO in 2018 -4 ads - Rich cards - Google Local - Organic results
  • 15.
    Knowledge graph, AMP,video, events, featured snippets. Een grote kermis…
  • 16.
    Knowledge graph, AMP,video, events, featured snippets. Een grote kermis…
  • 17.
    Maar er isnog meer…
  • 18.
    Maar er isnog meer…
  • 19.
    Maar er isnog meer…
  • 20.
    Maar er isnog meer…
  • 21.
    Maar er isnog meer…
  • 22.
    Maar er isnog meer…
  • 23.
    Maar er isnog meer…
  • 24.
    Maar er isnog meer…
  • 25.
    Maar er isnog meer…
  • 26.
    Maar er isnog meer…
  • 27.
    Maar er isnog meer…
  • 28.
    Maar er isnog meer…
  • 29.
    Maar er isnog meer…
  • 30.
    Maar er isnog meer…
  • 31.
    JavaScript Object NotationLinked Data https://json-ld.org/ JSON of JavaScript Object Notation, is een gestandaardiseerd gegevensformaat. JSON maakt gebruik van voor de mens leesbare tekst in de vorm van data-objecten die bestaan uit een of meer attributen met bijbehorende waarden. Het wordt hoofdzakelijk gebruikt voor uitwisseling van data tussen server en webapplicatie, als een alternatief voor XML. Aldus Wikipedia.
  • 32.
    • Google heeftecht enorm uitgebreide help pagina’s hiervoor • Speciaal voor WordPress: 
 Gutenberg is heel erg geschikt om JSON-LD aan een block te koppelen. Yoast zijn plugin heeft al enkele opties en ik heb uit betrouwbare bron dat dit er wel wat meer worden (en je hoeft niet eens premium te hebben! https://yoast.com/yoast-seo-8-2/ ) • Als je echt nog een stapje verder wilt in hoe je met featured 
 snippets aan de slag kunt: deze presentation van Izzi is een 
 prima beginplek:
 https://www.slideshare.net/Is...g-epic-featured-snippets Ik kan er uren over doorgaan, maar…
  • 33.
    • Google gebruikthet liefst JSON-LD structured data om featured snippets te maken. Hier zijn een paar voorbeelden van hele handige soorten JSON-LD: • https://developers.google.com/search/docs/data-types/corporate-contacts • https://developers.google.com/search/docs/data-types/logo • https://developers.google.com/search/docs/data-types/social-profile-links • https://developers.google.com/search/docs/guides/mark-up-listings • https://developers.google.com/search/docs/data-types/products - Reviews zijn misschien wel de mooiste van allemaal (let op! deze doen het niet op je homepage) - https://developers.google.com/search/docs/data-types/reviews Featured Snippets via JSON-LD https://developers.google.com/structured-data/testing-tool/
  • 34.
  • 35.
  • 36.
    Crawlen blijft eenkwestie van links volgen:
  • 37.
    • Google doetgeen acties: - Geen kliks op ‘laad meer’ - Geen scrollende paginering - Geen lazy loading Dus:
  • 38.
    Meer en meerwebsites met Javascript
  • 39.
    - Hoe doet Googledat dan? Crawl https://www.youtube.com/watch?v=PFwUbgvpdaQ
  • 40.
    - Hoe doet Googledat dan? Index Crawl https://www.youtube.com/watch?v=PFwUbgvpdaQ
  • 41.
    - Hoe doet Googledat dan? Index Directe indexatie. ‘First wave of indexing’ Crawl https://www.youtube.com/watch?v=PFwUbgvpdaQ
  • 42.
    - Hoe doet Googledat dan? Index Directe indexatie. ‘First wave of indexing’ Nieuwe links worden gecrawled Crawl https://www.youtube.com/watch?v=PFwUbgvpdaQ
  • 43.
    - Hoe doet Googledat dan? Index Render Directe indexatie. ‘First wave of indexing’ Nieuwe links worden gecrawled Crawl https://www.youtube.com/watch?v=PFwUbgvpdaQ
  • 44.
    - Hoe doet Googledat dan? Index Render Directe indexatie. ‘First wave of indexing’ Nieuwe links worden gecrawled Als er rendertijd beschikbaar komt Crawl https://www.youtube.com/watch?v=PFwUbgvpdaQ
  • 45.
    - Hoe doet Googledat dan? Index Render Directe indexatie. ‘First wave of indexing’ Nieuwe links worden gecrawled Als er rendertijd beschikbaar komt Tweede indexatie. ‘Second wave of indexing’ Crawl https://www.youtube.com/watch?v=PFwUbgvpdaQ
  • 46.
    WRS with Chrome41 1024 screens and max 10.000 pix height
  • 47.
    • Metadata dieer niet direct is terugvinden 
 title/meta descriptions • Incorrecte HTTP codes aanpassen 
 denk aan 404 pagina’s • Canonical tags gebruiken 
 aangepaste canonical gebruiken • Headless Browsing
 Dus Google gebruikt geen cookies, sessies, local storage etc. • Timeouts van Content
 Ongeveer 5 seconden is de time-out, test je pagina’s. Wat doet Google niet in haar second wave?
  • 48.
    En wat alshet mis gaat…
  • 49.
    Dan krijg jedus dit soort dingen: - Google is totaal in de war. De canonical in de ‘first wave’ is kapot, de gerenderde canonical word genegeerd (en is er ook niet altijd).
  • 51.
    Hmm, dit gaatnog niet helemaal goed - Dus per keer dat Google weer iets leuks heeft geïndexeerd staat er weer iets anders.
  • 53.
  • 54.
  • 55.
    - Hoe dan? view-source: rendered contentinspect: First wave Second wave
  • 56.
    Als we diebronnen dan vergelijken:
  • 57.
  • 58.
  • 59.
    • Zelf doen: -Puppeteer:
 https://developers.google.com/web/tools/puppeteer/ - Rendertron
 https://github.com/GoogleChrome/rendertron • 3rd Party: - Prerender.io
 https://www.prerender.io - Renderly.io
 https://renderly.io/ Mogelijke oplossingen: https://www.youtube.com/watch?v=ydThUDlBDfc
  • 60.
  • 61.
  • 62.
    Je verdeelt jetraffic over je bezoekers en Googlebot (vroeger heette dat Cloaking)
  • 63.
    Bijv. via eenReverse Proxy, Cloudflare workers etc.
  • 64.
  • 65.
    • Googlebot
 Mozilla/5.0 (compatible;Googlebot/2.1; +http://www.google.com/bot.html) • Googlebot Mobile
 Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) • Let op! niet elke user agent met deze specificaties is Google. Wil je het zeker weten doe dan een reverse look-up: https://support.google.com/webmasters/answer/80553 Splitten op User agents https://support.google.com/webmasters/answer/1061943?hl=nl > host 66.249.66.1
  • 66.
    Dit is allemaalniet zo makkelijk maar alles hiervoor is aan boord:
  • 67.
    Hoe test ikdat dan?
  • 68.
    Dus als jede site met bijv. een tool als Screaming Frog crawlt.
  • 69.
  • 70.
  • 71.
    Het gaat nietalleen om 
 de snelheid van de website, 
 maar ook om de perceptie hiervan. https://www.slideshare.net/DistilledSEO/searchlove-boston-2018-emily-grossman-the-marketers-guide-to-performance-optimization https://www.slideshare.net/jonhenshaw/page-speed?ref=https://www.deepcrawl.com/blog/events/webinar-recap-site-speed-jon-henshaw
  • 72.
    Misschien wel hetbeste verhaal over hoe je stapsgewijs je WordPress site kunt optimaliseren: https://www.slideshare.net/jonoalderson/06- seconds-is-the-new-slow
  • 73.
    Let op!
 Test meerpagina’s dan alleen je homepage, dus ook je categorie-, dienst- of productpagina.
  • 74.
  • 75.
  • 76.
    • Mobile testingBookmarklet: 
 javascript:(function()%7B window.open(%27https://search.google.com/test/mobile- friendly%3Furl%3D%27%2Blocation.hostname)%7D)()%3B
 • Rich Result Test Bookmarklet
 javascript:(function()%7B window.open(%27https://search.google.com/test/rich- results%3Furl%3D%27%2Blocation.hostname)%7D)()%3B • Pagespeed Bookmarklet:
 javascript:void(window.open(%27https://developers.google.com/speed/pagespeed/ insights/?url=%27+window.location.href,%27_blank%27)); Handige bookmarklets.
  • 77.
  • 78.
  • 79.
    - E-mail & hangout: Skype: Twitter: Linkedin: @chapter42 Roy.huiskes roy@chapter42.com http://l.chapter42.com/linkedin RoyHuiskes 06 248 139 80 Bedankt voor jullie aandacht, nog even de takeaways: ✓ Als je Lazy-loading wilt gebruiken, 
 kijk dan naar best practices. ✓ Test je gerenderde pagina’s in de 
 Rich Result Tool en Mobile Testing Tool ✓ Gebruik altijd een vorm van prerenderen. 
 Google’s voorkeur is dynamic rendering. ✓ Test je pagina’s weer opnieuw. ✓ Gebruik de bookmarklets.