GSC Connect: dokumentacja
Wszystko, aby zainstalować, skonfigurować i używać GSC Connect: OAuth Google, sitemapy, masowa inspekcja adresów URL, raporty kliknięć i pozycji, alerty spadków i deindeksacji, cron zgodny z hostingiem współdzielonym.
GSC Connect sprowadza całą moc Google Search Console bezpośrednio do back office PrestaShop: połączenie OAuth jednym kliknięciem, przesyłanie sitemap, masowa inspekcja adresów URL, raporty kliknięć i pozycji per produkt i kategoria, automatyczne alerty spadków i deindeksacji. Ten przewodnik obejmuje instalację, konfigurację OAuth Google, pierwszą synchronizację, planowanie crona, odczyt raportów, rozwiązywanie typowych błędów i architekturę wewnętrzną.
Instalacja
Moduł wdraża się jak każdy standardowy moduł PrestaShop: żadnych zależności Composera, żadnego trwałego workera, żadnej usługi zewnętrznej poza Google.
- Pobierz
dfgscconnect.zipze swojego konta DataFirefly (link do pobrania otrzymany po zamówieniu). - Back office → Moduły → Menedżer modułów → Wgraj moduł.
- Przeciągnij i upuść ZIP. PrestaShop automatycznie instaluje 8 tabel
dfgsc_*, zakładki menu i powiązane hooki. - Kliknij Konfiguruj na karcie modułu.
Natywny multistore. Moduł jest wielosklepowy. Każdy sklep przechowuje własny token OAuth, własną witrynę Search Console i własną historię metryk. Możesz podłączyć jeden sklep bez dotykania pozostałych.
Wymagania
- PrestaShop 8.0.0 do 9.99.99
- PHP 7.4, 8.0, 8.1, 8.2 lub 8.3
- MySQL 5.6+ lub MariaDB 10.3+
- Włączone rozszerzenie PHP
curl(domyślnie u wszystkich hostingodawców) - Konto Google, które ma już dostęp właściciela lub właściciela delegowanego do witryny Search Console Twojego sklepu
Konfiguracja OAuth Google
Moduł używa OAuth 2.0, aby korzystać z Search Console w imieniu właściciela sklepu. Ten krok wykonuje się raz i zajmuje około 5 minut. Konto usługi nie jest wymagane: uwierzytelnianie korzysta bezpośrednio z konta Google, które ma już dostęp do Twojej witryny Search Console.
Krok 1: utworzenie projektu Google Cloud
- Wejdź na console.cloud.google.com kontem Google, które ma dostęp do Search Console.
- Kliknij selektor projektu u góry, a następnie Nowy projekt.
- Nazwij go na przykład
prestashop-gsci utwórz. - Po utworzeniu wybierz ten nowy projekt.
Krok 2: włączenie API Search Console
- Menu → API i usługi → Biblioteka.
- Wyszukaj Google Search Console API.
- Kliknij pozycję, a następnie Włącz.
Krok 3: konfiguracja ekranu zgody
- Menu → API i usługi → OAuth consent screen.
- Wybierz External, jeśli Twoje konto Google nie należy do organizacji Google Workspace, w przeciwnym razie Internal.
- Podaj nazwę aplikacji (na przykład
GSC Connect), adres wsparcia i domenę sklepu. - Na ekranie Scopes dodaj zakres
https://www.googleapis.com/auth/webmasters(odczyt i zapis Search Console). - Na ekranie Test users dodaj swój adres Google. Dopóki ekran pozostaje w trybie testowym, to wystarczy do użytku prywatnego: nie trzeba zgłaszać aplikacji do weryfikacji przez Google.
Krok 4: utworzenie danych uwierzytelniających OAuth
- Menu → API i usługi → Credentials.
- Create Credentials → OAuth client ID.
- Typ aplikacji: Web application.
- Nazwa:
GSC Connect(dowolna). - W Autoryzowanych źródłach JavaScript dodaj domenę swojego sklepu z protokołem HTTPS:
https://twoj-sklep.pl. - W Autoryzowanym URI przekierowania wklej dokładny adres wyświetlony w konfiguracji modułu PrestaShop (ramka Adres przekierowania OAuth).
- Kliknij Create. Google wyświetla Client ID i Client Secret.
Adres przekierowania musi być identyczny co do znaku. Łącznie z protokołem (https), subdomeną (www lub bez) i brakiem końcowego ukośnika. Wystarczy jedna różnica i Google blokuje połączenie błędem redirect_uri_mismatch.
Krok 5: wprowadzenie danych w PrestaShop
- Back office → moduł → Konfiguruj.
- Wklej Client ID i Client Secret.
- Zapisz formularz. Pojawi się przycisk Połącz z Google.
- Kliknij go. Zostaniesz przekierowany na stronę zgody Google.
- Zatwierdź uprawnienia, wrócisz do BO PrestaShop.
- Lista Twoich witryn Search Console jest pobierana automatycznie: moduł domyślnie wybiera tę, która odpowiada domenie sklepu.
Pierwsze uruchomienie
Po nawiązaniu połączenia OAuth uruchom pierwszą synchronizację, aby sprowadzić dane:
- Zakładka Pulpit. Domyślna witryna jest już wybrana.
- Kliknij Synchronizuj teraz. Moduł pobiera ostatnie 28 dni danych (kliknięcia, wyświetlenia, CTR, pozycja) na poziomie strony i zapytania. Licz od 30 sekund do 2 minut w zależności od wielkości katalogu.
- Zakładka Sitemapy. Kandydaci są wykrywani automatycznie (
/sitemap.xmlw katalogu głównym plus wzorzec*_sitemap.xmlgenerowany przez modułgsitemapPrestaShop). Kliknij Prześlij obok każdej istotnej sitemapy. - Zakładka Inspekcja. Kliknij Zakolejkuj wszystkie aktywne produkty. Kolejka wypełnia się natychmiast. Faktyczne przetwarzanie odbywa się przez cron z poszanowaniem limitu Google wynoszącego 2000 inspekcji dziennie.
Opóźnienie Search Console. Google udostępnia dane Search Analytics z około 48 h opóźnienia. Jeśli dopiero co się połączyłeś, część metryk z wczoraj lub przedwczoraj nie będzie jeszcze dostępna. To normalne. Moduł uwzględnia to automatycznie w obliczeniach spadków (okno kroczące z przesunięciem 2 dni).
Pulpit
Pulpit gromadzi 8 KPI z 28 dni:
- Kliknięcia: łączna liczba kliknięć organicznych w oknie
- Wyświetlenia: łączna liczba wyświetleń w SERP
- Średni CTR: procent kliknięć względem wyświetleń
- Średnia pozycja: średnia ważona pozycja na wszystkich zapytaniach
- Nieprzeczytane alerty: liczba otwartych alertów do obsłużenia
- Strony niezaindeksowane: liczba przeinspekowanych stron, których werdykt Google to FAIL lub NEUTRAL
- Limit dnia: wywołania API Inspekcji zużyte z dziennego limitu
- Ostatnia synchronizacja: data i godzina ostatniego przebiegu crona
sync
Pod KPI wykres ewolucji z 28 dni pokazuje kliknięcia (linia ciągła) i wyświetlenia (linia przerywana na osi pomocniczej). Chart.js jest dołączony lokalnie, żadna zależność CDN nie jest ładowana.
Po prawej stronie Top 10 produktów i Top 10 kategorii porządkują strony po kliknięciach, ze średnią pozycją i CTR. Rozwiązywanie adresu URL na encję używa natywnego routingu PrestaShop: wzorzec id-slug dla produktów, link_rewrite dla kategorii, cms_lang dla stron CMS.
Raporty kliknięć i pozycji
Zakładka Raporty oferuje trzy szczegółowe widoki: Produkty, Kategorie, Zapytania. Każdy widok przyjmuje konfigurowalny lookback: 7 / 14 / 28 / 90 dni.
Dla każdego wiersza otrzymujesz kliknięcia, wyświetlenia, CTR i średnią pozycję. Kliknij dowolny nagłówek kolumny, aby posortować (sortowanie po stronie klienta, natychmiastowe). Eksport CSV tworzy plik UTF-8 z BOM i separatorem średnikowym (natywnie zgodny z Excelem), do 5000 wierszy na eksport.
Porównanie okien
Dla każdego wylistowanego produktu lub kategorii raport pokazuje też zmianę względem poprzedniego okna o tej samej długości. Istotny spadek pozycji wyświetla się na czerwono, poprawa na zielono.
Sitemapy
Zakładka Sitemapy automatycznie wykrywa kandydatów w Twoim sklepie:
https://twoj-sklep.pl/sitemap.xml: sitemapa w katalogu głównymhttps://twoj-sklep.pl/sitemap_index.xml: indeks sitemap- Wzorzec
*_sitemap.xmlw katalogu głównym: generowany przez modułgsitemapPrestaShop, jeden plik na sklep i język
Przesyłasz jednym kliknięciem. Moduł śledzi następnie za Ciebie:
- Liczbę przesłanych adresów URL (zadeklarowaną przez sitemapę)
- Liczbę adresów faktycznie zaindeksowanych (raportowaną przez Google)
- Liczbę błędów wykrytych przez Google
- Datę ostatniego pobrania przez Googlebota
Jeśli Google wykryje błędy w sitemapie, podnoszony jest automatyczny alert: ważność HIGH przy co najmniej 10 błędach, w przeciwnym razie MEDIUM.
Masowa inspekcja adresów URL
API URL Inspection Google jest ograniczone do 2000 wywołań dziennie na witrynę. GSC Connect zarządza tym limitem przez kolejkę z automatycznym retry.
Dostępne akcje
- Zakolejkuj wszystkie aktywne produkty: dodaje wszystkie produkty z widocznością
both,searchlubcatalog - Zakolejkuj wszystkie kategorie: dodaje wszystkie aktywne kategorie (katalog główny jest wykluczony)
- Przeinspekuj zmodyfikowane strony: dodaje wyłącznie encje oznaczone jako przeterminowane przez hooki
actionProductUpdateiactionCategoryUpdate - Przetwórz kolejkę teraz: do testów, bez czekania na cron
- Zainspekuj pojedynczy adres URL: aby zweryfikować natychmiastową poprawkę na konkretnej stronie
Zapisywane dane
Dla każdego zainspekowanego adresu URL moduł zapisuje:
- Globalny werdykt Google: PASS, PARTIAL, FAIL lub NEUTRAL
- Stan pokrycia (Indexed, Discovered, Crawled but not indexed itd.)
- Status robots.txt i zadeklarowaną indeksowalność
- Wykryte wyniki rozszerzone (Product, Breadcrumb, Review itd.)
- Status AMP i zgodność mobile-friendly
- Sitemapę odsyłającą i adresy odsyłające
- Datę ostatniego crawlowania przez Googlebota
Wykryta deindeksacja podnosi automatyczny alert. Jeśli werdykt to FAIL lub NEUTRAL, albo stan pokrycia to DEINDEXED lub INDEXING_NOT_ALLOWED, automatycznie podnoszony jest alert HIGH z powodem zwróconym przez Google.
Alerty i spadki
Moduł obsługuje automatycznie trzy rodziny alertów:
Spadki pozycji
Wykrywa istotny spadek pozycji na stronie już dobrze sklasyfikowanej. Domyślnie: spadek o 5 miejsc lub więcej na stronie na pozycji nie gorszej niż 50. Próg regulowany w konfiguracji (DFGSC_DROP_POS).
Spadki kliknięć
Wykrywa istotny spadek liczby kliknięć na stronie, która generowała minimalny wolumen. Domyślnie: spadek o 30 % przy minimum 5 kliknięć w poprzednim oknie. Progi regulowane w konfiguracji (DFGSC_DROP_CLICKS, DFGSC_DROP_MIN_CLICKS).
Deindeksacje
Podnoszone automatycznie, gdy zainspekowany adres URL wraca z werdyktem FAIL lub NEUTRAL, albo ze stanem pokrycia DEINDEXED / INDEXING_NOT_ALLOWED.
Mechanika porównania
Porównanie spadków odbywa się w oknie kroczącym 7 dni względem 7 dni poprzednich, z przesunięciem 2 dni ze względu na opóźnienie Search Console. Moduł porównuje D-9..D-2 z D-16..D-9.
Deduplikacja 24h
Ten sam alert (ta sama strona, ten sam typ) uruchamia się tylko raz na 24h, aby uniknąć szumu, nawet jeśli cron działa co godzinę.
Powiadomienia e-mail
Alerty mogą być wysyłane e-mailem jako digest HTML pogrupowany po ważności, po francusku lub angielsku. Włącz je w konfiguracji i podaj adres odbiorcy.
Cron i planowanie
Wszystkie zadania w tle przechodzą przez jeden endpoint chroniony tokenem, widoczny na stronie konfiguracji:
https://twoj-sklep.pl/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXXXXXXXX
Zaplanuj go co 1 do 6 godzin z panelu cron swojego hostingu (cPanel, Plesk, o2switch, OVH). Przykład crontab:
0 */2 * * * curl -fsS "https://twoj-sklep.pl/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXX" > /dev/null 2>&1
Wykonywane zadania
Domyślnie endpoint wykonuje wszystkie zadania. Część możesz odfiltrować parametrem &tasks=:
| Zadanie | Akcja |
|---|---|
sync |
Pobranie nowych danych Search Analytics (konfigurowalny lookback) |
inspect |
Przetworzenie kolejki inspekcji adresów URL z poszanowaniem limitu |
sitemaps |
Odświeżenie statusu przesłanych sitemap |
drops |
Wykrycie spadków pozycji i kliknięć |
notify |
Wysyłka digestu alertów e-mailem |
prune |
Czyszczenie zakończonych wpisów kolejki i starych liczników limitu |
Przykład, aby synchronizować tylko metryki bez dotykania inspekcji:
curl "https://twoj-sklep.pl/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXX&tasks=sync,drops,notify"
Zgodny z hostingiem współdzielonym. Żadnych zależności od Redisa, BullMQ, trwałego workera ani dedykowanego PHP-FPM. Endpoint cron to zwykły adres HTTPS chroniony tokenem. Działa natywnie na o2switch, współdzielonym OVH i każdym standardowym hostingu Linux.
Konfiguracja referencyjna
Wszystkie opcje znajdują się na stronie Konfiguruj modułu:
| Opcja | Klucz | Domyślnie |
|---|---|---|
| Client ID Google | DFGSC_CLIENT_ID |
(do uzupełnienia) |
| Client Secret Google | DFGSC_CLIENT_SECRET |
(do uzupełnienia) |
| Lookback synchronizacji (dni) | DFGSC_LOOKBACK_DAYS |
28 |
| Dzienny limit inspekcji URL | DFGSC_DAILY_QUOTA |
2000 |
| Próg spadku pozycji | DFGSC_DROP_POS |
5 |
| Próg spadku kliknięć (%) | DFGSC_DROP_CLICKS |
30 |
| Minimum kliknięć do wykrycia spadku | DFGSC_DROP_MIN_CLICKS |
5 |
| Powiadomienia e-mail włączone | DFGSC_ALERT_ENABLED |
tak |
| Adres odbiorcy alertów | DFGSC_ALERT_EMAIL |
e-mail administratora |
| Token crona | DFGSC_CRON_TOKEN |
generowany automatycznie |
Limity i ograniczenia API Google
API Search Console jest bezpłatne, ale podlega limitom Google:
- URL Inspection: 2000 wywołań dziennie na witrynę, 600 na minutę (twardy limit Google, nienegocjowalny)
- Search Analytics: 25000 wierszy na wywołanie, około 1200 wywołań na minutę, 30000 dziennie (limit miękki)
- Sitemaps: 5000 wywołań dziennie
Moduł zapisuje wszystkie wywołania per endpoint i per dzień w tabeli dfgsc_quota. Kolejka inspekcji zatrzymuje się czysto po osiągnięciu skonfigurowanego limitu, generując alert o ważności MEDIUM. Liczniki są automatycznie czyszczone po 30 dniach przez zadanie prune.
Architektura i dane
Moduł ma klasyczną architekturę PSR-4 pod namespace DataFireflyGscConnect, z własnym autoloaderem dostarczonym w vendor/autoload.php. Żadnych zależności Composera. Żadnych zależności zewnętrznych: wywołania Google API odbywają się w natywnym cURL z weryfikacją SSL.
Warstwy
Api: klienci HTTP (GoogleOAuth, SearchConsoleClient)Model: repozytoria dostępu do bazy (Token, Site, Metric, Inspection, Sitemap, Alert, Queue, Quota)Services: orkiestracja (MetricsSync, Inspection, Sitemap, Alert)
Tworzone tabele
| Tabela | Rola |
|---|---|
dfgsc_token |
Refresh token OAuth i wygaśnięcie per sklep |
dfgsc_site |
Znane witryny Search Console (per sklep, z witryną domyślną) |
dfgsc_metric |
Wiersze Search Analytics (per dzień, per strona, opcjonalnie per zapytanie) |
dfgsc_inspection |
Lokalny cache inspekcji adresów URL z pełnym werdyktem |
dfgsc_sitemap |
Stan przesłanych sitemap (adres, przesłane, zaindeksowane, błędy, ostatnie pobranie) |
dfgsc_alert |
Wygenerowane alerty (typ, ważność, strona, delta, status) |
dfgsc_queue |
Kolejka inspekcji ze statusami pending/processing/done/failed |
dfgsc_quota |
Liczniki wywołań API per endpoint i per dzień |
Używane hooki
actionAdminControllerSetMedia: ładowanie zasobów BOdisplayBackOfficeHeader: zarezerwowany na przyszłe powiadomieniaactionProductUpdate/actionCategoryUpdate: unieważnienie cache inspekcjiactionObjectProductDeleteAfter/actionObjectCategoryDeleteAfter: czyszczenie osieroconych inspekcji
Bezpieczeństwo
- CSRF state token oparty na cookie w przepływie OAuth
- Walidacja
hash_equalsna tokenie crona - Refresh token przechowywany w bazie, nigdy nie logowany
- Access token nigdy nietrwały: regenerowany na żądanie z refresh tokena i trzymany w pamięci na czas żądania
- Pliki
index.phpanty-listing we wszystkich podkatalogach - Systematyczne escapowanie przez
Tools::safeOutputna wszystkich wyjściach szablonów
Rozwiązywanie problemów
Przycisk „Połącz z Google” nie pojawia się
Sprawdź, czy Client ID i Client Secret zostały zapisane. Zapisz formularz, a następnie przeładuj stronę konfiguracji.
Ekran Google pokazuje redirect_uri_mismatch
URI przekierowania w Google Cloud musi być identyczny co do znaku z tym wyświetlonym w konfiguracji modułu: ten sam protokół (https), ta sama subdomena (www lub bez), ta sama ścieżka, bez końcowego ukośnika. Kopiuj i wklej bez modyfikacji.
Synchronizacja nie sprowadza danych
Sprawdź trzy punkty: (1) wybrana witryna to faktycznie Twój sklep; (2) ma co najmniej 72 h historii w Search Console (Google udostępnia dane z około 48 h opóźnienia); (3) połączone konto Google ma dostęp właściciela lub właściciela delegowanego do tej witryny.
Inspekcje się nie wykonują
Sprawdź, czy cron jest zaplanowany i czy się wykonuje. Następnie sprawdź limit dnia: jeśli zużyłeś 2000 wywołań Google, kolejka jest wstrzymana do następnego dnia. Możesz wymusić ręcznie przyciskiem Przetwórz kolejkę teraz.
Alerty e-mail nie docierają
Sprawdź, czy podany adres jest poprawny, czy konfiguracja SMTP PrestaShop działa (przetestuj na przykład e-mailem powitalnym) i czy powiadomienia są włączone w konfiguracji modułu.
Błąd 401 lub 403 na wywołaniach Search Console
Refresh token został prawdopodobnie rewokowany po stronie Google (zmiana hasła, zabezpieczenia konta lub wygasła zgoda). Rozłącz i połącz sklep ponownie z poziomu konfiguracji.
Błąd Quota Exhausted (429)
Limit Google dla witryny został osiągnięty. Google ogranicza go do 2000 inspekcji dziennie, niezależnie od liczby modułów czy narzędzi odpytujących witrynę. Kolejka wznawia się automatycznie następnego dnia.
Changelog
Pełną listę zmian per wersja znajdziesz w pliku CHANGELOG.md dołączonym do ZIP modułu.
W przypadku pytań nieomówionych tutaj skontaktuj się ze wsparciem DataFirefly pod adresem support@datafirefly.com.