Help us improve
Share bugs, ideas, or general feedback.
From seo-skills
Builds a phased, quarter-by-quarter SEO roadmap for a domain based on competitive position, content gaps, technical debt, and AI Search readiness. Use when asked for an overall SEO plan or strategy.
npx claudepluginhub seranking/seo-skills --plugin seo-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/seo-skills:seo-planThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Example output: [examples/seo-plan-wix-com-20260514/PLAN.md](../../examples/seo-plan-wix-com-20260514/PLAN.md)
Generates strategic SEO plans for new or existing websites including competitive analysis, content strategy, architecture, and phased implementation roadmap.
Conducts comprehensive SEO audits for websites: full-site crawls, technical analysis (Core Web Vitals, indexability), schema markup validation, E-E-A-T content scoring, image optimization, sitemaps, and GEO for AI overviews. Supports SaaS, e-commerce, local.
Analyzes websites for SEO issues including crawlability, Core Web Vitals, schema markup, content quality, and GEO for AI Overviews. Supports full audits and single-page analysis.
Share bugs, ideas, or general feedback.
Example output: examples/seo-plan-wix-com-20260514/PLAN.md
Produce a phased SEO roadmap for a domain. Output is a single PLAN.md plus per-phase deliverable folders, each phase scoped to a quarter (or a 90-day sprint), each with explicit goals, work items, owners, and metrics. The plan is grounded in the site's actual competitive position — not a generic checklist.
This is the "what should we work on next quarter" skill. It does not replace specialist skills — it composes them, then sequences their outputs.
seo-firecrawl available for site mapping and head metadata (optional but recommended).us), business type (saas / ecommerce / local / publisher / agency / b2b — auto-detected from the domain if not supplied), planning horizon (default 90 days, options: 30 / 90 / 180 / 365).Google data availability check (advisory, not blocking)
python3 scripts/google_auth.py --check --json. If tier >= 0, the downstream specialist skills (technical-audit, page, content-audit, drift) will enrich their outputs with real Google field data — and seo-plan ingests those richer outputs in step 4. The plan itself doesn't dispatch seo-google directly; it prints a one-line notice so the user knows the option is on the table:> Google APIs detected (tier {n}, available: {comma-list}). Downstream specialist
> skills (seo-technical-audit, seo-page, seo-content-audit, seo-drift) will enrich
> their outputs with real CrUX / GSC / GA4 / URL Inspection data automatically.
> Google APIs not configured. To enrich downstream phases with real CWV / GSC /
> GA4 / indexation data, run `bash extensions/google/install.sh`. Plan continues
> with SE Ranking data only.
seo-plan doesn't run seo-google itself (transferring friction to a single command is theirs' anti-pattern we critiqued in EVAL_RESULT_v2.md); it surfaces the option so the user can opt in or out before specialist skills run. See skills/seo-google/references/cross-skill-integration.md § "seo-plan" for the full rationale.Detect business type DATA_getDomainOverviewWorldwide, plus a Firecrawl scrape of the homepage if available
saas, ecommerce, local, publisher, agency, b2b-services, marketplace. If ambiguous, ask the user once.Domain baseline DATA_getDomainOverviewWorldwide, DATA_getDomainOverviewHistory, DATA_getDomainAuthority, DATA_getBacklinksSummary
Competitive frame DATA_getDomainCompetitors
Pull specialist inputs — confirm-then-dispatch pattern
seo-technical-audit-*seo-content-audit-*seo-competitor-gap-analysis-*seo-ai-search-share-of-voice-*seo-backlinks-profile-*TECH-AUDIT.md, VERDICT.md rollup, GAPS.md, REPORT.md, PROFILE.md respectively).seo-technical-audit → varies by page count for a fresh audit; ~6 Firecrawl credits for the modern-signals step. Cite "varies; check page count" if no recent audit cached.seo-content-audit → ~10–15 SE Ranking credits + 1 Firecrawl credit per audited URL (default cap 50; for the seo-plan top-10-pages scope, expect ~10–15 SE Ranking + ~10 Firecrawl).seo-competitor-gap-analysis → ~30–80 credits for 10 seeds.seo-ai-search-share-of-voice → ~10–20 credits (leaderboard + ~20 prompts × N domains).seo-backlinks-profile → ~25–40 SE Ranking credits.To produce a defensible plan, seo-plan needs outputs from N specialists not yet
run for {domain}:
- seo-technical-audit (~{N} credits)
- seo-content-audit (~{N} credits)
- seo-competitor-gap-analysis (~{N} credits)
- seo-ai-search-share-of-voice (~{N} credits)
- seo-backlinks-profile (~{N} credits)
Total estimated cost: ~{N} credits.
Run them now in this session? (y/N — default N preserves the existing v2.6 behavior of asking the user to run them manually first)
y: dispatch each missing specialist in this order, ingesting each primary deliverable as it completes:
seo-technical-audit, seo-competitor-gap-analysis, seo-ai-search-share-of-voice, seo-backlinks-profile.seo-content-audit — its top-10-pages scope depends on knowing the top traffic pages from seo-competitor-gap-analysis / DATA_getDomainKeywords, so it must run after the gap-analysis batch completes.DATA_getCreditBalance preflight and surfaces cost before proceeding (their existing behaviour — seo-plan does not bypass it). If any specialist aborts on a credit-balance check, surface that abort to the user and let them decide whether to top up or skip.N (or anything else — default N): fall through to the existing v2.6 behaviour — the plan opens with Phase 0: Discovery, and running each missing specialist becomes the first sprint's work. This preserves the user's control over credit spend in environments where the specialists should be scheduled or batched separately.Score the four pillars
seo-technical-audit severity-weighted issue count.Apply business-type template (templates differ — pick one and parameterise)
seo-local skill yet — flag this as a manual sub-step or external).seo-agency-landing-page).Phase the plan — three phases over the planning horizon, each with goals, work items, owners, metrics
seo-page verdicts.seo-keyword-cluster (1 pillar + 3–7 spokes), schema fixes from seo-schema, comparison page from seo-competitor-pages if competitive frame supports it.seo-geo on top pages, backlink-gap outreach starter from seo-backlink-gap, second drift comparison via seo-drift compare, retro + adjust.seo-content-brief, seo-schema, seo-page, etc.Pick metrics
Sequencing + dependencies
noindex on /blog templates" depends on "run seo-technical-audit."Synthesise PLAN.md
Folder seo-plan-{domain-slug}-{YYYYMMDD}/:
seo-plan-{domain-slug}-{YYYYMMDD}/
├── PLAN.md (synthesis — primary deliverable; inlines 01-baseline, 02-competitive-frame, 07-dependencies, 08-metrics as sections)
├── 04-phase-1-foundations.md (load-bearing — owners share single phase files in standups)
├── 05-phase-2-build.md (load-bearing — owners share single phase files)
├── 06-phase-3-compound.md (load-bearing — owners share single phase files)
└── evidence/
├── 01-baseline.md (where you are now — raw data inlined into PLAN.md)
├── 02-competitive-frame.md (who you're actually competing with — raw data inlined into PLAN.md)
├── 03-pillar-scores.md (technical / content / topical / AI Search — scoring math)
├── 07-dependencies-and-critical-path.md (dependency map — inlined as PLAN.md section)
└── 08-metrics.md (metric tables — inlined as PLAN.md section)
Top-level: PLAN.md + the three phase files (04/05/06). Owners share single phase files in standups, so phase files stay top-level rather than collapsing into PLAN.md. The verbatim-duplicate sections (baseline, competitive frame, dependencies, metrics) are inlined into PLAN.md but the raw step files are preserved in evidence/ along with the pillar-scoring math.
PLAN.md follows this shape:
# SEO Plan: {domain}
> Plan dated {YYYY-MM-DD} · Horizon: {n} days · Business type: {type} · Country: {country}
## Where you are
- Organic keywords: {n} (trend: {↑↓→ over 12mo})
- Organic traffic estimate: {n}/mo
- Domain authority: {n}
- Referring domains: {n}
- Pillar scores: Technical {n}/100 · Content {n}/100 · Topical {n}/100 · AI Search {n}/100
## Lead theme
{The lowest pillar from step 5, plus a one-line "why this is the constraint."}
## Top 5 competitors
| Domain | DA | Organic kw | Top cluster they own |
|---|---|---|---|
| {comp} | {n} | {n} | {cluster} |
## Phase 1 — Foundations (weeks 1–4)
**Goal:** {1-line outcome, e.g. "remove technical debt blocking content investment"}
| # | Work item | Skill / source | Owner | Effort | Phase-end metric |
|---|---|---|---|---|---|
| 1.1 | {item} | `seo-technical-audit` follow-up | {role} | {S/M/L} | {metric} |
| 1.2 | ... | | | | |
**Phase exit criteria:** {what must be true to declare Phase 1 done}
## Phase 2 — Build (weeks 5–8)
{same shape}
## Phase 3 — Compound + measure (weeks 9–12)
{same shape}
## Critical path
{Ordered list of work items that block subsequent phases. Anything not on this list is moveable.}
## Metrics
| Metric | Type | Current | Phase 1 target | Phase 2 target | Phase 3 target |
|---|---|---|---|---|---|
| Organic traffic | Lagging | {n} | {n} | {n} | {n} |
| Pages with E-E-A-T ≥ 70 | Leading | {n} | {n} | {n} | {n} |
| Technical issue count | Leading | {n} | {n} | {n} | {n} |
| AI Search citation count | Leading | {n} | {n} | {n} | {n} |
| Referring domains | Leading | {n} | {n} | {n} | {n} |
## Constraints / caveats
{User-supplied constraints, plus anything the data flags — e.g., "DA gap to top competitor is 25 points; expect 6+ months for keyword parity."}
## Recommended next step
Run Phase 1 work items. After week 4, run `seo-drift compare` against the baseline captured today, then adjust Phase 2 scope.
N. If the user just hits Enter (or answers anything other than an explicit y), seo-plan falls through to the v2.6 Phase-0 behaviour and lists the missing specialists as the first sprint's work. This preserves user control over credit spend — important when the user is on a tight SE Ranking budget or wants to schedule specialists separately.y path) is the convenience option. When the user wants a finished plan in one session and is comfortable with the displayed credit estimate, the y path runs the missing specialists in the optimal parallel-then-sequential order described in step 4d, ingests their outputs, and proceeds straight into pillar scoring (step 5). No silent re-execution: every dispatch is gated by the single confirmation in step 4c.DATA_getCreditBalance at its first step and surfaces cost before consuming credits — seo-plan does not bypass that gate. If a specialist aborts on its preflight (insufficient credits, user declines its inner cost prompt), seo-plan surfaces the abort and lets the user choose to top up, skip that specialist (and let it remain a Phase-0 work item), or cancel the rest of the dispatch.<title>, schema @type, and top-nav anchors are usually enough. Ask the user only when truly ambiguous.local, flag that we don't have a seo-local skill yet and recommend manual GBP audit as a Phase 0 item. Don't pretend coverage we don't have.seo-drift compare against the original baseline as input. Drift output rewrites the "Where you are" section; everything downstream updates from there.seo-technical-audit, seo-content-audit, seo-competitor-gap-analysis, seo-ai-search-share-of-voice, seo-backlinks-profile — produce inputs.seo-drift baseline — captures the snapshot the plan measures progress against.seo-keyword-cluster — when Phase 2 calls for a content tier.seo-content-brief — for each spoke article in Phase 2.seo-schema — for structured-data work items.seo-competitor-pages — when comparison content is on the plan.seo-drift compare — at end of phase to measure progress.seo-page — for individual URL keep/refresh/consolidate/kill calls in Phase 1.