R-Leuchtungen!

Teil 7: Schädliche Doppelrankings finden

Patrick Lürwer
Patrick Lürwer

Patrick Lürwer ist Senior Analyst bei get:traction GmbH und Partner. Seine Schwerpunkte sind die Umsetzung von ETL-Prozessen für die Beschaffung von Daten mittels APIs, Webscraping etc., ihre Speicherung in Datenbanken, Analysen von Crawls, Logfiles und Traffic-Daten sowie die Konzeption von Informationsarchitekturen.

Mehr von diesem AutorArtikel als PDF laden
Mario Fischer
Mario Fischer

Mario Fischer ist Herausgeber und Chefredakteur der Website Boosting und seit der ersten Stunde des Webs von Optimierungsmöglichkeiten fasziniert. Er berät namhafte Unternehmen aller Größen und Branchen und lehrt im neu gegründeten Studiengang E-Commerce an der Hochschule für angewandte Wissenschaften in Würzburg.

Mehr von diesem AutorArtikel als PDF laden

In den Ausgaben bis 54 bis 58 der Website Boosting konnten Sie in der Serie „R4SEO“ von Patrick Lürwer nachvollziehen, wie man die kostenlose Software R verwendet, was sie leistet und wie man sie nutzbringend für die eigene Arbeit für SEO bzw. die Aufklärung im Online-Marketing einsetzen kann. R wurde ja ursprünglich für Statistik entwickelt. Wer das bisher als Entschuldigung verwendet hat, es deswegen links liegen zu lassen, dem sei versichert, dass er damit komplett falschliegt. R kann für den Einsatz im Unternehmen, allen Bereichen voran „Online“, sehr viel mehr leisten, als statistische Berechnungen durchzuführen. Genau genommen ist es ein wirklich nützliches Helferlein bei allen Aufgaben im Umgang mit größeren Datenmengen, mit Daten, die man erst in eine gewisse Struktur bringen muss, und bei der automatischen oder halb automatischen Datenbeschaffung aus praktisch fast allen Quellen aus dem Web! Für die interessierten Einsteiger, aber auch für alle, die nach der Serie von Patrick Lürwer „R-Blut“ geleckt haben, startete in der Ausgabe 62 die neue anwendungsorientierte Serie „R-Leuchtungen“. Sie werden in jeder Ausgabe erfahren, wie Sie ohne Programmierkenntnisse jeweils ein definiertes und in der Online-Praxis häufiger auftretendes Problem rund um das Thema Daten und Auswertungen lösen können. Und keine Sorge, die kleinen Hilfe-Tutorials nehmen Sie Schritt für Schritt an der Hand, sodass Sie auch als Neuling von der Power von R profitieren können. Was hält Sie also ab, das einfach mal auszuprobieren? Die einzelnen Schritte müssen Sie übrigens nicht im Detail verstanden haben. Um an die hilfreichen Daten für ein besseres Ranking zu kommen, müssen Sie im Prinzip nur nachmachen, was Sie hier beschrieben finden.

Worum geht es diesmal?

Doppelrankings sind in der Regel ein deutliches Signal von Google, dass die Suchmaschine nicht die eine für ein Keyword passende URL als Ergebnis findet, sondern mehrere relevante Seiten. Das äußert sich dann häufig in einem Ranking auf der ersten oder zweiten Seite, aber nicht auf den besten Positionen. Weiter hinten im Ranking tauchen dann weitere passende URLs der gleichen Domain auf. Viele Experten sind sich einig, dass man diesen Zustand beheben sollte. Dazu „de“-optimiert man das entsprechende Keyword bzw. die Phrase auf den Seiten, die nicht dafür ranken sollen.

Ein Beispiel. Die Domain Websiteboosting.com rankt für die Suchphrase „verwandte suchbegriffe“ gleich viermal. Auf Position 25, 50, 83 und 87. Die URLs dazu sind:

  • /magazin/37/semantische-keyword-recherche-die-suche-nach-den-richtigen-woertern.html
  • /magazin/02/keyword-recherche-im-longtail.html
  • /magazin/37/so-funktioniert-amazon-seo.html
  • /glossar/eintrag/G.html

