SKILL← All skills

SEO Sprint

A full SEO sprint as a Claude skill. Pulls real keyword data from Ahrefs, drafts a roadmap doc tailored to your site, and then executes it phase by phase — shipping alternative pages, comparison pages, use-case pages, and pillar playbooks with internal-linking and schema checks enforced before each phase ships.

Drop the folder into your agent's skills directory — e.g. ~/.claude/skills/seo-sprint/ for Claude Code. Works with any agent that reads SKILL.md.

SKILL.md
Download · 23 filesJoin the Club ↗
---
name: seo-sprint
description: "When the user wants to build organic search traffic from scratch on a site or app — a multi-phase SEO sprint that ships programmatic landing pages (alternatives, use-cases, comparisons, playbooks) backed by real keyword research. Also use when the user mentions 'SEO sprint,' 'build organic traffic,' 'rank in Google,' 'build an SEO machine,' 'alternatives pages,' 'comparison pages,' '/for/ pages,' 'programmatic SEO playbook,' 'competitor alternatives,' or vague asks like 'help me with SEO' or 'we need traffic' when there's no existing roadmap — this skill creates one and then executes it phase by phase. Distinguish from seo-audit (one-off diagnostic) and programmatic-seo (page-template scaling only) — this skill owns research, planning, page generation, internal linking, off-page checklist, and the persistent phase tracker across the whole sprint."
---

# SEO Sprint

An end-to-end playbook for building organic search traffic on any app or marketing site, from day-0 setup through ongoing programmatic page expansion. Conversion-first (alternatives and comparison pages before blogs), publish-early (a thin page indexed now beats a perfect page indexed later), and battle-tested across dozens of real production phases.

The skill has two modes:

1. **Initialize** — first run on a new repo. Detects stack and brand, runs keyword research via Ahrefs, audits technical foundations, generates a persistent roadmap doc and link inventory.
2. **Resume** — subsequent runs. Reads the existing roadmap, picks up the next pending phase (or one the user names), executes it end-to-end with quality gates.

The user does not need to remember which mode they're in. On invocation, **detect mode by checking whether `docs/seo-sprint.md` exists at repo root** (or wherever the user chose to put it last time — see `.seo/config.json` if present). No file → Initialize. File exists → Resume.

---

## Hard prerequisites

Before doing anything, verify:

1. **Working directory is a git repo** — `git rev-parse --is-inside-work-tree`. If not, stop and say: "This skill writes a persistent roadmap to your repo. Initialize git first, or run from inside an existing repo."
2. **A stack is detectable** — at least one of `package.json`, `Gemfile`, `composer.json`, `requirements.txt`, `astro.config.*`, `next.config.*`, `nuxt.config.*`, `gatsby-config.*`, `_config.yml`, `config.toml`, `pyproject.toml`. If none, ask the user what stack they're on before continuing.
3. **Ahrefs MCP availability check** — try a small ping: `mcp__ahrefs__subscription-info-limits-and-usage` (no args). If it returns data, you're good. If it errors, the skill works in **manual research mode** — see `references/manual-research.md`. Don't refuse to run; just adjust.

If Ahrefs is available but no `project_id` is on file, prompt the user for one. Store it in `.seo/config.json`. You'll reuse it dozens of times.

---

## Initialize mode — first run

Goal: end this run with a committed (or at least written) `docs/seo-sprint.md` that contains keyword research, a phase tracker grouped by pattern, and the technical audit findings. Plus `.seo/brand.md` (product context) and `.seo/link-inventory.md` (every internal link target available).

### Step 1 — Detect stack + frontend convention

Read `references/stacks/detection.md` for the full signal table. Identify:

- **Framework family**: Rails+Inertia, Next.js (App Router vs Pages), Astro, Nuxt, Remix, SvelteKit, Hugo, Jekyll, plain HTML, or "unknown → markdown fallback."
- **Routing convention**: file-based (Next/Astro/Nuxt) or controller-based (Rails/Django/Laravel).
- **Component language**: TSX, JSX, `.astro`, `.svelte`, `.vue`, `.erb`, or plain HTML.
- **Existing marketing pages**: `git ls-files | grep -iE 'marketing|landing|pages/(home|about|pricing)'`. Note what exists — you'll link to it.

Confirm with the user using `AskUserQuestion` if any signal is ambiguous. Save to `.seo/config.json`.

### Step 2 — Detect brand + product context (hybrid)

Read every signal first, propose `.seo/brand.md`, then ask only about gaps. Signals to read:

- `CLAUDE.md`, `README.md`, `README` — name, one-liner, audience hints
- `package.json` or `Gemfile.lock` — framework version (informs the stack adapter)
- `tailwind.config.*` or design-token CSS file — accent color, fonts
- `app/views/marketing/*`, `pages/index.*`, `src/pages/index.*` — existing hero copy
- `pricing` page (any path) — plan structure, price points

Then use a single `AskUserQuestion` call (3-4 questions) to fill gaps. Required to know:

- **Product one-liner** (≤20 words)
- **Primary persona** (e.g. "B2B SaaS founder," "indie agency owner," "ecommerce ops manager")
- **3-7 direct competitors** (by name; you'll Ahrefs them next)
- **Brand voice tags** (e.g. "honest, technical, no-jargon, slightly irreverent")
- **Whether the product has a free tier** (drives "is [brand] free" keyword strategy)
- **Anti-positioning** — what you do NOT do (used for honest comparison sections later)

Write to `.seo/brand.md` using `assets/brand-template.md` as the skeleton.

### Step 3 — Run keyword research

If Ahrefs MCP is available: follow `references/ahrefs-recipes.md`. The exact recipes:

- **A. Domain rating + baseline.** `mcp__ahrefs__site-explorer-domain-rating` + `site-explorer-metrics` on the user's domain. Record DR. **This is the single most important number** — it caps which keywords are winnable. KD ≤ DR + 5 is the heuristic; if DR < 10, restrict to KD ≤

Folder contents · 23 files

  • assets/brand-template.md2.1 KB
  • assets/link-inventory-template.md2.0 KB
  • assets/roadmap-template.md6.1 KB
  • references/ahrefs-recipes.md8.8 KB
  • references/manual-research.md4.0 KB
  • references/methodology.md5.8 KB
  • references/off-page.md5.4 KB
  • references/patterns/alternatives.md8.6 KB
  • references/patterns/compare.md5.9 KB
  • references/patterns/playbooks.md6.5 KB
  • references/patterns/use-case.md5.8 KB
  • references/quality-bars.md4.2 KB
  • references/stacks/astro.md5.1 KB
  • references/stacks/detection.md2.7 KB
  • references/stacks/markdown-fallback.md5.4 KB
  • references/stacks/nextjs.md4.9 KB
  • references/stacks/rails-inertia.md5.3 KB
  • references/striking-distance.md4.5 KB
  • references/technical-audit.md6.4 KB
  • scripts/link_audit.py9.9 KB
  • scripts/tech_audit.py8.5 KB
  • scripts/word_count.py4.5 KB
  • SKILL.md17.7 KB

Members get the full folder as a single ZIP download.

Members read the full skill.

Join the Founding Club — every skill, field note, and drop while you're a member.