# SEO Audit

> Audit and optimize public-facing web pages for search engines and AI search. Covers technical SEO audits (crawlability, Core Web Vitals, structured data), local SEO (LocalBusiness schema, geo-metadata), on-page signals (title tags, meta descriptions, heading hierarchy), and AI search readiness (GEO, llms.txt, structured data for LLM extraction). Use when the user asks about SEO audit, meta tags, structured data, local SEO, Core Web Vitals, crawlability, robots.txt, or public page optimization. Delegates depth to the everything-seo skill.

- Skill: `afaraha8403/seo-audit` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add afaraha8403/seo-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/afaraha8403/seo-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: afaraha8403 (https://skillmd.com/u/afaraha8403)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/afaraha8403/seo-audit

---


# 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](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](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) |

