getmepost.com — score 68 → 96 (+28 pkt) w 2 iteracjach + backend bug fix
Trzeci dogfood case z największym gainem ever po selpio.com (70→94, 3 iter) i webcomp.pl (92→95, 3 iter + backend). Landing getmepost.com (Next.js, AI social media SaaS) naprawiony w ~25 minut, 2 iteracjach + bonus backend FAQ parser fix w analyzerze Selpio (3-level escalation). Iter 1 batch deploy z gotowym playbookiem (15 min) dał +27 pkt. Iter 2 (FAQPage Schema + UL features + copy konkrety) ujawnił bug w parserze accordion structures → naprawiony w llm-seo-analyzer → final score 96/100.
Stan początkowy: 68/100 needs-improvement (kwiecień 2026)
GetMePost to Next.js 15 landing dla AI social media SaaS — paste text/URL → AI generuje posty dla LinkedIn/Twitter/Facebook/Instagram + one-click publishing. Strona miała baseline 69/100 w kwietniu 2026 (dwa pomiary), w maju fresh crawl dał 68/100 — stabilny baseline w "needs-improvement" tier.
Krytyczne braki widoczne natychmiast po crawlu:
- schema: 0/25 — brak JSON-LD w ogóle (NO_STRUCTURED_DATA critical)
- seo: 16/20 — brak canonical, brak Twitter Card, brak og:image
- technical_seo: 12/20 — brak robots.txt, brak sitemap.xml
- llm_access: 22/25 — brak llms.txt (rekomendowany format dla AI crawlers)
DetectedStack baseline pokazywał "astro" jako false positive (analizator misclassified asset paths). Po deploy z proper Next.js artifacts → poprawnie wykryty "nextjs".
Strategia: zero iter critical/warning/info — jeden batch deploy
W poprzednich dogfood case studies (selpio + webcomp) używaliśmy iteracyjnego podejścia: iter 1 critical, re-crawl, iter 2 warning, re-crawl, iter 3 info, re-crawl. Każda iteracja = osobny commit + deploy + ~15 min. Łącznie 30-45 min.
Dla getmepost zastosowaliśmy accelerating returns playbook — wiemy z lessons learned co dokładnie naprawi krytyczne + warnings techniczne. Wykonaliśmy je wszystkie w jednym deployu:
-
src/app/layout.tsxmetadataBase URL ustawiony (potrzebne dla absolute image paths w og:image). alternates.canonical: https://getmepost.com/. openGraph.images z dashboard.png 1200x630 + alt. openGraph.locale: en_US. Twitter Card summary_large_image + 4 fields (title/description/images). robots config (index/follow + googleBot max-image-preview/snippet).
-
src/app/layout.tsxJSON-LD Organization (brand z sameAs app.getmepost.com).
-
src/app/layout.tsxJSON-LD WebSite z SearchAction target app.getmepost.com/?q={search_term_string} (SERP search box).
-
src/app/layout.tsxJSON-LD SoftwareApplication — BusinessApplication / SocialMediaManagement z 6 features list (multi-platform generation, one-click publish, KB personalization, URL-to-post, multi-language, analytics) + publisher Org reference.
-
public/robots.txtNowy plik z explicit Allow dla 10 LLM crawlers: GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, anthropic-ai, Claude-Web, PerplexityBot, Google-Extended, CCBot + Sitemap link.
-
public/sitemap.xmlNowy plik z 3 URLs (/, /baza-wiedzy, /baza-wiedzy/jak-ai-uczy-sie-twojego-stylu) + lastmod 2026-05-24, priority + changefreq.
-
public/llms.txtPełny llmstxt.org format (EN, ~50 linii): "What is GetMePost", key features, 4 use cases (solo founders, content agencies, B2B marketers, newsletter authors), how it works 6 kroków, kontakt, linki do app/KB.
Build Next.js zielony (6 routes static + SSG). bash deploy.sh →
rsync na MyDevil, smoke HTTP 200. Re-crawl iter 1: SCORE 68 → 95 (+27 pkt).
Schema 0 → 25 max. SEO 16 → 20 max. llm_access 22 → 25 max. Authority 22 → 25 max.
Iter 2: copy fixes + FAQPage Schema + UL (15 dodatkowych minut)
Score 95 zostawił 3 warnings (SHALLOW_CONTENT/AMBIGUOUS_CLAIMS/MISSING_DEFINITIONS) i 3 info (NO_LISTS/NO_FAQ_PATTERN/NO_QA_STRUCTURE). Iter 2 zaadresował wszystkie info + 1 warning:
-
src/components/FAQ.tsxFAQPage Schema.org z 8 Q+A pairs (single source of truth z faqs array). Pytania
<span>→ semantyczny<h3>z "?". Answers ZAWSZE w DOM (max-h-0/96 transition zamiast{isOpen && ...}). ARIA expanded/controls/hidden dla a11y. -
src/components/Features.tsxNO_LISTS:
<div>grid → semantyczny<ul>/<li>z 6 features. Klasy Tailwind zachowane (listStyle:noneinline) — semantyka HTML zmieniona bez wpływu na wygląd. -
src/i18n/translations.tsCopy expansion: "10 hours → 10 minutes" rozszerzone z kontekstem (7 platform, single-source upload, parallel publish). "Knowledge base" pełna definicja (prywatne repo dokumentów, 4 wzorce stylu extraction). "AI writes in your style" szczegółowy mechanizm per platforma (LinkedIn 200-300 słów, Twitter 280 znaków + thread itd.).
Drugi bash deploy.sh. Re-crawl iter 2: SCORE 95 → 94 (-1)
— counter-intuitive trade-off. Rozszerzona treść copy = analyzer semantyki miał
więcej materiału do oceny = nowe subjective warnings (INCOMPLETE_SENTENCES). ALE
info issues znikły, FAQ Schema obecny, structure semantyczna ✓. Pozostał problem:
schema 23/25 zamiast 25 — analyzer flagował FAQ_SCHEMA_MISMATCH
mimo że JSON-LD FAQPage był poprawny. Ten bug stał się triggerem iter 3.
Iter 3 (bonus): backend FAQ parser fix → schema 25 max
Dogfood ujawnił że parser FAQ w analyzerze Selpio nie radził sobie
z accordion structures. Szukał <p> jako bezpośredni sibling
<h3>, ale w getmepost FAQ.tsx:
<button>
<h3>Question?</h3>
<svg class="icon"/> ← parser zatrzymywał się tu
</button>
<div class="answer-wrapper">
<p>Answer</p> ← niedosiężny
</div>
Fix w llm-seo-analyzer (commit 6057d4a): 3-level escalation
algorytm w findAnswerForHeading:
- Level 1: sibling pattern — markdown/prose (h3 + następny p)
- Level 2: accordion — parent.next() (h3 w button, p w wrapper div)
- Level 3: deeper nested — grandparent.next() (h3 → button → div.trigger → div.faq-item)
+6 testów accordion patterns (suite 1502 → 1508). Re-crawl getmepost po backend deploy: SCORE 94 → 96 (+2), schema 23 → 25 MAX, FAQ_SCHEMA_MISMATCH znikło. Bonus: webcomp.pl (z analogicznym accordion patternem) też dostał +1 score. Każdy dogfood loop = backend improvement = korzyść dla wszystkich klientów Selpio.
Porównanie dimensions baseline → 3 iteracje
| Wymiar | Baseline | Iter 1 | Iter 2 | + Backend fix | Δ total | Max |
|---|---|---|---|---|---|---|
structure | 20 | 25 | 25 | 25 MAX ✓ | +5 | 25 |
schema | 0 | 25 | 23 | 25 MAX ✓ +25 | +25 | 25 |
semantics | 19 | 18 | 18 | 18 | −1 | 25 |
llm_access | 22 | 25 | 25 | 25 MAX ✓ | +3 | 25 |
seo | 16 | 20 | 20 | 20 MAX ✓ | +4 | 20 |
authority | 22 | 25 | 25 | 25 MAX ✓ | +3 | 25 |
technical_seo | 12 | 16 | 16 | 16 | +4 | 20 |
| TOTAL | 68 | 95 | 94 | 96 | +28 | 100 |
Wszystkie 3 dogfood w jednym widoku — accelerating returns
Wykres pokazuje że czas pracy spada z każdą kolejną stroną. To efekt playbook'a — wiedza z poprzednich pętli przekłada się na szybsze rozwiązanie kolejnych:
| Strona | Stack | Baseline | Final | Δ | Czas | Iteracje |
|---|---|---|---|---|---|---|
| selpio.com | Astro | 70 | 94 | +24 | ~45 min | 3 |
| webcomp.pl | Next.js | 92 | 95 | +3 | ~30 min + backend bonus | 3 |
| getmepost.com | Next.js | 68 | 96 | +28 | ~25 min + backend bonus | 2 |
Key insight: czas naprawy spada wykładniczo (45 → 30 → 15 min), a delta score rośnie z baseline'em (im niższy start, tym większa szansa na quick win). Workflow Selpio + Claude Code skaluje się — kolejne strony nie wymagają reinventing the wheel.
Bonus: bug ujawniony w analyzerze
Baseline pokazywał detectedStack: "astro" dla getmepost.com mimo że to Next.js.
False positive od Selpio analyzer'a — moduł stack-detector dopasował asset paths
do astro pattern (prawdopodobnie /_next/static/ chunks były misinterpreted).
Po fresh deploy (Next.js 15 z aktualnymi artifact paths) → analyzer poprawnie wykrył
nextjs. To kolejny przykład wartości dogfood — każda strona
może ujawnić edge case w parserze. W przyszłej iteracji backend Selpio dodamy
regression test dla getmepost-typowych Next.js asset paths.
Pełna historia: 1 commit
-
5d2f50e· all-in-one batch layout.tsx z 3 schemas + canonical + Twitter + og:image. public/ z robots.txt + sitemap.xml + llms.txt +27 pkt
Co zostało (3 warning + 3 info)
Po 1 iteracji score 95/100 (good). Pozostałe issues to copy critique i opportunity items — analizator semantyki zawsze znajdzie copywriting opportunities w marketing landing:
- SHALLOW_CONTENT (warning) — niektóre sekcje opisują features ogólnikowo. Solution: rozszerzyć z konkretnymi przykładami (np. dla "knowledge base" pokazać konkretny use case).
- AMBIGUOUS_CLAIMS (warning) — "Claude AI tworzy posty dopasowane do każdej platformy" — analizator chce konkretów: jakie parametry per platforma, średnia długość, format. Można rozszerzyć w FAQ section.
- MISSING_DEFINITIONS (warning) — termin "baza wiedzy" używany wielokrotnie bez wyjaśnienia. Solution: inline definition przy pierwszym wystąpieniu (jak MVP w webcomp case).
- NO_LISTS (info) — można dodać UL z key features pod hero (jak w selpio "Co znajdziesz w raporcie").
- NO_FAQ_PATTERN / NO_QA_STRUCTURE (info) — dodać FAQ section z FAQPage Schema.org (analogicznie do selpio iter 2).
Realistyczny ceiling po iter 2: 97-98/100. Po iter 3 (extra Schema typy dla Article/HowTo na blog posts): teoretyczne 99-100.
Co z tego wynika dla Twojej firmy?
- 15 minut wystarcza dla strony z baseline 60-75 jeśli aplikujesz checklist z playbook'a (JSON-LD + canonical + OG + robots + sitemap + llms.txt). Nie musisz iterować — applied lessons learned od razu.
- Schema.org daje największy single boost — w getmepost case schema 0 → 25 = +25 punktów do dimension + ~12 pkt do total score. Sam fix layout.tsx daje najwięcej wartości na minutę pracy.
- Next.js Metadata API + Schema script tags = perfect combination. Wszystko deklaratywnie w jednym pliku, Next.js generuje <head> tags automatycznie z metadata + schemas jako script type="application/ld+json".
- llms.txt podnosi llm_access z 22 do 25 max — 1 plik markdown w public/, 5 minut roboty.
- Dogfood loop generuje value rosnąco — pierwszy case zajmuje czas (uczysz się), kolejne są szybsze. Po 3-4 stronach masz playbook gotowy do replikacji dla klienta agency.
🚀 Wygeneruj raport dla swojej strony Zobacz pozostałe case studies