# Panel monitoringu SEO

Prywatny panel, który pilnuje backlinków, pozycji w Google, indeksacji i Core Web Vitals moich stron — w całości na darmowych API Google, z alertem, kiedy coś się ruszy.

**Canonical:** https://spoko.space/pl/panel-monitoringu-seo/  
**Language:** pl  
**Published:** 2026-05-14  
**Updated:** 2026-09-22  
**Tags:** laravel, filament, mariadb, seo, google-api, core-web-vitals  
**Category:** Portfolio

---
## W skrócie {#w-skrócie}

|  |  |
| --- | --- |
| Problem | Backlinki znikają, pozycje się osuwają, a podstrony wypadają z indeksu po cichu. Dowiadujesz się tygodnie później, a narzędzia, które powiedziałyby wcześniej, liczą sobie miesięcznie. |
| Co powstało | Panel pilnujący backlinków, danych z Search Console, pozycji słów kluczowych, indeksacji, Core Web Vitals, ruchu odwiedzających i błędów on-page na kilku stronach naraz, podnoszący alert, kiedy któraś z tych rzeczy idzie w złą stronę. |
| Moja rola | Całość — model danych, integracje z API Google, harmonogram i kolejki, panel w Filamencie i reguły alertów. |
| Co jest w tym ciekawego | Prawie wszystko, co sprzedaje płatny rank tracker, Google oddaje za darmo we własnych API. Produktem jest hydraulika: harmonogram, historia i zauważanie zmiany. |
| Efekt | Prywatne narzędzie, na którym ja i kilka bliskich mi osób prowadzimy własne strony, w darmowych limitach API, z historią pozwalającą datować spadek. |

To nie jest projekt kliencki ani produkt, na który da się zapisać. Działa dla moich stron i garstki bliskich mi osób, a powstał dlatego, że alternatywą było płacenie abonamentu za liczby, które Google i tak rozdaje.

## Problem {#problem}

