SEO Audit & Optimization
Leading words: technical SEO audit, crawlability, Core Web Vitals, structured data, LocalBusiness, schema drift, IndexNow, robots.txt governance.
A phase-separated audit workflow for any public-facing page (local-business
public profiles, landing pages, marketing pages). Depth lives in
references/ and in the companion everything-seo skill.
Phase 1 — Crawl
- [ ] robots.txt: allow retrieval bots (OAI-SearchBot, ChatGPT-User, AppleBot,
PerplexityBot); block training scrapers if business policy says so
(GPTBot, ClaudeBot, Bytespider); keep Googlebot fully allowed.
- [ ] Sitemap submitted to Google Search Console + Bing Webmaster Tools.
- [ ] IndexNow implementation present (Bing + Yandex push).
🛑 Checkpoint: Confirm the crawl surface is mapped. Do not proceed to Audit until robots.txt + sitemap + IndexNow status are each named.
Phase 2 — Audit
- [ ] Page titles: format "[Business Name] in [City] | [Value Prop]" for
local-business public profiles.
- [ ] Meta descriptions: 120-160 chars, value prop + CTA verb, city if natural.
- [ ] Structured data: LocalBusiness JSON-LD validates in Google Rich Results
Test + Bing Webmaster Tools.
- [ ] Core Web Vitals: INP < 200ms, LCP < 2.5s, CLS < 0.1.
- [ ] Schema drift check: does the JSON-LD match the rendered page content?
(Cypress/Puppeteer test that compares rendered text to JSON-LD fields.)
- [ ] Heading hierarchy: exactly one H1, logical H2/H3 nesting, no skipped
levels.
Pull references/local_seo_checklist.md for the full LocalBusiness JSON-LD field list and common mistakes.
🛑 Checkpoint: List every audit failure with the page URL + the specific failure. Do not proceed to Fix until the failure list is enumerated.
Phase 3 — Fix
- [ ] Fix each Phase 2 failure in order: titles → meta → schema → vitals → drift.
- [ ] Bump CONTENT_VERSION (or whatever signal the site uses) so AI indexers
re-fetch.
- [ ] Update llms.txt if new pages were added or page roles changed.
- [ ] Re-run schema validation on every changed page.
Phase 4 — Verify
- [ ] Re-run Google Rich Results Test on every changed page — green.
- [ ] Verify robots.txt changes with Google's robots.txt tester.
- [ ] Run a single-page Core Web Vitals check (Lighthouse or field data).
- [ ] Submit changed URLs via IndexNow for Bing + Yandex.
- [ ] Re-check schema drift on the changed pages.
Any miss → back to Phase 3.
What NOT to do
- No black-hat SEO. No keyword stuffing, no hidden text, no cloaking, no link-buying, no private blog networks. Algorithmic penalties are recoverable but expensive.
- Do not ignore Bing. Bing + Yandex still drive meaningful traffic in some niches and regions. IndexNow submission is cheap.
- Do not use client-side rendering for content that needs to rank. Use SSR/ISR so the HTML the crawler receives contains the content. CSR-only pages may not be indexed reliably.
- Do not skip the schema drift check. Valid JSON-LD that contradicts the rendered page is worse than no JSON-LD — it signals inconsistency to both classical search and AI extractors.
References
| File | Use it for |
|---|---|
| references/local_seo_checklist.md | LocalBusiness JSON-LD field list, common mistakes, Bing considerations, robots.txt patterns |
../everything-seo/references/semantic_intent.md |
AEO/GEO patterns for AI search |
../everything-seo/references/content_automation.md |
Content quality + AI writing detection |
../everything-seo/references/technical_seo.md |
Deep technical SEO (bot governance, IndexNow, INP) |