--- name: seo description: | Use when a web project needs SEO + GEO audit or optimization — classical search (Google, Bing) AND AI search (ChatGPT, Perplexity, AI Overviews). Parallel orchestrator: dispatches seo-analyzer + geo-analyzer concurrently, merges into .claude/audits/SEO.md. Triggers: "seo", "referencement", "meta tags", "JSON-LD", "sitemap", "robots.txt", "local SEO", "llms.txt", "ChatGPT visibility". GEO only → /geo. W3C/a11y → /web-validate. Bugs → /bugfix. argument-hint: optional keywords/scope, e.g. "local SEO plombier 91 94 77" or "SaaS B2B content strategy" allowed-tools: - Read - Edit - Write - Bash - Grep - Glob - Agent - WebFetch - WebSearch --- # /seo — parallel SEO + GEO dispatcher This skill orchestrates TWO specialist agents running in parallel, then merges their output into a single `.claude/audits/SEO.md` report. It is the main entry point for any SEO/GEO work on a web project. ## Resources - `resources/depth-matrix.md` — depth-decision rules (LOCAL vs FULL), score-weight table per axis, dedup rules with sibling skills (/web-validate, /harden), and the envelope schema for `.claude/audits/SEO.md`. Read `resources/depth-matrix.md` at the start of STEP 0 — it pre-answers several questions and keeps token cost down by removing repeated explanations. ## STEP -1 — Account management verbs (intercept BEFORE any audit) If `$ARGUMENTS` starts with `connect`, `accounts`, or `forget`, run the matching action below and STOP — no audit, no analyzer dispatch, no report. Tilde paths mandatory (this skill runs from the audited project's directory, not the claude-config repo). Anything else falls through to STEP 0 unchanged. **Label safety rule (both verbs):** a label MUST match `^[A-Za-z0-9][A-Za-z0-9._-]*$` — anything else (spaces, quotes, `;`, `$`, backticks…), refuse it and ask for another name; the engine also rejects it (exit 2). ALWAYS single-quote the label when composing the Bash call (`--label 'client-a'`) — never paste it unquoted into a command line. - **`connect [label]`** — connect a Google account (one-time OAuth consent): 1. No label given → ask for one (a client/site name, not an email). 2. Run in background: `bash ~/.claude/lib/seo-data/connect.sh --label