KNIME für E-Commerce-SEO

Out-of-Stock-Produkte in redaktionellen Inhalten identifizieren

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 Autor

Alle Betreiber von Online-Shops kennen es: Produkte sind hin und wieder nicht mehr verfügbar. Während das auf Übersichtsseiten in Shop-Umgebungen in der Regel recht schnell identifizierbar und auswertbar ist, kann die Suche nach dieser Art von Produkt in redaktionell erstellten Inhalten sehr mühsam sein. Um Nutzer, die über Ratgeber- und Magazininhalte auf Online-Shops einsteigen, nicht zu frustrieren und ihnen nur verfügbare Produkte zu verlinken, gibt es eine einfache Lösung: die schnelle Analyse mit KNIME, ob in redaktionellen Inhalten Out-of-Stock-Produkte verlinkt sind. Wie das funktioniert und welche Voraussetzungen notwendig sind, wird im nachfolgenden Beitrag Schritt für Schritt beschrieben.

Die Identifizierung von Verlinkungen auf Out-of-Stock-Produkte eines Shops kann sehr mühsam sein und führt in einer händischen Prüfung schnell zur Verzweiflung. Doch es gibt eine einfache und effiziente Lösung dafür: die Analyse mit KNIME. Schritt für Schritt wird hier gezeigt, wie sich diese lästigen Verlinkungen identifizieren lassen. Der Workflow kann dazu individuell auf Seitenbereiche eingeschränkt werden, um nur Verlinkungen auf Produkte zu analysieren, die in redaktionell erstellten Bereichen liegen. Die folgenden Fragestellungen können so gelöst werden: - Werden in bestimmten Seitenbereichen Produkte verlinkt, die nicht verfügbar sind? - Mit welchen Ankertexten und an welcher Stelle auf einer Seite sind die Verlinkungen zu finden? - Wie häufig werden nicht verfügbare Produkte verlinkt? Warum wird KNIME verwendet? Mit der kostenfreien Open-Source-Software KNIME lassen sich viele SEO-Analysen durchführen. Der Vorteil ist, dass zu jedem Zeitpunkt überwacht werden kann, wie sich die Daten verändern. Denn jeder Workflow besteht aus einer Aneinanderreihung von Knoten, durch die bereitgestellte Daten fließen. Im Gegensatz zu Excel sind einmal erstellte Workflows auch jederzeit wiederholbar. Denn liegen Daten immer wieder in gleicher Form vor, können diese jederzeit durch bereits erstellte Workflows fließen. Das macht das Tool vor allem für Regeltätigkeiten in der SEO zu einem mächtigen Werkzeug! Zusätzlich ist die Software für Anfänger geeignet und erfordert keine Programmierkenntnisse! Prämisse zur Durchführung der Analyse Auch wenn Online-Shops immer wieder ihre Eigenheiten haben und Fehlerquellen unter Umständen sehr individuell sein können, sind sie im Allgemeinen ähnlich gestrickt. Für die vorgestellte Analyse werden deshalb die folgenden Annahmen getroffen: • Alle Produktseiten des Online-Shops sind mit semantischen Daten im Vokabular von schema.org ausgezeichnet und stehen im Format JSON-LD zur Verfügung. • Die semantische Auszeichnung der Produktdetailseiten entspricht den Vorgaben von Google und enthält den Tag availability mit der Ausprägung ist verfügbar = schema.org/InStock oder ist nicht verfügbar = schema.org/OutOfStock. Für den ersten Schritt der Analyse wird zunächst das Crawling-Tool Screaming Frog benötigt, um an die Informationen der semantischen Auszeichnung zu gelangen. Hierzu wird die gesamte Website mit einer sogenannten Custom Extraction Anweisung gecrawlt. Ziel ist es so, den Status der Verfügbarkeit aus den Produktinformationen zu extrahieren. Enthält der Quellcode OutOfStock oder InStock, wird dies extrahiert. Unter der Annahme, dass alle Produktdetailseiten einen Status der Verfügbarkeit enthalten, lässt sich so entweder OutOfStock oder InStock extrahieren. Infokasten einschl. Bild und BU! Erläuterung für die Konfiguration im Screaming Frog: Zur Konfiguration der Custom Extraction ist Folgendes notwendig: Zunächst wird über Configuration → Custom → Custom Extraction angesteuert (Abbildung 1, Ziffer 1). Dann wird über Add ein neuer Eintrag angelegt (Abbildung 1, Ziffer 2). Damit der KNIME-Workflow später nicht mehr angepasst werden muss, kann jetzt der folgende Eintrag übernommen werden (Abbildung 1, Ziffer 3): 1. Feld: Produkt-Verfügbarkeit 2. Feld: Regex 3. Feld: (InStock|OutOfStock) Abbildung 1: Konfiguration der Custom Extraction im Screaming Frog Ist die Custom Extraction-Anweisung konfiguriert, wird der Crawl für die entsprechende Domain gestartet. Nach erfolgreichem Durchlauf wird der Crawl exportiert. Für die weitere Analyse sind die folgenden Exports notwendig: 1. internal_all-Export: Der Export kann einfach über den Export-Button als CSV-Datei exportiert werden. 2. all_inlinks-Export: Dieser Export wird im Screaming Frog über den Reiter Bulk-Export → Links → All Inlinks ausgewählt und wird ebenfalls als CSV-Datei exportiert. Nun sind alle Vorbereitungen getroffen und die Arbeit mit dem Workflow in KNIME kann beginnen. Checkpoint eins: Existieren im Shop nicht verfügbare Produkte? Ein vermutlich seltener Fall, aber im ersten Schritt des Workflows wird geprüft, ob im Shop überhaupt Produkte vorliegen, die mit OutOfStock gekennzeichnet sind. Dazu wird der CSV-Export internal_all über den Knoten CSV READER eingelesen. Daran angebunden wird ein ROW FILTER (Abbildung 2). Dieser Knoten filtert im Allgemeinen Zeilen eines Datensets anhand eines definierten Werts. Abbildung 2: Einlesen und Filtern des internal_all-Exports Infobox am Rand Für KNIME-Einsteiger: Die einzelnen Knoten werden aus dem Node Repository in die grafische Oberfläche gezogen und dann nach und nach über die Pfeilsymbole miteinander verbunden. Damit die Knoten Daten an den nächsten Knoten übertragen können, müssen die Knoten mit Rechtsklick  „EXECUTE“ ausgeführt werden. Wechselt die Ampel-Anzeige unterhalb des Knotens auf Grün, können die Daten problemlos weitergegeben werden. Leuchtet nach Ausführung eines Knotens ein rotes Warnsymbol auf, gibt es Probleme mit der Ausführung und der Workflow stoppt. Um zu erfahren, wodurch das Problem verursacht wird, kann einfach über das Symbol gehovert werden, um die Fehlermeldung angezeigt zu bekommen. Die Konfiguration des Knotens ROW FILTER läuft wie folgt ab: Im ersten Feld wird die Spalte „Produkt-Verfügbarkeit 1“ ausgewählt, die gefiltert werden soll (Abbildung 3, Ziffer 1). Im zweiten Feld wird dann der Wert für die Filterung eingegeben (Abbildung 3, Ziffer 2). Auch die Formulierung von Wildcards und regulären Ausdrücken ist möglich. Damit die Filterung einwandfrei funktioniert, wird eine Formulierung eingegeben und anschließend mit dem Häkchen ausgewählt, um welche Art von Pattern es sich handelt. In diesem Fall wird auf den genauen Wert (= case sensitive match) „OutOfStock“ gefiltert, da der Wert durch die Custom Extraction im Screaming Frog so in der entsprechenden Spalte vorzufinden ist, wenn ein Produkt nicht verfügbar ist. Abbildung 3: Konfiguration des Knotens ROW FILTER Infobox Tipp: Um herauszufinden, wie die Daten zum aktuellen Zeitpunkt im Workflow tabellarisch aussehen, kann jederzeit mit Rechtsklick auf den zuvor ausgeführten Knoten geklickt werden und über „File Table“ die Tabellenvorschau angezeigt werden. Der ROW FILTER wird nun über Rechtsklick  „EXECUTE“ ausgeführt. Die Ergebnistabelle enthält nun nur noch Zeilen, die in der Spalte „Produkt-Verfügbarkeit 1“ den Wert „OutOfStock“ enthalten. Ist die Tabelle leer? Dann befinden sich im Shop keine Produkte, die den Status „OutOfStock“ aufweisen. Zeigt die Tabelle URLs an, geht es nun in den zweiten Checkpoint. Checkpoint zwei: Auf welchen Seiten werden nicht verfügbare Produkte verlinkt? Für die Analyse, wo auf der Website Out-of-Stock-Produkte verlinkt sind, muss die interne Verlinkung betrachtet werden. Dazu wird nun der all_inlinks-Export aus dem Screaming Frog verwendet. Die folgenden Spalten mit der Standardbenennung des Exports sind relevant für die Analyse: • Spalte „Source“: Sie zeigt die Quelle, aus der eine URL verlinkt wird. • Spalte „Destination“: Sie zeigt das Ziel, auf das von der „Source“ aus verlinkt wird. • Spalte „Anchor“: Sie zeigt den Ankertext, mit dem die Ziel-URL verlinkt wird. • Spalte „Link Path“: Sie zeigt mithilfe eines XPaths an, an welcher Stelle der Seite sich der Link befindet. Zur Arbeit mit diesen Informationen wird der all_inlinks-Export zunächst via CSV READER in KNIME eingelesen und wie gewohnt ausgeführt. Um nun nur mit den oben genannten Spalten weiterzuarbeiten, werden mit dem Knoten COLUMN FILTER nur die vier oben genannten Spalten über Include beibehalten (Abbildung 4). Abbildung 4: Konfiguration des Knotens COLUMN FILTER In nächsten Schritt wird nun ausgewählt, in welchem Seitenbereich die Verlinkung von Out-of-Stock-Produkten analysiert werden soll. Dazu wird ein weiterer ROW FILTER definiert. In diesem wird die Spalte „Source“ auf ein bestimmtes URL-Muster hin gefiltert. Soll beispielsweise geschaut werden, wo Out-of-Stock-Produkte im Verzeichnis /ratgeber/ verlinkt sind, wird im matching criteria „*ratgeber*“ (Abbildung 5, Ziffer 2) mit der Auswahl „contains wild cards“ (Abbildung 5, Ziffer 3) ausgewählt. Je nach Verzeichnisstruktur und Benennung muss das matching criteria entsprechend angepasst werden. Abbildung 5: Konfiguration des Seitenbereichs Zusammenführung der Daten Im nächsten Schritt werden nun die Daten aus Checkpoint eins „Existieren Out-of-Stock-Produkte“ mit den Daten der internen Verlinkung zusammengeführt. Dieser Schritt ist notwendig, um nur noch Daten zu erhalten, die zwei Bedingungen erfüllen: 1. Produkte, die mit „OutOfStock“ gekennzeichnet sind 2. Produkte, die in einem definierten Seitenbereich (hier: im Ratgeber) verlinkt sind Das Zusammenführen der Daten funktioniert in KNIME mit dem JOINER, dem Äquivalent zum SVERWEIS in Excel. Der JOINER hat zwei Ports an der linken Seite, an die die beiden ROW FILTER angebunden werden (Abbildung 6). Abbildung 6: Zusammenführung der Daten im JOINER Im JOINER selbst wird nun noch ausgewählt, welche Spalten zum Matching miteinander verglichen werden sollen und welche Art von Matching ausgeführt werden soll. Für den Anwendungsfall wird die Spalte „address“ mit der Spalte „Destination“ verglichen. Zum besseren Verständnis: - In den Daten, die am oberen Port eingelesen werden, befinden sich die Produkt-URLs, die die Bezeichnung „OutOfStock“ beinhalten. Die Spalte dieser URLs heißt „address“. - Im unteren Port werden die URLs eingelesen, die im Seitenbereich /ratgeber/ verlinkt werden. Die Spalte der URLs heißt „Destination“. Weil nur mit Daten weitergearbeitet werden soll, die beide Bedingungen – Produkt ist nicht verfügbar und es wird im Ratgeber-Bereich verlinkt – erfüllen, wird im JOINER matching rows ausgewählt, was einem Inner Join entspricht (Abbildung 7, Ziffer 1). Zur besseren Übersicht werden innerhalb des Knotens JOINER im Reiter Column Selection zusätzlich nur die relevanten Spalten übernommen und alle anderen verworfen (Abbildung 7, Ziffer 2). Durch die Ausführung des Knotens und Rechtklick  „Join result“ ergibt sich nun bereits das Ergebnis der Auswertung. Nun wird noch Ordnung geschaffen, um später eine bessere Übersicht zu erhalten. Abbildung 7: Konfiguration des Knotens JOINER Ordnung schaffen und URLs priorisieren Zum besseren Überblick über die Mengengerüste der verlinkten Produktdetailseiten wird der Workflow nun noch um drei Knoten erweitert (Abbildung 8). Abbildung 8: Ordnung durch drei weitere Knoten schaffen Zunächst wird mit dem Knoten GROUP BY (Abbildung 8, Ziffer 1) gezählt, wie häufig jede einzelne Produktseite im Seitenbereich verlinkt ist. Die daraus resultierende Ansicht entspricht einer Pivot-Tabelle in Excel. Dazu wird im Reiter groups die Spalte „Destination“ ausgewählt (Abbildung 9, Ziffer 1). Im Reiter Manual aggregation wird nun noch bestimmt, welche Werte zum Zählen verwendet werden sollen und wie gezählt wird. Dazu wird die Spalte „Source“ mit der Aggregation „unique count“ ausgewählt (Abbildung 9, Ziffer 2). Abbildung 9: Konfiguration des Knotens GROUP BY Daraus ergibt sich eine Tabelle, die die eindeutigen Verlinkungsziele und die Anzahl des Vorkommens im Seitenbereich anzeigt (Abbildung 10): Abbildung 10: Ergebnistabelle des Knotens GROUP BY Damit die neu gewonnenen Informationen der Häufigkeit des Vorkommens mit dem vorherigen Datenset verbunden werden können, wird an dieser Stelle ein weiterer Knoten JOINER angebunden (Abbildung 8, Ziffer 2). In diesem zweiten JOINER-Knoten wird dazu jeweils die Spalte „Destination“ gewählt, da diese in beiden Datensätzen vorliegt, und mit einem erneuten Inner Join gematcht. Abbildung 11: Konfiguration des zweiten JOINER-Knotens Der letzte Knoten ist der SORTER, mit dem die Daten absteigend nach Häufigkeit des Vorkommens und nach URL sortiert werden (Abbildung 8, Ziffer 3). Infobox Wichtiger Hinweis: In der Vorschautabelle können die Daten zwar auf- und absteigend sortiert werden, dies ist jedoch nur eine Vorschau und hat keine Auswirkung auf die weitere Verarbeitung der Daten. Für einen späteren Export müssen die Daten immer über den SORTER sortiert werden, damit sich die Veränderung auf das Datenset auswirkt. Ergebnis der Analyse Das Ergebnis der Analyse ist eine Tabelle, die zeigt, welche Produkte (Spalte „Destination“) nicht verfügbar sind und wo diese verlinkt werden (Spalte „Source“). Zusätzlich enthält die Tabelle die Information über den zugehörigen Linktext, den Linkpfad auf der Seite und die Häufigkeit des Vorkommens. Gerade bei einer größeren Datenmenge kann mit dieser Angabe besser priorisiert werden, welche Produkte am häufigsten verlinkt werden und auf welchen Seiten die Überarbeitung der Verlinkungen somit mehr Impact hat (Abbildung 12). Abbildung 12: Ergebnistabelle der Auswertung Fazit Der Workflow zeigt, wie Analysen schnell und einfach über KNIME durchgeführt werden können, die ohne eine solche Analysesoftware deutlich zeitaufwendiger wären. Die Konfiguration der Knoten kann dabei individuell angepasst und jederzeit auf andere Seitenbereiche angewendet werden. Der fertige Workflow ist wie immer im KNIME-Hub zusammen mit den Workflows der letzten drei Ausgaben unter einfach.st/knime86 verfügbar und ist per einfachem Drag-and-drop in die eigene KNIME-Oberfläche einlesbar. Und noch ein abschließender Hinweis: Die vorgestellten Workflows haben nicht nur das Ziel, die Anwendungsfälle zu erklären, sondern sollen auch die Methodenkompetenz mit KNIME vermitteln. Wer anfängt, sich mit KNIME zu beschäftigen, merkt schnell, dass ein relativ kleines Set an Knoten ausreicht, um individuelle Anwendungsfälle zu kreieren. In diesem Sinne viel Spaß mit KNIME! Abbildung 13: Gesamter KNIME-Workflow