$npx -y skills add yoyothesheep/claude-skills --skill seo-keyword-researchAnalyze competitor websites to identify their SEO strategies, content gaps, and generate prioritized target keywords with ranking potential. Use when users want to understand competitor SEO tactics, find keyword opportunities, identify content gaps, or build a keyword strategy ba
| 1 | # SEO Competitor Analysis & Keyword Research Skill |
| 2 | |
| 3 | This skill analyzes competitor websites to reverse-engineer their SEO strategies, identifies content gaps and opportunities, and generates a prioritized list of target keywords based on ranking potential, search volume, and competitive dynamics. |
| 4 | |
| 5 | ## 🚀 Ahrefs Integration |
| 6 | |
| 7 | This skill is designed to work with the **Ahrefs MCP server**. When Ahrefs is available, the skill uses real data for: |
| 8 | - Exact search volumes |
| 9 | - Accurate keyword difficulty scores |
| 10 | - Actual organic traffic estimates |
| 11 | - Competitor traffic analysis |
| 12 | - SERP feature detection |
| 13 | - Traffic potential calculations |
| 14 | |
| 15 | **Without Ahrefs:** The skill falls back to manual SERP analysis and proxy estimates (still effective, but less precise). |
| 16 | |
| 17 | ## When to Use This Skill |
| 18 | |
| 19 | Trigger this skill when the user: |
| 20 | - Asks to "analyze my competitors' SEO" |
| 21 | - Wants to know "what keywords are my competitors ranking for" |
| 22 | - Requests "keyword opportunities" or "keyword gap analysis" |
| 23 | - Asks "what content should I create to compete" |
| 24 | - Mentions "competitive analysis for SEO" |
| 25 | - Wants to "find keywords I can rank for" |
| 26 | - Asks "what's my competitor's content strategy" |
| 27 | |
| 28 | ## Core Workflow |
| 29 | |
| 30 | Step 0. **[Coordinator]** Understand the user's site — scan codebase or crawl URL to extract topics, content themes, and vocabulary |
| 31 | Step 1. **[Coordinator]** Gather Input — website, competitor URLs, niche, preferences |
| 32 | Step 2. **[Coordinator]** Orchestrate agents — launch Haiku agents in two waves |
| 33 | Steps 3-4. **[Haiku Competitor Agents, parallel per competitor]** Get Ahrefs metrics + top organic keywords (Step 3), crawl key pages (Step 4) |
| 34 | Step 5. **[Haiku Keyword Research Agent]** Research keywords via Ahrefs (or web search fallback) — launched after Wave 1 with keyword seeds from competitor data |
| 35 | Steps 6-11. **[Sonnet Agent]** Analyze competitor content, identify patterns, perform gap analysis, evaluate ranking potential, prioritize keywords, surface IA recommendations, generate report |
| 36 | |
| 37 | --- |
| 38 | |
| 39 | ## Agent Architecture |
| 40 | |
| 41 | ### Coordinator (main Claude) |
| 42 | Handles Steps 1–2: gathers user input and orchestrates agents in two waves. Passes competitor URLs to Competitor agents, extracts keyword seeds from competitor results, then passes seeds to the Keyword Research agent. Passes all payloads to the Sonnet agent. |
| 43 | |
| 44 | ### Haiku Competitor Agents |
| 45 | - One agent per competitor URL — launched in parallel, Wave 1 |
| 46 | - Job: Pull Ahrefs site metrics + top organic keywords (Step 3), then crawl 5–8 key pages (Step 4) — mechanical data extraction only |
| 47 | - Output: structured JSON payload (see Competitor Agent Output Contract) |
| 48 | |
| 49 | ### Haiku Keyword Research Agent |
| 50 | - Single agent — launched in Wave 2 after Competitor agent results are available |
| 51 | - Job: Run Ahrefs keyword explorer calls (or web search fallback) using keyword seeds from competitor data |
| 52 | - Output: structured JSON payload (see Keyword Research Agent Output Contract) |
| 53 | |
| 54 | ### Sonnet Synthesis Agent |
| 55 | - Single agent, runs after all Haiku agents complete |
| 56 | - Receives all Haiku JSON payloads |
| 57 | - Job: content analysis, pattern identification, gap analysis, ranking evaluation, prioritization, IA recommendations, report writing |
| 58 | - Output: final strategy report |
| 59 | |
| 60 | --- |
| 61 | |
| 62 | ## COORDINATOR |
| 63 | |
| 64 | ## Step 0: Understand the User's Site |
| 65 | |
| 66 | Before asking for any input, extract topics, content themes, and vocabulary from the user's site. This context seeds SERP queries for competitor discovery and keyword research when competitors aren't provided. |
| 67 | |
| 68 | **If running inside a codebase** (check for content files — `.md`, `.mdx`, `.tsx` routes, blog post directories): |
| 69 | - Glob for content files: `**/*.md`, `**/*.mdx`, `app/**/page.tsx`, `src/content/**/*` |
| 70 | - Read titles (H1s, frontmatter `title`), headings (H2/H3), and meta descriptions from a sample of 10–20 files |
| 71 | - Extract: main topic areas, recurring vocabulary, content types (guides, tools, data posts, comparisons) |
| 72 | |
| 73 | **If no codebase** (running in Claude Web or no content files found): |
| 74 | - WebFetch the user's homepage URL |
| 75 | - Extract: page title, H1, main nav links, H2 section headings, any visible blog/content index |
| 76 | - If a `/blog`, `/guides`, or `/resources` path exists, fetch it and extract post titles |
| 77 | |
| 78 | **Output of Step 0:** A `site_context` object used throughout the skill: |
| 79 | ```json |
| 80 | { |
| 81 | "site_context": { |
| 82 | "main_topics": ["AI-proof careers", "automation risk by job", "future-proof skills"], |
| 83 | "content_types": ["data-driven guides", "career comparisons", "industry reports"], |
| 84 | "vocabulary": ["AI-resistant", "automation-proof", "durable skills", "career pivots"], |
| 85 | "existing_pages": ["sample titles or slugs"], |
| 86 | "inferred_niche": "careers safe from AI automation" |
| 87 | } |
| 88 | } |
| 89 | ``` |