seo-audit
Run a site-wide SEO audit into a ranked PLAN.md: technical, content, links, local.
Skill by indranilbanerjee
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/indranilbanerjee-seo-audit
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security, writing, marketing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/seo-audit
What's inside
- Skill name
seo-audit- Description
- Run a site-wide SEO audit into a ranked PLAN.md: technical, content, links, local. A single page → page-seo-analysis. "why did our traffic drop"
- License
- MIT
- Instructions
- 115 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- dimension-checklists.md
- evals.json · evals/
SKILL.md (first lines)
# /digital-marketing-pro:seo-audit
> **Script location.** If your host does not set `${CLAUDE_PLUGIN_ROOT}`, the scripts are in this plugin's `scripts/` folder, next to `skills/`. Run them with Python 3.10 or newer: `python`, or `python3` where `python` is not found (macOS, many Linux systems).
## Purpose
Perform a comprehensive SEO audit that evaluates a website across all major ranking dimensions. Produces a prioritized action plan with estimated impact and effort for each recommendation.
### Algorithm-update context (read before triaging volatility)
**Status as of 2026-10-04 (time-boxed — re-check after ~2026-12):** per the [Google Search Status Dashboard](https://status.search.google.com/summary), the most recent **core** update began **21 May 2026** (completed after ~12 days). Since then Google has run only **spam** updates: the **August 2026 spam update** (18–21 Aug) and the **September 2026 spam update** (started 24 Sep; not yet marked complete on 2026-10-04). **There was no September 2026 core update** — several SEO blogs reported one; the dashboard lists none. Attribute only to updates the dashboard lists. Separately, Google's **site reputation abuse** policy has split at the EEA border since 30 Aug 2026: outside the EEA a manual action demotes the affected section; inside the EEA the section is separated and ranks on its own instead ([Search Central](https://developers.google.com/search/blog/2026/08/update-site-reputation-policy)) — word audit findings on third-party/"parasite" sections per region.
When an audit runs inside a listed update's rollout window (or the 4 weeks after) and the brand shows ranking volatility:
- **Do not make reactive changes during a rollout.** Wait for the dashboard to mark the update complete, plus 7–14 days of settling, before drawing conclusions.
- **Diagnose direction before scope.** A site-wide drop vs a single-section drop vs a single-template drop have very different root causes. Compare pre-rollout (21 days before the start date) vs in-rollout vs post-rollout impressions and clicks, segmented by page-group.
- **Match the response to the update type.** Core updates re-weight existing quality signals — the answer is deeper E-E-A-T, unique value, and pruning thin/duplicated/AI-spam pages, not chasing rumoured signals. Spam updates target policy violations — check the affected pages against Google's spam policies (scaled content abuse, site reputation abuse, expired-domain abuse) before touching anything else.
- **Flag in the executive summary** whether ranking deltas pre-date a listed update (likely site-specific issues) or coincide with one — this decides between quick wins and a multi-quarter quality program.
## Input Required
The user must provide (or will be prompted for):
- **Website URL**: The domain or specific pages to audit
- **Target keywords**: Primary keywords the site should rank for (optional — can be researched)
- **Competitors**: 2-3 competitor URLs for benchmarking (optional)
- **Audit scope**: Full site or specific area (technical, content, local, links)
- **Known issues**: Any existing problems the user is aware of
## Process
1. **Load brand context**: Read `~/.claude-marketing/brands/_active-brand.json` for the active slug, then load `~/.claude-marketing/brands/{slug}/profile.json`. Apply brand voice, compliance rules for target markets (`skills/context-engine/compliance-rules.md`), and industry context. **Also check for guidelines** at `~/.claude-marketing/brands/{slug}/guidelines/_manifest.json` — if present, load restrictions and relevant category files. Check for custom templates at `~/.claude-marketing/brands/{slug}/templates/`. Check for agency SOPs at `~/.claude-marketing/sops/`. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults.
2. **Technical audit**: Crawlability, indexation, Core Web Vitals, mobile usability, structured data, HTTPS, XML sitemap, robots.txt, canonical tags, redirect chains
3. **On-page audit**: Title tags, meta descriptions, heading hierarchy, keyword usage, image alt text, internal linking structure, URL structure
4. **Content audit**: Thin content, duplicate content, content gaps, freshness, E-E-A-T signals (author pages, citations, credentials, first-hand experience)
5. **Local SEO** (if applicable): Google Business Profile, NAP consistency, local schema, reviews, local link profile
6. **Link profile**: Domain authority, backlink quality, toxic links, anchor text distribution, link velocity, competitor link gap. Score the own-domain profile with the analyzer (feeds `05-link-profile.md`):
```bash
python "${CLAUDE_PLUGIN_ROOT}/scripts/link-profile-analyzer.py" \
--file "${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-audit/{date}/links-export.json" \
--brand-domain {brand-domain}
```
(`--file` is a JSON array of link objects `[{"url","anchor_text","domain","da","follow"}]`, or pass `--links '<json>'` inline; `--brand-domain` excludes internal links.) For competitor link-gap prospecting, hand off to `/digital-marketing-pro:backlink-gap`.
7. Score each dimension on a 1-10 scale
8. Prioritize findings by impact (high/medium/low) and effort (quick win/medium/major project)
9. Generate the audit report with actionable recommendations
For the per-dimension checklists (incl. keyword research), the findings and action-plan table layouts, the after-audit follow-up menu, and the parallel-dispatch rules (independent dimensions concurrently; the action plan stays sequential), read `dimension-checklists.md` beside this file.
## How you'll know it worked
Every recommendation gets a metric it should move, the direction it should move in, and a date to check it. Add this table to the report, one row per recommendation:
| Recommendation | Metric | Expected direction | Check by |
|---|---|---|---|
| Fix the 12 broken internal links | Crawl errors in Search Console | Down | 2027-01-15 |
Then record the rows so the continuous-improvement loop checks them when they fall due:
```bash
python "${CLAUDE_PLUGIN_ROOT}/scripts/recommendation-tracker.py" --brand {slug} --action add --source seo-audit --data '[{"recommendation": "...", "metric": "...", "direction": "up", "check_by": "YYYY-MM-DD"}]'
```
A recommendation without a metric, a direction (up or down) and a future check-by date is refused (exit 2): if you can't say how you'd know it worked, rewrite it until you can.
## Output
A structured SEO audit report containing:
- Executive summary with overall health score
- Technical SEO scorecard with specific issues and fixes
- On-page optimization findings per page/template
- Content quality assessment with gap analysis
- E-E-A-T evaluation and improvement recommendations
- Local SEO assessment (if applicable)
- Link profile analysis with opportunities
- Prioritized action plan sorted by impact-to-effort ratio
## Numbered output convention
All audit outputs go to `${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-audit/{YYYY-MM-DD}/`:
```
00-input.md target URL, audit scope, brand context, Core Update window flag
01-crawl-inventory.md discovered URLs, status codes, redirect chains
02-technical-scorecard.md Core Web Vitals, crawlability, schema validity (1-10 per dimension)
03-onpage-findings.md per-template issues with affected URL list
04-content-quality.md E-E-A-T, thin/duplicate, topical coverage
05-link-profile.md own backlink health (hand off to backlink-gap for prospect work)
06-eeat-evaluation.md author signals, expertise indicators, trust elements
07-local-seo.md only if business profile.target_markets has local intent
08-quality-scorecard.md the gates below — must pass for status: ready
09-prioritised-actions.md impact × effort matrix, top 20 actions
PLAN.md single-page deliverable
```
Downstream skills (`seo-implement`, `seo-plan`, `content-engine`) consume `PLAN.md` and the relevant numbered file rather than re-querying.
## Quality scorecard
| Gate | What it checks |
|---|---|
| **crawl_coverage** | ≥ 90% of sitemap URLs successfully crawled (else input data is incomplete) |
| **dimension_completeness** | Scores filled for all 6 mandatory dimensions (technical, on-page, content, E-E-A-T, link, local-if-applicable) |
| **finding_actionability** | Every "high impact" finding has a named owner + effort estimate (else it's not actionable) |
| **core_update_flag_set** | If running inside a Core Update window, `00-input.md` flags it AND `PLAN.md` carries the "wait 7-14 days before reactive changes" callout |
`status: ready` requires all four gates pass.
## Chain handoffs
- **Upstream:** brand profile + (optional) prior `tech-seo-audit`, `aeo-audit` outputs
- **Downstream:**
- `/digital-marketing-pro:seo-implement` — applies the top-N findings to CMS / dev backlog
- `/digital-marketing-pro:seo-plan` — consumes via dispatcher pillar scoring
- `/digital-marketing-pro:backlink-gap` — for the link-prospect side that `05-link-profile.md` only covers from the own-domain angle
- `/digital-marketing-pro:seo-drift` — next quarter, compare two audit snapshots
## Tips & caveatsFrom indranilbanerjee/digital-marketing-pro, MIT.
More from indranilbanerjee/digital-marketing-pro
- 0.674score
competitor-monitor
indranilbanerjee
Monitor competitors over time: baseline sites, pricing and ads by script, flag changes.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
credential-switch
indranilbanerjee
Switch the active credential profile to another client, validating keys first, approval-gated.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
campaign-status
indranilbanerjee
Show status of every tracked campaign: health, spend, executions, pending approvals.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
competitor-analysis
indranilbanerjee
Analyze 2-5 competitors once: positioning, content, SEO, ads, pricing.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
continuous-improvement-loop
indranilbanerjee
Run the Part 12 continuous improvement loop into a quarterly brief for leadership.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
counter-narrative
indranilbanerjee
Build a counter-narrative playbook for a competitor's rebrand, category claim or attack.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
analytics-insights
indranilbanerjee
Design the analytics layer with script-backed benchmarks: KPI trees, report templates, MMM, cookieless.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
budget-tracker
indranilbanerjee
Project ad budget pacing by script from live accounts or given numbers: month-end overspend.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
client-report
indranilbanerjee
Write a white-labeled report for one client from tracked data.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
client-validation-document
indranilbanerjee
Produce the Part 5 client validation document: evidence-cited findings for client decisions.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
creative-testing-framework
indranilbanerjee
Plan a creative testing roadmap with script-computed sample sizes.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
crisis-response
indranilbanerjee
Respond to a breaking PR crisis: severity, holding statement, stakeholder messages, timeline.
SkillAFreshness: A★ 909Claude Code +9
Signals
- Stars
- 909
- Forks
- 146
- Open issues
- 0
- Last commit (this folder)
- Oct 11, 2026 (18 days ago)
- Last release
- Jul 29, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Website
- indranil.in
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from indranilbanerjee
- 0.674score
campaign-status
indranilbanerjee
Show status of every tracked campaign: health, spend, executions, pending approvals.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
client-report
indranilbanerjee
Write a white-labeled report for one client from tracked data.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
analytics-insights
indranilbanerjee
Design the analytics layer with script-backed benchmarks: KPI trees, report templates, MMM, cookieless.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
budget-tracker
indranilbanerjee
Project ad budget pacing by script from live accounts or given numbers: month-end overspend.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
creative-testing-framework
indranilbanerjee
Plan a creative testing roadmap with script-computed sample sizes.
SkillAFreshness: A★ 909Claude Code +9 - 0.674score
client-validation-document
indranilbanerjee
Produce the Part 5 client validation document: evidence-cited findings for client decisions.
SkillAFreshness: A★ 909Claude Code +9
Cite this page
seo-audit skill. Agent Mart. https://agentmart.dev/skills/indranilbanerjee-seo-audit (last updated 2026-10-24)