Przejdź do treści kombAIn 28 kursów AI w jednej paczce, od 2 222 zł · osobno 31 320 zł · sprzedaż do 9.11, zostało 240 miejsc Zobacz →
kursy ai / widoczność / audyt seo Flagowiec · dostępny od razu

Audyt SEO dużego serwisu z AI

Robisz audyt serwisu z setkami tysięcy adresów: sitemapy, crawl, indeksacja, duplikaty, kanibalizacja, schema. AI liczy i grupuje dane, wnioski piszesz ty. Kończysz raportem dla zarządu i sprzedajesz audyt za 3-15 tys. zł.

  • Robisz crawl dużego serwisu tak, żeby nie położyć serwera i nie utonąć w danych.
  • Analizujesz sitemapy liczone w setkach tysięcy adresów i porównujesz je ze stanem indeksu i crawla.
  • Wykrywasz duplikaty, kanibalizację i błędy adresów kanonicznych, planujesz scalenia z przekierowaniami.
  • Piszesz z Claude Code skrypty do pobierania i łączenia danych z Search Console, logów i crawla.
Klient płaci3-6 tys. zł
Lekcje / moduły28 / 7
Czas naukiok. 9 h 13 min
Pliki9 do pobrania
Po co ten kurs

Duży serwis psuje się po cichu. Jedna zmiana w szablonie potrafi wyrzucić z indeksu tysiące stron. Na noktus.pl awaria noindex zdjęła z Google 1311 wpisów i to ja ją odkręcałem. Wyniosłem z tego zasadę, która wraca w każdym module: pusta odpowiedź API to „nie wiem”, a nie „zero”. Na podstawie braku danych nie zmieniam niczego masowo.

Zrobiłem audyt black-box ppe.pl, który miał w sitemapach 1,06 mln adresów. Na obyty.pl scaliłem 265 duplikatów. Na tych projektach pokazuję skrypty pisane z Claude Code, analizę danych z AI i jednostronicowy raport dla zarządu.Piotr Promptowy
Pieniądze

Na czym zarabiasz

3-6 tys. złAudyt techniczny średniego serwisu (do 50 tys. URL)
8-15 tys. złPełny audyt dużego serwisu z raportem dla zarządu
3-8 tys. złAudyt black-box przed rozmową sprzedażową lub dla inwestora
2-5 tys. zł/mies.Nadzór nad wdrożeniem rekomendacji
2-6 tys. złPlan scalenia duplikatów i mapa przekierowań
1 zlecenie

Przy najniższej stawce (3 000 zł) tyle wystarczy, żeby kurs za 1 490 zł się zwrócił.

Duży serwis traci pieniądze na każdym błędzie indeksacji, więc wartość audytu łatwo pokazać. Cena zależy od skali i zakresu, od jednego obszaru po pełny audyt z planem wdrożeń. Po audycie często przychodzi zlecenie na nadzór nad wdrożeniem. Stawki są orientacyjne, nie gwarantuję zarobku.

Fragment lekcji 1

Tak wygląda środek

Początek pierwszej lekcji, bez skrótów. Resztę i 27 kolejnych lekcji dostajesz w panelu.

promptowy.com/lab/panel/audyt-seo-z-ai/1

Zakres i pytania biznesowe

Serwis obyty.pl miał być o zdrowiu: 741 opublikowanych wpisów o objawach, badaniach i lekach. Kiedy we wrześniu otworzyłem Search Console, wyświetlenia zbierały zupełnie inne teksty. Porównanie Emirates A380 z Boeingiem 777 miało ich 219, tekst o przeciętnym wynagrodzeniu według GUS 221, a poradnik o trzech formularzach do Wietnamu 67 wyświetleń i 5 kliknięć. Cały serwis zebrał w 90 dni 25 kliknięć.

To stare wpisy z poprzedniego wcielenia domeny. Audyt robiony według podręcznika kazałby je usunąć jako niepasujące do tematu, a to były jedyne strony, które w ogóle działały. Dlatego audyt dużego serwisu zaczynam od rozmowy i od pytania o pieniądze. Crawler odpalam później.

Krok 1. Pięć pytań na pierwszą rozmowę