Widoczność w wyszukiwarce psuje się wolno i po cichu. Backlink, na który zapracowałeś, umiera, kiedy ktoś przebudowuje swoją stronę. Podstrona wypada z indeksu po zmianie szablonu. Średnia pozycja osuwa się o dwa miejsca tygodniowo przez miesiąc — czyli o nic konkretnego danego dnia i o sporo po miesiącu. [Core Web Vitals](https://spoko.space/pl/slownik/core-web-vitals/) się pogarszają, bo aktualizacja wtyczki przywiozła cięższy skrypt.

Nic z tego samo się nie zgłasza. Orientujesz się, kiedy ruch już spadł, a potem tracisz popołudnie na ustalanie, kiedy się zaczęło — i zwykle nie ustalasz, bo nikt tych liczb nie zapisywał.

Komercyjne narzędzia to rozwiązują i liczą sobie miesięcznie za projekt. To uczciwa cena dla agencji z pięćdziesięcioma klientami. To kiepski układ, kiedy chcesz pilnować kilku własnych stron, a dane pod spodem są darmowe.

## Czego pilnuje {#czego-pilnuje}

**W jednym panelu**

- **Backlinki i to, czy jeszcze żyją** — Każdy link jest przechodzony ponownie we własnym rytmie: status HTTP, anchor, atrybut rel i to, czy linkująca podstrona nadal jest w indeksie. Ocena jakości 0–100 zwija te sygnały w jedną liczbę.
- **Dane z Search Console** — Kliknięcia, wyświetlenia, CTR i średnia pozycja pobierane codziennie i odkładane jako historia — w rozbiciu na podstrony, zapytania, urządzenia i kraje, żeby spadek dało się datować, a nie zgadywać.
- **Pozycje słów kluczowych** — Śledzone frazy dostają dzienną pozycję z Search Console, a nie ze scrapera, z trendem trzydziestodniowym i kliknięciami oraz wyświetleniami, które za nią stoją.
- **Core Web Vitals, dwukrotnie** — PageSpeed Insights dla danych laboratoryjnych i Chrome UX Report dla tego, czego naprawdę doświadczyli odwiedzający — mobile i desktop, w czasie, a nie sprawdzone raz.
- **Indeksacja i sitemapy** — URL Inspection mówi, czy Google ma podstronę. Monitor sitemap parsuje robots.txt i sitemap.xml, wchodzi w indeksy sitemap i wskazuje strony zaindeksowane, których w sitemapie brakuje.
- **Co odwiedzający naprawdę zrobili** — Sesje, użytkownicy, odsłony, współczynnik odrzuceń i średni czas sesji przychodzą codziennie z Analytics, razem ze źródłami ruchu, najczęściej oglądanymi podstronami i odesłaniami — żeby to, co obiecuje wyszukiwarka, i to, co ludzie faktycznie zrobili, było na jednym ekranie.
- **Audyt on-page** — Każda podstrona jest pobierana i sprawdzana według trzynastu reguł — title, meta description, H1, canonical, robots, teksty alternatywne obrazków, linki, długość treści, Open Graph, schema, hreflang, HTTPS i czas odpowiedzi — a potem punktowana 0–100, z każdym błędem ważonym według wagi.
- **Alerty zamiast panelu do pamiętania** — Utracony backlink, średnia pozycja w dół o więcej niż trzy miejsca tydzień do tygodnia, podstrona, która przestaje przechodzić inspekcję, Core Web Vitals wchodzące w czerwone — każde podnosi alert z określoną wagą.

## Najciekawsze: całość mieści się w darmowych limitach {#najciekawsze-całość-mieści-się-w-darmowych-limitach}

Powód, dla którego takie narzędzie może istnieć bez abonamentu, jest prosty: Google udostępnia te dane własnymi API, za darmo, każdemu, komu chce się zbudować hydraulikę.

| API | Co daje i ile kosztuje |
| --- | --- |
| Search Console — Search Analytics | Kliknięcia, wyświetlenia, CTR, pozycja, w rozbiciu na podstrony, zapytania, urządzenia i kraje. **25 000 zapytań dziennie** na projekt; jedna synchronizacja zjada od pięciu do piętnastu. |
| Search Console — URL Inspection | Czy dany adres jest zaindeksowany i dlaczego. **2 000 dziennie** na usługę; harmonogram wydaje pięćdziesiąt na przebieg, na najważniejsze podstrony. |
| PageSpeed Insights | Laboratoryjne Core Web Vitals plus wyniki wydajności, dostępności, SEO i dobrych praktyk. **25 000 dziennie**; dwa wywołania na stronę, mobile i desktop. |
| Chrome UX Report | Dane terenowe — to, czego doświadczyli użytkownicy Chrome, na origin i na adres. **150 na minutę**, bez dziennego limitu. |
| Analytics Data API (GA4) | Sesje, użytkownicy, odsłony, współczynnik odrzuceń, źródła ruchu, najczęściej oglądane podstrony i odesłania. **200 000 tokenów dziennie** na usługę — tu liczy się złożoność zapytania, a nie liczba wywołań; dzienna synchronizacja odpala cztery raporty z okna trzydziestu dni. |

Audyt on-page jest wyjątkiem, który potwierdza regułę: nie korzysta z żadnego API Google. Pobiera moje własne podstrony i czyta HTML, więc kosztuje tyle, co samo zapytanie.

Te liczby są całym ograniczeniem projektowym. Są na tyle hojne, że system uniósłby jakieś 1500 projektów, zanim [Search Console](https://spoko.space/pl/slownik/google-search-console/) stałoby się wąskim gardłem — czyli znacznie więcej, niż kiedykolwiek będzie potrzebne, i dlatego nic w środku nie jest reglamentowane.

Za darmo nie dostaje się tego, co czyni z tego narzędzie: czegoś, co odpytuje te API według harmonogramu, trzyma odpowiedzi, porównuje dziś z zeszłym tygodniem i mówi, kiedy porównanie wypada źle. To jest produkt.

## Jak to się utrzymuje aktualne {#jak-to-się-utrzymuje-aktualne}

**Harmonogram**

1. **Backlinki — co godzinę** — Nie każdy link co godzinę: przebieg bierze te, którym minął termin ponownego sprawdzenia, więc ruch rozkłada się w czasie zamiast walić raz dziennie jednym uderzeniem.
2. **Search Console — codziennie, 05:00** — Wczorajsze dane i śledzone frazy, zapisywane do tabel historii, z których czytają wykresy.
3. **Analytics — codziennie, 05:30** — Ruchome okno trzydziestu dni: sesje, źródła ruchu, najczęściej oglądane podstrony i odesłania, pół godziny po Search Console, żeby oba zestawy liczb schodziły się na ten sam dzień.
4. **Indeksacja — codziennie, 06:00** — URL Inspection na najważniejszych podstronach, z limitem na przebieg, żeby dzienny przydział nigdy nie był tym, co się psuje.
5. **Core Web Vitals — poniedziałki** — PageSpeed Insights, pół godziny później Chrome UX Report. Tygodniowo, bo dane terenowe liczą się w oknie 28 dni i codzienne odpytywanie nie powiedziałoby niczego nowego.
6. **Sitemapy — poniedziałki, 08:00** — Ponowne sparsowanie, ponowne porównanie z tym, co jest w indeksie, i pokazanie różnicy.
7. **Audyt on-page — poniedziałki, 09:00** — Pięćdziesiąt podstron na przebieg, pobranych i ocenionych według trzynastu reguł. Tygodniowo, bo błędy on-page przyjeżdżają z wdrożeniem, a nie same z siebie.

Wszystko cięższe niż jedno zapytanie HTTP idzie przez kolejkę, a nie przez sam harmonogram, więc wolne przejście albo API, które przyhamowało, nigdy nie blokuje reszty przebiegu.

## Moja rola {#moja-rola}

Całość. Projekt jest mój od początku do końca: model danych — trzydzieści trzy tabele, w większości historia, a nie stan bieżący — przepływ OAuth obsługujący naraz Search Console i Analytics, cztery klienty API Google, własny crawler do backlinków i audytu on-page, harmonogram i workery kolejek, panel w Filamencie, wykresy i reguły alertów. Dziewięćdziesiąt osiem commitów w jakieś trzy i pół tygodnia, w kwietniu 2026.

## Efekt {#efekt}

- **Spadek da się datować** — Ponieważ liczby są zapisywane codziennie, „kiedy się to zaczęło" ma odpowiedź, a nie domysł.
- **Bez abonamentu** — Dane zawsze były darmowe; brakowało czegoś, co je zbiera. Koszt utrzymania to mały serwer i nic poza tym.
- **Alerty działają — i wymagają strojenia** — Utracone linki i osuwające się pozycje podnoszą alert, zamiast czekać, aż ktoś zauważy. Nazbierało się ich cztery tysiące, a nieprzeczytanych wisi w każdej chwili około stu — i to jest osobna lekcja: alert, na który nie da się zareagować, jest szumem, a progi to niedokończona część tego projektu.

## Technologie {#technologie}
