What this is
This skill encodes a repeatable shipping loop that improved rankings in practice: research keywords → author many unique guides → register routes → update sitemap → list on resources/hub pages so Google and users can find them. It complements gsc-ahrefs-browser-audit (writes the brief) and ctr-snippet-batch-optimize (snippet fixes on existing URLs).
Input: seo-work-brief.md (preferred)
- Read
seo-work-brief.mdat the site project root (default./seo-work-brief.md) unless the user gives another path. That file is produced bygsc-ahrefs-browser-audit; see references/brief-format.md for how to parse it. - Use the section
## New guide backlog (for bulk-seo-guides-from-keywords)as the authoritative queue: process rows with Statusqueuedor empty, in Priority order. - After each batch, edit the same
seo-work-brief.mdand set Status toshippedorskippedfor finished rows. - If the brief is missing or the backlog table is empty, fall through to the research phase below and optionally create a new
seo-work-brief.mdwith a populated backlog for the next run.
Research phase (fallback or top-up)
- Build or extend a candidate list from Ahrefs Organic keywords, Opportunities (e.g. low-hanging fruit), or exported reports—prioritize volume × realistic difficulty × fit with the product.
- If API/MCP hits limits, switch to browser automation with the user logged into Ahrefs (same rationale as the browser audit skill).
- Optional: use web search (e.g. Exa or similar) to confirm SERP intent (informational vs tool vs mixed) before committing a template.
- Dedupe against URLs that already exist in the repo (grep routes, sitemap, content folders).
- When you used fallback research, append or merge new rows into
seo-work-brief.mdusing the backlog table format fromgsc-ahrefs-browser-audit/references/seo-work-brief.mdso the queue stays the single source of truth.
Page quality bar (non-negotiable)
- Each page needs substantive, unique body content—not spun placeholders. Include sections, examples, tables, or lists where appropriate.
- Add internal links to closely related existing guides (and note neighbors for future cross-links).
- Align title and meta with the target query using the same CTR habits as the
ctr-snippet-batch-optimizeskill’sreferences/ctr-patterns.md(same repo).
Shipping phase (always complete the plumbing)
For every new URL, update whatever your stack uses—adapt names to the project:
| Step | Typical locations (examples) |
|---|---|
| Page module | pages/, resources/js/pages/, app/, content/ |
| Route registration | router config, routes/*.php, filesystem routes |
| Sitemap | static XML, SitemapController, sitemap.ts, host generator |
| Hub / index | “Resources”, “Guides”, footer sections, search index JSON |
Do not stop at “TSX created” if the user expects live URLs—confirm routes and sitemap are wired, or explicitly list remaining manual steps.
Scale and execution
- Batch size — Groups of ~5 pages per iteration reduce context loss and review fatigue (adjust if the user asks).
- Parallelism — If the agent supports subtasks/subagents, parallelize batches; merge conflicts are avoided by giving each batch distinct filenames/slugs up front.
- Slug consistency — One slug per keyword cluster; avoid near-duplicate paths (e.g.
red-herring-examplesvsred-herring-fallacy) unless intent truly differs—document the distinction in copy.
Handoff to the user
After a large batch, provide:
- Full list of new paths (domain-appended if they asked).
- Anything left manual (e.g. CDN cache, Search Console inspection).
Related
- Produce or refresh the queue with
gsc-ahrefs-browser-audit→seo-work-brief.md. - Refresh snippets on thin-performing winners with
ctr-snippet-batch-optimize(uses Tier tables in the same brief, not the backlog section). - Backlog parsing rules: references/brief-format.md
- Detailed checklist: references/shipping-checklist.md