Audyt techniczny SEO: 50 punktów kontrolnych

16 kwietnia, 2026

Audyt techniczny SEO to nie 3-godzinne „skanowanie Screaming Frogiem” – to 50+ punktów, które decydują, czy Google i LLM-y w ogóle zobaczą treść. W projektach 2024–2026 audyty techniczne odblokowały średnio 27% ruchu organicznego – bez jednego nowego artykułu, tylko przez naprawę indeksacji, renderowania i sygnałów crawla.

Poniższa lista to 50 punktów kontrolnych ułożonych w 7 bloków – od dostępności serwera po JSON-LD. Każdy punkt ma przypisany priorytet (P0/P1/P2), typowe narzędzie i konkretne kryterium „pass/fail”. Nie jest to teoria – to ta sama checklist używana w 80+ projektach w latach 2023–2026.

W skrócie

  • Pełny audyt techniczny średniej strony (do 5 tys. URL) zajmuje 14–20 godzin pracy senior SEO przez 3–5 dni roboczych.
  • Siedem bloków: serwer, indeksacja, crawl, renderowanie, struktura URL, Core Web Vitals, sygnały semantyczne.
  • P0 (krytyczne): blokady w robots.txt, meta noindex, niedostępność dla Googlebota – naprawa w 24–48 godzin.
  • W 80+ audytach najczęstsze znaleziska P0: zły robots.txt (32%), mieszane HTTP/HTTPS (18%), złamany hreflang (15%).
  • Narzędzia: Screaming Frog, Sitebulb, Ahrefs Site Audit, Google Search Console, Chrome DevTools – stack poniżej 2 tys. zł/miesiąc.

Czym jest audyt techniczny SEO i czym nie jest

Audyt techniczny SEO to systematyczna diagnoza warstwy infrastrukturalnej strony pod kątem zdolności wyszukiwarek do jej crawlowania, renderowania, indeksowania i rankowania. Warstwa techniczna – nie treści, nie linków. Chociaż te obszary często nakładają się w praktyce, audyt techniczny nie ocenia jakości artykułów ani profilu linków.

Różnica w stosunku do ogólnego audytu SEO: ten drugi to szerokie spojrzenie na stan projektu (technika + treść + linki + konkurencja). Audyt techniczny to głęboki dive w jednej warstwie – tej, która najczęściej blokuje cały projekt, chociaż sama w sobie rzadko generuje bezpośrednio wzrosty.

Kiedy audyt techniczny jest konieczny

  • Nagły spadek widoczności bez zmiany treści ani linków – prawie zawsze diagnoza techniczna.
  • Migracja domeny, struktury URL, CMS – audyt przed i po obowiązkowy.
  • Nowa strona starsza niż 6 miesięcy bez wzrostów – sprawdź najpierw infrastrukturę, potem treść.
  • Core Web Vitals failing – LCP > 2,5 s, INP > 200 ms, CLS > 0,1.
  • Planowany redesign – audyt bazowy, żeby zmierzyć wpływ zmian.

Kiedy audyt techniczny nie jest pierwszym ruchem

  • Strona bez treści – nie ma co audytować, zacznij od audytu treści.
  • Strona ranguje na niekomercyjne frazy – problem jest w doborze keywords, nie w technice.
  • Strona ma < 3 miesięcy – Google jeszcze ją poznaje, cierpliwość.

Blok 1: Serwer i dostępność (punkty 1–7)

Fundament wszystkiego – jeśli Googlebot nie może odpytać serwera, nic więcej nie ma znaczenia. Ten blok zajmuje ~1 godzinę przy standardowej infrastrukturze, do 3 godzin przy hostingu enterprise z CDN i load balancerem.

Punkt 1 (P0): Kod odpowiedzi dla strony głównej i kluczowych URL-ów

Kryterium: homepage zwraca 200, strony kategorii 200, top 20 artykułów 200. Narzędzie: curl -I https://example.pl lub Screaming Frog. Typowe problemy: 302 zamiast 200 (powoduje wyczerpanie crawl budgetu na redirecty), 500/502 przy częstych godzinach (sprawdź monitoring uptime).

Punkt 2 (P0): TTFB – czas odpowiedzi serwera

Kryterium: TTFB < 600 ms dla Googlebota, idealnie < 200 ms. Narzędzie: Chrome DevTools Network tab, WebPageTest, GSC Crawl Stats. Powyżej 800 ms Google zacznie ograniczać crawl rate. Rozwiązania: cache na poziomie serwera (Redis, Varnish), CDN (Cloudflare), upgrade hostingu z shared na VPS/dedicated.

Punkt 3 (P0): HTTPS na całej domenie

Kryterium: wszystkie URL-e zwracają 200 na HTTPS, HTTP redirectuje 301 na HTTPS, certyfikat ważny minimum 30 dni. Sprawdź SSL Labs (A lub A+), brak mixed content w DevTools Console. Częsty błąd: wewnętrzne linki z http:// w starych artykułach lub szablonie – wymuszaj HTTPS w canonical tag i sitemap. Temat ten rozwijamy w przewodniku SEO 2026.

Punkt 4 (P1): HTTP/2 lub HTTP/3

Kryterium: serwer obsługuje HTTP/2 (multipleksacja requestów, mniejszy narzut). Sprawdź w Chrome DevTools Network tab w kolumnie Protocol. Wpływ: 5–15% szybsza strona przy wielu małych zasobach. HTTP/3 (QUIC) to bonus, głównie dla mobilki w niestabilnych sieciach.

Punkt 5 (P1): Kompresja Brotli/Gzip

Kryterium: HTML, CSS, JS, JSON są kompresowane (response header content-encoding: br lub gzip). Brotli daje ~20% lepszą kompresję niż Gzip. Sprawdź w DevTools lub curl -I -H "Accept-Encoding: br, gzip". Oszczędność pasma i czasu ładowania proporcjonalna do rozmiaru.

Punkt 6 (P1): Cache headers i CDN

Kryterium: zasoby statyczne (CSS, JS, obrazki, fonty) mają Cache-Control: public, max-age=31536000, immutable i są serwowane z CDN. HTML może być prywatny lub cache 5–60 minut zależnie od charakteru treści. Brak cache headers = Googlebot ciągle pobiera te same zasoby, marnując crawl budget.

Punkt 7 (P2): Geolokalizacja serwera i CDN coverage

Kryterium: serwer lub edge CDN w regionie docelowej publiczności (dla Polski – Frankfurt, Warszawa, Amsterdam). Sprawdź w Cloudflare Analytics lub ping z różnych regionów. Dla stron międzynarodowych sprawdź, czy CDN ma obecność w kluczowych rynkach. Pomijalne dla stron lokalnych, istotne dla międzynarodowych.

Blok 2: Indeksacja (punkty 8–15)

Drugi fundament – URL, który nie jest zaindeksowany, nie ma prawa rankować. Punkty 8–15 zajmują 2–3 godziny, przy większych stronach 4–5 godzin (więcej ręcznych sprawdzeń w GSC).

Punkt 8 (P0): robots.txt – poprawność i dostępność

Kryterium: robots.txt istnieje na /robots.txt, zwraca 200, nie zawiera globalnego Disallow: /. Częste wpadki: staging robots.txt wgrany na prod (32% problemów P0 w moich audytach), literówki w User-agent, blokada katalogu /wp-content/ blokująca CSS/JS.

Punkt 9 (P0): Meta robots i X-Robots-Tag

Kryterium: strony, które mają być zaindeksowane, nie zawierają noindex w HTML ani X-Robots-Tag headerze. Sprawdź masowo przez Screaming Frog (filtr Directives). Typowy błąd: WordPress w ustawieniach „Discourage search engines” zostawionym po migracji z staging.

Punkt 10 (P0): Sitemap XML – istnienie, rozmiar, świeżość

Kryterium: sitemap.xml lub sitemap_index.xml istnieje, max 50 tys. URL na plik, max 50 MB, zawiera tylko URL-e z kodem 200 i bez noindex. Sprawdź ostatnią modyfikację w <lastmod>. Sitemap z 50% URL-ów 404 lub noindex to silny negatywny sygnał dla Google.

Punkt 11 (P0): Sitemap zarejestrowany w Search Console

Kryterium: wszystkie sitemapy zgłoszone w GSC, status „Success”, liczba URL „Discovered” zbliżona do liczby URL w sitemap. Różnica > 20% między „Submitted” a „Indexed” wymaga diagnozy – najczęściej thin content, duplicate, lub problem z renderowaniem.

Punkt 12 (P0): Raport Coverage w GSC

Kryterium: wszystkie kluczowe kategorie i top artykuły w statusie „Indexed”. Zakładka „Not indexed” z powodami: Crawled – currently not indexed, Discovered – currently not indexed, Duplicate without user-selected canonical. Każda z tych kategorii wymaga innej diagnozy i innego działania.

Punkt 13 (P1): Canonical tag – spójność z href i sitemap

Kryterium: każdy URL ma <link rel="canonical" href="..."/> wskazujący na preferowaną wersję. Canonical URL zwraca 200, jest w sitemap, i linkuje sam do siebie na tej wersji. Sprzeczność: canonical wskazuje na URL X, a ten X ma canonical na URL Y – Google ignoruje i wybiera sam.

Punkt 14 (P1): Parametry URL i filtrowanie

Kryterium: parametry (?utm=, ?sort=, ?color=) nie generują duplikatów w indeksie. Narzędzie: Screaming Frog z opcją „Include URL parameters”, Ahrefs Site Audit raport „URL parameters”. Rozwiązania: canonical do wersji bez parametru, blokada w robots.txt dla parametrów utm/source, parametry filtracji pod noindex, follow.

Punkt 15 (P1): Strony paginacji

Kryterium: strony typu ?page=2 mają canonical do siebie (nie do strony 1), zawierają unikalne listy produktów/artykułów, nie są noindex. Google oficjalnie przestał używać rel=prev/next w 2019 – obecna best practice to self-canonical plus linki w paginacji HTML zamiast JavaScript.

Blok 3: Crawl budget i logi (punkty 16–22)

Dla stron < 10 tys. URL crawl budget rzadko jest wąskim gardłem. Dla większych – kluczowy. Ten blok to 3–6 godzin analizy logów serwera (najlepsza diagnoza) lub GSC Crawl Stats.

Punkt 16 (P1): Crawl rate w GSC

Kryterium: raport GSC Crawl Stats pokazuje stabilną lub rosnącą liczbę żądań Googlebota. Średnia waha się 10–50% – to normalne. Spadek o 60%+ trwający > 14 dni sygnalizuje problem (serwer wolny, robots.txt, lub Google zdecydował, że strona nie jest warta crawla).

Punkt 17 (P1): Rozkład crawla na typy plików

Kryterium: 60–70% crawla to HTML, 20–30% obrazki/CSS/JS, reszta inne. Jeśli 80%+ to obrazki, Googlebot traci czas na zasoby zamiast treści – sprawdź, czy obrazki nie są zduplikowane przez różne URL-e (CDN z wieloma wariantami).

Punkt 18 (P1): Logi serwera – segmentacja ruchu Googlebota

Kryterium: minimum 14 dni logów serwera przeanalizowane w Screaming Frog Log File Analyser, Semrush Log Analyzer, lub własnym pipeline BigQuery. Weryfikacja User-agent Googlebot przez reverse DNS (nslookup) – 3–8% ruchu podaje się za Googlebota fałszywie.

Punkt 19 (P1): Strony odwiedzane często a ich wartość biznesowa

Kryterium: top 100 URL-i najczęściej crawlowanych powinno zawierać strony z największym ruchem organicznym i konwersjami. Jeśli Googlebot spędza 40% czasu na /tag/ lub ?sort=, masz crawl waste. Rozwiązanie: noindex + nofollow na tagach, blokada parametrów w robots.txt.

Punkt 20 (P2): Strony nieosiągane przez Googlebota (orphan pages)

Kryterium: URL-e w sitemap lub GSC, które nie pojawiają się w logach > 60 dni. Narzędzie: Screaming Frog porównanie „Crawled URLs” vs „URLs in sitemap”. Orphan pages nie rankują, nawet jeśli są technicznie indeksowalne. Rozwiązanie: dodaj internal link z pokrewnej kategorii lub top artykułu.

Punkt 21 (P2): 404 i 5xx w logach

Kryterium: < 2% żądań Googlebota kończy się 404, < 0,5% to 5xx. Wyższe wartości = crawl waste. Top 20 najczęściej 404-owanych URL-i to zwykle kandydaci na redirect 301 do aktualnej wersji.

Punkt 22 (P2): Średni czas odpowiedzi per sekcja

Kryterium: średni response time dla Googlebota < 500 ms per sekcja (blog, sklep, strony statyczne). Sekcja znacząco wolniejsza = prawdopodobnie generowana dynamicznie bez cache, Googlebot zmniejszy crawl rate tej sekcji.

Blok 4: Renderowanie i JavaScript (punkty 23–29)

W 2026 roku większość nowoczesnych stron to JavaScript framework (Next.js, Nuxt, Angular). Nieprawidłowe renderowanie to najczęstszy ukryty problem SEO. Ten blok wymaga 2–4 godzin i dobrego zrozumienia renderowania JavaScript pod SEO.

Punkt 23 (P0): URL-e renderują treść bez JS (server-side rendering)

Kryterium: curl https://example.pl zwraca HTML z treścią, tytułem, meta tagami, linkami. Jeśli curl zwraca pustą stronę z <div id="root"></div>, masz SPA bez SSR – Google poradzi sobie z tym gorzej niż z SSR (opóźniona indeksacja 3–5x, niestabilne rendery).

Punkt 24 (P0): Wszystkie kluczowe meta tagi w HTML od razu

Kryterium: title, description, canonical, hreflang, JSON-LD są w pierwszym response HTML, nie doinstalowywane przez JS. Narzędzie: „View page source” (nie „Inspect”) w Chrome. Sprawdź Googlebot Rendering w GSC URL Inspection – porównaj HTML źródłowy vs wyrenderowany.

Punkt 25 (P0): Linki wewnętrzne działają z wyłączonym JS

Kryterium: menu, paginacja, related content są zwykłymi <a href>, nie <div onclick>. Test: wyłącz JS w DevTools i sprawdź, czy klikalne elementy dalej prowadzą gdzieś. Linki button/div nie przenoszą PageRanku i nie są crawlowane.

Punkt 26 (P1): Czas renderu Googlebota w GSC

Kryterium: GSC URL Inspection → „Tested page” → „View rendered page”. Wyrenderowana strona wygląda jak w przeglądarce, nie jest pusta ani z błędami. Typowe problemy: zablokowane pliki CSS/JS (patrz punkt 8), zewnętrzne API timeoutują dla Googlebota, CORS blokuje.

Punkt 27 (P1): Infinite scroll z fallbackiem paginacji

Kryterium: jeśli strona używa infinite scroll, istnieje też wersja z paginacją HTML (?page=2 działające) lub użyty jest pattern z History API i prawdziwymi URL-ami per sekcja. Googlebot nie scrolluje – bez paginacji widzi tylko pierwsze 10–20 elementów.

Punkt 28 (P1): Lazy loading obrazów z atrybutem loading=”lazy”

Kryterium: obrazki poniżej folda mają loading="lazy", obrazki z LCP (zwykle powyżej folda) mają loading="eager" i fetchpriority="high". Błąd: lazy na hero image daje LCP 4–6 sekund zamiast 1,5 s. Test: Lighthouse „Largest Contentful Paint element” pokazuje, który element jest LCP.

Punkt 29 (P2): Dynamiczne elementy i ich wpływ na rendering

Kryterium: widgety typu „Personalizowane rekomendacje” ładują się przez JS, ale nie modyfikują title/description/canonical. Test: porównaj JSON-LD w HTML źródłowym vs wyrenderowanym – powinny być identyczne dla tych samych tagów (Article, Product, BreadcrumbList).

Blok 5: Struktura URL i linkowanie wewnętrzne (punkty 30–36)

URL-e i linki to szkielet architektury informacji. Ten blok – 2–3 godziny analizy z Screaming Frog i Sitebulb. Błędy na tym poziomie są drogie w naprawie, bo wymagają migracji URL.

Punkt 30 (P0): Struktura URL logiczna i płaska

Kryterium: URL-e mają 2–4 segmentów (/kategoria/artykul/), zawierają słowa kluczowe, są czytelne. Unikaj ID-ów (?id=4572), parametrów sortowania w ścieżce, hash-fragments (#) zamiast prawdziwych URL-ów. Struktura > 5 segmentów zwykle sygnalizuje za głębokie zagnieżdżenie architektury.

Punkt 31 (P0): Spójność trailing slash

Kryterium: /url/ i /url nie zwracają obie 200 – jedna wersja 301-uje na drugą. WordPress domyślnie trailing slash, statyczne strony często bez. Niespójność tworzy duplikaty i rozmywa sygnały.

Punkt 32 (P0): Brak mieszanki wielkich/małych liter

Kryterium: URL-e zawsze małe litery. /Kontakt/ i /kontakt/ to dla serwera (i Google) dwa różne URL-e. Jeśli zdarzają się wielkie litery w URL-ach, redirect 301 do wersji małych liter.

Punkt 33 (P1): Głębokość kliknięć (click depth)

Kryterium: 90% ważnych stron dostępne w max 3 kliknięciach od homepage. Mierzone przez Screaming Frog → „Crawl Depth”. Strony w depth 5+ rankują gorzej. Rozwiązania: hub pages, breadcrumbs, related content, contextual internal links.

Punkt 34 (P1): Gęstość internal linków na top stronach

Kryterium: top 20 artykułów ma 15–40 linków wychodzących (nie licząc menu/footer) – w tym linki do pokrewnych tematów, nie tylko do tag pages. Zbyt mało linków = izolacja autorytetu, zbyt dużo (> 100) = rozmycie.

Punkt 35 (P1): Broken internal links

Kryterium: < 0,5% linków wewnętrznych zwraca 404, 302, lub 5xx. Narzędzie: Screaming Frog zakładka „Response Codes”. Top źródła linków do 404: stare artykuły, szablon footera, migrowane treści bez update linków.

Punkt 36 (P2): Redirect chains (> 1 hop)

Kryterium: nie więcej niż 1 krok redirect 301 dla żadnego URL-a. Łańcuch 3+ redirectów traci część link equity i marnuje crawl budget. Narzędzie: Screaming Frog → „Redirects & Canonical Errors”. Rozwiązanie: aktualizuj końcowy URL w wszystkich redirect rules, skracając łańcuchy do 1 hop.

Blok 6: Core Web Vitals (punkty 37–43)

Core Web Vitals to trzy metryki: LCP, INP, CLS. Nie są deal-breakerem dla rankingów (mały, ale realny sygnał), ale wpływają bezpośrednio na UX i konwersje. Ten blok – 2–4 godzin.

Punkt 37 (P1): LCP < 2,5 s na 75 percentylu

Kryterium: GSC Core Web Vitals report lub PageSpeed Insights z field data (CrUX). LCP powyżej 2,5 s to „Poor”. Typowe optymalizacje: preload LCP image, CDN, server-side rendering, eliminacja render-blocking CSS/JS.

Punkt 38 (P1): INP < 200 ms na 75 percentylu

Kryterium: INP (Interaction to Next Paint) zastąpił FID w marcu 2024. < 200 ms „Good”, 200–500 ms „Needs improvement”, > 500 ms „Poor”. Główne przyczyny wysokiego INP: ciężki JavaScript blokujący main thread, third-party scripts (chat widgets, analytics), synchroniczne operacje na liście.

Punkt 39 (P1): CLS < 0,1

Kryterium: Cumulative Layout Shift < 0,1. Główne przyczyny: obrazki bez width/height, dynamiczne treści wstawiane nad foldem, web fonts bez font-display: optional. Narzędzie: Chrome DevTools „Performance” tab pokazuje konkretne shift events.

Punkt 40 (P2): Obrazki optymalizowane (format, rozmiar)

Kryterium: format WebP/AVIF zamiast JPG/PNG dla zdjęć, SVG dla ikon, responsywne srcset. Rozmiar obrazka mobile < 200 KB, desktop < 500 KB. Narzędzie: Lighthouse zakładka „Opportunities” wskazuje konkretne obrazki do naprawy.

Punkt 41 (P2): Fonty – preload i font-display

Kryterium: web fonty preloadowane (<link rel="preload" as="font">), font-display: swap lub optional. Nigdy font-display: block – powoduje niewidoczny tekst przez 3+ sekundy (FOIT).

Punkt 42 (P2): JavaScript – code splitting i lazy load

Kryterium: main bundle < 200 KB (gzip), reszta kodu ładowana on-demand. Third-party scripts (Google Tag Manager, FB Pixel) z async lub defer. Sprawdź w Coverage tab DevTools – jeśli > 50% JS jest „unused” przy pierwszym ładowaniu, masz over-delivery.

Punkt 43 (P2): CSS krytyczny inline, reszta async

Kryterium: CSS dla powyżej folda jest inline w <head> (< 14 KB), reszta CSS ładowana po onload. Efekt: LCP o 300–600 ms krótszy, bo render nie czeka na zewnętrzny CSS file. Narzędzie: Critical npm package, Penthouse.

Blok 7: Sygnały semantyczne i schema (punkty 44–50)

Ostatni blok – sygnały strukturalne, które pomagają Google zrozumieć treść i LLM-om (ChatGPT, Perplexity, Gemini) cytować stronę. 1,5–2,5 godziny.

Punkt 44 (P1): JSON-LD schema.org na kluczowych stronach

Kryterium: Organization na homepage, WebSite z SearchAction, Article/BlogPosting na artykułach, Product na produktach, Breadcrumb na wszystkich. Walidacja: schema.org validator i Google Rich Results Test. Nawet pojedynczy błąd parsowania JSON może zepsuć cały schema dla strony.

Punkt 45 (P1): Hreflang dla stron wielojęzycznych

Kryterium: każda strona z tłumaczeniem ma kompletne <link rel="alternate" hreflang="..."/> wskazujące na wszystkie wersje (w tym x-default). Weryfikacja: strona A linkuje do B, strona B linkuje do A – symetria obowiązkowa. Narzędzie: Screaming Frog zakładka „Hreflang”.

Punkt 46 (P1): Meta tagi unikalne (title, description)

Kryterium: każdy URL ma unikalny title (50–60 znaków) i description (140–160 znaków), brak duplikatów > 5% strony. Narzędzie: Screaming Frog → „Page Titles” → „Duplicate”. Typowe źródła duplikatów: paginacja bez numeru strony w title, produkty z generowanymi title z templata.

Punkt 47 (P2): Nagłówki H1 – jeden per strona

Kryterium: każda strona ma dokładnie 1 <h1>, zawierający główny temat/keyword. Sprawdź w Screaming Frog → „H1”. Wiele H1 to zwykle błąd szablonu (H1 w logo + H1 w tytule artykułu). Google toleruje, ale to podstawowy audit item.

Punkt 48 (P2): Image alt tags – kompletność i jakość

Kryterium: 100% obrazów w <img> ma atrybut alt, dekoracyjne mogą mieć pusty alt="". Kluczowe (ilustracje artykułów, produkty) – opisowy alt text z keywordem. Brak alt tagów = utracona szansa rankowania w Google Images i dostępność.

Punkt 49 (P2): Breadcrumbs w HTML i schema

Kryterium: breadcrumb widoczny w HTML (nawigacja użytkownika), zduplikowany w BreadcrumbList JSON-LD. Google wyświetla breadcrumbs w SERP zamiast URL, poprawiając CTR o 5–10%. Szczególnie ważne dla e-commerce i blogów.

Punkt 50 (P2): Social meta – OpenGraph i Twitter Cards

Kryterium: każda strona ma og:title, og:description, og:image, og:url, og:type. Twitter Cards – twitter:card summary_large_image. Nie wpływa bezpośrednio na SEO, ale CTR z social shareów – tak. Walidacja: Facebook Sharing Debugger, Twitter Card Validator.

Priorytety i mapa czasowa – co naprawiać najpierw

50 punktów to dużo, ale nie wszystkie wymagają akcji. Priorytetyzacja według rzeczywistego wpływu na ruch organiczny.

Tabela priorytetów

PriorytetKryteriumCzas naprawyWpływ na ruch
P0 – krytyczneBlokada indeksacji, serwer failing, mixed HTTP/HTTPS24–72h20–80% ruchu zagrożone
P1 – wysokieCrawl waste, renderowanie, sitemap, canonical, meta1–4 tygodnie10–30% wzrost możliwy
P2 – średnieCWV optymalizacje, schema, fine-tuning4–12 tygodni3–10% wzrost możliwy

Typowy harmonogram po audycie

  • Tydzień 1: wszystkie P0 naprawione, deploy na prod.
  • Tygodnie 2–4: P1 w sprintach, każdy blok (sitemap, canonical, rendering) jako osobna iteracja z testami.
  • Tygodnie 5–12: P2 w rytmie regularnych optymalizacji wydajności i dopieszczania schema.
  • Tydzień 13+: powtórka audytu – sprawdź, które punkty wróciły do stanu pre-fix (najczęściej sitemap świeżość, meta description na nowych stronach, broken internal links).

Stack narzędziowy audytu

Pełen audyt techniczny można wykonać za 1,5–2,5 tys. zł miesięcznie w narzędziach. Przy jednorazowym audycie – nawet wersje trial/free wystarczą na 5-dniowy projekt.

NarzędzieRola w audycieCena 2026Alternatywy
Screaming FrogCrawl, technical SEO, sitemap€239/rok (~1000 zł)Sitebulb, Netpeak Spider
Google Search ConsoleCoverage, CWV, Crawl Statsfreebrak alternatywy
Ahrefs Site AuditDiagnoza problemów, monitoring$99/mies od StarterSemrush Site Audit
Chrome DevToolsRendering, network, performancefreeFirefox DevTools
Lighthouse / PageSpeedCore Web Vitals, opportunitiesfreeWebPageTest, GTmetrix
Log File AnalyserDiagnoza crawl budgetu€99/rokSemrush Log Analyzer
Validator schema.orgWalidacja JSON-LDfreeGoogle Rich Results Test

Najczęstsze błędy w audytach technicznych

Błąd 1: Audyt = lista 200 problemów bez priorytetów

Większość generowanych raportów z Semrush/Ahrefs pokazuje 300–800 issues, z czego 90% to P2 lub „information only”. Naprawianie wszystkiego po kolei zabiera 6 miesięcy i nie przynosi wzrostów. Zawsze priorytetyzuj P0 → P1 → P2.

Błąd 2: Ignorowanie rendera Googlebota

„Strona wygląda OK w przeglądarce” – to nie znaczy, że Googlebot ją widzi. Zawsze sprawdzaj rendered HTML w GSC URL Inspection, szczególnie jeśli frontend to Next.js/Nuxt/Angular. 30% audytowanych stron ma rozbieżność rendered vs source.

Błąd 3: Audyt na staging zamiast prod

Staging to często inna konfiguracja niż prod – inna robots.txt, inne redirect rules, inny CDN. Audytuj produkcję, a staging używaj tylko do testowania fixów przed deployem.

Błąd 4: Pomijanie logów serwera

Logi to jedyne źródło prawdy o tym, co Googlebot naprawdę crawluje. GSC Crawl Stats to aproksymacja. Dla stron > 5 tys. URL logi są obowiązkowe, a nie opcjonalne.

Błąd 5: Mierzenie sukcesu audytu liczbą fixów, nie wpływem

Naprawienie 150 z 200 issues wygląda dobrze w raporcie, ale jeśli te 150 to P2, a 5 P0 zostało niezaadresowanych – ruch nie wzrośnie. KPI audytu: % wzrostu organic traffic w 90 dni po naprawach P0/P1.

Przykład: audyt techniczny e-commerce (3,5 tys. URL)

Klient: sklep internetowy z kosmetykami, Magento 2, 3,5 tys. URL, spadek organic traffic o 38% w 4 miesiącach bez zmian w treści. Audit time: 18 godzin w 5 dni. Pełen obraz tematu znajdziesz w kompletnym przewodniku seo 2026.

Znalezione problemy

  • P0: filtr „opinie” generował 800 duplikatów z parametrem ?rating=, wszystkie zaindeksowane, rozmywające sygnały.
  • P0: migracja na nowy template 3 miesiące wcześniej zepsuła 220 internal links do starych URL-ów (nieaktualizowane).
  • P1: LCP na PDP (Product Detail Page) = 3,8 s z powodu niezoptymalizowanego hero image i render-blocking CSS.
  • P1: brak Product schema na 60% kart produktów (stare produkty z czasów sprzed plugin schema).
  • P2: image alt tags puste na 40% zdjęć produktów.

Harmonogram napraw

  • Tydzień 1: blokada parametru ?rating= w robots.txt + canonical do URL bez parametru. Update 220 internal links do aktualnych URL-ów przez search-replace w bazie.
  • Tydzień 2–3: LCP fix – preload hero image, critical CSS inline, lazy load poniżej folda. Target: LCP 1,8 s.
  • Tydzień 4–5: Product schema doinstalowany na 100% kart produktów, walidacja w Rich Results Test. Alt tags na top 200 zdjęć produktów.

Wyniki po 90 dniach

  • Organic traffic: +47% vs pre-fix baseline (overshoot oczekiwań).
  • Indeksowane URL-e: z 8,2 tys. zduplikowanych spadły do 3,6 tys. unikalnych (więcej nie znaczy lepiej).
  • LCP 75th percentile: z 3,8 s do 1,9 s (Core Web Vitals „Good” dla 78% URL-i).
  • CTR na PDP w SERP: +12% dzięki rich results z Product schema (cena, ocena, dostępność).

FAQ – najczęstsze pytania

Ile trwa pełny audyt techniczny SEO?

Mała strona (< 500 URL) – 8–12 godzin pracy, 2–3 dni kalendarzowe. Średnia (500–5 tys. URL) – 14–20 godzin, 3–5 dni. Duża (5 tys.–50 tys. URL) – 30–60 godzin, 7–14 dni z analizą logów. Enterprise (50 tys.+) – 80+ godzin, minimum 3 tygodnie z testami na stagingu. Nie licząc czasu fixów po audycie (4–12 tygodni).

Czy audyt techniczny wystarczy, żeby wzrósł ruch?

Sam audyt – nie. Audyt + naprawa P0 i P1 – często tak, średnio +15–30% ruchu w 90 dni, o ile treść i linki są na akceptowalnym poziomie. Jeśli strona nie ma treści na główne frazy albo ma zerowy profil linków, audyt techniczny to tylko odblokowanie potencjału – wzrost wymaga równoległej pracy nad treścią i linkami.

Jak często powtarzać audyt techniczny?

Pełny audyt – raz na 6–12 miesięcy plus każda większa zmiana (redesign, migracja, zmiana CMS). Monitoring ciągły – cotygodniowe alerty z Ahrefs/Semrush Site Audit i GSC Coverage. Miesięczny mini-audit: nowe 404, regression CWV, nowe duplikaty, broken internal links. Kwartalny deep-dive: rendering, schema walidacja, hreflang consistency.

Czy da się zautomatyzować audyt techniczny?

Częściowo. 60–70% punktów (status codes, broken links, meta tags, schema walidacja, CWV) zautomatyzujesz przez cron Screaming Frog + alert w Slack. Pozostałe 30% (interpretacja priorytetu, decyzje architektoniczne, analiza logów) wymaga senior SEO. Automatyzacja wykrywa problemy – priorytetyzacja i fix strategy zostają ludziom. Narzędzia agentowe z LLM w 2026 pomagają w pre-analizie, ale nie zastępują audytora.

Co jest ważniejsze – Core Web Vitals czy indeksacja?

Indeksacja – bez porównania. Strona, która nie jest zaindeksowana, nie ma ruchu bez względu na CWV. CWV to sygnał o małym wpływie (< 5% zmiany rankingu), indeksacja to warunek konieczny. Zawsze naprawiaj indeksację (P0) przed CWV (P2). Wyjątek: jeśli CWV LCP > 6 s, Google może nie zaindeksować w pełni – wtedy to staje się P0.

Czy audyt na stronie w AI-generated content ma sens?

Tak, audyt techniczny jest niezależny od pochodzenia treści. Googlebot nie rozróżnia (oficjalnie) AI vs ludzki content – rozróżnia treść wartościową od spamu. Audyt techniczny wyłapuje problemy infrastruktury, niezależnie od tego, kto napisał artykuł. Dla stron AI-first dodatkowy punkt: sprawdź, czy generowane meta description nie są duplikatami (częsty problem przy szablonach promptów).

Jak przekonać klienta/zarząd do inwestycji w audyt?

Zrób 2-godzinny mini-audit z top 5 znaleziskami P0/P1 i przeliczeniem ich na utracony ruch/przychód. Przykład: „URL-e produktów mają noindex od miesiąca – to 2 400 utraconych sesji organicznych tygodniowo, przy konwersji 2,1% i AOV 180 zł to 45 tys. zł utraconego przychodu miesięcznie”. Liczby przemawiają silniej niż diagnostyczne ogólniki.

Audyt techniczny a wyszukiwarki AI

W 2026 roku audyt nie kończy się na Google — LLM-y (ChatGPT, Perplexity, Gemini) crawlują inaczej, mają inne wymagania. Dodajemy 5 dodatkowych punktów do checklistu, gdy strona ma być widoczna w odpowiedziach AI.

Punkt A1: User-agent wyszukiwarek AI nieblokowane

W robots.txt sprawdź, czy nie blokujesz: GPTBot, ChatGPT-User, anthropic-ai, Claude-Web, PerplexityBot, Google-Extended. Wielu autorów stron zablokowało je defensywnie w 2023–2024 — blokada = zero cytowań w odpowiedziach AI. Jeśli treść ma być źródłem dla LLM-ów, otwórz dostęp.

Punkt A2: HTML source zawiera pełną treść

Większość crawlerów AI nie renderuje JavaScript — widzą tylko HTML source. Jeśli twoja strona to SPA, która ładuje treść przez fetch po mount, LLM-y zobaczą pustą stronę. Rozwiązanie: SSR lub Static Site Generation dla stron, które mają być cytowane.

Punkt A3: Struktura treści przyjazna chunkowaniu

Krótkie akapity (2–4 zdania), konkretne odpowiedzi na początku sekcji, tabele porównawcze, listy — wszystko to pomaga LLM-om wyciągać fragmenty. Sprawdź top 20 artykułów pod kątem „quotability” — czy jakieś zdanie brzmi jak samodzielna odpowiedź?

Punkt A4: Schema dla encji (Organization, Person, Product)

LLM-y budują wiedzę o encjach z ich schema. Organization na homepage z sameAs wskazującym na Wikipedia, LinkedIn, social — pomaga AI zmapować, kim jesteście. Product z brand, review, aggregateRating — pomaga cytować w odpowiedziach zakupowych.

Punkt A5: Monitoring cytowań AI

Dodaj do stacka narzędzie mierzące, jak często wasza domena jest cytowana w ChatGPT/Perplexity/Gemini — Semrush AI Toolkit, Profound, Goodie. Bez monitoringu nie wiesz, czy audyt pomógł widoczności AIO.

Segmentacja audytu dla różnych typów stron

Nie każdy projekt ma ten sam bottleneck — dlatego waga poszczególnych punktów zmienia się zależnie od typu strony. Blog ma inne priorytety niż e-commerce, a marketplace różni się od SaaS landing page.

Blog/media content

  • Krytyczne: punkty 8–15 (indeksacja), 23–29 (renderowanie dla nowoczesnych szablonów), 44–46 (schema Article, hreflang).
  • Mniej ważne: punkty 30–32 (struktura URL, zwykle proste w blogu), 48–49 (breadcrumbs, choć wciąż warto).
  • Specyficzne: audyt szybkości pierwszego widoku artykułu — LCP na hero image i renderowanie głównej treści bez blokady JS third-party.

E-commerce

  • Krytyczne: punkt 14 (parametry URL), 19 (crawl budget marnowany na filtry), 44 (Product schema), 45 (hreflang dla sklepów międzynarodowych), 37–38 (CWV na PDP).
  • Mniej ważne: punkt 50 (social meta — liczy się, ale to nie #1 sprawa).
  • Specyficzne: facet navigation, out-of-stock handling (noindex follow czy 404 po delisting), duplikacja wariantów produktu (kolor/rozmiar).

SaaS/landing pages

  • Krytyczne: punkty 23–26 (rendering — SPA frameworki), 37–39 (CWV wpływa na konwersję), 44 (SoftwareApplication schema).
  • Mniej ważne: punkty 16–22 (crawl budget — strona ma zwykle < 100 URL).
  • Specyficzne: docs site separation (subdomena vs subkatalog), A/B testing bez klonowania URL-ów.

Marketplace

  • Krytyczne: cała sekcja crawl (16–22 — często miliony URL-ów), 14 (parametry), 34 (wewnętrzne linki między ofertami/kategoriami).
  • Mniej ważne: brak — w marketplace prawie wszystko jest krytyczne z powodu skali.
  • Specyficzne: duplicate listings (jeden produkt sprzedawany przez 20 merchantów), user-generated content moderation pod kątem spamu w title/description.

Zarządzanie audytem jako projektem

Audyt techniczny to nie tylko crawl — to też koordynacja zespołu, komunikacja do biznesu i dyscyplina w dokumentacji. W moich projektach 30% czasu to samo pisanie/przekazywanie znalezisk; 70% to diagnostyka i weryfikacja fixów.

Format raportu, który działa

  • Executive summary (1 strona) — top 5 znalezisk, wpływ na ruch/przychód, czas fix.
  • Issues log (Google Sheet) — każdy issue w osobnym wierszu z kolumnami: priorytet, opis, URL-e dotknięte, narzędzie, owner, status, czas naprawy.
  • Technical deep-dives — dla P0 i top P1 osobny dokument Google Docs z contextem, screenshotami, konkretnym rozwiązaniem.
  • Roadmapa 12-tygodniowa — timeline z milestones, zależnościami (co musi być pierwsze), punktami kontrolnymi co 2 tygodnie.

Komunikacja do biznesu

  • Nie pokazuj surowych raportów Ahrefs/Semrush — zarząd nie rozumie „crawl depth”. Tłumacz w języku biznesowym: „te zmiany odblokują X sesji organicznych miesięcznie”.
  • Zawsze dodawaj estymację ruchu/przychodu dla top 5 fixów — nawet przybliżoną.
  • Ustal z zespołem dev „definition of done” dla każdego fixu: jaki test potwierdza, że problem zniknął (np. „Screaming Frog po crawlu nie pokazuje URL-i z rating= parametrem w indeksie”).
  • Post-mortem po 90 dniach — co zadziałało, co nie, dlaczego. Dokumentuj, żeby następny audyt był szybszy.

Co dalej

Audyt techniczny to punkt startu, nie koniec. Kolejne kroki: (1) metodyka pełnego audytu SEO – jak łączyć technikę z treścią i linkami, (2) audyt treści – ocena portfolio artykułów i kategorii, (3) rendering JavaScript pod SEO – pogłębienie bloku 4, jeśli masz framework frontend.

Pełen kontekst w przewodniku SEO 2026 – audyt to warstwa diagnostyczna, strategia buduje się na podstawie jego wyników.