PS PrestaShop Średnio zaawansowany

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.

Zaktualizowano Wersja modułu 1.0.0

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, curl i json
  • Projekt Google Cloud (bezpłatne konto wystarczy, żadne środki nie są wymagane)
  • Usługa Google Search Console już zweryfikowana dla domeny Twojego sklepu
Sprawdzenie OpenSSL: na większości hostingów (o2switch, OVH, Hetzner, Infomaniak) OpenSSL jest włączony domyślnie. Aby to zweryfikować, dodaj tymczasowo echo extension_loaded('openssl') ? 'OK' : 'KO'; w testowym pliku PHP.

Instalacja

  1. Pobierz ZIP dfcannibalization-1.0.0.zip ze swojego konta klienta DataFirefly.
  2. W back office PrestaShop przejdź do Moduły → Menedżer modułów.
  3. Kliknij Wgraj moduł i wybierz ZIP.
  4. 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

  1. Otwórz console.cloud.google.com.
  2. Utwórz nowy projekt (np. „DataFirefly SEO”) albo wybierz istniejący.
  3. W menu nawigacji przejdź do API i usługi → Biblioteka.
  4. Wyszukaj Google Search Console API i kliknij Włącz.

2. Utworzenie konta usługi

  1. W tym samym menu przejdź do API i usługi → Dane logowania.
  2. Kliknij Utwórz dane logowania → Konto usługi.
  3. 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

  1. Kliknij utworzone konto usługi.
  2. Zakładka Klucze → Dodaj klucz → Utwórz klucz.
  3. Wybierz format JSON i zatwierdź. Plik pobiera się automatycznie.
Przechowuj ten plik w bezpiecznym miejscu: zawiera klucz prywatny konta usługi. Każdy, kto ma ten JSON, może odczytywać Twoje dane Search Console.

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.

  1. Otwórz search.google.com/search-console.
  2. Wybierz swoją usługę (URL-prefix albo domain).
  3. Kliknij Ustawienia → Użytkownicy i uprawnienia.
  4. Kliknij Dodaj użytkownika.
  5. Wklej adres client_email konta usługi i wybierz uprawnienie Ograniczone (tylko odczyt).
  6. 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 prefiksem sc-domain:).

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.

„403 User does not have sufficient permissions”: konto usługi nie zostało jeszcze dodane w Search Console albo podana usługa nie odpowiada dokładnie tej wyświetlanej w GSC. Sprawdź obie strony.

Uruchomienie skanu

Kliknij Uruchom skan teraz. Moduł:

  1. Odpytuje API Search Console za skonfigurowany okres (paginacja do 200 000 wierszy).
  2. Grupuje wiersze po zapytaniu.
  3. Filtruje według Twoich progów (wyświetlenia, kliknięcia, pozycja).
  4. Zachowuje wyłącznie zapytania mające co najmniej 2 różne adresy URL.
  5. Wylicza ocenę ważności i rekomendację.
  6. 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:

  1. Kliknij przycisk Wybierz jako źródło obok adresu do przekierowania (tego, który nie jest zwycięski).
  2. Adres docelowy (zwycięski) jest wypełniany automatycznie.
  3. 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.

Weryfikacja działania przekierowania: otwórz adres źródłowy w przeglądarce w trybie prywatnym albo użyj 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.

Regeneracja tokena: odinstaluj i zainstaluj moduł ponownie, jeśli podejrzewasz wyciek tokena. Przy instalacji zostanie wygenerowany nowy token.

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.
Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia