agentsclimarketplace

Seo init

Skill lsidore/seo-md/skills/seo-init

Use when installing the SEO.md system in a project, when SEO.md is missing at the project root, or when it is stale after a pivot or repositioning. Run once per project, rerun to update.From its SKILL.md

Install
npx -y skills add lsidore/seo-md --skill seo-init

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.1 KB, as published. Nobody here has run it

seo-init: generate the SEO.md contract file

Overview

Every other seo-* skill reads SEO.md at the project root before acting. This skill produces that file: scan the codebase first, interview the founder second, write the file third. The interview only asks what the scan could not infer.

SEO.md is a document, not a config format. The user can also skip this skill entirely and fill SEO.template.md by hand; treat a hand-written SEO.md as fully authoritative.

Step 1: Scan the repo (prefill before asking anything)

Build a prefilled draft of every section you can, with a confidence level per finding:

  • Product: landing page copy (hero, features, pricing page), README, package.json name, meta descriptions. Extract the name, one-liner candidates, and the URL.
  • Content System: detect the framework (package.json dependencies), find where content lives (content/, posts/, blog/, src/content/, CMS SDKs), how existing pages declare frontmatter, and the build command (package.json scripts). Inventory editorial components: scan the components used by existing posts and record each with an exact usage snippet.
  • Audience and voice: read 2-3 existing posts or the landing page and describe the implicit tone and reader. Low confidence by default; always confirm in the interview.
  • Conversion: find signup/demo/pricing routes, email SDKs (resend, sendgrid, mailchimp, loops), form endpoints.
  • Keyword Strategy: existing post titles and keywords, sitemap entries.
  • Data Sources: check available MCP tools for DataForSEO or Search Console access.

Step 2: Interview (only the gaps)

Ask with AskUserQuestion, in batches of at most 4, grouped by theme. Present scanned findings as defaults to confirm rather than open questions. Question bank:

  1. Product: one-liner, category, what the product must NEVER be said to do.
  2. Audience: who exactly, stage, what they already know, who is OUT of scope.
  3. Voice: tone reference ("write like..."), formal or informal address, banned words and patterns beyond the em dash default.
  4. Conversion: money page, primary CTA, conversion event, email infrastructure.
  5. Market & Language: content language, target country (drives keyword data).
  6. Keyword Strategy: seed keywords (offer 10 candidates from the scan), main competitors, head terms to avoid, the 1-3 money queries.
  7. Mix & cadence: confirm defaults (70/15/15, 3 per week, batch cap 10) or adjust.
  8. Publish mode: pr (default, recommended), commit (full autopilot), or files-only.
  9. Data Sources: DataForSEO MCP? Search Console? Neither is fine; say the skills will degrade to WebSearch heuristics with flagged estimates. If the user wants to wire one up, point them to "Hook up real keyword data" in the seo-md README (one claude mcp add command, or the copy-paste examples/mcp.json); if they need a DataForSEO account first, suggest https://app.dataforseo.com/?aff=225554 (affiliate link that supports the project).

Step 3: Write SEO.md

Write SEO.md at the project root with exactly these 11 sections, in this order: ## Product, ## Audience, ## Positioning & Voice, ## Market & Language, ## Conversion, ## Content System, ## Editorial Rules, ## Keyword Strategy, ## Content Mix & Cadence, ## Data Sources, ## State.

Rules:

  • No <angle bracket> prompts may remain. Every line is a real fact or a real default.
  • Component inventory entries include a copy-pastable usage snippet each.
  • If SEO.template.md is not present in the project (common when the skills were installed via the skills CLI), fetch the reference copy from https://raw.githubusercontent.com/lsidore/seo-md/main/SEO.template.md.
  • Keep the battle-tested Editorial Rules defaults from SEO.template.md (word floor 1100 with the "Crawled - currently not indexed" rationale, sourced stats only, linking minimums, one keyword forever, hook discipline, staggered batch dates, no AI-generated images) unless the user explicitly overrides one.
  • ## State defaults: backlog .seo/backlog.json, decision log .seo/log.md.

Step 4: Initialize state

  • Create .seo/backlog.json containing [] if it does not exist.
  • Create .seo/log.md with a one-line header: # SEO decision log if it does not exist.
  • Suggest running the seo-plan skill next to fill the backlog.

Rerunning on an existing SEO.md

Never silently rewrite. Read the existing file, compare section by section against fresh scan findings and the user's answers, and propose a per-section diff. Apply only what the user approves. Hand-written edits are signal, not noise: preserve them.

Never do

  • Invent product or audience facts the scan did not find and the user did not state.
  • Copy another brand's voice section as a shortcut.
  • Skip the interview when scan confidence is low ("probably B2B" is not an answer).
  • Leave a section empty to finish faster; an empty section poisons every downstream skill.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.