PS PrestaShop Mittel

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.

Aktualisiert Modulversion 1.0.0

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, curl und json
  • Ein Google Cloud-Projekt (kostenloses Konto genügt, keine Kreditkarte erforderlich)
  • Eine bereits für die Domain Ihres Shops verifizierte Google Search Console-Property
OpenSSL prüfen: auf den meisten Hostings (o2switch, OVH, Hetzner, Infomaniak) ist OpenSSL standardmäßig aktiviert. Zum Überprüfen fügen Sie temporär echo extension_loaded('openssl') ? 'OK' : 'KO'; in eine PHP-Testdatei ein.

Installation

  1. Laden Sie die ZIP-Datei dfcannibalization-1.0.0.zip aus Ihrem DataFirefly-Kundenbereich herunter.
  2. Gehen Sie im PrestaShop-Backoffice zu Module → Module Manager.
  3. Klicken Sie auf Modul hochladen und wählen Sie die ZIP aus.
  4. 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

  1. Öffnen Sie console.cloud.google.com.
  2. Erstellen Sie ein neues Projekt (z. B. „DataFirefly SEO“) oder wählen Sie ein bestehendes aus.
  3. Gehen Sie im Navigationsmenü zu APIs & Dienste → Bibliothek.
  4. Suchen Sie nach Google Search Console API und klicken Sie auf Aktivieren.

2. Service-Account erstellen

  1. Gehen Sie im selben Menü zu APIs & Dienste → Anmeldedaten.
  2. Klicken Sie auf Anmeldedaten erstellen → Dienstkonto.
  3. 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

  1. Klicken Sie auf den erstellten Service-Account.
  2. Tab Schlüssel → Schlüssel hinzufügen → Neuen Schlüssel erstellen.
  3. Wählen Sie das Format JSON und bestätigen Sie. Die Datei wird automatisch heruntergeladen.
Bewahren Sie diese Datei sicher auf: sie enthält den privaten Schlüssel des Service-Accounts. Jeder, der dieses JSON besitzt, kann Ihre Search Console-Daten lesen.

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.

  1. Öffnen Sie search.google.com/search-console.
  2. Wählen Sie Ihre Property aus (URL-Präfix oder Domain).
  3. Klicken Sie auf Einstellungen → Nutzer und Berechtigungen.
  4. Klicken Sie auf Nutzer hinzufügen.
  5. Fügen Sie die client_email des Service-Accounts ein und wählen Sie die Berechtigung Eingeschränkt (Nur-Lese-Zugriff).
  6. 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, mit sc-domain:-Präfix).

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.

„403 User does not have sufficient permissions“: der Service-Account wurde noch nicht in der Search Console hinzugefügt, oder die eingegebene Property stimmt nicht exakt mit der in GSC angezeigten überein. Prüfen Sie beide Seiten.

Einen Scan starten

Klicken Sie auf Jetzt scannen. Das Modul:

  1. Fragt die Search Console-API für den konfigurierten Zeitraum ab (Paginierung bis zu 200.000 Zeilen).
  2. Gruppiert die Zeilen nach Suchanfrage.
  3. Filtert nach Ihren Schwellen (Impressionen, Klicks, Position).
  4. Behält nur Suchanfragen mit mindestens 2 unterschiedlichen URLs.
  5. Berechnet den Schweregradwert und die Empfehlung.
  6. 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:

  1. Klicken Sie auf den Button Als Quelle auswählen neben der weiterzuleitenden URL (die, die nicht der Gewinner ist).
  2. Die Ziel-URL (der Gewinner) wird automatisch vorausgefüllt.
  3. 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.

Eine Weiterleitung überprüfen: öffnen Sie die Quell-URL in einem Browser im privaten Modus oder verwenden Sie 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.

Token neu generieren: deinstallieren und installieren Sie das Modul neu, wenn Sie glauben, dass Ihr Token geleakt wurde. Bei der Installation wird ein neuer Token generiert.

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.
War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren