From local-seo-audit
Audits on-page SEO elements: title tags, meta descriptions, headers, content, internal linking, image SEO, E-E-A-T signals, CTAs, AI Overview optimization, and entity optimization. Outputs findings to a markdown file.
How this skill is triggered — by the user, by Claude, or both
Slash command
/local-seo-audit:onpage-seoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
On-page SEO is the highest-leverage, lowest-cost ranking lever available. Title tag + meta optimization alone can improve CTR by 20–35% within 30 days (GSC data 2024). In 2025, on-page signals have a dual role: traditional ranking AND AI Overview citation probability. Pages without direct standalone answers and FAQPage schema rarely appear in AIO. Always compare against the top-ranking competit...
On-page SEO is the highest-leverage, lowest-cost ranking lever available. Title tag + meta optimization alone can improve CTR by 20–35% within 30 days (GSC data 2024). In 2025, on-page signals have a dual role: traditional ranking AND AI Overview citation probability. Pages without direct standalone answers and FAQPage schema rarely appear in AIO. Always compare against the top-ranking competitor's on-page patterns.
| Tool | Purpose | Cost |
|---|---|---|
| Screaming Frog | Bulk audit: titles, meta, H1s, word counts, duplicate detection | Free/Paid |
| Google Search Console | Page-level impressions, CTR, position — identify rewrite priorities | Free |
| Surfer SEO | Content Score vs. top competitors — target 70+ cluster, 80+ pillar | Paid |
| Clearscope | Content grade vs. top 10 competitors — target A- pillar, B+ cluster | Paid |
| Ahrefs | Organic keywords per page, SERP features per URL | Paid |
| SEMrush | On-page checker — compare vs. top 10 ranking pages | Paid |
| Google Rich Results Test | FAQPage schema validation, structured data presence | Free |
| Chrome DevTools → Sources | Verify rendered HTML (JS-rendered content vs. raw HTML) | Free |
| site_crawler.py | Word counts, title/meta data per page CSV | Free (local) |
Read {AUDIT_DIR}/intake-data.md — business name, URL, services, location.
Read {AUDIT_DIR}/technical-findings.md — page indexation status, canonical issues.
Read {AUDIT_DIR}/competitor-profiles.md — competitor on-page patterns, title formats, schema usage.
Read {DATA_DIR}/crawl/ — crawler output for bulk title/meta analysis.
Audit in this order (highest business impact first):
For each key page, verify:
| or —)?Optimal title formats:
| Page Type | Format | Example |
|---|---|---|
| Service page | [Service] in [City] | [Brand] | Emergency Plumber in Chicago | Acme Plumbing |
| Homepage | [Brand] — [Service] in [City, State] | Acme Plumbing — Plumber in Chicago, IL |
| Blog post | [Question/Keyword] [Year] — [Brand] | How to Fix a Leaky Faucet 2025 — Acme Plumbing |
| Location page | [Service] in [City, ST] | [Brand] | Drain Cleaning in Evanston, IL | Acme |
Titles that appear in AIO tend to:
| Page | Client Title | Competitor #1 Title | Gap |
|---|---|---|---|
| Homepage | |||
| Primary service | |||
| Location page |
Character limits: 150–160 characters (desktop) | 130–145 characters (mobile) If Google rewrites 90%+ of meta descriptions: Page content doesn't match intent — rewrite lead paragraph first.
Per-page checklist:
Per-page checks:
AIO-optimized header pattern (2025):
H1: [Primary Keyword in City] — [Benefit]
H2: What Is [Service]? ← AIO extraction target
H2: How Much Does [Service] Cost in [City]? ← AIO + featured snippet
H3: Factors Affecting [Service] Cost
H2: Our [Service] Process ← HowTo schema opportunity
H2: Frequently Asked Questions ← FAQPage schema target
H3: [Question 1]?
H3: [Question 2]?
| Page Type | Minimum | Competitive Target | Red Flag | |-----------|---------|-------------------|---------|- | Homepage | 600 words | 800–1,200 | < 400 | | Service page | 800 words | 1,200–2,000 | < 500 | | Location page | 600 words | 900–1,500 | < 400 | | Pillar blog | 2,500 words | 3,500–5,000 | < 1,200 | | Cluster blog | 1,200 words | 1,500–2,500 | < 600 | | FAQ answer | 150 words | 250–400 | < 50 |
| Intent | Content Required | Conversion Rate |
|---|---|---|
| Informational | Comprehensive guide, all related questions answered | 1–3% |
| Commercial | Service description, pricing signals, reviews, comparison | 3–8% |
| Transactional | Clear path to contact/book, click-to-call, urgency | 8–20% |
| Navigational | Gets user to destination immediately | Brand intent |
Competitor comparison (Surfer/Clearscope):
| Page | Client Word Count | Surfer Score | Comp #1 Words | Comp #1 Score | Gap |
|---|---|---|---|---|---|
| Homepage | |||||
| [Service] page |
E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) — Google's quality framework, critical since HCS integration into core algorithm (March 2024).
/about/[name]? ✅/❌| Check | Target | Client |
|---|---|---|
| Orphan pages (0 internal links) | 0 | |
| Pages requiring > 3 clicks from homepage | 0 | |
| Max internal links per page | < 100 | |
| Homepage internal links | 25–75 |
| Check | Target | Impact |
|---|---|---|
| Alt text: descriptive, 5–15 words, keyword-inclusive | All images | AIO image citation + accessibility |
| Alt text max length | 150 characters | Screen reader UX |
Filename: descriptive (not IMG_1234.jpg) | All images | Image search ranking |
| Format: WebP or AVIF | All non-hero images | Page speed |
Dimensions width/height specified | All images | CLS prevention |
loading="lazy" on below-fold images | All below-fold | LCP improvement |
| Geo-tagged EXIF data | Location-relevant images | Local SEO signal |
| Image in XML sitemap | Significant images | Image search visibility |
Pages cited in AIO score 4× the impressions of position 1 organic when AIO appears. AIO appears for 20–35% of local service queries (SparkToro 2025).
AIO citation requirements — checklist per page:
Test: Search target keyword → does AIO appear? Is client cited? If competitor cited but not client → content gap in answer structure.
| Check | High-Intent Pages | Blog Posts |
|---|---|---|
| At least 1 CTA per page | Required | Required |
| CTA above fold on mobile | Required | Optional |
Click-to-call <a href="tel:..."> | Required | Recommended |
| Service-specific CTA (not generic "Contact Us") | Required | N/A |
| CTA visual contrast (color + size) | Required | Required |
| Multiple CTAs on long pages (top/mid/bottom) | Required | Recommended |
| Sticky CTA header/bar on mobile | High priority | Optional |
| Category | Weight | Score |
|---|---|---|
| Title tags (uniqueness, optimization, length) | 15% | /15 |
| Meta descriptions (uniqueness, CTR optimization) | 10% | /10 |
| Header hierarchy (H1 uniqueness, keyword use, AIO structure) | 10% | /10 |
| Content depth + intent satisfaction vs. competitors | 20% | /20 |
| E-E-A-T signals (all 4 components) | 20% | /20 |
| Internal linking (hub-and-spoke, orphans, anchor text) | 10% | /10 |
| Image SEO (alt text, format, dimensions) | 5% | /5 |
| AI Overviews optimization (FAQPage, direct answers) | 10% | /10 |
Veto: > 50% of service pages missing FAQPage schema → maximum AI visibility score capped at 40/100.
Write complete findings to {AUDIT_DIR}/onpage-findings.md with YAML frontmatter:
---
skill: audit/onpage-seo
phase: 3
date: [YYYY-MM-DD]
business: [Business Name]
url: [URL]
score: [X/100]
pages_audited: [X]
title_issues: [X]
missing_faqpage: [X]
eeat_score: [X/20]
aio_citations: [X]
---
Include:
Output files:
{AUDIT_DIR}/onpage-findings.md — on-page audit findings with score{REPORTS_DIR}/phase-3-onpage-seo.pdf — auto-generated PDF after phase completesKey consumers:
research/content-gaps — reads for content quality gaps to addressstrategy/ux-cro-audit — reads for CTA gaps and conversion opportunitiescross-cutting/serp-trust-auditor — Ranking Signals (R) dimensionai-visibility/ai-seo — AIO readiness signals feed AI audit| Issue Type | Impact | Feasibility | Priority | Avg Effort | Expected Lift |
|---|---|---|---|---|---|
| Missing FAQPage schema on service pages | 5 | 5 | 25 | 30 min/page | 3.2× AIO citation rate |
| Title tag missing primary keyword | 4 | 5 | 20 | 5 min/page | +5–15% CTR |
| Missing or duplicate H1 | 4 | 5 | 20 | 5 min/page | Crawl clarity |
| Meta description too long (>155 chars) or missing | 3 | 5 | 15 | 5 min/page | +3–8% CTR |
| Thin page content (<500 words on service page) | 5 | 3 | 15 | 4–8 hrs/page | Rankings lift |
| Missing HowTo schema on process pages | 4 | 4 | 16 | 30 min/page | Featured snippet + AIO |
| Internal links: orphaned pages (<3 inbound links) | 4 | 5 | 20 | 15 min/page | PageRank distribution |
| Image alt text missing | 3 | 5 | 15 | 30 min (bulk) | Accessibility + image search |
| Keyword cannibalization (2+ pages targeting same keyword) | 4 | 4 | 16 | 1–2 hrs | Consolidates ranking power |
npx claudepluginhub mshahiddigital/agentic-local-seo-auditAudits structural on-page SEO signals (title, meta, headers, keywords, links, images) with scored results and prioritized fixes.
Performs a manual, strategic SEO audit covering crawlability, indexation, site speed, on-page, and content quality. Useful when diagnosing ranking issues or optimizing organic search.
Audits webpages for on-page SEO issues: title tags, heading hierarchy, content depth, Core Web Vitals, internal links, and structured data. Outputs prioritized fixes with estimated impact.