Besser intern verlinken mit Screaming Frog und KNIME

Michael Hohenleitner
Michael Hohenleitner

Michael Hohenleitner (geb. Göpfert) ist einer von vier geschäftsführenden Gesellschaftern der Agentur StrategieVier und als SEO-Berater und Freelancer tätig. Sein Steckenpferd ist dabei die Arbeit mit großen Datenmengen aus Crawls und der Search Console. Wenn ihm dabei die Standard-Reports der Tools nicht ausreichen, greift er auf eigene Workflows in KNIME oder Python zurück, um datengestützte Entscheidungen treffen zu können.

Mehr von diesem AutorArtikel als PDF laden

Die Optimierung der internen Verlinkung gehört für viele SEOs zum Tagesgeschäft. Abseits von Metriken wie PageRank und CheiRank gibt es bei einer strategischen Optimierung der Ankertexte häufig low hanging fruits zu ernten. Um im Dschungel von Abertausenden Links und Ankertexten nicht den Überblick zu verlieren, lernen Sie in diesem Beitrag, wie mit Screaming Frog und KNIME auch große Mengen an Verlinkungen effizient analysiert werden können. Ziel ist es, Widersprüchlichkeiten in der internen Verlinkung zu erkennen und zu prüfen, ob die Verlinkungsstrategie mit den Traffic-Daten aus der Search Console in Einklang ist.

Über die Wichtigkeit von (interner) Verlinkung wurde schon in der vergangenen Ausgabe berichtet. Ein wichtiges Learning ist: Versuchen Sie stets, eindeutige Signale an Suchmaschinen zu senden. Im Kontext der Verlinkung ist eines dieser Signale der Linktext (auch Ankertext genannt). Er gibt Suchmaschinen wichtige Hinweise darauf, worum es sich auf der verlinkten Seiten (der Zielseite) handelt, und ist damit ein wichtiger Faktor der On-Page-Optimierung.

Um in diesem Zusammenhang keine widersprüchlichen Signale an die Suchmaschinen zu senden, sollte nicht mit demselben Ankertext auf unterschiedliche Zielseiten verlinkt werden.

Im Laufe der Zeit werden Websites immer größer und unübersichtlicher. So kann es leicht passieren, dass unbewusst gegen dieses Prinzip verstoßen wird. Leider ist das Aufdecken solcher Fehler recht aufwendig. Vor allem große Websites verfügen häufig über so viele interne Verlinkungen, dass ein Audit mit herkömmlichen Mitteln nur schwer durchführbar ist.

Mit der Hilfe des Website-Crawlers Screaming Frog und dem Datenanalysetool KNIME lassen sich auch bei großen Websites Potenziale in der internen Verlinkung schnell und einfach aufdecken.

In diesem Beispiel werden folgende Fragestellungen beantwortet:

  • Wird mit einem Keyword als Ankertext auf Zielseiten verlinkt, die nicht der für dieses Keyword vorgesehenen Seite entsprechen?
  • Geben die Daten aus der Search Console Hinweise auf Potenziale und Anomalien in der internen Verlinkung?

Missmatch zwischen Ankertext und Zielseiten aufdecken

Für die erste Fragestellung benötigt es zunächst einen Crawl der Website mit dem Screaming Frog SEO Spider. Anschließend muss unter Bulk Exports > Links > All Inlinks ein Export als CSV-Datei gestartet werden. Dieser enthält sämtliche gecrawlten Verlinkungen der Website inklusive ihrer Ankertexte (Abb. 1).

Dieser Export kann bei großen Websites leicht zu einer sehr großen Datei führen. Davon sollten Sie sich aber nicht abschrecken lassen, denn mit KNIME lassen sich auch mehrere Gigabyte große Dateien performant verarbeiten.

Im nächsten Schritt sollten Sie nun in KNIME einen neuen Workflow anlegen und die aus Screaming Frog exportierte Datei mit der Node CSV Reader importieren.

Dazu muss lediglich die Node per Drag-and-drop aus dem Node Repository auf die Arbeitsfläche gezogen werden und anschließend muss das Konfigurationsmenü mit einem Doppelklick geöffnet werden.

Nun kann die aus Screaming Frog exportierte CSV-Datei ausgewählt werden. Im unteren Teil des Konfigurationsfensters wird eine Vorschau der zu importierenden Datei angezeigt. Sieht diese korrekt aus, kann das Fenster mit Ok geschlossen werden und die Node kann mit einem Rechtsklick und dem Befehl Execute ausgeführt werden.

Springt nun die „Ampel“ der Node auf Grün sind die Daten erfolgreich importiert worden. Das Ergebnis des Imports lässt sich mit einem Rechtsklick auf die Node und der Auswahl des Menüpunkts File Table begutachten.

Zielseiten und Ankertexte filtern

Die nächste Aufgabe besteht darin, diesen unübersichtlichen Datensatz so aufzubereiten, dass er Ihnen hilft, die Seiten zu finden, die mit einem bestimmten Ankertext auf Seiten verlinken, die nicht der gewünschten Zielseite entsprechen.