Rozmowę prowadzę według stałej listy. Odpowiedzi zapisuję dosłownie, bo wracam do nich, kiedy układam priorytety.

  1. Z czego serwis żyje i które sekcje na to pracują. Reklama, afiliacja, subskrypcje, zapytania ofertowe. Na moim serwisie naukowym noktus.pl przychód 3 013 zł brał się z odsłon na wp.pl w programie WP Kreator, a nie z ruchu na własnej domenie. Licznik pokazywał wtedy 36 wejść dziennie przy 1 395 wpisach. Audyt indeksacji by tego nie wykrył, a po końcu programu pieniądze znikały bez względu na stan indeksu.
  2. Co się zmieniło i kiedy. Migracje, nowe szablony, wtyczki, automaty, które publikują albo czyszczą treść. Proszę o daty, choćby przybliżone.
  3. Kiedy spadł ruch i według którego narzędzia. Analityka, Search Console i panel reklamowy liczą różne rzeczy.
  4. Czego nie wolno ruszać.
  5. Kto wdroży zalecenia i ile ma na to czasu. Lista osiemdziesięciu zadań dla zespołu z jednym programistą na pół etatu zostanie w szufladzie, choćby każde zadanie było słuszne.

Drugie pytanie wygląda na formalność, dopóki nie trafisz na zmianę, o której nikt nie pamięta. Na promptowy.com czytelnik zgłosił, że strona wygląda jak goły HTML: niebieskie linki, punktory zamiast menu. Winna była wtyczka, która przy każdej publikacji czyściła cache razem ze zminifikowanymi plikami CSS i JS. Przy 7-24 wpisach dziennie arkusze znikały kilkanaście razy na dobę, a strony w tym oknie odwoływały się do pliku, którego nie było. Bez pytania o automaty szukałbym błędu w szablonie.

Krok 2. Sekcje i koncentracja ruchu

Odpowiedzi klienta sprawdzam w danych, zanim cokolwiek zacznę crawlować. Skrypt pobiera z Search Console wszystkie strony z wyświetleniami i sumuje je według pierwszego fragmentu ścieżki, czyli sekcji. Drugi wynik to koncentracja: jaki procent kliknięć robi najmocniejsza strona, pierwsza piątka, dwudziestka i setka.

# sekcje.py - ktore sekcje serwisu robia ruch z Google (Search Console API)
# uzycie: python sekcje.py https://www.domena.pl/ 28
# wymaga: pip install google-auth requests oraz klucz.json konta uslugi
import csv
import sys
import datetime as dt
from collections import defaultdict
from urllib.parse import quote, urlparse

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession

sys.stdout.reconfigure(encoding="utf-8")
WLASCIWOSC = sys.argv[1]
DNI = int(sys.argv[2]) if len(sys.argv) > 2 else 28

klucz = service_account.Credentials.from_service_account_file(
    "klucz.json", scopes=["https://www.googleapis.com/auth/webmasters.readonly"])
sesja = AuthorizedSession(klucz)
API = ("https://searchconsole.googleapis.com/webmasters/v3/sites/"
       + quote(WLASCIWOSC, safe="") + "/searchAnalytics/query")

koniec = dt.date.today() - dt.timedelta(days=3)    # dane maja 2-3 dni opoznienia
start = koniec - dt.timedelta(days=DNI - 1)


def wszystkie_strony():
    """Stronicuje po 25 000 wierszy. API sortuje po kliknieciach i ucina reszte."""
    wiersze, od = [], 0
    while True:
        r = sesja.post(API, json={
            "startDate": start.isoformat(), "endDate": koniec.isoformat(),
            "dimensions": ["page"], "rowLimit": 25000, "startRow": od}, timeout=120)
        r.raise_for_status()                       # blad to wyjatek, nie pusta lista
        paczka = r.json().get("rows", [])
        wiersze += paczka
        if len(paczka) < 25000:
            return wiersze
        od += 25000


dane = wszystkie_strony()
if not dane:
    sys.exit("Zero wierszy z API. Nie licze udzialow - sprawdz wlasciwosc i daty.")

sekcje = defaultdict(lambda: [0, 0, 0])            # klikniecia, wyswietlenia, strony
for w in dane:
    sciezka = urlparse(w["keys"][0]).path.strip("/")
    nazwa = "/" + sciezka.split("/")[0] + "/" if sciezka else "/ (glowna)"
    s = sekcje[nazwa]
    s[0] += w["clicks"]
    s[1] += w["impressions"]
    s[2] += 1

suma = sum(w["clicks"] for w in dane) or 1
print(f"{start} - {koniec}: {len(dane)} stron z wyswietleniami, {suma:.0f} klikniec")
ranking = sorted(sekcje.items(), key=lambda x: -x[1][0])
for nazwa, (k, wy, n) in ranking[:25]:
    print(f"{nazwa[:45]:45} {k:>9.0f} klik {k / suma:6.1%} {wy:>11.0f} wysw {n:>7} stron")

po_klik = sorted(dane, key=lambda w: -w["clicks"])
for n in (1, 5, 20, 100):
    udzial = sum(w["clicks"] for w in po_klik[:n]) / suma
    print(f"pierwsze {n:>3} stron = {udzial:.0%} klikniec")

with open("sekcje.csv", "w", newline="", encoding="utf-8") as f:
    zapis = csv.writer(f)
    zapis.writerow(["sekcja", "klikniecia", "wyswietlenia", "strony"])
    for nazwa, (k, wy, n) in ranking:
        zapis.writerow([nazwa, k, wy, n])

Uruchamiam go poleceniem python sekcje.py https://www.domena.pl/ 28. Potrzebne są biblioteki google-auth i requests oraz plik klucza konta usługi, o którym piszę w następnej lekcji. Na WordPressie z wpisami w katalogu głównym pierwszy fragment ścieżki to sam wpis. Wtedy sekcje biorę z eksportu kategorii, a ze skryptu zostaje mi koncentracja.

Stronicowanie po 25 000 wierszy jest tam celowo. API sortuje wiersze po kliknięciach i ucina je na limicie. Na promptowy.com zapytałem kiedyś o 500 stron i wyszło mi, że tylko 3 z 41 recenzji mają jakiekolwiek wyświetlenia. Serwis miał 3 269 stron z wyświetleniami, a recenzje z zerem kliknięć po prostu nie zmieściły się w limicie. Po powtórzeniu pomiaru wyświetlenia miało 38 z 40.

Koncentracja na promptowym wyglądała tak: trzy strony o filtrze lat 80. dawały 57 procent kliknięć z 28 dni, pierwsza piątka 72 procent. Awaria szablonu tych trzech adresów kosztowałaby więcej niż bałagan w pozostałych ponad 2 500 adresach z map witryny. Od tej proporcji zależy kolejność całego audytu.

cała lekcja 1 z audio jest za darmoCzytaj lekcję 1 za darmoKupuję
Program

28 lekcji, ok. 9 h 13 min nauki

Każda lekcja to tekst z przykładami z moich zleceń, kodem i promptami do skopiowania, do tego wersja audio i zadanie na koniec.

lekcje
28
moduły
7
czas nauki
9 h 13 min
gotowe
z audio
pliki
29
M01Przygotowanie audytu dużej skali4 lekcje · 1 h 13 min
  1. 01
    Zakres i pytania biznesoweOd czego zaczynam rozmowę z klientem: które sekcje zarabiają, co się zmieniło, kiedy spadł ruch. Audyt bez pytań biznesowych to lista błędów bez priorytetów.
    za darmo
  2. 02
    Dostępy i daneSearch Console, analityka, logi serwera, dostęp do CMS. Jak pracuję, gdy klient nie daje dostępów - tryb black-box.
    gotowa
  3. 03
    Środowisko pracy z Claude CodeFolder audytu, skrypty, dane w CSV i SQLite, notatki. Jak prowadzę Claude Code, żeby pisał narzędzia pod konkretny serwis.
    gotowa
  4. 04
    Zasada „nie wiem to nie zero”Historia awarii noindex 1311 wpisów i procedury, które z niej wyniosłem: walidacja odpowiedzi API, progi bezpieczeństwa, zmiany na próbce przed całością.
    gotowa
M02Sitemapy i crawl4 lekcje · 1 h 26 min
  1. 05
    Sitemapy z milionem adresówJak pobieram i rozpakowuję indeksy sitemap, liczę adresy według typów i znajduję śmieci. Na przykładzie audytu z 1,06 mln URL.
    gotowa
  2. 06
    Crawl bez kładzenia serweraLimity zapytań, segmentacja, próbkowanie. Kiedy crawl całego serwisu, a kiedy reprezentatywnej próbki.
    gotowa
  3. 07
    Porównanie trzech zbiorówSitemapy kontra crawl kontra indeks. Strony osierocone, adresy w sitemapach, których nie ma w linkowaniu, i odwrotnie.
    gotowa
  4. 08
    Kody odpowiedzi i przekierowaniaŁańcuchy przekierowań, 404 w linkowaniu wewnętrznym, soft 404, adresy z parametrami.
    gotowa
M03Indeksacja4 lekcje · 1 h 24 min
  1. 09
    Raport stron w Search ConsoleJak czytać powody niezaindeksowania na dużej skali i eksportować więcej niż pokazuje interfejs.
    gotowa
  2. 10
    URL Inspection API na próbkachSkrypt do sprawdzania stanu indeksu na próbce adresów i limity API. Dlaczego brak odpowiedzi trzeba zapisać jako brak danych.
    gotowa
  3. 11
    Logi serwera i budżet crawlowaniaCo Googlebot odwiedza, jak często i na co traci czas. Analiza logów z pomocą AI.
    gotowa
  4. 12
    Noindex, canonical, robots - pułapkiKonflikty sygnałów, kanoniczne do stron z noindex, blokady w robots.txt. Jak wykryć awarię szablonu, zanim zabierze ruch.
    gotowa
M04Duplikaty i kanibalizacja4 lekcje · 1 h 27 min
  1. 13
    Wykrywanie duplikatówPodobieństwo treści, tytułów i nagłówków. Jak grupuję tysiące wpisów i weryfikuję grupy z AI.
    gotowa
  2. 14
    Kanibalizacja w danych Search ConsoleZapytania, na które konkuruje kilka adresów. Skrypt wskazujący pary do scalenia lub rozdzielenia.
    gotowa
  3. 15
    Scalanie bez utraty ruchuJak scaliłem 265 duplikatów: wybór adresu docelowego, łączenie treści, przekierowania 301, aktualizacja linków wewnętrznych.
    gotowa
  4. 16
    Thin content i strony do usunięciaKiedy usuwać, kiedy scalać, kiedy rozbudować. Decyzje na danych o ruchu i linkach, nigdy na samym braku danych.
    gotowa
M05Szablony, schema i wydajność4 lekcje · 1 h 12 min
  1. 17
    Audyt według szablonówDuży serwis to kilka szablonów powtórzonych tysiące razy. Jak wybieram próbki i znajduję błąd, który dotyka całej sekcji.
    gotowa
  2. 18
    Dane strukturalne na skaliArticle, Product, BreadcrumbList, Organization. Masowa walidacja i typowe błędy w szablonach.
    gotowa
  3. 19
    Linkowanie wewnętrzne i architekturaGłębokość kliknięć, paginacja, kategorie, tagi. Jak pokazać zarządowi, gdzie ginie moc serwisu.
    gotowa
  4. 20
    Core Web Vitals według typów stronDane z raportu CrUX i Search Console według szablonów, nie pojedynczych adresów.
    gotowa
M06Raport dla zespołu i zarządu4 lekcje · 1 h 31 min
  1. 21
    Priorytety: wpływ, koszt, ryzykoJak układam kilkadziesiąt rekomendacji w kolejność, którą zespół jest w stanie wdrożyć.
    gotowa
  2. 22
    Raport techniczny dla developerówOpis problemu, skala, przykłady adresów, kryterium odbioru. Każda rekomendacja da się zamienić w zadanie.
    gotowa
  3. 23
    Jedna strona dla zarząduCo jest zagrożone, ile to może kosztować, co zrobić najpierw. Bez żargonu i bez obiecanego wzrostu.
    gotowa
  4. 24
    Audyt black-box od początku do końcaPrzechodzę skrócony audyt dużego serwisu bez dostępów, od sitemap po podsumowanie dla zarządu.
    gotowa
M07Sprzedaż i wycena audytów4 lekcje · 1 h
  1. 25
    Skąd biorę zlecenia na duże audytyWstępny skan black-box jako argument, współpraca z agencjami i software house, rozmowy po spadkach ruchu.
    gotowa
  2. 26
    Wycena 3-15 tys. złJak liczę cenę: skala, liczba szablonów, dostępy, zakres raportu, prezentacja dla zarządu.
    gotowa
  3. 27
    Umowa, odpowiedzialność i NDAZakres, wyłączenie odpowiedzialności za wdrożenia zespołu klienta, poufność danych, terminy.
    gotowa
  4. 28
    Po audycie: nadzór i opiekaJak zamieniam audyt w nadzór nad wdrożeniem i stałą współpracę.
    gotowa
Efekty

Co umiesz po kursie

01

Robisz crawl dużego serwisu tak, żeby nie położyć serwera i nie utonąć w danych.

02

Analizujesz sitemapy liczone w setkach tysięcy adresów i porównujesz je ze stanem indeksu i crawla.

03

Wykrywasz duplikaty, kanibalizację i błędy adresów kanonicznych, planujesz scalenia z przekierowaniami.

04

Piszesz z Claude Code skrypty do pobierania i łączenia danych z Search Console, logów i crawla.

05

Sprawdzasz dane strukturalne i szablony na próbkach.

06

Wprowadzasz zmiany według procedury, bez masowych noindexów na podstawie pustych odpowiedzi.

07

Oddajesz raport techniczny dla zespołu i jednostronicowe podsumowanie dla zarządu.

