SEO dla programistów: HTML czytelny dla robotów, właściwe kody HTTP, kluczowe tagi w head, zaliczone Core Web Vitals i widoczność w AI.

W skrócie
dla programisty SEO oznacza, że każda ważna strona jest dla robotów osiągalna, możliwa do wyrenderowania i jednoznaczna. Serwuj główną treść w początkowym HTML (renderowanie po stronie serwera lub generowanie statyczne), zwracaj uczciwe kody HTTP, umieszczaj title, meta description, canonical i dyrektywy robots w odpowiedzi serwera, linkuj prawdziwymi elementami <a href>, spełniaj progi Core Web Vitals i dodawaj dane strukturalne JSON-LD. Większość robotów AI nie wykonuje JavaScriptu: treść, która pojawia się dopiero po hydratacji, jest niewidoczna dla ChatGPT, Claude i Perplexity.
Chcesz dowiedzieć się więcej? Zapytaj
Szybki quiz
Czy SEO jest dla Ciebie i jak zacząć?
4 krótkie pytania, by sprawdzić, czy Google może przyprowadzić Ci klientów.
Nasza rada dla Ciebie
Sorank to właściwe rozwiązanie dla Ciebie
Ludzie szukają tego, co sprzedajesz, a Ty możesz poczekać kilka miesięcy: Sorank znajduje właściwe wyszukiwania, pisze i publikuje artykuły oraz zdobywa dla Ciebie linki.
Sorank pasuje do Twoich odpowiedzi
Przetestuj go przez 3 dni na swojej stronie albo zacznij od bezpłatnego audytu, żeby zobaczyć, na czym stoisz.
3 dni za darmo, potem rezygnujesz, kiedy chcesz. 90-dniowa gwarancja zwrotu pieniędzy.
SEO dla programistów to część optymalizacji, która żyje w kodzie: szablony, routing, renderowanie, nagłówki i wydajność. Marketing wybiera słowa kluczowe i pisze treści, ale zły kod statusu, trasa renderowana tylko po stronie klienta albo zapomniany noindex mogą zniweczyć tę pracę jednym wdrożeniem. Podstawy SEO w JavaScripcie od Google opisują trzy fazy (skanowanie, renderowanie, indeksowanie), a każda ma awarie, które mogą naprawić tylko programiści. Ten przewodnik omawia je w kolejności, w jakiej się psują.
| Obszar | Odpowiedzialność programisty | Typowy objaw awarii |
|---|---|---|
| Renderowanie | Główna treść i linki w HTML z serwera | Strony zaindeksowane puste lub niepełne |
| Kody HTTP | 200, 301, 404, 410, 5xx zwracane zgodnie z prawdą | Soft 404, zaindeksowane strony błędów, usunięte strony wciąż w wynikach |
| Tagi w head | Unikalne title, description, canonical, robots, hreflang | Duplikaty, w wynikach zły adres, strony poza indeksem |
| Kontrola skanowania | robots.txt, mapa witryny XML, linki wewnętrzne, parametry | Ważne strony nieodkryte, skanowanie marnowane na filtry |
| Wydajność | Core Web Vitals u prawdziwych użytkowników mobilnych | Słabe wrażenia ze strony, mniej konwersji |
| Dane strukturalne | Poprawny JSON-LD zgodny z widoczną treścią | Brak wyników z elementami rozszerzonymi, niejasna encja |
| Dostęp AI | Dozwolone roboty AI, treść czytelna bez JavaScriptu | Marki brak w odpowiedziach ChatGPT i Perplexity |
Googlebot renderuje JavaScript, ale w drugim kroku, który może się opóźnić, a samo Google pisze, że renderowanie po stronie serwera lub prerendering to nadal bardzo dobry pomysł, bo jest szybsze dla użytkowników i robotów, a nie wszystkie boty wykonują JavaScript. Ten ostatni punkt liczy się dziś bardziej niż kiedykolwiek: w analizie z grudnia 2024 roku The rise of the AI crawler Vercel ustalił, że żaden z głównych robotów AI obecnie nie renderuje JavaScriptu, wymieniając m.in. GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot i PerplexityBot. Wyjątkiem jest Gemini, który korzysta z infrastruktury Google.
| Tryb renderowania | Co dostają roboty | Przydatność dla SEO |
|---|---|---|
| Renderowanie po stronie klienta (CSR) | Prawie pusty szkielet HTML, treść dopiero po JavaScripcie | Słaba: opóźniona dla Google, niewidoczna dla większości robotów AI |
| Renderowanie po stronie serwera (SSR) | Pełny HTML przy każdym żądaniu | Mocna dla stron dynamicznych |
| Generowanie statyczne (SSG) | Pełny HTML budowany przy wdrożeniu | Najmocniejsza dla rzadko zmienianych treści |
| Regeneracja przyrostowa (ISR) | Statyczny HTML odświeżany cyklicznie lub na żądanie | Mocna dla dużych katalogów i blogów |
Niezależnie od frameworka obowiązują dwie zasady. Linki muszą być elementami <a> z atrybutem href: Google podaje, że odkrywa linki tylko w tej postaci, więc przyciski z obsługą kliknięć i trasy oparte na fragmentach to ślepe uliczki. Każda trasa potrzebuje też własnego adresu URL bez #, który bezpośrednio zwraca jej treść. Nasze przewodniki po SEO w JavaScripcie, SEO aplikacji jednostronicowych i SEO w Next.js omawiają szczegóły poszczególnych frameworków.
Kody stanu to instrukcje dla robotów. Dokumentacja Google o kodach stanu HTTP i błędach sieciowych opisuje, jak traktowana jest każda grupa:
Sprawdź, co naprawdę wysyła serwer, za pomocą narzędzia do sprawdzania nagłówków HTTP, i ograniczaj łańcuchy przekierowań do jednego skoku: nasz artykuł o przekierowaniach w SEO opisuje scenariusze migracji.
Każda indeksowalna strona potrzebuje unikalnych title i description, kanonicznego linku do samej siebie, a w witrynach wielojęzycznych adnotacji hreflang. Trzymaj je w odpowiedzi serwera:
<title>Running shoes for flat feet | Example</title>
<meta name="description" content="Tested picks, sizes and prices.">
<link rel="canonical" href="https://example.com/running-shoes-flat-feet">
<link rel="alternate" hreflang="fr" href="https://example.com/fr/chaussures-pieds-plats">
<meta name="robots" content="index, follow">Tag canonical musi wskazywać adres, który ma się pozycjonować, z dokładnie tym protokołem, hostem i konwencją końcowego ukośnika, których używa witryna.
Uwaga
Nigdy nie polegaj na JavaScripcie przy usuwaniu noindex. Google podaje, że po znalezieniu tagu noindex może pominąć renderowanie, więc strona dostarczona z noindex w HTML, który usuwa się po stronie klienta, może pozostać poza indeksem.
Wyszukiwarki indeksują adresy URL, więc ich schemat to decyzja SEO. Używaj czytelnych ścieżek małymi literami, z łącznikami; wybierz jedną konwencję końcowego ukośnika i przekieruj drugą; utrzymuj jeden adres na jedną treść. Filtry, sortowanie i parametry śledzące mnożą adresy bez nowej treści: kieruj ich canonical na czystą wersję i nie linkuj kombinacji parametrów, których nie chcesz skanować.
Linki wewnętrzne służą zarówno odkrywaniu, jak i hierarchii. Renderuj na serwerze nawigację, okruszki i bloki powiązanych treści, dawaj listom stronicowanym zwykłe linki do każdej strony i unikaj nieskończonego przewijania bez stronicowanych adresów pod spodem. Produkt lub artykuł dostępny tylko przez wyszukiwarkę wewnętrzną lub filtr w JavaScripcie jest dla robota stroną osieroconą.
robots.txt steruje skanowaniem, nie indeksowaniem: zablokowany adres może mimo to pojawić się w wynikach, jeśli linkują do niego inne strony. Aby wykluczyć stronę z indeksu, pozwól ją zeskanować i zwróć noindex. Generuj mapę witryny XML z tras lub bazy danych, umieszczaj w niej tylko kanoniczne adresy z kodem 200 i aktualizuj lastmod tylko przy realnej zmianie treści. Przed każdym wydaniem testuj reguły za pomocą testera robots.txt i nigdy nie wdrażaj na produkcję testowego robots.txt z „Disallow: /”.
Google wykorzystuje Core Web Vitals jako część sygnałów dotyczących wrażeń ze strony. Według web.dev strona jest dobra, gdy osiąga te progi w 75. percentylu rzeczywistych wczytań, na urządzeniach mobilnych i komputerach:
| Wskaźnik | Co mierzy | Dobry próg | Typowe poprawki po stronie programisty |
|---|---|---|---|
| LCP (Largest Contentful Paint) | Wczytywanie | 2,5 s lub mniej | Wstępne ładowanie głównego obrazu, renderowanie górnej części strony na serwerze, CDN |
| INP (Interaction to Next Paint) | Responsywność | 200 ms lub mniej | Dzielenie długich zadań, odraczanie skryptów zewnętrznych, mniejszy koszt hydratacji |
| CLS (Cumulative Layout Shift) | Stabilność wizualna | 0,1 lub mniej | Ustalona szerokość i wysokość mediów, zarezerwowane miejsce na reklamy i osadzenia |
INP zastąpił First Input Delay jako stabilny wskaźnik Core Web Vitals w 2024 roku. Oceniaj na podstawie danych terenowych (Search Console, Chrome UX Report), a debuguj narzędziami laboratoryjnymi. Nasze hasło w słowniku o Core Web Vitals wymienia narzędzia.
Użyj JSON-LD w tagu script, renderowanego na serwerze i opisującego to, co widać na stronie:
<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "Article",
"headline": "Running shoes for flat feet",
"datePublished": "2026-10-01",
"author": {"@type": "Person", "name": "Jane Doe"}}
</script>Generuj go z tych samych danych co stronę, żeby nigdy się nie rozjechały, waliduj w CI i unikaj wstrzykiwania przez menedżer tagów. Generator schema daje szablon startowy dla popularnych typów.
Wskazówka
Dodaj kontrole SEO do pipeline'u: niech build się nie powiedzie, jeśli indeksowalny szablon nie ma title lub canonical, jeśli trasa zwraca 200 dla nieznanego sluga albo jeśli produkcyjny robots.txt zawiera „Disallow: /”. Takie regresje tanio wyłapać przed wdrożeniem, a drogo po nim.
Widoczność w AI zaczyna się od dostępu. Zdecyduj, które roboty AI dopuszczasz (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot i inne), i zapisz jawne reguły w robots.txt; nasz przewodnik po robots.txt dla robotów AI wyjaśnia różnicę między botami treningowymi a wyszukiwawczymi. Następnie upewnij się, że teksty, ceny, specyfikacje i FAQ są w początkowym HTML, używaj semantycznych nagłówków i tabel zamiast tekstu w obrazach i utrzymuj strony na tyle lekkie, by szybko się pobierały. Plik llms.txt może streszczać kluczowe strony dla narzędzi AI, ale żaden duży asystent nie potwierdził, że z niego korzysta: traktuj go jako opcjonalny.
Sorank to nasz produkt: oprogramowanie SEO i GEO działające na autopilot. Programiści stykają się z nim głównie przez integracje: publikuje artykuły w WordPressie, Shopify, Webflow lub Wix albo w dowolnym własnym stosie przez webhook, jak opisano na stronie instalacji. SEO Chat odpowiada w rozmowie na pytania o twoją witrynę, a śledzenie wzmianek w AI co tydzień sprawdza, czy ChatGPT, Claude i Gemini wymieniają twoją markę.

