AgentStack
SKILL verified MIT Self-run

Content Audit

skill-mshahiddigital-agentic-local-seo-audit-content-audit · by mshahiddigital

>

No reviews yet
0 installs
12 views
0.0% view→install

Install

$ agentstack add skill-mshahiddigital-agentic-local-seo-audit-content-audit

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Content Audit? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Content Audit — Phase 4

Executive Summary

Content quality is the primary differentiator between sites that rank and sites that don't in 2025. Google's Helpful Content System (HCS), integrated into the core algorithm in March 2024, actively penalizes template-based, AI-generated-without-expert-review, and thin location pages. The key thresholds: ≥60% unique content per location page (hard floor — below this risks HCS penalty), ≥80% unique (competitive target). FAQPage schema on service pages triggers AIO citations at 3.2× the rate of pages without it (Amsive 2025). Content decay (>20% YoY impressions decline) now affects most sites that haven't refreshed since 2022–2023 — ChatGPT cites pages updated within 30 days at 76.4% vs. 31.2% for 90+ day old content. The fastest wins: add FAQPage schema (30 min/page), refresh decayed content with updated stats, and fix service pages below 800 words.

2025 content benchmarks:

  • Service pages: minimum 800 words; competitive 1,200–2,000 words (HCS 2025 standards)
  • Location pages: ≥60% unique (hard floor); ≥80% unique (competitive target)
  • Content decay threshold: >20% YoY click decline → refresh required (GSC comparison)
  • FAQPage schema → 3.2× AIO citation rate (Amsive 2025); HowTo schema = structured step extraction
  • Pillar page threshold: 25+ total articles in cluster = topical authority signal (SEMrush 2024)
  • AI-generated content: acceptable only with documented human expert review (Google Webmaster guidelines 2025)

Step 1: Read Project Context & Run Crawl

Read {AUDIT_DIR}/intake-data.md — business name, services, location, goals. Read {AUDIT_DIR}/technical-findings.md — indexation data, duplicate content flags.

# Run crawler if not already done (from technical-seo or here)
python3 scripts/site_crawler.py --url [URL] --max-pages 150 --output {DATA_DIR}/crawl/ --csv

Tools for this phase: | Tool | Purpose | Cost | |------|---------|------| | Screaming Frog | Word counts, title/meta duplicates, thin pages (20% YoY decline) | Free (requires access) | | site_crawler.py | --csv output: word counts, status codes, title/meta data per page | Free (local) |

2025 Content Context: Google's Helpful Content System (HCS) was folded into the core ranking algorithm in March 2024. Since then:

  • Template location pages (only city name swapped) are actively penalized — need ≥60% unique content
  • Bulk AI-generated content without expert review triggers scaled content abuse signals
  • Content with >20% YoY impressions decline requires refresh or consolidation
  • FAQPage schema + direct standalone answers = primary AI Overview (AIO) citation trigger

Section 1: Content Inventory

Build a complete inventory of all indexed pages using crawler output:

| URL | Page Type | Title | Word Count | Primary Keyword | Quality (1–10) | Issues | |-----|----------|-------|-----------|----------------|----------------|--------| | /services/[slug] | Service | | | | | | | /locations/[slug] | Location | | | | | | | /blog/[slug] | Blog | | | | | |

Page Types to Catalog:

  • Homepage (often thin — should have 600+ words explaining services, location, differentiators)
  • Service pages (one per service offered)
  • Location/area pages
  • Blog posts / articles
  • FAQ page (standalone or distributed on service pages)
  • About page
  • Contact page
  • Testimonials/Reviews page
  • Gallery/Portfolio page
  • Staff/Team pages

Content Quality Score (1–10): | Score | Description | |-------|-------------| | 9–10 | Comprehensive (meets word count threshold), unique, expert-authored, well-structured, current-year data, optimized | | 7–8 | Good — missing some depth, freshness, or schema optimization | | 5–6 | Average — basic information, lacks differentiation or competitor-matching depth | | 3–4 | Thin — 2 years | | 1–2 | Very poor — scraped, auto-generated, or near-empty |

Word count thresholds (2025 HCS standards): | Page Type | Minimum | Competitive Target | Red Flag | |-----------|---------|-------------------|---------| | Homepage | 600 words | 800–1,200 | 20% decline |

2025 rule: >20% YoY decline → refresh queue. >50% YoY decline → major rewrite or consolidate. ChatGPT cites content updated within 30 days at 76.4% rate — freshness directly affects AIO citation rate.

AI-Generated Low-Quality Content (HCS 2025 Risk)

Google's Helpful Content System specifically targets:

  • Bulk AI-generated pages without human expertise review (scaled content abuse signal)
  • Content covering all angles superficially rather than any deeply
  • Location × service pages with near-identical content (only city name different)
  • Content with high bounce rate + zero dwell time + no engagement signals

Detection: Look for pages with uniform template structure across service/location variations. Check bounce rate and engagement time in GA4.


Section 3: Service Pages Assessment

For EACH service offered (from intake-data.md):

| Service | Page Exists? | URL | Word Count | Unique? | FAQPage Schema? | Quality | |---------|------------|-----|-----------|---------|----------------|---------| | [service 1] | Yes/No | [url] | [count] | Yes/No | Yes/No | [1-10] |

Ideal service page checklist (target ≥1,200 words):

  • [ ] Primary keyword in H1, title tag, first 100 words
  • [ ] What the service is (definition in first 50 words — AIO extraction target)
  • [ ] How the process works (numbered steps — HowTo schema opportunity)
  • [ ] Why choose this business (credentials, experience, differentiators)
  • [ ] Pricing signals ("Starting from $X" or "Free quote — no obligation")
  • [ ] 5+ FAQs specific to this service (FAQPage schema — AIO trigger)
  • [ ] Testimonials from customers who used this specific service
  • [ ] CTA: Call / Book / Get Quote (with click-to-call phone)
  • [ ] LocalBusiness + Service schema
  • [ ] City/location modifier in page copy and title
  • [ ] Surfer Content Score ≥70 vs. competing pages