Dazu wird nun mit der Node Row Filter die gewünschte Zielseite aus den Daten herausgefiltert. Auch diese Node kann aus dem Node Repository auf die Arbeitsfläche gezogen werden. Anschließend kann das rechte schwarze Dreieck (der sogenannte Exit Port) des CSV Readers mit dem linken schwarzen Dreieck des Row Filters verbunden werden (Abb. 2).

Um eine bestimmte Seite aus dem Datensatz zu filtern, werden in der Konfiguration der Node Row Filter folgende Einstellungen vorgenommen (Abb. 3):

  • Column to Test: Destination (diese Spalte im Export enthält die Zielseiten)
  • Matching Criteria: URL der Zielseite, die aus dem Datensatz gefiltert werden soll
  • Ganz links muss noch der Wert Exclude rows by attribute value aktiv sein. Dies stellt sicher, dass die eingetragene URL aus dem Datensatz herausgefiltert wird.

Anschließend wird dem Workflow eine weitere Node Row Filter hinzugefügt. Diese sorgt dafür, dass nur noch Seiten im Datensatz enthalten sind, die einen bestimmten Ankertext beinhalten. In der Konfiguration wird nun Folgendes angegeben:

  • Column to Test: Anchor (die Spalte mit den Ankertexten)
  • Matching Criteria: der Ankertext bzw. das Keyword, für das die gewünschte Zielseite ranken soll

Nun enthält der Datensatz ausschließlich Verlinkungen, die mit dem definierten Ankertext auf eine andere URL verlinken als die dafür vorgesehene Ziel-URL. Sie können nun die Verlinkungen auf Ihrer Website so anpassen, dass jeder wichtige Ankertext auf die dafür vorgesehene Zielseite verlinkt.

Tipp

Die Node Row Filter ermöglicht es Ihnen, auch mithilfe von regulären Ausdrücken oder Wildcards zu filtern. So lassen sich auch Linktexte filtern, die diesem nicht exakt entsprechen, sondern ihn lediglich enthalten.

Doch welche Zielseite passt zu welchem Ankertext? Das Matching von Ankertext und Zielseite ist nicht immer einfach. Für die wichtigsten Hauptkeywords lässt sich das häufig noch mithilfe einer Keyword-Tabelle überblicken, doch was ist mit dem Rest? Mit der Kombination von Search-Console-Daten und dem Link-Report von Screaming Frog lassen sich völlig neue Erkenntnisse gewinnen.

Linkdaten mit Daten aus der Search Console anreichern

Ziel des nächsten Schritts ist es, zu prüfen, ob es Seiten gibt, die über ein Keyword viele Impressionen bekommen, während dieses Keyword jedoch als Ankertext für Links auf andere Seiten dient.

Um diese Anomalie aufzudecken, werden zwei Listen benötigt:

  1. Eine Liste aller Ankertexte und die dazugehörigen Quell- und Ziel-URLs
  2. Eine Liste aller Keywords, die Impressionen bringen, und die dazugehörigen URLs

Für die erste Liste kann auf den Import aus dem ersten Teil dieses Workflows zurückgegriffen werden (all_inlinks.csv aus Screaming Frog). Für die zweite Liste wird ein Export der Search-Console-Daten (idealerweise als CSV) mit den Suchbegriffen und den dazugehörigen URLs benötigt. Die Daten können in dieser Form leider nicht direkt aus der Google Search Console (GSC) exportiert werden, deshalb kann auf die kostenlose Google-Sheets-Erweiterung Search Analytics for Sheets zurückgegriffen werden (Abb. 4). Diese kann die Daten schnell und einfach aus der GSC in ein Google-Sheet importieren. Das Sheet wiederum kann als CSV-Datei exportiert und per Node CSV Reader in KNIME importiert werden.

Bevor beide Importe miteinander verbunden werden, müssen die Daten noch etwas aufbereitet werden.

Der CSV Reader für den Import der Ankertexte muss nun mit einer Node String Manipulation verbunden werden. Diese wird benötigt, um die Ankertexte in Kleinschreibweise zu verändern, da die Daten aus dem Search-Console-Export ebenfalls kleingeschrieben sind. Dazu muss die Node wie in Abbildung 5 konfiguriert werden. Zusätzlich kann im Bereich Function die Funktion lowerCase(str) ausgewählt werden. Sie sorgt dafür, dass alle Wörter in einer bestimmten Spalte (in diesem Fall die Spalte Anchor) kleingeschrieben werden. Anschließend muss lediglich festgelegt werden, dass die bestehende Spalte ersetzt werden soll.

Im nächsten Schritt muss die Tabelle so aufbereitet werden, dass es für jeden Ankertext nur noch einen Eintrag gibt. Dies lässt sich mithilfe der Node GroupBy umsetzen. Ist die Node auf der Arbeitsfläche und mit der vorherigen Node (String Manipulation) verbunden, wählen Sie im Tab Groups die Spalte Anchor aus, sodass diese im Bereich Group column(s) steht (Abb. 6).

Damit erreichen Sie, dass pro Eintrag in der Spalte Anchor nur noch eine Zeile in der Tabelle existiert.

