seo-plan — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited seo-plan (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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).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.DATA_getDomainOverviewWorldwide, plus a Firecrawl scrape of the homepage if availablesaas, ecommerce, local, publisher, agency, b2b-services, marketplace. If ambiguous, ask the user once.DATA_getDomainOverviewWorldwide, DATA_getDomainOverviewHistory, DATA_getDomainAuthority, DATA_getBacklinksSummaryDATA_getDomainCompetitorsseo-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)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.seo-technical-audit severity-weighted issue count.seo-local skill yet — flag this as a manual sub-step or external).seo-agency-landing-page).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.noindex on /blog templates" depends on "run seo-technical-audit."PLAN.mdFolder 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 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.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.