Ein Artikel aus Ausgabe 37 (oben die erste URL mit /magazin/37…) hat über 2.500 Impressions im ersten Quartal dieses Jahres über diese Suchphrase bekommen. Das bedeutet, dass so oft auf die dritte Seite (Position 25 findet man auf der dritten Ergebnisseite) geblättert wurde und diese URL angeboten wurde. Doch so weit hinten hat fast niemand geklickt. Die zweite URL passt inhaltlich nicht so gut zur Suchphrase wie die erste. Die Dritte geht über Amazon-Keywords und ist damit sehr speziell. Jemand, der danach sucht, würde wohl „Amazon“ in die Suche mit aufnehmen. Also eigentlich ein Ranking-Unfall. Na ja, und die letzte URL ist ein Glossareintrag aus den ersten Tagen der Website Boosting und eher definitionsorientiert. Somit hätte man die drei Kandidaten für eine De-Optimierung. Das geht in der Regel recht einfach und flott. Man prüft, ob die Suchphrase „verwandte suchbegriffe“ in dieser Kombination im Title vorkommt und in einer Überschrift im Dokument selbst (H1, H2 etc.). Dort nimmt man sie heraus oder formuliert das entsprechend um. Zuletzt könnte man noch prüfen, wie oft im Beitrag selbst die Suchphrase genau so vorhanden ist, und diese bei zu häufigem Vorkommen vorzugsweise durch andere Wörter ersetzen.

Gelingt diese De-Optimierung, fallen die Rankings für diese drei URLs heraus. Und kurz darauf steigt mit hoher Wahrscheinlichkeit und natürlich unter der Prämisse, dass sich sonst nichts Wesentliches ändert, das Ranking der ersten URL um ein paar Positionen an. Gar nicht so selten sind so Sprünge von der zweiten oder dritten Seite auf die erste machbar.

Schwächen gängiger SEO-Tools umgehen

Solche Doppelrankings kann man mit diversen SEO-Tools sichtbar machen bzw. erkunden. Leider haben viele dieser Toolanbieter kein Herz für die operative SEO-Arbeit. Damit man vernünftig arbeiten kann, braucht man die Doppelrankings in einer bearbeitbaren Datei. Sei es, um zu filtern, umzustellen, Sets Personen zuzuteilen, zu priorisieren, zu dokumentieren und zu überwachen etc. Es nützt also wenig, in einer Weboberfläche nur anzuzeigen, wo es Doppelrankings gibt. Eigentlich nützt es nur zum Ansehen und sich Ärgern. Arbeiten kann man damit nicht. Werden Downloads angeboten, ist die dort erzeugte Struktur nicht selten einfach ein herausgespuckter Datenbankauszug – mit anderen Worten wird das oft in einer Anordnung ausgegeben, mit der der Programmierer wenig Arbeit hatte, die aber umfassend mit eigenen Formeln umgebaut werden muss, damit man wirklich etwas damit anfangen kann. Um dem Ganzen die Krone aufzusetzen, geben (fast) alle Tools stupide ALLE Mehrfachrankings aus. Also auch solche, die Position eins und zwei beinhalten. Das macht natürlich keinerlei Sinn, denn diese beiden Positionen lassen sich weder verbessern noch zeigen sie irgendeine Art von Keyword-„Kannibalisierung“. Und viele Tools machen auch keinen Unterschied zwischen Suchwörtern mit und ohne Markennamen-Bezug. In der Regel rankt eine Domain sehr gut, sofern ihr Domainname (Brand) mit in der Suchphrase enthalten ist. Für SEO-Zwecke stören diese Daten daher eher, weil sie die anderen Suchbegriffe „verdecken“ können bzw. unnötige Dateneinträge erzeugen.

Wie Sie selbst mit harten Daten aus der Google Search Console (kostenlos) Ihre eigene, „bessere“ Datei erzeugen können, zeigt Ihnen dieser Beitrag und das hier für Sie erstellte R-Skript.

Wie immer gilt: Sie brauchen keinerlei Programmierkenntnisse und müssen nur wenige einfache Anpassungen für Ihre eigene Domain im vorliegenden Skript machen.

Ihr API-Account bei Google 

Um automatisiert bzw. computergesteuert Daten von Google-Tools holen zu können, brauchen Sie dort einen „Developer-Account“. Für diesen bekommen Sie eine von Google erzeugte Mailadresse und ein File mit der Endung .json für die Authentifizierung. Die Mailadresse dient dazu, einen Nutzer für die Search Console anlegen zu können, und mit dem File kann sich eine Maschine gegenüber Google als berechtigt ausweisen. Wie Sie einen solchen Account anlegen können, haben wir in der Ausgabe 65 ausführlich beschrieben. Falls Sie den Account da angelegt haben, können Sie jetzt erneut darauf zugreifen und müssen nichts weiter tun.

Haben Sie das übersprungen, müssen und sollten Sie das (Schritt 1 und 2 im oben genannten Beitrag) unbedingt nachholen. Bereits in den vergangenen Ausgaben hatten wir Ihnen Skripte an die Hand gegeben, mit denen Sie wirklich sehr nützliche Auswertungen mit echten Google-Daten ganz einfach mit wenigen Klicks erzeugen können. Ohne diesen Account bekommen Sie leider keine Daten von Google. Und ohne diese Daten können Sie natürlich auch keine eigenen Hinweise auf Optimierungsmöglichkeiten für Ihr Ranking erzeugen.  

R bzw. R-Studio starten und das Skript einkopieren

