Verwandte Seiten mit ChatGPT und KNIME finden

Rebecca Schwarz
Rebecca Schwarz

Rebecca Schwarz ist SEO-Consultant bei der get traction GmbH und verantwortet Projekte unterschiedlicher Produktsegmente (News, E-Commerce, B2B). Ihr Arbeitsalltag dreht sich um die Konzeption von SEO-Strategien und die Unterstützung von Kunden im redaktionellen SEO, wie Redaktionsworkshops und Entwicklung von Content-Strategien. Um größere Datenmengen zu verarbeiten und bei wiederkehrenden SEO-Tasks Zeit zu sparen, nutzt sie die Open-Source-Software KNIME und gibt hierzu auch regelmäßig Schulungen. Neben ihrer Rolle als Consultant ist sie Koorganisatorin und Moderatorin des SEO-Stammtischs Rhein-Main in Darmstadt und teilt sie ihr Wissen als Speakerin auf bekannten Konferenzen.

Mehr von diesem AutorArtikel als PDF laden
Luca Schumacher

Luca Schumacher unterstützt die get traction GmbH tatkräftig bei analytischen Fragestellungen. Seine Expertise in der Datenanalyse mit KNIME sowie seine Programmierfähigkeiten in Python ergänzt er durch ein ausgeprägtes analytisches Verständnis und die Fähigkeit, komplexe Fragestellungen bis in die Tiefe zu durchdringen

Mehr von diesem AutorArtikel als PDF laden

In der alltäglichen SEO kommt es immer wieder zu einer Fragestellung: Welche Seiten einer Domain sind besonders ähnlich zueinander? Um das herauszufinden, braucht es nicht nur viel Zeit und Nerven. Bei großen Websites steht man hier häufig vor einem schier unüberwindbaren Berg an Inhalten, die geprüft und miteinander verglichen werden müssen. Doch seit der Möglichkeit, die KI in Arbeitsprozesse einzubinden, eröffnen sich neue Analysemöglichkeiten. Mithilfe des Screaming Frog, ChatGPT und KNIME wird nachfolgend beschrieben, wie sich verwandte Seiten finden lassen, um beispielsweise ähnliche Inhalte miteinander zu verlinken oder Duplicate Content zu identifizieren.

Verwandte Seiten und SEO

In der Suchmaschinenoptimierung gibt es viele verschiedene Anwendungsfälle, in denen es hilfreich ist, zu wissen, welche bestehenden Seiten miteinander in Verbindung stehen.

Anwendungsfall eins: interne Verlinkung

Die größte Herausforderung in der internen Verlinkung: Welche Inhalte sind ähnlich zueinander und sollten deshalb miteinander verlinkt werden? Hierfür ist es wichtig, alle relevanten Inhalte zu kennen, um diese dann sinnvoll untereinander verlinken zu können.

Anwendungsfall zwei: Duplicate Content

Inhalte dürfen ähnlich sein und einzelne Aspekte eines Themas näher beleuchten, jedoch sollten sie keine Duplikate darstellen. Hierfür muss herausgefunden werden, ob Inhalte zu ähnlich sind und somit von der Suchmaschine als doppelte Inhalte gewertet werden könnten. Dies sollte unbedingt vermieden werden, um keine negativen Effekte auf Rankings zu riskieren.

Anwendungsfall drei: Themencluster erkennen

Für die Identifikation neuer Themenpotenziale ist immer auch gefragt, welche Inhalte schon bestehen. Eine Analyse verwandter Seiten kann daher auch dabei unterstützen, all diese Inhalte aufzuspüren und einem gemeinsamen Themencluster zuzuordnen. Somit finden sich vielleicht schon vorhandene Inhalte, die nur aktualisiert und nicht neu erstellt werden müssen.

Für diese Anwendungsfälle soll die nachfolgende Schritt-für-Schritt-Anleitung zeigen, wie Inhalte automatisiert auf Ähnlichkeit geprüft werden können. Das spart Zeit und Nerven in der Analyse und im Arbeitsalltag ist wieder Kapazität für das wirklich Wichtige: die Priorisierung und Umsetzung der Erkenntnisse.

Das wird für die Analyse benötigt

Um die Analyse durchführen zu können, wird Folgendes benötigt:

  • Screaming Frog ab Version 20.0
  •  ChatGPT-API-Schlüssel
  • Installation der KNIME-Umgebung

Schritt eins: Konfiguration im Screaming Frog

Ziel von Schritt eins ist es, alle vorhandenen URLs einer Domain zu bekommen und diese auf ihre Ähnlichkeit hin zu untersuchen.

