Wpisujesz frazę → narzędzie pobiera wyniki Google, crawluje wszystkie strony z TOP10 i zwraca raport: intencja zapytania, co mają wspólnego strony z TOP10 oraz gotową strukturę strony, która ma szansę rankować na tę frazę.
Działa jako skill Claude Code (komenda w czacie) albo jako zwykły skrypt w terminalu.
# 1. Pobierz / sklonuj ten folder i wejdź do niego
cd serp-analyzer
# 2. Zainstaluj zależności (raz)
pip install -r requirements.txt
crawl4ai-setup # pobiera przeglądarkę dla Crawl4AI
# 3. Wklej swój klucz Nodeshub
cp .env.example .env
# otwórz .env i wklej klucz z https://nodeshub.io (100 darmowych tokenów, bez karty)
# 4. Sprawdź, czy wszystko działa
python3 scripts/check_setup.py
# 5. Pierwsza analiza
python3 scripts/serp_full_analysis.py "pozycjonowanie warszawa" --gl pl --hl plWynik ląduje w output/pozycjonowanie-warszawa/ — najważniejszy plik to analysis.md.
-
Skopiuj cały ten folder do swojego projektu (albo otwórz go jako projekt).
-
Uruchom
claudew tym folderze. -
Skill
serp-analyzerzostanie wykryty automatycznie (leży w.claude/skills/). -
Napisz po prostu:
Przeanalizuj SERP dla frazy „pozycjonowanie warszawa", rynek PL, desktop
Claude pobierze dane, scrawluje TOP10 i przedstawi Ci podsumowanie.
- Wejdź na https://nodeshub.io
- Zjedź do sekcji API Playground
- Kliknij „Copy to clipboard" przy polu API key
- Wklej do pliku
.envjakoNODESHUB_API_KEY=...
100 darmowych tokenów na start — bez rejestracji, bez karty. 1 analiza frazy = 1 token.
Dla każdej frazy w output/<slug-frazy>/:
| Plik | Zawartość |
|---|---|
analysis.md |
Raport końcowy — intencja, elementy wspólne, sugerowana struktura |
serp.json |
Surowa odpowiedź Nodeshub (organic + snippety SERP) |
pages/NN_domena.md |
Czysty markdown każdej strony z TOP10 (Crawl4AI + PruningContentFilter) |
pages_meta.json |
Title, meta description, nagłówki H1–H3, liczba słów każdej strony |
python3 scripts/serp_full_analysis.py "FRAZA" [opcje]| Opcja | Opis | Domyślnie |
|---|---|---|
--gl |
Kraj (geolokalizacja Google): pl, us, de, uk… |
pl |
--hl |
Język interfejsu: pl, en, de… |
pl |
--device |
desktop lub mobile |
desktop |
--top |
Ile stron z TOP crawlować | 10 |
- Nodeshub — 3 próby z narastającym odstępem (błędy sieci, limit 429, błędy 5xx, pusta odpowiedź).
- Crawl4AI — strony, które padły lub zwróciły < 50 słów (np. blokada / treść z JS),
są ponawiane z mocniejszą konfiguracją: dłuższy timeout,
networkidle, scroll całej strony, obejście popupów/cookie.
serp-analyzer/
├── README.md
├── requirements.txt
├── .env.example # skopiuj do .env i wklej klucz
├── .gitignore
├── .claude/
│ └── skills/
│ └── serp-analyzer/
│ └── SKILL.md # definicja skilla dla Claude Code
├── scripts/
│ ├── serp_full_analysis.py # główny skrypt
│ └── check_setup.py # weryfikacja konfiguracji
└── output/ # tu lądują wyniki (gitignored)
Czy muszę używać Claude Code? Nie — skrypty działają z każdego terminala. Claude Code dodaje wygodną komendę i automatyczne podsumowanie.
Ile to kosztuje? 1 token Nodeshub za frazę (start: 100 darmowych). Crawlowanie stron jest lokalne i darmowe.
Działa dla innych krajów/języków? Tak — ustaw --gl i --hl pod swój rynek.
Skąd biorą się dane? SERP na żywo z Google (przez Nodeshub), treść stron pobierana lokalnie przez Crawl4AI.