SEO Cannibalization Detector: pełny przewodnik PrestaShop 8 i 9
Wykrywaj i rozwiązuj kanibalizację SEO sklepu PrestaShop przez Google Search Console: instalacja, konfiguracja, skany i przekierowania 301.
SEO Cannibalization Detector łączy się w trybie tylko do odczytu z Twoją usługą Google Search Console, wskazuje każde zapytanie, na którym kilka adresów URL Twojego sklepu PrestaShop kanibalizuje się nawzajem, i proponuje konkretne działanie: konsolidację, przekierowanie 301, różnicowanie albo obserwację. Ta dokumentacja obejmuje instalację, konfigurację konta usługi Google, uruchomienie pierwszego skanu, odczyt raportu i zarządzanie przekierowaniami.
Wymagania
- PrestaShop 8.0 do 9.x
- PHP 8.1 lub nowszy, z rozszerzeniami
openssl,curlijson - Projekt Google Cloud (bezpłatne konto wystarczy, żadne środki nie są wymagane)
- Usługa Google Search Console już zweryfikowana dla domeny Twojego sklepu
echo extension_loaded('openssl') ? 'OK' : 'KO'; w testowym pliku PHP.
Instalacja
- Pobierz ZIP
dfcannibalization-1.0.0.zipze swojego konta klienta DataFirefly. - W back office PrestaShop przejdź do Moduły → Menedżer modułów.
- Kliknij Wgraj moduł i wybierz ZIP.
- Po zakończeniu instalacji kliknij Konfiguruj.
Moduł tworzy 4 tabele SQL (scan, query, page, action), zakładkę administracyjną „DataFirefly Cannibalization” w sekcji IMPROVE oraz unikalny token do skanów zaplanowanych.
Utworzenie konta usługi Google
Konto usługi to techniczne konto Google, które pozwala Twojemu sklepowi odczytywać dane Search Console bez interaktywnego uwierzytelniania. Jest bezpłatne i ograniczone do odczytu.
1. Włączenie API Search Console
- Otwórz console.cloud.google.com.
- Utwórz nowy projekt (np. „DataFirefly SEO”) albo wybierz istniejący.
- W menu nawigacji przejdź do API i usługi → Biblioteka.
- Wyszukaj Google Search Console API i kliknij Włącz.
2. Utworzenie konta usługi
- W tym samym menu przejdź do API i usługi → Dane logowania.
- Kliknij Utwórz dane logowania → Konto usługi.
- Nadaj mu czytelną nazwę (np. „datafirefly-cannibalization”) i zatwierdź. Opcjonalne kroki dotyczące ról i dostępu użytkowników możesz pominąć.
3. Wygenerowanie klucza JSON
- Kliknij utworzone konto usługi.
- Zakładka Klucze → Dodaj klucz → Utwórz klucz.
- Wybierz format JSON i zatwierdź. Plik pobiera się automatycznie.
Autoryzacja konta usługi w Search Console
Konto usługi ma własny adres e-mail (widoczny w JSON pod kluczem client_email, np. datafirefly-cannibalization@projekt-123.iam.gserviceaccount.com). Trzeba nadać mu uprawnienie odczytu do Twojej usługi.
- Otwórz search.google.com/search-console.
- Wybierz swoją usługę (URL-prefix albo domain).
- Kliknij Ustawienia → Użytkownicy i uprawnienia.
- Kliknij Dodaj użytkownika.
- Wklej adres
client_emailkonta usługi i wybierz uprawnienie Ograniczone (tylko odczyt). - Zatwierdź.
Konfiguracja modułu
Wróć do back office PrestaShop, do konfiguracji modułu.
Konto usługi i usługa GSC
- JSON konta usługi: otwórz pobrany plik, skopiuj i wklej całą jego zawartość w pole.
- Adres URL witryny (usługa GSC): odwzoruj dokładnie format wyświetlany w Search Console.
- Dla usługi typu URL-prefix:
https://www.przyklad.pl/(z końcowym ukośnikiem). - Dla usługi typu domain:
sc-domain:przyklad.pl(bez protokołu, z prefiksemsc-domain:).
- Dla usługi typu URL-prefix:
Progi wykrywania
- Okres analizy: od 7 do 490 dni. 90 dni to dobry kompromis między świeżością a wolumenem statystycznym.
- Minimum wyświetleń: pomija bardzo słabe zapytania. Domyślnie 30. Ustaw 10, jeśli Twój sklep jest młody.
- Minimum kliknięć: próg kliknięć per zapytanie, aby zostało przeanalizowane. Domyślnie 1. Ustaw 0, aby objąć też zapytania z wyświetleniami bez kliknięć (przydatne dla młodych witryn).
- Maksymalna pozycja: pomija zapytania, w których najlepszy adres URL jest poza tą pozycją. Domyślnie 30.
Automatyczne przekierowania 301
Włącza przechwytywanie przez hook dispatcher PrestaShop. Wyłącz, jeśli wolisz zarządzać przekierowaniami ręcznie w Ruch i SEO → Przekierowania.
Kliknij Zapisz, a następnie Testuj połączenie GSC. Jeśli połączenie się powiedzie, moduł wyświetli zielony komunikat.
Uruchomienie skanu
Kliknij Uruchom skan teraz. Moduł:
- Odpytuje API Search Console za skonfigurowany okres (paginacja do 200 000 wierszy).
- Grupuje wiersze po zapytaniu.
- Filtruje według Twoich progów (wyświetlenia, kliknięcia, pozycja).
- Zachowuje wyłącznie zapytania mające co najmniej 2 różne adresy URL.
- Wylicza ocenę ważności i rekomendację.
- Zapisuje wszystko w bazie.
Dla średniej witryny (10 000 do 50 000 stron) pełny skan na 90 dni trwa od 30 sekund do 3 minut.
Odczyt raportu
Po zakończeniu skanu otwórz go z zakładki Historia skanów. Raport listuje każde skanibalizowane zapytanie, z:
- Słowem kluczowym (zapytanie Google).
- Oceną ważności w postaci kolorowej plakietki (low / medium / high / critical).
- Liczbą konkurujących adresów URL.
- Rekomendacją (REDIRECT 301, CONSOLIDATE, DIFFERENTIATE, MONITOR).
- Statusem (oczekujące, przejrzane, rozwiązane, zignorowane).
Kliknij zapytanie, aby zobaczyć szczegóły: listę konkurujących adresów URL z kliknięciami, wyświetleniami, średnią pozycją, CTR i typem strony (produkt, kategoria, CMS, blog itd.). Adres wskazany jako „zwycięski” jest podświetlony na zielono.
Zrozumieć ocenę ważności
Ocena jest w skali 100 i łączy 4 ważone czynniki:
- Liczba konkurujących stron (maks. 25 punktów): wzór
min((n-1)/3, 1) × 25. Od 4 konkurujących adresów czynnik jest maksymalny. - Rozkład kliknięć (maks. 30 punktów): oparty na odwróconym wskaźniku HHI. Kanibalizacja 50/50 między dwoma adresami jest poważniejsza niż 95/5. Wzór:
((1-HHI)/(1-1/n)) × 30. - Różnica pozycji (maks. 30 punktów): ważona pozycją najlepszego wyniku. Bonifikacja × 1.0 przy najlepszej pozycji do 10, × 0.7 do 20, × 0.4 powyżej.
- Wolumen wyświetleń (maks. 15 punktów): skala logarytmiczna
min(log10(impr+1)/4, 1) × 15.
Poziomy: low < 26, medium < 51, high < 76, critical ≥ 76.
Cztery rekomendacje
REDIRECT 301
Moduł proponuje to działanie, gdy jeden adres URL zbiera co najmniej 70% kliknięć przy średniej pozycji do 15. To adres „zwycięski”: Google wyraźnie uznaje go za najlepszą odpowiedź. Pozostałe adresy są do niego przekierowywane w 301. Treść można w razie potrzeby scalić redakcyjnie przed przekierowaniem.
CONSOLIDATE
Wyniki są rozproszone (brak wyraźnego zwycięzcy). Rekomendacja: scal treść obu adresów w jeden, a następnie przekieruj drugi w 301. To praca redakcyjna, nieautomatyzowalna. Moduł wskazuje przypadek, ale nie wykonuje scalenia za Ciebie.
DIFFERENTIATE
Strony są różnych typów (na przykład karta produktu i artykuł blogowy). Kanibalizacja wskazuje raczej na problem z celowaniem znaczników title i meta niż na prawdziwy konflikt treści. Rekomendacja: przepracuj znaczniki, aby celowały w różne zapytania (długi ogon na blogu, zapytanie główne na produkcie).
MONITOR
Ocena jest niska (< 26). Brak pilnych działań. Moduł zachowuje zapytanie w raporcie, ale klasyfikuje je jako „do obserwacji”.
Zastosowanie przekierowania 301
Ze szczegółów zapytania z rekomendacją REDIRECT 301:
- Kliknij przycisk Wybierz jako źródło obok adresu do przekierowania (tego, który nie jest zwycięski).
- Adres docelowy (zwycięski) jest wypełniany automatycznie.
- Kliknij Zastosuj przekierowanie.
Reguła jest zapisywana i serwowana natychmiast z hooka actionDispatcherBefore. Wydajność: jeden SELECT na worker PHP-FPM dzięki statycznemu cache w pamięci.
curl -I https://twoj-sklep.pl/stary-adres. Powinieneś zobaczyć HTTP/1.1 301 oraz nagłówek Location: wskazujący nowy adres.
Zarządzanie aktywnymi przekierowaniami
Zakładka Redirects 301 listuje wszystkie działające przekierowania z licznikiem trafień. Możesz:
- Wyłączyć przekierowanie bez usuwania go (przydatne do testowania cofnięcia zmiany).
- Usunąć przekierowanie na stałe.
- Zobaczyć liczbę trafień od utworzenia (mierzy skuteczność).
Skany zaplanowane przez cron
Moduł udostępnia front controller chroniony tokenem. Adres jest wyświetlany w konfiguracji modułu w postaci:
https://twoj-sklep.pl/index.php?fc=module&module=dfcannibalization&controller=cron&token=XXXX
Standardowy cron Linux
Na serwerze Linux/Unix z dostępem SSH edytuj crontab:
crontab -e
Dodaj na przykład skan w każdą niedzielę o 23:00:
0 23 * * 0 curl -s "https://twoj-sklep.pl/index.php?fc=module&module=dfcannibalization&controller=cron&token=XXXX" > /dev/null
Zadania zaplanowane OVH / o2switch / Infomaniak
Wszyscy ci hostingodawcy oferują planer w swoim panelu. Podaj pełny adres URL i żądaną częstotliwość. Dla większości sklepów skan tygodniowy w zupełności wystarcza.
Multistore
Wszystkie tabele zawierają kolumnę id_shop. Skany są ograniczone do sklepu aktywnego w selektorze u góry back office. Każdy sklep ma własną konfigurację (konto usługi, adres GSC, progi) i własną historię skanów.
Jeśli zarządzasz kilkoma domenami z jednego back office, utwórz osobne konto usługi per usługa GSC albo autoryzuj to samo konto usługi we wszystkich swoich usługach Search Console.
Rozwiązywanie problemów
„OpenSSL extension required”
Poproś hostingodawcę o włączenie rozszerzenia PHP OpenSSL. Na 99% nowoczesnych hostingów jest ono włączone domyślnie.
„Invalid service account JSON”
Wklejony JSON jest niekompletny albo uszkodzony. Pobierz klucz ponownie z Google Cloud Console i wklej go w całości, bez modyfikacji.
„Site URL must match exactly the GSC property”
Sprawdź format w Search Console. Usługa typu URL-prefix zapisuje się jako https://www.przyklad.pl/ (końcowy ukośnik). Usługa typu domain zapisuje się jako sc-domain:przyklad.pl (bez protokołu, bez ukośnika).
„403 User does not have sufficient permissions”
Konto usługi nie zostało autoryzowane w Search Console albo zostało autoryzowane w innej usłudze. Sprawdź Ustawienia → Użytkownicy i uprawnienia.
Skan działa, ale nie znajduje żadnej kanibalizacji
Twoje progi mogą być zbyt wysokie jak na Twój wolumen. Spróbuj obniżyć minimum wyświetleń do 5, a minimum kliknięć do 0.
Przekierowanie 301 się nie uruchamia
Sprawdź, czy (1) opcja „Automatyczne przekierowania 301″ jest włączona w konfiguracji, (2) reguła jest oznaczona jako aktywna w zakładce Redirects 301, (3) cache PrestaShop został wyczyszczony po włączeniu modułu.
Dalsze kroki
- Polityka przeglądu: przy zapytaniach critical interweniuj w ciągu 7 dni. Przy high w ciągu 30 dni. Przy medium w ramach przeglądu kwartalnego.
- Strategia 301 kontra konsolidacja: przekierowanie 301 przekazuje PageRank, ale odbiera możliwość posiadania dwóch zaindeksowanych stron. Przy różnych intencjach wyszukiwania wybieraj różnicowanie.
- Przypadek szczególny kart produktów: jeśli kanibalizują się dwie bardzo zbliżone warianty, scal je w jeden produkt z odmianami zamiast trzymać dwa osobne produkty.