Dla kogo

  • Specjalistom SEO, którzy chcą wejść w zlecenia dla dużych serwisów, sklepów i portali.
  • Analitykom i SEO-wcom na etacie w firmach z dużymi serwisami.
  • Właścicielom portali i blogów z tysiącami wpisów, którym spada ruch.
  • Programistom, którzy chcą sprzedawać audyty techniczne z użyciem własnych skryptów.
  • Agencjom, które potrzebują powtarzalnego procesu audytu dużej skali.

Komu odradzam

  • Zaczynasz od zera w SEO. Potrzebujesz podstaw indeksacji i on-page.
  • Szukasz automatu, który sam napisze raport. AI analizuje dane, wnioski i odpowiedzialność są po twojej stronie.
  • Obsługujesz tylko małe strony firmowe. Dla serwisu z 20 podstronami ten proces jest za ciężki.
Do pobrania

Pliki w panelu

Zestaw skryptów Pythona: sitemapy, crawl próbki, URL Inspection API, eksport Search Console
Plik instrukcji dla Claude Code do projektów audytowych
Checklista audytu technicznego dużego serwisu - 80 punktów
Procedura bezpiecznych zmian masowych (walidacja, próbka, progi)
Arkusz wykrywania kanibalizacji z danych Search Console
Szablon mapy przekierowań przy scalaniu duplikatów
Szablon raportu technicznego dla zespołu
Szablon jednostronicowego podsumowania dla zarządu
Wzór oferty, umowy i NDA na audyt SEO
Narzędzia

Czego używam

Claude Code
pisanie skryptów i analiza danych
płatne, w ramach planu Claude lub API
Python
skrypty do sitemap, API i łączenia danych
darmowe
Google Search Console + API
indeksacja, zapytania, inspekcja adresów
darmowe
Screaming Frog SEO Spider
crawl i analiza szablonów
darmowa wersja do 500 adresów, większe crawle wymagają licencji
Bing Webmaster Tools
drugie źródło danych o indeksacji
darmowe
Arkusz kalkulacyjny lub SQLite
łączenie i filtrowanie dużych zbiorów
darmowe
FAQ

Pytania o ten kurs

Czy potrzebuję mocnego komputera?

Wystarczy przyzwoity laptop z 16 GB RAM. Przy milionach adresów pracuję na próbkach i bazie SQLite zamiast trzymać wszystko w arkuszu.

Czy muszę umieć programować?

Nie musisz pisać kodu od zera. Skrypty dostajesz w materiałach, a nowe piszesz z Claude Code. Trzeba umieć je uruchomić i czytać wyniki krytycznie.

Czy w kursie są nagrania wideo?

Nie. Każda lekcja to tekst z przykładami z moich projektów, gotowymi skryptami Pythona, promptami oraz plikami do pobrania. Lekcję możesz też odsłuchać, czyta ją lektor AI. Prompt łatwiej skopiować z tekstu niż z filmu.

Czy da się zrobić audyt bez dostępu do Search Console?

Tak. W lekcji o audycie black-box robię cały audyt bez żadnych dostępów: crawl, mapy witryny, dane publiczne i próbki szablonów. Search Console daje dane o ruchu i kanibalizacji, więc bez niej część wniosków to szacunki i tak je w raporcie oznaczam.

Jak wygląda dostęp i aktualizacje?

Bezterminowy. Aktualizacje lekcji i skryptów są w cenie.

Czym różni się wersja z pracą ze mną?

Dwie konsultacje na piśmie: wysyłasz pytania, odpowiadam w ciągu 2 dni roboczych. Do tego przeglądam twój pierwszy audyt i podsumowanie dla zarządu przed oddaniem klientowi. Rozmów wideo nie prowadzę.

Co z prawem do odstąpienia od umowy?

To treść cyfrowa. Przy zamówieniu zgadzasz się na jej udostępnienie od razu i tracisz wtedy prawo do odstąpienia. Reklamacje rozpatruję w 14 dni.

Szkic pracowni
Kto pisze ten kurs

Piotr Promptowy

Prowadzę promptowy.com, gdzie opublikowałem ponad 3 tysiące tekstów o AI, i newsletter czytany przez kilka tysięcy osób. Robię klipy i reklamy z AI dla znanych artystów i marek, buduję własne narzędzia i sklep z produktami AI. W tym kursie opisuję to, co zrobiłem naprawdę, razem z błędami.

promptowy.com600+ kupujących moją ostatnią paczkęlekcja 1 za darmozaświadczenie ukończenia
Audyt SEO dużego serwisu z AI
1 490 zł
Kupuję