Najkrócej: dostarczaj z serwera pełny HTML, uczciwe kody stanu i poprawne tagi, a potem mierz wydajność u prawdziwych użytkowników. To służy Googlebotowi i robotom AI, które nie wykonują JavaScriptu. Aby wypełnić dobrze zbudowaną witrynę treściami, które się pozycjonują, zobacz plany Sorank, od 49 € miesięcznie z 3-dniowym bezpłatnym okresem próbnym.
Nie zawsze w przypadku Google, które renderuje JavaScript, ale dodaje opóźnienie i ryzyko, a większość robotów AI w ogóle nie wykonuje JavaScriptu. Dla stron, które mają się pozycjonować lub być cytowane, serwuj główną treść i linki w początkowym HTML przez renderowanie po stronie serwera, generowanie statyczne lub prerendering, a renderowanie po stronie klienta zostaw dla części interaktywnych.
Oba kody mówią Google, że strony już nie ma, i w obu przypadkach Google z czasem przestaje używać adresu. 410 oznacza celowe i trwałe usunięcie, co niektóre zespoły wolą przy świadomie usuniętych treściach. Najważniejsze, by nie zwracać 200 z komunikatem o błędzie, bo to tworzy soft 404.
Są częścią sygnałów dotyczących wrażeń ze strony, które Google opisuje jako jeden z wielu czynników, a trafność i jakość treści ważą więcej. Rozstrzygają głównie między podobnymi stronami i mocno wpływają na konwersje, więc warto osiągnąć progi.
WYPRÓBOWALI SORANK PRZED TOBĄ