Dazu wird das Crawling-Tool Screaming Frog mit einem „Custom JavaScript“ konfiguriert. Hierfür stellt das Tool viele Skripte zur Verfügung. Es muss also nicht selbst programmiert werden! Über das Menü „Configuration“ > „Custom“ > „Custom JavaScript“ gelangt man zu den vorgefertigten Skripten (Abbildung 1).

Mit dieser Auswahl öffnet sich ein neues Dialogfenster. Über „Add from Library“ (Abbildung 2, Ziffer 1) erscheinen dann tabellarisch die bereitgestellten Skripte des Systems. Für die gewünschte Analyse wird direkt die erste Zeile ausgewählt und über „Insert“ (Abbildung 2, Ziffer 3) eingefügt.

Hinweis zum Vorgehen

Um die Ähnlichkeit der Seiteninhalte zu bestimmen, wird auf die sogenannten Vektor-Embeddings zurückgegriffen. Hierbei werden aus den Dokumenten Vektoren gebildet. Jeder dieser Vektoren befindet sich innerhalb eines mehrdimensionalen Vektorraummodells an einer bestimmten Position. Vektoren, die nah beieinanderliegen, stehen damit für Inhalte, die ähnlicher zueinander sind, als es bei Vektoren der Fall ist, die sich weiter voneinander entfernt befinden.

Das heißt: Liegen Dokumente im Vektorraum nah beieinander, sind sie sich sehr ähnlich. In Ausgabe #88 hat Daniel Kremer dazu einen spannenden Anwendungsfall zum Redirect-Mapping beschrieben.

Nun steht im Dialogfenster eine Zeile mit weiteren Auswahlmöglichkeiten (Abbildung 3, Ziffer 1). Damit die nachfolgende Analyse mit KNIME läuft, muss hier der Name des Skripts angepasst werden. Als Name wird deshalb „ChatGPT embeddings“ vergeben.

Mit Klick auf „JS“ wird dann der JavaScript Editor geöffnet (Abbildung 3, Ziffer 1). Hier muss nur in Zeile elf der eigene ChatGPT-API-Schlüssel eingetragen werden (Abbildung 3, Ziffer 2). Ansonsten bleibt das Skript unverändert. Bei Bestätigung über „OK“ ist das Skript dann fertig konfiguriert (Abbildung 3, Ziffer 3).

Aufgepasst

Die Abfrage über den API-Key ist natürlich mit Kosten verbunden. Gerade bei der Prüfung großer Websites sollte das vor dem Ausführen berücksichtigt werden.

Letzte Einstellungen und Crawling der Website

Nun sind noch letzte Einstellungen zu machen. Denn zur Auswertung muss im Tool noch das JavaScript Rendering angeschaltet werden. Dies funktioniert über das Menü unter „Spider“  „Rendering“  „JavaScript“. Und fertig!

Nun wird, wie gewohnt, in die Eingabezeile die entsprechende Start-URL der Website eingetragen (Abbildung 4, Ziffer 1). Ist das Crawling beendet, wird über das Drop-down-Menü „Custom JavaScript“ (Abbildung 4, Ziffer 2) ausgewählt. Diese Ergebnistabelle wird zuletzt noch als CSV-Datei exportiert.

Aufbereitung der Daten in KNIME

Mit dem erstellten CSV-Export kann der Screaming Frog nun geschlossen und KNIME geöffnet werden.

Schritt eins: Einlesen der CSV-Datei

In KNIME wird zuerst ein READER-Knoten verwendet, um Daten ins Tool zu laden. Je nach Datenformat gibt es hierfür einen anderen Knoten zur Auswahl. Für CSV-Dateien ist der passende READER-Knoten der CSV READER. Per Drag-and-drop kann die Exportdatei einfach in die grafische Oberfläche auf den Knoten gezogen werden. Es öffnet sich dann automatisch das Dialogfenster.

To-do im CSV READER: Im Menü des Dialogs muss über den Reiter „Encoding“ UTF-8 oder UTF-16 ausgewählt werden, damit alle Werte der Tabelle korrekt dargestellt werden. Im unteren Bereich des Dialogs gibt es immer ein Vorschaufenster, in dem zu sehen ist, ob die Daten korrekt ausgelesen werden können. Ansonsten bleiben die Standardeinstellungen bestehen und der Knoten kann mit „OK“ bestätigt und über Rechtsklick  „EXECUTE“ ausgeführt werden (Abbildung 5).

Schritt zwei: Verbinden mit dem PYTHON-SCRIPT-Knoten

