Interne Verlinkung analysieren

Auf der SEOkomm 2021 durfte Johan einen Vortrag zur Analyse interner Verlinkung halten.

Der Vortrag zu interner Verlinkung

Der Vortrag interne Verlinkung ist auf Slideshare verfügbar.

Das Wingmen-Script zur Analyse der internen Verlinkung

Zu dem Vortrag gibt es als Give-Away ein kleines Google-Colab Script, dass Dir hilft Deine interne Verlinkung zu verbessern.

Mithilfe des Scriptes kannst Du hilfreiche Auswertungen automatisieren.

  • Welcher Folder erhält wieviel PageRank?
  • Welche Linkmodule enthalten besonders viele Links?
  • Welche Links sind ausschließlich über JavaScript erreichbar?
  • Welche Linktexte verwendest Du für verschiedene Seiten?
  • und viele, viele mehr

Die Auswertungen sind welche, die wir häufiger verwenden. Dir fallen bestimmt noch mehr Auswertungen ein. Immer her damit! Wir freuen uns darauf die in das Script einzubauen. Schick' einfach eine Nachricht an Johan (Twitter, Mail)

Wie benutze ich das Script?

Du fütterst das Script mit drei einfachen Exporten aus einem ScreamingFrog Crawl. Diese Exporte lädtst Du in Google Drive hoch. Danach musst Du nur noch ein paar mal Play drücken (und eventuell Linkmodule klassifizieren) und dann werden die Exporte und Auswertungen in ein Google Spreadsheet geschrieben.

Screaming Frog Exporte

Du exportierst „internal_all.csv“, „all_outlinks.csv“ und „redirects.csv“ aus dem ScreamingFrog. Wenn die Dateien sehr groß sind, dann kannst Du die gern .gz-komprimiert hochladen. Die Exporte findest Du:

  • internal_all.csv: Im Tab „internal“ das Dropdown „all“ und dann auf Export klicken
  • all_outlinks.csv: „Bulk Export“ -> „Links“ -> „All Outlinks“
  • redirects.csv: „Reports“ -> „Redirects“ -> „All Redirects“

Google Colab

Google Colab lässt Dich Python-Scripte benutzen wie ein normales Google Doc. Du musst nichts selbst installieren. Du kannst ein Script schrittweise ausführen. Dieses Script gliedert sich in mehrere Bereiche:

  1. Initialisierung: Hier lädst Du die ganzen Funktionen, die Dir nachher die Arbeit abnehmen. Du wirst außerdem aufgefordert eine Verbindung zum Google Drive herzustellen. Keine Angst: Die Verbindung besteht nur zwischen Dir und dem Colab-Server. Du teilst keine Daten mit uns.
  2. Konfiguration: Anschließend musst Du ein paar Formularfelder ausfüllen. Vor allem:
    • Ein Spreadsheet angeben in das wir die Ergebnisse exportieren können
    • Den Ordner im Google Drive angeben, in den Du die Dateien gespeichert hast
    • Außerdem kannst Du hier angeben, ob es Custom Extractions gibt, die wir beachten sollen und welche Spalten zur Berechnung der Content-Verwandtschaft herangezogen werden sollen
    • Datums-Spalten bitte noch mal extra in "date_cols" angeben, damit wir die das Datum korrekt verarbeiten können (und beispielsweise PR nach Jahren gruppieren)
  3. Basics: Im nächsten Block werden die Deine Crawls geladen und aufbereitet. Dabei werden schon erste Auswertungen erstellt. Die einzelnen Auswertungen werden verlinkt, sind aber alles Datenblätter im gleichen Spreadsheet.
  4. Links gruppieren: Danach wollen wir Links gruppieren. Dazu werden Dir die Linkpfade aus dem Screaming Frog angezeigt, die besonders häufig vorkommen. Du hast hier die Möglichkeit Links nach Quell-URL, Ziel-URL, Linkpfad oder Linktext zu gruppieren. Du brauchst nicht alles zu gruppieren, aber Du solltest schon die wichtigsten Links gruppiert haben.
  5. PageRank berechnen: Anschließend wird der PageRank berechnet.

