SEO Cannibalization Detector — Komplettanleitung PrestaShop 8 & 9
Erkennen und lösen Sie SEO-Kannibalisierung in Ihrem PrestaShop-Shop über die Google Search Console: Installation, Konfiguration, Scans und 301-Weiterleitungen.
SEO Cannibalization Detector verbindet sich im Nur-Lese-Modus mit Ihrer Google Search Console-Property, identifiziert jede Suchanfrage, bei der mehrere URLs Ihres PrestaShop-Shops sich gegenseitig kannibalisieren, und schlägt eine konkrete Aktion vor: konsolidieren, 301 weiterleiten, differenzieren oder überwachen. Diese Dokumentation behandelt die Installation, die Einrichtung des Google-Service-Accounts, den Start Ihres ersten Scans, das Lesen des Berichts und die Verwaltung der Weiterleitungen.
Voraussetzungen
- PrestaShop 8.0 bis 9.x
- PHP 8.1 oder höher, mit den Erweiterungen
openssl,curlundjson - Ein Google Cloud-Projekt (kostenloses Konto genügt, keine Kreditkarte erforderlich)
- Eine bereits für die Domain Ihres Shops verifizierte Google Search Console-Property
echo extension_loaded('openssl') ? 'OK' : 'KO'; in eine PHP-Testdatei ein.
Installation
- Laden Sie die ZIP-Datei
dfcannibalization-1.0.0.zipaus Ihrem DataFirefly-Kundenbereich herunter. - Gehen Sie im PrestaShop-Backoffice zu Module → Module Manager.
- Klicken Sie auf Modul hochladen und wählen Sie die ZIP aus.
- Klicken Sie nach Abschluss der Installation auf Konfigurieren.
Das Modul erstellt 4 SQL-Tabellen (scan, query, page, action), einen Admin-Tab „DataFirefly Cannibalization“ unter IMPROVE und einen eindeutigen Token für geplante Scans.
Google-Service-Account erstellen
Ein Service-Account ist ein technischer Google-Account, der es Ihrem Shop ermöglicht, Search Console-Daten ohne interaktive Authentifizierung zu lesen. Er ist kostenlos und auf Nur-Lese-Zugriff beschränkt.
1. Search Console API aktivieren
- Öffnen Sie console.cloud.google.com.
- Erstellen Sie ein neues Projekt (z. B. „DataFirefly SEO“) oder wählen Sie ein bestehendes aus.
- Gehen Sie im Navigationsmenü zu APIs & Dienste → Bibliothek.
- Suchen Sie nach Google Search Console API und klicken Sie auf Aktivieren.
2. Service-Account erstellen
- Gehen Sie im selben Menü zu APIs & Dienste → Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen → Dienstkonto.
- Geben Sie ihm einen aussagekräftigen Namen (z. B. „datafirefly-cannibalization“) und bestätigen Sie. Die optionalen Rollen- und Benutzerzugriffsschritte können Sie überspringen.
3. JSON-Schlüssel generieren
- Klicken Sie auf den erstellten Service-Account.
- Tab Schlüssel → Schlüssel hinzufügen → Neuen Schlüssel erstellen.
- Wählen Sie das Format JSON und bestätigen Sie. Die Datei wird automatisch heruntergeladen.
Service-Account in Search Console autorisieren
Der Service-Account hat seine eigene E-Mail-Adresse (sichtbar im JSON unter dem Schlüssel client_email, z. B. datafirefly-cannibalization@projekt-123.iam.gserviceaccount.com). Diese muss für den Lesezugriff auf Ihre Property autorisiert werden.
- Öffnen Sie search.google.com/search-console.
- Wählen Sie Ihre Property aus (URL-Präfix oder Domain).
- Klicken Sie auf Einstellungen → Nutzer und Berechtigungen.
- Klicken Sie auf Nutzer hinzufügen.
- Fügen Sie die
client_emaildes Service-Accounts ein und wählen Sie die Berechtigung Eingeschränkt (Nur-Lese-Zugriff). - Bestätigen Sie.
Modul konfigurieren
Kehren Sie zum PrestaShop-Backoffice in die Modulkonfiguration zurück.
Service-Account und Property
- Service-Account-JSON: öffnen Sie die heruntergeladene Datei und fügen Sie ihren gesamten Inhalt in das Feld ein.
- Site-URL (GSC-Property): reproduzieren Sie exakt das in Search Console angezeigte Format.
- Für eine URL-Präfix-Property:
https://www.beispiel.com/(mit abschließendem Schrägstrich). - Für eine Domain-Property:
sc-domain:beispiel.com(ohne Protokoll, mitsc-domain:-Präfix).
- Für eine URL-Präfix-Property:
Erkennungsschwellen
- Analysezeitraum: 7 bis 490 Tage. 90 Tage sind ein guter Kompromiss zwischen Aktualität und statistischem Volumen.
- Mindestimpressionen: ignoriert sehr niedrige Suchanfragen. Standardmäßig 30. Setzen Sie 10, wenn Ihr Shop neu ist.
- Mindestklicks: Klickschwelle pro Suchanfrage, um analysiert zu werden. Standardmäßig 1. Setzen Sie 0, um auch Suchanfragen mit Impressionen ohne Klicks einzubeziehen (nützlich für junge Sites).
- Maximalposition: ignoriert Suchanfragen, bei denen die beste URL über dieser Position liegt. Standardmäßig 30.
Automatische 301-Weiterleitungen
Aktiviert das Abfangen über den PrestaShop-Dispatcher-Hook. Deaktivieren Sie es, wenn Sie Weiterleitungen lieber manuell in Traffic und SEO → Weiterleitungen verwalten möchten.
Klicken Sie auf Speichern und dann auf GSC-Verbindung testen. Wenn die Verbindung erfolgreich ist, zeigt das Modul eine grüne Meldung an.
Einen Scan starten
Klicken Sie auf Jetzt scannen. Das Modul:
- Fragt die Search Console-API für den konfigurierten Zeitraum ab (Paginierung bis zu 200.000 Zeilen).
- Gruppiert die Zeilen nach Suchanfrage.
- Filtert nach Ihren Schwellen (Impressionen, Klicks, Position).
- Behält nur Suchanfragen mit mindestens 2 unterschiedlichen URLs.
- Berechnet den Schweregradwert und die Empfehlung.
- Persistiert alles in der Datenbank.
Für eine durchschnittliche Site (10.000 bis 50.000 Seiten) dauert ein vollständiger 90-Tage-Scan zwischen 30 Sekunden und 3 Minuten.
Den Bericht lesen
Sobald der Scan abgeschlossen ist, öffnen Sie ihn über den Tab Scan-Verlauf. Der Bericht listet jede kannibalisierte Suchanfrage auf mit:
- Dem Keyword (der Google-Suchanfrage).
- Dem Schweregradwert als farbiges Abzeichen (low / medium / high / critical).
- Der Anzahl konkurrierender URLs.
- Der Empfehlung (REDIRECT 301, CONSOLIDATE, DIFFERENTIATE, MONITOR).
- Dem Status (ausstehend, geprüft, gelöst, ignoriert).
Klicken Sie auf eine Suchanfrage, um die Details zu sehen: die Liste der konkurrierenden URLs mit Klicks, Impressionen, durchschnittlicher Position, CTR und Seitentyp (Produkt, Kategorie, CMS, Blog usw.). Die als „Gewinner“ identifizierte URL ist grün hervorgehoben.
Den Schweregradwert verstehen
Der Wert geht bis 100 und kombiniert 4 gewichtete Faktoren:
- Anzahl konkurrierender Seiten (max. 25 Punkte) — Formel:
min((n-1)/3, 1) × 25. Ab 4 konkurrierenden URLs ist der Faktor maximal. - Klickverteilung (max. 30 Punkte) — basiert auf einem invertierten HHI-Index. Eine 50/50-Kannibalisierung zwischen zwei URLs ist schlimmer als 95/5. Formel:
((1-HHI)/(1-1/n)) × 30. - Positionsabstand (max. 30 Punkte) — gewichtet nach der Position des besten Ergebnisses. Multiplikator × 1.0 wenn beste Position ≤ 10, × 0.7 wenn ≤ 20, × 0.4 darüber hinaus.
- Impressionsvolumen (max. 15 Punkte) — logarithmische Skala:
min(log10(impr+1)/4, 1) × 15.
Stufen: low < 26, medium < 51, high < 76, critical ≥ 76.
Die 4 Empfehlungen
REDIRECT 301
Das Modul schlägt diese Aktion vor, wenn eine URL mindestens 70% der Klicks bei einer durchschnittlichen Position ≤ 15 abfängt. Es ist die „gewinnende“ URL: Google betrachtet sie eindeutig als beste Antwort. Die anderen URLs werden per 301 darauf umgeleitet. Bei Bedarf kann der Inhalt vor der Weiterleitung redaktionell zusammengeführt werden.
CONSOLIDATE
Die Leistung ist aufgeteilt (kein klarer Gewinner). Empfehlung: den Inhalt der beiden URLs in einer einzelnen zusammenführen, dann die andere per 301 weiterleiten. Diese Arbeit ist redaktionell, nicht automatisierbar. Das Modul identifiziert den Fall, führt die Zusammenführung aber nicht für Sie durch.
DIFFERENTIATE
Die Seiten sind unterschiedlichen Typs (Beispiel: ein Produktdatenblatt und ein Blogartikel). Die Kannibalisierung deutet auf ein Targeting-Problem der Title/Meta-Tags hin und nicht auf einen echten Inhaltskonflikt. Empfehlung: die Tags überarbeiten, um auf unterschiedliche Suchanfragen abzuzielen (Long-Tail im Blog, Haupt-Suchanfrage auf dem Produkt).
MONITOR
Der Wert ist niedrig (< 26). Keine dringende Aktion. Das Modul behält die Suchanfrage im Bericht, kennzeichnet sie aber als „zu beobachten“.
Eine 301-Weiterleitung anwenden
Aus dem Detail einer mit REDIRECT 301 empfohlenen Suchanfrage:
- Klicken Sie auf den Button Als Quelle auswählen neben der weiterzuleitenden URL (die, die nicht der Gewinner ist).
- Die Ziel-URL (der Gewinner) wird automatisch vorausgefüllt.
- Klicken Sie auf Weiterleitung anwenden.
Die Regel wird gespeichert und sofort vom actionDispatcherBefore-Hook ausgeliefert. Performance: ein einziger SELECT pro PHP-FPM-Worker dank statischem In-Memory-Cache.
curl -I https://ihr-shop.com/alte-url. Sie sollten ein HTTP/1.1 301 und einen Location:-Header sehen, der auf die neue URL verweist.
Aktive Weiterleitungen verwalten
Der Tab Redirects 301 listet alle aktiven Weiterleitungen mit ihrem Hit-Zähler auf. Sie können:
- Deaktivieren einer Weiterleitung ohne sie zu löschen (nützlich, um ein Rollback zu testen).
- Löschen einer Weiterleitung endgültig.
- Den Hit-Zähler ansehen seit Erstellung (misst die Effektivität).
Geplante Scans über Cron
Das Modul stellt einen token-geschützten Front-Controller bereit. Die URL wird in der Modulkonfiguration in der Form angezeigt:
https://ihr-shop.com/index.php?fc=module&module=dfcannibalization&controller=cron&token=XXXX
Standard-Linux-Cron
Auf einem Linux/Unix-Server mit SSH-Zugriff bearbeiten Sie Ihre Crontab:
crontab -e
Beispielsweise einen Scan jeden Sonntag um 23 Uhr hinzufügen:
0 23 * * 0 curl -s "https://ihr-shop.com/index.php?fc=module&module=dfcannibalization&controller=cron&token=XXXX" > /dev/null
Geplante Aufgaben OVH / o2switch / Infomaniak
Alle diese Hostings bieten einen Planer in ihrem Backoffice an. Geben Sie die vollständige URL und die gewünschte Frequenz ein. Für die meisten Shops genügt ein wöchentlicher Scan völlig.
Multi-Shop
Alle Tabellen enthalten eine id_shop-Spalte. Die Scans sind auf den aktiven Shop im Auswahlmenü des Backoffices beschränkt. Jeder Shop hat seine eigene Konfiguration (Service-Account, GSC-URL, Schwellen) und seinen eigenen Scan-Verlauf.
Wenn Sie mehrere Domains aus einem einzigen Backoffice verwalten, erstellen Sie pro Property einen separaten Service-Account, oder autorisieren Sie denselben Service-Account auf allen Ihren Search Console-Properties.
Fehlerbehebung
„OpenSSL extension required“
Bitten Sie Ihren Hoster, die PHP-OpenSSL-Erweiterung zu aktivieren. Bei 99% der modernen Hostings ist sie standardmäßig aktiviert.
„Invalid service account JSON“
Das eingefügte JSON ist unvollständig oder beschädigt. Laden Sie den Schlüssel erneut aus der Google Cloud Console herunter und fügen Sie ihn vollständig und unverändert ein.
„Site URL must match exactly the GSC property“
Prüfen Sie das Format in der Search Console. Eine URL-Präfix-Property wird als https://www.beispiel.com/ (abschließender Schrägstrich) geschrieben. Eine Domain-Property wird als sc-domain:beispiel.com (kein Protokoll, kein Schrägstrich) geschrieben.
„403 User does not have sufficient permissions“
Der Service-Account wurde nicht in der Search Console autorisiert, oder er wurde auf einer anderen Property autorisiert. Prüfen Sie Einstellungen → Nutzer und Berechtigungen.
Der Scan läuft, findet aber keine Kannibalisierung
Ihre Schwellen sind vielleicht zu hoch für Ihr Volumen. Versuchen Sie, die Mindestimpressionen auf 5 und die Mindestklicks auf 0 zu senken.
Eine 301-Weiterleitung wird nicht ausgelöst
Prüfen Sie, dass (1) die Option „Automatische 301-Weiterleitungen“ in der Konfiguration aktiviert ist, (2) die Regel im Tab Redirects 301 als aktiv markiert ist, (3) der PrestaShop-Cache nach Aktivierung des Moduls geleert wurde.
Weitere Schritte
- Überprüfungsrichtlinie: bei critical-Suchanfragen innerhalb von 7 Tagen eingreifen. Bei high innerhalb von 30 Tagen. Bei medium im Rahmen einer vierteljährlichen Überprüfung.
- 301-Strategie versus Konsolidierung: die 301-Weiterleitung überträgt PageRank, verliert aber die Möglichkeit, zwei indexierte Seiten zu haben. Bevorzugen Sie Differenzierung für unterschiedliche Suchintentionen.
- Sonderfall Produktdatenblätter: wenn sich zwei sehr ähnliche Varianten gegenseitig kannibalisieren, führen Sie sie zu einem Produkt mit Varianten zusammen, anstatt zu zwei separaten Produkten.