An den CSV READER wird nun der Knoten PYTHON SCRIPT angebunden. Mithilfe dieses Knotens wird die CSV-Datei so umgeformt, dass statt der Vektoren die dahinterstehenden URLs angezeigt werden. Denn nur so wird aus den Daten eine verständliche Auswertung.

Was im Python-Code passiert, ist hier nicht relevant. Denn der Code für die Vorgehensweise wird mitgegeben und kann ganz einfach in den Knoten eingefügt werden. Die wichtigsten Abläufe sind:

  • Entfernen leerer Spalten der CSV-Datei
  • Erstellung einer Ähnlichkeitsberechnung nach dem Cosinus-Ähnlichkeitsmaß
  • Auflisten der ähnlichsten Seiten je URL (die Anzahl dieser Topseiten wird nachfolgend noch über eine Variable eingestellt)

Hinweis

Der Code wurde mit ChatGPT erstellt. Als Vorlage und Idee dazu dient der Artikel von Gus Pelogia auf der Website von screamingfrog.co.uk (einfach.st/mrpas).

Schritt drei: Variable für Topseiten festlegen

Im Python-Skript wird unter anderem definiert, dass für jede URL die fünf ähnlichsten Seiten herausgefiltert werden sollen. Falls diese Anzahl angepasst werden soll, ohne das Skript zu ändern, wird hier ein weiterer Knoten eingeführt – der VARIABLE CREATOR.

Dafür wird im VARIABLE CREATOR als Variable der Name „top_n“ eingegeben und als Value die entsprechende Anzahl der gewünschten Topseiten (Abbildung 6).

Wichtig zur Arbeit mit KNIME: Um die Variable mit dem Skript zu verbinden, wird der Knoten über die rote Linie verbunden. Die Weitergabe der Daten erfolgt dagegen immer über die schwarze Linie (Abbildung 7).

Daraus ergibt sich nun eine auslesbare Tabelle. Denn aus der kryptischen Darstellung der Vektoren ergeben sich nun auswertbare URLs (Abbildung 8).

Jetzt werden noch letzte Anpassungen gemacht, um später besser mit den Daten zu arbeiten. Dafür werden alle URLs, die aktuell noch kommasepariert innerhalb einer Zelle stehen, auf weitere Zellen aufgeteilt.

Schritt vier: Aufteilung der Zelle „Related URLs“

Um Werte innerhalb einer Zelle zu trennen, gibt es den Knoten CELL SPLITTER. Dieser Knoten wird an den Knoten PYTHON SCRIPT angehängt und wie folgt konfiguriert (Abbildung 9):

  • Auswahl der Spalte, die geteilt werden soll: „Related URLs“  Spalte, die das Trennen betrifft
  • Auswahl von „Remove input column“  Die vorherige Spalte mit den kommaseparierten URLs wird nicht mehr benötigt und kann deshalb direkt aussortiert werden.
  • Auswahl von „Guess size and column types“  da je nach Anzahl der Topseiten unterschiedlich viele Spalten benötigt werden

Schritt fünf: der Datenexport

Um den Ablauf in KNIME zu beenden, werden nun die erstellten Daten in eine Datei geschrieben. Dazu gibt es in KNIME, wie auch für das Einlesen die READER-Knoten, je nach Dateiformat verschiedene Knoten. Zum Export sind das die WRITER-Knoten. Bei Export einer Excel-Datei wird deshalb der EXCEL WRITER verwendet.

In der Konfiguration muss hierfür nur ein Name und ein Dateipfad vergeben werden. Mit Rechtsklick „EXECUTE“ wird der Knoten dann ausgeführt. Bei erfolgreichem Durchlauf des Knotens wird die Excel-Datei automatisch im gewählten Dateipfad erstellt.

Fazit

Der Workflow zeigt, dass in KNIME und mithilfe von ChatGPT auch komplexere Analysen abbildbar sind, für die ansonsten fortgeschrittene Programmierkenntnisse notwendig wären. Die vorgestellten Knoten sind damit eine schöne Erweiterung, um zu zeigen, wie vielseitig das Tool einsetzbar ist und wie sehr es den Arbeitsalltag in der Suchmaschinenoptimierung vereinfachen kann. Viel Spaß beim Experimentieren. Der fertige Workflow ist wie immer im KNIME-Hub unter einfach.st/knime86 verfügbar und ist per Drag-and-drop in die eigene KNIME-Oberfläche einlesbar.

Bei Fragen und Anmerkungen zum Workflow kann gerne ein Austausch via E-Mail oder LinkedIn stattfinden.