ScreamingFrog Crawl

Basis für die Auswertungen ist ein ScreamingFrog-Crawl. Diesen Crawl kannst Du beliebig konfigurieren. Ein paar Dinge sind aber sinnvoll zu beachten:

  • Das Script erwartet englisch-sprachige Spalten-Namen. Solltest Du Deinen ScreamingFrog auf deutsch eingestellt haben, müsstest Du ihn vor den Exporten einmal umstellen ("Konfiguration" -> "System" -> "English (UK)")
  • Eine Auswertung von Links mit/ohne JavaScript ist nur möglich, wenn Du mit aktiviertem JavaScript crawlst.
  • Du kannst Dir die Arbeit erleichtern, wenn Du beispielsweise eine Custom Extraction für das Seitentemplate bauen kannst
  • Wir nehmen ein Clustering der Links im Script vor. Dann brauchst Du nicht die Link Positionen bei der Crawl-Konfiguration einzutragen, sondern kannst hinterher auswerten, wenn Du weißt, welche Links eigentlich häufiger sind. Wenn Du bereits Links Positionen für Deinen Crawl konfiguriert hast, dann kannst Du die einfach im Script wiederverwenden.
  • Häufig sehen wir ScreamingFrog-Crawls, auf denen Auswertungen gefahren werden, obwohl noch viele Seiten mit „No Response“ oder „Status 5xx“ enthalten sind. Es empfiehlt sich alle URLs mit 5xx oder Timeout noch mal recrawlen zu lassen.

Was macht man jetzt mit den Auswertungen

Die Auswertungen helfen Dir Verbesserungen in Deiner internen Verlinkung aufzudecken. Dazu kannst Du einfach Blatt für Blatt durchgehen und schauen, was Dir an den Daten auffällt und entsprechend Tasks daraus notieren. Die Blätter helfen Dir vor allem mit Übersichten, die Du sonst nicht so einfach aus dem ScreamingFrog erhältst.

Bereits bekannte Schwächen des Scriptes

Wir haben in diesem Script verschiedene Auswertungen, die wir in den letzten zwei Jahren gemacht haben zusammengewürfelt. Meistens stochert man ja nicht irgendwie in einem Crawl herum, sondern hat ja schon Hypothesen. Außerdem sind wir Consultants, keine Programmierer. Es geht also nicht um die Schönheit und Eleganz des Codes, sondern darum, dass wir schnell zum Ziel kommen. Ein paar Schwächen sind also schon bekannt und werden vielleicht irgendwann behoben oder auch nicht.

Canonicals, Redirects, Fehlerseiten

Aus verschiedenen Gründen (Datenreduktion, vereinfachte Verarbeitung) normalisieren wir relativ zu Beginn alle Redirects und Canonicals. Das heißt wir versuchen so zu tun, als hättest Du die Verlinkungen auf Redirects oder Duplikate schon bereinigt. Solltest Du im Crawl viele 4xx, 3xx oder abweichende Canonicals finden, aber nicht in den Auswertungen, dann liegt das daran, dass wir die schon früh entfernen.

Berechnung der Verwandtschaft

Für die Verwandtschaft zwischen Inhalten und Linktexten nutzen wir rapidfuzz. Das ist eine ziemlich grobe Annährung. Für die Linktexte funktioniert das noch recht brauchbar. Für die Verwandtschaft von Texten ist das ziemlich unbrauchbar. Da wären Varianten — wie tf*idf, doc2vec, bert oder Entity-Extraction Berechnungen von Ähnlichkeiten auf deren Basis — wesentlich besser geeignet (und verwenden wir auch üblicherweise). Für diesen generischen Ansatz haben wir aber bewusst die Holzhammer-Methode gewählt. Eine feinere Variante kannst Du relativ einfach in der Funktion "calculateLinkScores" nachrüsten.