Nun haben Sie die Möglichkeit, für jeden Ankertext Werte aus den anderen Spalten zu aggregieren. Für diese Auswertung ist Folgendes relevant:

  • Eine Liste aller URLs, die mit dem jeweiligen Ankertext verlinkt sind
  • Eine Liste aller URLs, die mit dem jeweiligen Ankertext auf eine andere Seite verlinken
  • Die Anzahl der URLs, die mit dem jeweiligen Ankertext verlinkt sind
  • Die Anzahl der URLs, die mit dem jeweiligen Ankertext auf eine andere Seite verlinken

Konfigurieren Sie dazu die Node GroupBy wie in Abbildung 7.

Verbinden der beiden Datensätze

Ziehen Sie nun die Node Joiner auf Ihre Arbeitsfläche und verbinden Sie die Node mit der Node GroupBy mit den Ankertexten und den GSC-Daten. Um die Node zu konfigurieren, müssen zwei Einstellungen getroffen werden (Abb. 8):

  • Im Tab Joiner Settings werden die Spalten Anchor und Query ausgewählt.
  • Im Bereich Include in output wählen Sie Matching Rows.

Diese Einstellungen führen zu einem sogenannten Inner Join beider Tabellen. In diesem Fall bedeutet das, dass nur die Zeilen ausgegeben werden, bei denen die Suchanfrage (Query) und der Ankertext identisch sind. Alle anderen Zeilen werden nicht übernommen. Die Werte der restlichen Spalten bleiben in der Tabelle enthalten.

Die zusammengeführte Tabelle enthält nun folgende Spalten:

  • Ankertext (identisch mit der Suchanfrage)
  • Destination (Unique concatenate): die mit diesem Ankertext verlinkten Zielseiten
  • Source (Unique concatenate): die mit diesem Ankertext verlinkenden Seiten
  • Source (Unique Count): Anzahl der verlinkenden Seiten mit diesem Ankertext
  • Destination (Unique Count): Die Anzahl an URLs, die mit diesem Ankertext verlinkt sind
  • Query (identisch mit dem Ankertext)
  • Page: die URL, die laut den GSC-Daten die meisten Klicks über diese Query (=Ankertext) bekommen hat
  • Impressions: Anzahl der Impressionen, die die URL über diese Query bekommen hat
  • Clicks: Anzahl der Klicks, die die URL über diese Query bekommen hat

Erste Erkenntnisse

Sie haben es sicher schon selbst bemerkt: Ist in der Spalte Destination (Unique concatenate) mehr als eine URL enthalten, bedeutet dies, es wird auf der Website mit demselben Ankertext auf mehr als eine Seite verlinkt und damit wird ein mehrdeutiges Signal an Google gesendet.

Die Ergänzung der Daten aus Screaming Frog mit den Daten aus der Search Console ermöglicht es Ihnen nun, darüber hinaus zu sehen, ob die mit einem bestimmten Ankertext verlinkte Zielseite auch die ist, die laut GSC die meisten Klicks über das Keyword bekommt, das mit dem Ankertext identisch ist.

Um nicht den Überblick zu verlieren, sollten die Spalten etwas eindeutiger benannt werden. Dazu können Sie auf die Node Column Rename zurückgreifen. Einen Vorschlag für die Benennung der Spalten sehen Sie in Abbildung 9.

Mit der Node Rule Engine lässt sich anschließend abgleichen, ob die URL(s) in der Spalte Zielseite(n) identisch mit der URL in der Spalte Page mit den meisten Impressionen ist. Ist dies nicht der Fall, rankt Google nicht die Seite, die mit diesem Keyword als Ankertext am häufigsten verlinkt ist.

Dazu wird in der Rule Engine eine neue Spalte mit dem Namen Zielseite = Page mit den meisten Impressionen? erzeugt, die das Ergebnis dieser Prüfung enthält (Abb. 10).

Um die Fälle mit dem größten Potenzial sofort zu erkennen, können Sie mit der bereits bekannten Node Sorter die Tabelle so sortieren, dass sie nach der Anzahl an Klicks absteigend sortiert ist.

Um die Fälle, bei denen die Zielseite und die Seite mit den meisten Impressionen nicht übereinstimmen, sofort zu erkennen, können Sie diese mit der Node Color Manager farbig markieren (Abb. 11).

Anschließend können Sie die Daten in eine CSV-Datei (Node: CSV Writer) oder Excel-Datei (Node: Excel-Writer) exportieren.

Fazit

Zugegeben, dieser Workflow ist recht anspruchsvoll. Nicht im Hinblick auf den Aufbau in KNIME, sondern in Bezug auf diese spezielle Herangehensweise für die Optimierung der internen Verlinkung. Gleichwohl können so mit recht einfachen Mitteln Erkenntnisse gewonnen werden, die sich leicht auf der eigenen Website umsetzen und widersprüchliche Signale durch interne Verlinkung auflösen lassen. Wie immer gibt es den fertigen Workflow zum Herunterladen unter einfach.st/knime76.

Viel Spaß beim Ausprobieren!