Holen Sie sich das aktuelle Skript von www.websiteboosting.com/public/downloads/codelistings.html oder einfach.st/rcode6 und kopieren Sie es in R-Studio links oben in das Codefenster ein.

Wer die Serie „R-Leuchtungen“ bisher verfolgt hat, weiß mittlerweile, dass R durch viele nützliche Funktionsbibliotheken (Librarys) erweitert werden kann. Diesmal sind es sechs dieser Librarys. Solche Bibliotheken müssen nur erstmalig installiert werden, jeweils über den Befehl:

install.packages („name_der_library“)

Ersatzweise kann man das auch manuell mit Maushilfe unter dem Menüpunkt „Tools“ und dann „Install Packages“ in R-Studio machen. Beim Tippen in das Eingabefeld erscheinen dann bereits als Vorschlag die Namen dieser Librarys.

Natürlich kann man auch die folgenden Zeilen direkt rechts unten im Consolenfenster eingeben, jeweils gefolgt von einem Return. Hinweis: R beanstandet die normalen deutschen Anführungszeichen mit einer Fehlermeldung. Statt „httr“ muss es also lauten "httr":

install.packages ("httr")
install.packages ("rvest")
install.packages ("janitor")
install.packages ("tidyverse")
install.packages ("googleAuthR")
install.packages ("searchConsoleR")

Wer es noch bequemer haben möchte, löscht einfach die vorstehenden Doppelkreuze „#“ im Skript einmalig, positioniert den Cursor in der jeweiligen Zeile und drückt STRG und Return. Das löst die aktuelle Zeile als Befehl aus. Die „Reaktion“ sieht man unten links in der Console. Diesen Schritt führt man für alle sechs Zeilen aus und startet am Ende R bzw. R-Studio ggf. noch einmal neu, wenn das vom Programm verlangt wird.

Anschließend müssen die Librarys auch in den Speicher von R geladen werden. Bitte immer unterscheiden: Installieren muss man eine Bibliothek immer nur einmal (oder nach einem Rechnerwechsel/Neuinstallation von R). Will man mit einer installierten Bibliothek arbeiten, muss man sie zu Anfang aufrufen:

library(httr)
library(rvest)
library(janitor)
library(tidyverse)
library(googleAuthR)
library(searchConsoleR)


Nötige Parameterdaten eingeben

Vier Änderungen am Skript sind nötig, damit es komplett einmal automatisch durchlaufen kann. Die Zeilen sind für Sie wie immer mit dem Marker # TODO gekennzeichnet und sie sind selbsterklärend, wie Abbildung 1 zeigt.

Ziffer 1: Hier müssen Sie den Pfad angeben, in dem sie die Datei von Google zur Authentifizierung hinterlegt haben. Beachten Sie bitte, dass Sie die Verzeichnisse mit einem nach rechts gekippten Schrägstrich „/“ abteilen, also dem auf der Zifferntaste „7“ auf der Tastatur. Der sog. Backslash „\“ funktioniert nicht bzw. würde zu einer Fehlermeldung führen. Auch der Name der Datei muss natürlich korrekt angegeben werden.

Ziffer 2: Wählen Sie das Start- und Enddatum aus, innerhalb dessen Sie die Daten von der Search Console haben möchten. Hier im Skript ist der 1. Januar bis 30. April 2021 ausgewählt. Überschreiben Sie diese einfach bei Bedarf. Wählen Sie die Zeitspanne bitte nicht zu groß! Zum einen erlaubt die Search Console nur jeweils 16 Monate in die Vergangenheit. Zum anderen, und das ist viel wichtiger, bekommen Sie sonst ggf. zu viele „historische“ Rankingdaten, die so gar nicht mehr aktuell sind.

Ziffer 3: Hier tragen Sie Ihre Domaindaten bzw. die URL dazu ein.

Ziffer 4: Tragen Sie hier die verschiedenen denkbaren Schreibweisen für Ihre Domain/Marke ein. Diese sog. „Brand-Queries“ werden dann vom Skript weggefiltert (Erklärung siehe weiter oben). Im vorliegenden Beispiel haben wir den Domainnamen zusammengeschrieben und getrennt hinterlegt sowie einmal mit angehängter Toplevel-Domain (.com). Brauchen Sie mehr Zeilen, fügen Sie diese einfach nach dem vorliegenden Muster ein, also Anführungszeichen (oben), dann den Begriff, Anführungszeichen oben und wichtig: ein Komma als Abschluss.

Ziffer 5 (optional): Das Skript holt bis zu 100.000 Datensätze aus der Search Console. Sollte das nicht reichen, setzen Sie den Wert an dieser Stelle einfach höher. R holt die Werte in Tranchen von 25.000 Datensätzen. Im Consolenfenster rechts unten sieht das dann ggf. so oder ähnlich aus:

Page [1] of max [5] API calls
Downloaded 25000 rows
Page [2] of max [5] API calls
Downloaded 22861 rows
Page [3] of max [5] API calls
Warnmeldung:
No data found for supplied dates - returning NA

Die zweite Tranche (Page [2]) hat noch 22.861 Datensätze zurückgeliefert, 25.000 wären möglich gewesen. Das heißt, in Summe waren nur 47.861 Zeilen vorhanden. Daher bricht das Skript bei „Page [3]“ mit einer Warnmeldung ab. Das ist in Ordnung so, es ist ja nichts mehr zum Holen da.

Ziffer 6 (optional): Es macht meist keinen Sinn, Rankings mit unter 100 Impressions auszuweisen. Daher finden Sie noch einen letzten, mit dem Schwellenwert 100 (Threshold) vorbelegten Filter. Er bewirkt, dass Sie in der späteren Auswertung nur Doppelrankings bekommen, die pro Suchphrase in Summe mehr als 100 Impressions im gewählten Zeitraum hatten. Möchten Sie diesen Filter nicht nutzen, setzen Sie ihn einfach auf null oder entsprechend niedriger.   

Das war schon alles.

Das Skript einfach laufen lassen

Nachdem Sie die vier bis sechs Anpassungen im Skript vorgenommen haben, speichern Sie es am besten für sich selbst ggf. mit einem eigenen Namen ab (Diskettensymbol oder über das Menü). Jetzt markieren Sie den gesamten Code mit der Maus oder einfacher mit STRG und der Taste A. Rechts oben im Codefenster sehen Sie einen kleinen Button mit der Aufschrift „Run“ (Abbildung 2): Wenn Sie den nun anklicken, läuft das gesamte Skript komplett in einem Rutsch durch.

Wenn R die Daten von Google holt, passiert unten im Consolenfenster scheinbar nichts mehr. Solange kein blinkender Cursor erscheint „> I“, läuft das Skript noch! Also seien Sie geduldig. Ist diese Datenabfrage durchgelaufen, ruft R jede gefundene URL direkt von Ihrer Website ab und quittiert dies mit einer Meldung in roter Schrift nach dem Muster (Beispiel):

Requesting: https://www.websiteboosting.com/magazin/30/websites-fuer-mobilgeraete-optimieren.html

Je nach Anzahl Ihrer URLs, die über die Search Console geliefert wurden (die also auch Rankingdaten erzeugt haben), kann das dann durchaus etwas dauern. Holen Sie sich einen Tee oder Kaffee.

Ist alles durchgelaufen, wird im aktuellen R-Verzeichnis die Datei keyword_kannibalisierung.csv geschrieben. Dies wird durch die letzte Zeile

write_excel_csv2(export, "keyword_kannibalisierung.csv", na = "")

erzeugt. Möchten Sie einen anderen Dateinamen, schreiben Sie ihn einfach direkt im Code um.

Wie sieht das Ergebnisfile aus?

Abbildung 3 zeigt, was Sie vom Ergebnis erwarten dürfen. In der Spalte „query“ (Ziffer 1) sehen Sie jeweils die Blöcke von Suchphrasen, die für mehr als eine URL ranken – entsprechend den gewählten Filtern (siehe oben).

In der Zifferngruppe 2 finden Sie zu jeder rankenden URL deren Position mit dem Keyword, die Klicks, Impressions (Anzahl Suchen, in der die URL ausgespielt wurde) und die Click-Through-Rate (CTR), also das Verhältnis Klicks zu Impressions. Diese Metriken sind neben den Inhalten der URLs wichtig für die Entscheidung, welche URL Sie zur Haupt-URL für das Keyword machen sollten und welche de-optimiert werden sollten. Der Einfachheit halber finden Sie dann weitere Daten (Ziffern 3–5), die zeigen, was auf der URL im Title, in der Description und in der ersten Überschrift H1 steht. Auch diese Angaben sind wichtig zur einfachen Erkennung, wie man am besten de-optimiert. Taucht die Suchphrase z. B. auf den ungewollten URLs im Title auf: Dann raus damit und nehmen Sie etwas anderes, Sinnvolles stattdessen dort hinein. Die letzte Spalte (Ziffer 6) enthält noch den Statuscode der Seite. Steht da etwas anderes als 200 (OK), ist die URL mittlerweile gelöscht worden (404) oder wird weitergeleitet (z. B. 301 oder 302). Tauchen andere Fehlercodes wie 5xx auf, macht Ihr Webserver ggf. Probleme und kommt bereits durch das Abfragen mit Ihrem Skript aus dem Tritt – was ein deutliches Warnsignal hinsichtlich Leistungsfähigkeit/Speed wäre.

Jetzt müssen Sie „nur“ noch entscheiden, welche Doppelrankings Sie beheben oder beheben lassen wollen!