Competitor Service Page Comparison

| Service | Client Word Count | Surfer Score | Comp 1 Words | Comp 2 Words | Gap | |---------|-----------------|------------|------------|------------|-----| | [service] | | | | | |


Section 4: Location/Area Pages Assessment

For EACH service area:

| Location | Page Exists? | URL | Word Count | Unique Content % | Map Embed? | FAQPage Schema? | Score | |----------|------------|-----|-----------|----------------|-----------|----------------|-------| | [city] | Yes/No | [url] | [count] | [%] | Yes/No | Yes/No | [1-10] |

Ideal location page checklist (target ≥900 words):

  • [ ] City-specific title: "[Service] in [City, State]"
  • [ ] Unique opening paragraph (local landmarks, neighborhoods, area context)
  • [ ] Services specific to this area (not generic list)
  • [ ] Local testimonials from customers in this city
  • [ ] Embedded map showing service area coverage
  • [ ] Local NAP in `` tag
  • [ ] LocalBusiness schema with areaServed for this location
  • [ ] FAQPage schema with 3+ location-specific questions (AIO trigger)
  • [ ] Internal links to main service pages
  • [ ] ≥60% unique content vs. other location pages (hard floor)
  • [ ] ≥80% unique content (competitive target)

Section 5: Blog Content Assessment

Pull GSC data (Page performance) + Screaming Frog (word counts):

| Title | URL | Word Count | Last Updated | Primary Keyword | SERP Position | Monthly Clicks | Score | |-------|-----|-----------|-------------|---------------|--------------|---------------|-------| | [title] | [url] | | | | | | |

Flag and prioritize: | Flag | Definition | Action | Priority | |------|-----------|--------|---------| | High impressions, low CTR (20% YoY clicks decline | Content decay | Refresh — new stats, examples | Critical | | Zero internal links to service pages | Missed conversion opportunity | Add contextual CTAs | Medium | | 20% YoY decline)** — Add current year stats, update examples, refresh introduction. Even minor updates reset ChatGPT freshness factor. Effort: 1–2 hrs/page. Priority: 16.

  1. Resolve cannibalization (top priority pairs first) — For each cannibalized keyword pair: keep strongest page (by traffic + backlinks), 301 redirect weaker version OR canonicalize. Effort: 1–2 hrs per pair. Priority: 16.

Short-Term (Week 2–4)

  1. Expand thin service pages to ≥800 words — For each service page 40% overlap: add local landmarks, area-specific testimonials, neighborhood context, local FAQ. Track unique content % with diff tool. Effort: 3–5 hrs/page. Priority: 15.
  2. Add HowTo schema to all process pages — Any page with numbered steps gets HowTo schema. AI extracts step sequences directly for voice + AIO. Effort: 30 min/page. Priority: 16.
  3. Create missing BOFU content — If no pricing guide, comparison page, or case study exists: create at least 1 per main service. These pages convert at 3–5× the rate of informational pages. Effort: 4–8 hrs/piece. Priority: 12.
  4. Run Surfer/Clearscope audit on top 5 service pages — Score each vs. top competitors. Pages below 70 (Surfer) or B+ (Clearscope) need NLP entity coverage expansion. Effort: 1–2 hrs/page. Priority: 16.

Medium-Term (Month 2–3)

  1. Build pillar + cluster structure — Identify 3 main service pillars. Create/upgrade pillar pages to 2,500+ words. Map cluster pages (1,200+ words each) to each pillar. Target 25+ articles per cluster for topical authority signal. Effort: 8–12 hrs/pillar.
  2. Create original local data/research content — Survey 50+ customers or compile local market data → publish as "[City] [Industry] Report 2025". AIO preferentially cites original data. Effort: 20–40 hrs. Expected: 5–15 editorial links + AIO citation priority.

Competitor Content Benchmark

| Metric | Client | Comp 1 | Comp 2 | Comp 3 | Gap to Leader | |--------|--------|--------|--------|--------|---------------| | Avg service page word count | | | | | | | % service pages with FAQPage schema | | | | | | | % location pages (HCS-unique ≥60%) | | | | | | | Total blog posts | | | | | | | Pillar pages (2,500+ words) | | | | | | | Surfer Score avg (top service pages) | | | | | | | AIO citations (core service queries) | | | | | |

Priority Matrix

| Issue | Impact (1–5) | Feasibility (1–5) | Priority | Effort | |-------|-------------|-------------------|---------|--------| | Service pages 20% YoY decline | 4 | 4 | 16 | 3–5 hrs/page | | Cannibalization (2+ pages same keyword) | 4 | 4 | 16 | 1–2 hrs | | Blog posts P4–P10 (quick wins) | 4 | 4 | 16 | 2–4 hrs/post | | Location pages 50% of service pages 500ms for dual-priority treatment (content expansion + performance fix simultaneously).

Content Decay by Type (2025 Benchmarks)

| Content Type | Decay Rate | Refresh Trigger | Update Frequency | |-------------|-----------|----------------|-----------------| | Service pages (local) | Slow (12–24 mo) | >20% YoY click drop | Annually + on price/service change | | Blog posts (news/trends) | Fast (3–6 mo) | >30% YoY click drop | Quarterly | | FAQ pages | Medium (6–12 mo) | New PAA questions appear | Semi-annually | | Location pages | Slow (18–24 mo) | Competitor adds stronger page | Annually | | Comparison/alternative pages | Fast (4–8 mo) | New competitors enter market | Quarterly |

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.