seo-plan
Skill201 starsChanged 5 months agoMITView on GitHub
Build a phased SEO roadmap for a domain — quarter-by-quarter, tied to the site's competitive position, content gaps, technical debt, and AI Search readiness. Synthesises the outputs of multiple skills (`seo-technical-audit`, `seo-content-audit`, `seo-keyword-cluster`, `seo-competitor-gap-analysis`, `seo-ai-search-share-of-voice`) into one site-level plan with sequencing, owners, and success metrics. Distinct from `seo-keyword-cluster` (keyword architecture for one topic), `seo-content-brief` (one article), and `seo-keyword-niche` (longtail content tier). Use when the user asks for an "SEO plan", "SEO strategy", "SEO roadmap", "90-day plan", "quarterly SEO plan", "site SEO strategy", or "where do we focus next".
32 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- alpit-patel/seo-aeo-geo-kittheir own version, first seen Nov 8, 2026
- Gallyan/trouvabletheir own version, first seen Nov 1, 2026
- zhtyyx/codex-seotheir own version, first seen Nov 1, 2026
- joaoguirunas/team-ostheir own version, first seen Oct 21, 2026
- susantedit/claude-skillstheir own version, first seen Oct 20, 2026
- webdevarif/claude-skillstheir own version, first seen Oct 20, 2026
Used with
Projects with it also use seo-agentic, seo-flow and 3 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
AgriciDanielSkillseo-agentic
Audit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Use when the user asks whether AI agents can use or browse the site, or about llms.txt or WebMCP. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).
Also in 4 projects that use this
timruebenachSkillseo-flow
FLOW framework integration — evidence-led SEO using the Find → Leverage → Optimize → Win loop. Surfaces stage-specific AI prompts from the FLOW knowledge base (41 prompts, CC BY 4.0). Use when user says "FLOW", "FLOW framework", "seo flow", "evidence-led SEO", "find leverage optimize win", or wants stage-specific SEO prompts.
Also in 8 projects that use this
timruebenachSkillseo-dataforseo
Live SEO data via DataForSEO MCP server. SERP analysis (Google, Bing, Yahoo, YouTube, Google Images), keyword research (volume, difficulty, intent, trends), backlink profiles, on-page analysis (Lighthouse, content parsing), competitor analysis, content analysis, business listings, AI visibility (ChatGPT scraper, LLM mention tracking), and domain analytics. Requires DataForSEO extension installed. Use when user says "dataforseo", "live SERP", "keyword volume", "backlink data", "competitor data", "AI visibility check", "LLM mentions", "image SERP", "google images", "image rankings", or "real search data".
Also in 9 projects that use this
megastepSkillseo-programmatic
Programmatic SEO planning and analysis for pages generated at scale from data sources. Covers template engines, URL patterns, internal linking automation, thin content safeguards, and index bloat prevention. Use when user says "programmatic SEO", "pages at scale", "dynamic pages", "template pages", "generated pages", or "data-driven SEO".
Also in 14 projects that use this
- +1 more from timruebenach
Other versions32 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- amirjahfar1/automate-seo-with-claude★ 289% same
Wrote their own version · 31
- AgriciDaniel/claude-seo★ 20ksame name
- indranilbanerjee/digital-marketing-pro★ 934same name
- zhtyyx/codex-seo★ 152same name
- coopersimson96/ai-content-system★ 17same name
- joaoguirunas/team-os★ 6same name
- oegeyilmaz9/seo-aeo-geo-ultimate★ 6same name
- 01clauding/claude-seo-skill★ 4same name
- avalonreset/legends-seo-dungeon★ 4same name
- megastep/codex-skills★ 4same name
- realwigu/claude-skills★ 4same name
21 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- ai-search-gaps-to-social-campaignSkill
- client-onboarding-proposalSkill
- local-gmb-visibilitySkill
- seo-adsSkill
- seo-agency-landing-pageSkill
- seo-ai-search-share-of-voiceSkill
- seo-ai-social-reportSkill
- seo-apiSkill
- seo-backlink-gapSkill
- seo-backlinks-profileSkill
- seo-competitor-gap-analysisSkill
- seo-competitor-pagesSkill
- seo-content-auditSkill
- seo-content-briefSkill
- seo-driftSkill
- seo-firecrawlSkill
- seo-gaps-to-social-campaignSkill
- seo-geoSkill
- seo-googleSkill
- seo-hreflangSkill
- seo-imagesSkill
- seo-keyword-clusterSkill
- seo-keyword-nicheSkill
- seo-localSkill
- seo-pageSkill
- seo-schemaSkill
- seo-sitemapSkill
- seo-subdomainSkill
- seo-sxoSkill
- seo-technical-auditSkill
- site-audit-to-social-distributionSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 5 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 24 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 31
If creds are missing, the plan continues with SE Ranking-only data and prints:
- Distinctive: line 83
After every dispatch, ingest the new folder the same way step 4a does.
- Distinctive: line 205
The lead theme is the lowest pillar score: Don't pick the pillar the user is most excited about — pick the one the data says is the …
- Distinctive: line 207
Targets must be defensible: Don't write "double organic traffic in Q1." Tie each target to a base rate from competitor data or category …
- Very specific: line 209
Local SEO is a known gap: If business type is local, flag that we don't have a seo-local skill yet and recommend manual GBP audit as a …
- Distinctive: line 210
Don't generate work items the team can't execute: If the user said "no JS-render changes allowed," drop those items even if they're …
“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Example output: examples/seo-plan-wix-com-20260514/PLAN.md
SEO Plan
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.
Prerequisites
- SE Ranking MCP server connected.
seo-firecrawlavailable for site mapping and head metadata (optional but recommended).- User provides:
- Target domain.
- Optionally: target country (default
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). - Optionally: known constraints (engineering capacity, content budget, no JS-render changes allowed, etc.).
Process
- Google data availability check (advisory, not blocking)
- Run
python3 scripts/google_auth.py --check --json. Iftier >= 0, the downstream specialist skills (technical-audit, page, content-audit, drift) will enrich their outputs with real Google field data — andseo-planingests those richer outputs in step 4. The plan itself doesn't dispatchseo-googledirectly; 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.- If creds are missing, the plan continues with SE Ranking-only data and prints:
> 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.- This is the lightest possible auto-spawn —
seo-plandoesn't runseo-googleitself (transferring friction to a single command is theirs' anti-pattern we critiqued inEVAL_RESULT_v2.md); it surfaces the option so the user can opt in or out before specialist skills run. Seeskills/seo-google/references/cross-skill-integration.md§ "seo-plan" for the full rationale.
- Run
- Detect business type
DATA_getDomainOverviewWorldwide, plus a Firecrawlscrapeof the homepage if available- Inspect title, H1, JSON-LD types, primary nav patterns.
- Classify as one of:
saas,ecommerce,local,publisher,agency,b2b-services,marketplace. If ambiguous, ask the user once. - Business type drives template selection (see step 6).
- Domain baseline
DATA_getDomainOverviewWorldwide,DATA_getDomainOverviewHistory,DATA_getDomainAuthority,DATA_getBacklinksSummary- Capture: organic keywords, organic traffic estimate, DA, backlink profile health, top countries, traffic trend over the last 12 months.
- This sets the "where you are now" anchor.
- Competitive frame
DATA_getDomainCompetitors- Pull top 5–10 organic competitors.
- For each: organic keywords, traffic share, DA, top topical clusters they own.
- Identifies who the user is actually competing with on the SERP (often different from who they think).
- Pull specialist inputs — confirm-then-dispatch pattern
- 4a. Detect existing outputs. In the current working directory, look for any folder matching the patterns below dated within the last 30 days (treat folders older than 30 days as stale and re-list them as missing):
seo-technical-audit-*seo-content-audit-*seo-competitor-gap-analysis-*seo-ai-search-share-of-voice-*seo-backlinks-profile-*
- For each present folder, ingest its primary deliverable (
TECH-AUDIT.md,VERDICT.mdrollup,GAPS.md,REPORT.md,PROFILE.mdrespectively). - 4b. Build the missing list. For each prerequisite that did not have a fresh output, look up its credit-cost figure from the specialist's own SKILL.md (read those when forming the prompt — figures may drift):
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.
- 4c. Print the confirmation prompt (single block, exactly this shape, with the missing-list filtered to only what is actually missing):
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)- 4d. If user answers
y: dispatch each missing specialist in this order, ingesting each primary deliverable as it completes:- Parallel batch (independent):
seo-technical-audit,seo-competitor-gap-analysis,seo-ai-search-share-of-voice,seo-backlinks-profile. - Sequential after the batch:
seo-content-audit— its top-10-pages scope depends on knowing the top traffic pages fromseo-competitor-gap-analysis/DATA_getDomainKeywords, so it must run after the gap-analysis batch completes. - Each specialist runs its own
DATA_getCreditBalancepreflight and surfaces cost before proceeding (their existing behaviour —seo-plandoes 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. - After every dispatch, ingest the new folder the same way step 4a does.
- Parallel batch (independent):
- 4e. If user answers
N(or anything else — defaultN): 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.
- 4a. Detect existing outputs. In the current working directory, look for any folder matching the patterns below dated within the last 30 days (treat folders older than 30 days as stale and re-list them as missing):
- Score the four pillars
- Technical health (0–100): from
seo-technical-auditseverity-weighted issue count. - Content quality (0–100): average E-E-A-T+CITE score across audited pages.
- Topical authority (0–100): cluster coverage relative to top 3 competitors.
- AI Search readiness (0–100): citation share vs SoV competitors.
- The lowest pillar becomes the lead theme for the first phase.
- Technical health (0–100): from
- Apply business-type template (templates differ — pick one and parameterise)
- saas → product-led pillars + integration pages + comparison/alternatives + JTBD content.
- ecommerce → category page hygiene + product schema + faceted-nav indexation rules + review aggregation.
- local → GBP optimisation + location pages + citation cleanup (note: we don't have a
seo-localskill yet — flag this as a manual sub-step or external). - publisher → topical clusters + author E-E-A-T + freshness cadence + AI-Search citations.
- agency → service pages + case studies + comparison content + lead-gen LP (use
seo-agency-landing-page). - b2b-services → industry-specific landing pages + thought-leadership clusters + decision-stage content.
- Template provides default work-item categories; the lowest-pillar score from step 5 weights them.
- Phase the plan — three phases over the planning horizon, each with goals, work items, owners, metrics
- Phase 1 (weeks 1–4 of horizon): Foundations. Technical fixes that unblock everything else, baseline drift snapshot, 1–2 quick-win content refreshes from
seo-pageverdicts. - Phase 2 (weeks 5–8): Build. Content tier from
seo-keyword-cluster(1 pillar + 3–7 spokes), schema fixes fromseo-schema, comparison page fromseo-competitor-pagesif competitive frame supports it. - Phase 3 (weeks 9–12): Compound + measure. AI Search readiness pass via
seo-geoon top pages, backlink-gap outreach starter fromseo-backlink-gap, second drift comparison viaseo-drift compare, retro + adjust. - For longer horizons (180/365 days), repeat phases 2+3 with refreshed inputs and a quarterly retro.
- Each work item is tagged with the skill that produces it:
seo-content-brief,seo-schema,seo-page, etc.
- Phase 1 (weeks 1–4 of horizon): Foundations. Technical fixes that unblock everything else, baseline drift snapshot, 1–2 quick-win content refreshes from
- Pick metrics
- Lagging (quarterly): organic traffic, organic keywords ranking top-10, organic conversions.
- Leading (weekly/monthly): technical-issue count, pages with E-E-A-T verdict ≥ 70, AI Search citation count, referring-domain count.
- One leading + one lagging per phase. Tie each metric to a current value (from step 2) and a phase-end target. Targets must be defensible — call out base rates.
- Sequencing + dependencies
- Build a dependency map: e.g., "rewrite cluster A pillar" depends on "fix
noindexon /blog templates" depends on "runseo-technical-audit." - Surface the critical path. Anything off the critical path is moveable; anything on it blocks the phase.
- Build a dependency map: e.g., "rewrite cluster A pillar" depends on "fix
- Synthesise
PLAN.md
Output format
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.Tips
- Default is "no auto-dispatch." The confirm prompt in step 4c defaults to
N. If the user just hits Enter (or answers anything other than an explicity),seo-planfalls 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. - Auto-dispatch (the
ypath) is the convenience option. When the user wants a finished plan in one session and is comfortable with the displayed credit estimate, theypath 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. - Auto-dispatch respects each specialist's own credit-balance preflight. Each specialist already calls
DATA_getCreditBalanceat its first step and surfaces cost before consuming credits —seo-plandoes not bypass that gate. If a specialist aborts on its preflight (insufficient credits, user declines its inner cost prompt),seo-plansurfaces 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. - Auto-detect business type cheaply. Homepage
<title>, schema@type, and top-nav anchors are usually enough. Ask the user only when truly ambiguous. - The lead theme is the lowest pillar score. Don't pick the pillar the user is most excited about — pick the one the data says is the constraint. Surface this gap explicitly if they conflict.
- Three phases, even for 30-day horizons. Compress, don't drop. A 30-day plan is foundations (weeks 1–2), build (weeks 2–3), measure (week 4). The structure forces sequencing discipline.
- Targets must be defensible. Don't write "double organic traffic in Q1." Tie each target to a base rate from competitor data or category benchmarks. If the math doesn't support a target, say so and lower it.
- Critical path is the deliverable. Most teams can do something; few know what's blocking what. Surface the dependency chain — that's where this skill earns its keep.
- Local SEO is a known gap. If business type is
local, flag that we don't have aseo-localskill yet and recommend manual GBP audit as a Phase 0 item. Don't pretend coverage we don't have. - Don't generate work items the team can't execute. If the user said "no JS-render changes allowed," drop those items even if they're high-leverage. A plan that won't ship is worse than a smaller plan that does.
- Update cadence. A 90-day plan should be re-run at the 90-day mark with
seo-drift compareagainst the original baseline as input. Drift output rewrites the "Where you are" section; everything downstream updates from there.
Works well with
- Predecessors:
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.
- Successors:
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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

