Przewodnik po SEO
SEO techniczne – indeksacja, Core Web Vitals i renderowanie
SEO techniczne w praktyce: indeksacja i crawl budget, robots.txt, kanoniczne, przekierowania, Core Web Vitals, JavaScript i migracje bez utraty ruchu.
W skrócie: SEO techniczne odpowiada na pytanie, czy Google może dotrzeć do Twoich stron, poprawnie je zrozumieć i szybko wyświetlić użytkownikowi. Priorytety w tej kolejności: indeksacja, poprawne sygnały kanoniczne i przekierowania, renderowanie JavaScriptu, a na końcu Core Web Vitals.
Techniczne SEO nie podnosi pozycji samo z siebie – usuwa przeszkody, które sprawiają, że reszta pracy się nie liczy. Najlepsza treść w serwisie, do którego robot nie dociera, jest niewidzialna.
Indeksacja – zawsze pierwszy krok
Otwórz Search Console → Strony. Ten raport odpowiada na najważniejsze pytanie: ile adresów jest w indeksie i dlaczego reszta w nim nie jest.
Najczęstsze powody wykluczenia i co z nimi zrobić:
| Komunikat | Znaczenie | Reakcja |
|---|---|---|
| Wykryto – obecnie nie zindeksowano | Google zna adres, ale uznał, że nie warto | popraw jakość treści i linkowanie wewnętrzne |
| Zindeksowano – strona zablokowana w robots.txt | sprzeczne sygnały | odblokuj i użyj noindex, jeśli nie chcesz indeksacji |
| Strona z przekierowaniem | adres przekierowuje | sprawdź, czy cel jest właściwy i czy nie ma łańcucha |
| Duplikat – Google wybrał inny kanoniczny | konflikt sygnałów | ujednolić kanoniczne i linkowanie |
| Wykluczono przez tag „noindex” | świadome lub przypadkowe | najczęstsza pozostałość po wdrożeniu z devu |
| Miękki błąd 404 | pusta strona ze statusem 200 | zwróć realne 404 lub uzupełnij treść |
Praktyczna reguła: jeśli liczba zaindeksowanych adresów mocno odbiega od liczby stron, które chcesz mieć w Google – w którąkolwiek stronę – masz problem wart naprawy przed czymkolwiek innym.
Sygnały sterujące: robots.txt, noindex, canonical
Trzy narzędzia, które ludzie regularnie mylą.
robots.txt blokuje crawlowanie, nie indeksację. Zablokowany adres może trafić do indeksu bez treści, jeśli ktoś do niego linkuje. Używaj do koszyka, wyszukiwarki wewnętrznej, panelu.
noindex blokuje indeksację. Warunek: robot musi móc wejść na stronę i zobaczyć ten tag – więc adres z noindex nie może być zablokowany w robots.txt.
Tag kanoniczny wskazuje wersję główną przy duplikatach. To wskazówka, nie polecenie – Google może wybrać inaczej, jeśli pozostałe sygnały (linki wewnętrzne, mapa witryny) mówią co innego. Dlatego wszystkie sygnały muszą być spójne.
Przekierowania
- 301 – trwałe. Domyślny wybór przy zmianie adresu, przekazuje moc.
- 302 – tymczasowe. Używaj tylko wtedy, gdy naprawdę wrócisz do starego adresu.
- Łańcuchy – A → B → C. Każde ogniwo to strata; przekierowuj bezpośrednio do celu.
- Pętle – A → B → A. Adres znika z indeksu.
Zawsze pilnuj jednej wersji domeny: HTTPS zamiast HTTP oraz jedna z wersji www/non-www. Cztery działające warianty tej samej strony to cztery zestawy sygnałów zamiast jednego.
Crawl budget
Dotyczy głównie dużych serwisów. Sklep z 3000 produktów potrafi wystawić Googlebotowi 200 000 adresów przez kombinacje filtrów i sortowań – robot zużywa wtedy budżet na warianty, zamiast odwiedzać nowe produkty.
Co pomaga: blokada parametrów sortowania i wyszukiwania, noindex na nieistotnych kombinacjach filtrów, usunięcie łańcuchów przekierowań, płaska struktura (maksymalnie 3 kliknięcia do ważnych stron), aktualna mapa witryny zawierająca wyłącznie adresy indeksowalne, zwracające 200.
Szczegóły dla e-commerce w hubie pozycjonowanie sklepu internetowego.
Core Web Vitals
Trzy metryki mierzone na realnych użytkownikach (dane CrUX), nie w laboratorium.
LCP (Largest Contentful Paint) – czas do wyrenderowania największego elementu. Cel: poniżej 2,5 s. Najczęściej to zdjęcie hero albo baner. Naprawa: kompresja i nowoczesny format, fetchpriority="high", brak lazy loadingu na tym elemencie, szybka odpowiedź serwera.
INP (Interaction to Next Paint) – czas reakcji na interakcję. Cel: poniżej 200 ms. Główny winowajca to JavaScript blokujący główny wątek: czaty, piksele, narzędzia do testów A/B. Naprawa: mniej skryptów, ładowanie z opóźnieniem, dzielenie długich zadań.
CLS (Cumulative Layout Shift) – przeskoki układu. Cel: poniżej 0,1. Przyczyny: obrazy bez wymiarów, reklamy wstrzykiwane w treść, fonty powodujące przeskok tekstu. Naprawa: jawne width/height, rezerwacja miejsca, font-display: swap z dopasowanymi metrykami.
Kolejność pracy: najpierw sprawdź, czy problem występuje w danych polowych, potem znajdź konkretny element odpowiedzialny, dopiero potem optymalizuj. Optymalizowanie wyniku laboratoryjnego, gdy dane polowe są zielone, to strata czasu.
JavaScript i renderowanie
Google renderuje JavaScript, ale w dwóch falach: najpierw pobiera HTML, potem – czasem po godzinach lub dniach – uruchamia skrypty. Konsekwencje:
- treść dostępna dopiero po renderowaniu indeksuje się wolniej,
- linki generowane przez JS mogą nie zostać wykryte,
- treść ładowana po interakcji użytkownika (kliknięcie „pokaż więcej”) może w ogóle nie trafić do indeksu.
Rozwiązanie: renderowanie po stronie serwera (SSR) albo generowanie statyczne (SSG). Ta strona jest generowana statycznie właśnie z tego powodu – HTML zawiera całą treść, zanim przeglądarka wykona jakikolwiek skrypt.
Test: w Search Console użyj „Sprawdź URL” → „Testuj aktywny adres URL” → „Wyrenderowany HTML” i sprawdź, czy widać w nim Twoją treść.
Bezpieczeństwo i dostępność dla botów
- HTTPS na całej domenie, bez mieszanej zawartości.
- Poprawne statusy HTTP – nieistniejąca strona zwraca 404, nie 200 z komunikatem.
- Dostęp dla crawlerów AI – jeśli zależy Ci na cytowaniach w ChatGPT czy Perplexity, nie blokuj ich user-agentów w
robots.txt. To świadoma decyzja biznesowa, nie ustawienie domyślne. - llms.txt – plik opisujący serwis dla modeli językowych. Standard nieoficjalny, koszt wdrożenia minimalny.
Migracje – moment największego ryzyka
Najczęstsza przyczyna nagłej utraty połowy ruchu. Kolejność, która chroni:
- Przed migracją: pełny crawl starego serwisu, eksport wszystkich adresów z ruchem i linkami z GSC oraz Ahrefs.
- Mapa przekierowań 1:1 – każdy stary adres ma przypisany nowy. Bez zbiorczego przekierowania wszystkiego na stronę główną.
- Środowisko testowe zablokowane w
robots.txt– i pamiętaj, żeby przy publikacji tę blokadę usunąć. - Po wdrożeniu: crawl nowego serwisu, weryfikacja przekierowań, nowa mapa witryny w GSC.
- Monitoring 4–8 tygodni – raport indeksacji i porównanie zapytań rok do roku.
Spadek 10–20% w pierwszych dwóch tygodniach jest typowy. Brak powrotu po dwóch miesiącach oznacza, że coś w mapie przekierowań się nie zgadza.
Kolejność priorytetów
- Indeksacja – czy Google w ogóle widzi strony.
- Duplikaty i kanoniczne – czy widzi je raz.
- Przekierowania i statusy – czy nie traci mocy po drodze.
- Renderowanie – czy widzi całą treść.
- Core Web Vitals – czy użytkownik zostaje.
Dopiero po tych pięciu punktach ma sens praca nad treścią i linkami. Pełną checklistę diagnostyczną zebrałem w hubie audyt SEO.
Jeśli Twoja strona stoi na WordPressie, większość z tych punktów rozstrzyga się w kilku ustawieniach i w wyborze motywu – rozpisałem je w poradniku o SEO w WordPress.
Warstwę serwerową, czyli to, kiedy hosting faktycznie hamuje stronę, a kiedy problem leży w kodzie, rozłożyłem na czynniki w tekście o hostingu a SEO.
Chcesz wiedzieć, na którym z tych pięciu punktów zatrzymuje się Twoja strona? Napisz do mnie – w 7 dni odeślę analizę z konkretną odpowiedzią.
Najczęściej zadawane pytania
Czy Core Web Vitals realnie wpływają na pozycje?
Wpływają, ale słabiej, niż sugeruje ilość poświęconej im uwagi – to czynnik rozstrzygający między stronami o podobnej jakości treści, nie sposób na wyprzedzenie lepszego wyniku. Za to wpływ na konwersję jest bezpośredni i mierzalny, więc praca nad wydajnością zwraca się niezależnie od rankingu.
Czy Google indeksuje strony oparte na JavaScripcie?
Tak, ale w drugiej fali – najpierw pobiera HTML, a renderowanie odbywa się później, czasem z opóźnieniem liczonym w dniach. Jeśli kluczowa treść i linki pojawiają się dopiero po wykonaniu skryptów, ryzykujesz wolniejszą indeksację. Renderowanie po stronie serwera lub generowanie statyczne usuwa problem.
Co to jest crawl budget i kogo dotyczy?
To liczba adresów, które Googlebot pobiera z Twojej domeny w danym czasie. Przy stronie do kilku tysięcy adresów nie ma znaczenia. Zaczyna mieć przy dużych sklepach, gdzie filtry i parametry generują setki tysięcy adresów – wtedy robot zużywa budżet na śmieci zamiast na produkty.
Jak przeprowadzić migrację bez utraty ruchu?
Klucz to mapa przekierowań 1:1 przygotowana przed wdrożeniem: każdy stary adres z ruchem lub linkami musi mieć docelowy adres i przekierowanie 301. Do tego pełny crawl przed i po, zachowanie tytułów i treści oraz monitoring Search Console przez 4–8 tygodni. Spadek o 10–20% w pierwszych tygodniach jest normalny; brak powrotu po dwóch miesiącach nie jest.
Ten wpis jest częścią przewodnika Pozycjonowanie stron internetowych.