Jekyll SEO van een rake-taak
Gepubliceerd op 12 februari 2016 • 3 min leestijd • 584 woordenIk hou echt van de dingen die de Yoast SEO-plug-in voor WordPress doet voor zoekmachineoptimalisatie (SEO). Hiermee kun je je berichten controleren op verschillende dingen in je bericht waarmee een zoekmachine rekening houdt.
Ik miste deze functionaliteit in Jekyll, totdat ik de Jekyll SEO-tool van Brett Hardin tegenkwam. Het script zelf is voor het laatst bijgewerkt in 2013, maar doet nog steeds zijn ding.
Het script zelf is geen juweeltje dat je eenvoudig kunt installeren. Omdat mijn workflow is opgebouwd rond taken in een Rakefile, heb ik het script ernaar geconverteerd. In de onderstaande kern vind je de volledige taak om een test mee te doen:
rake seo['Jekyll SEO','_site/jekyll-seo/index.html']De Rakefile geeft, net als het originele script, de volgende resultaten:
Is uw zoekwoord/maken uw zoekwoorden deel uit van de
- Artikelkop
- Paginatitel
- Inhoud
- Metabeschrijving
Net als Brett wil ik de taak verbeteren, zodat deze het volgende doet:
- Identificeer SEO-termen in de URL
- U heeft uw zoekwoord/sleutelzin in geen enkele ondertitel (zoals een H2) in uw kopie gebruikt.
- Er verschijnen geen afbeeldingen op deze pagina. Overweeg om er indien nodig enkele toe te voegen.
- De metabeschrijving is korter dan 120 tekens, maar er zijn maximaal 156 tekens beschikbaar. De beschikbare ruimte is korter dan de gebruikelijke 155 tekens, omdat Google ook de publicatiedatum in het fragment zal opnemen.
- De paginatitel bevat een trefwoord/zin, maar verschijnt niet aan het begin; probeer het naar het begin te verplaatsen.
- Het trefwoord/de woordgroep verschijnt niet in de URL voor deze pagina. Als u besluit de URL te hernoemen, controleer dan of de oude URL 301 doorverwijst naar de nieuwe!
- Deze pagina heeft 14 uitgaande link(s).
- De zoekwoorddichtheid is 1,74%, wat geweldig is, het zoekwoord werd 15 keer gevonden.
- De metabeschrijving bevat het primaire trefwoord/zin.
- De hoofdtekst bevat 890 woorden, dit is meer dan het aanbevolen minimum van 300 woorden.
- De paginatitel is meer dan 40 tekens en minder dan de aanbevolen limiet van 70 tekens.
- Het trefwoord verschijnt in de eerste alinea van de kopie.
Klaar
- Controleer de leesbaarheid van een bericht voordat u het plaatst. Het exemplaar scoort 68,9 in de Flesch Reading Ease-test, wat als goed wordt beschouwd om te lezen.
Gebruik
Als u elk onderdeel handmatig hebt geïnstalleerd, kunt u het gebruiken
rake seo['<keywords>','_site/<page>']De taken genereren uw site voordat deze deze controleert, omdat de taak wordt uitgevoerd op basis van de gegenereerde HTML in plaats van op het markdown-bestand.
Voor het bericht dat je nu aan het lezen bent, was het commando:
rake seo['Jekyll SEO','_site/jekyll-seo/index.html']Als u bundel gebruikt, laat u de opdracht voorafgaan door ‘bundle exec’.
Uitvoer
De uitvoer die de rake-taak geeft, ziet er als volgt uit bij het testen op het trefwoord SEO:
Analyzing page '_site/jekyll-seo/index.html' for keywords 'seo'
Article Heading: true (3)
Page title: true (1)
Content: true (20)
Meta description: true (1)De taak
# SEO test
desc 'Check SEO values for post'
task :seo, [:keywords, :post] do |t, args|
require 'nokogiri'
heading = [];
title = [];
url = [];
content = [];
meta_description = [];
temp = [];
puts "Analyzing page '#{args.post}' for keywords '#{args.keywords}'"
sh "bundle exec jekyll build _config.yml"
post = Nokogiri::HTML(open(args.post))
post.css('h1').each do |this|
heading = this.to_s.scan(/#{args.keywords}/i)
end
post.css('title').each do |this|
title = this.to_s.scan(/#{args.keywords}/i)
end
post.css('body').each do |this|
content = this.to_s.scan(/#{args.keywords}/i)
end
post.css('meta').each do |this|
if this.attribute("name/).to_s == "description"
meta_description = this.attribute("content/).to_s.scan(/#{args.keywords}/i)
end
end
puts ""
puts "Article Heading: #{not heading.empty?} (#{heading.count})"
puts "Page title: #{not title.empty?} (#{title.count})"
# puts "Page URL: Yes (1)"
puts "Content: #{not content.empty?} (#{content.count})"
puts "Meta description: #{not meta_description.empty?} (#{meta_description.count})"
end