Competitor gap skill
Find keywords a competitor ranks for that the user's site doesn't — the content gap, prioritized by volume and winnability.
by Ryze-AI-Adgent·MIT license·★ 3,135 Stars on the repo·GitHub ↗
npx degit Ryze-AI-Adgent/open-seo-mcp-skills/skills/competitor-gap#main ~/.claude/skills/competitor-gapChecked ·commit main
Files of Competitor gap
Show the full text28 lines
Competitor Gap
Requires
The free Ryze MCP connector (https://connector.get-ryze.ai/mcp). Claude Code: claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp. claude.ai / Desktop / Cursor: add it as a custom connector with the same URL. Setup: https://www.get-ryze.ai/how-to-connect-claude-to-google-meta-ads-mcp
Their rankings are estimates (DataForSEO), yours are real (GSC). Diff them.
Workflow
- Competitor's keywords. Via the workspace's DataForSEO tools — Labs
ranked_keywordsfor the competitor domain (request shape:native__get_provider_docs, providerdataforseo). Pull top ~500 by volume. If DataForSEO isn't exposed in this workspace, check for connectedahrefs/semrushproviders and use their organic-keywords endpoint instead; if none, stop and say which connection is missing. - Competitor overview. Labs
domain_rank_overview— their estimated organic traffic and keyword count, for context. - Your keywords.
google_search_console__runRawSearchAnalytics, dimension["query"], last 90 days, high rowLimit — the full set of queries the user's site gets impressions for. - Diff into three buckets:
- Gap — competitor ranks top 20, you have zero impressions → new content needed
- Behind — you both rank but they're ≥ 5 spots ahead → improve existing page
- Ahead — you outrank them (report briefly; it's the moat)
- Prioritize the Gap and Behind buckets by volume × relevance to the user's product. Drop branded competitor terms unless the user wants comparison pages — then list them separately as "vs / alternative" page candidates.
Output
Verdict (how big the gap is, in keywords and estimated traffic), then: Gap table (keyword, their position, volume, suggested page), Behind table (keyword, their pos, your pos, your page, fix), and a top-10 action list. Note explicitly which numbers are estimates (theirs) vs real (yours).
| 1 | |
| 2 | name competitor-gap |
| 3 | description Find keywords a competitor ranks for that the user's site doesn't — the content gap, prioritized by volume and winnability. Use when asked "what does competitor.com rank for", "keyword gap vs X", "steal competitor keywords", or "why do they outrank us". |
| 4 | |
| 5 | |
| 6 | # Competitor Gap |
| 7 | |
| 8 | ## Requires |
| 9 | |
| 10 | The free Ryze MCP connector (`https://connector.get-ryze.ai/mcp`). Claude Code: `claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp`. claude.ai / Desktop / Cursor: add it as a custom connector with the same URL. Setup: https://www.get-ryze.ai/how-to-connect-claude-to-google-meta-ads-mcp |
| 11 | |
| 12 | Their rankings are estimates (DataForSEO), yours are real (GSC). Diff them. |
| 13 | |
| 14 | ## Workflow |
| 15 | |
| 16 | **Competitor's keywords.** Via the workspace's DataForSEO tools — Labs `ranked_keywords` for the competitor domain (request shape: `native__get_provider_docs`, provider `dataforseo`). Pull top ~500 by volume. If DataForSEO isn't exposed in this workspace, check for connected `ahrefs`/`semrush` providers and use their organic-keywords endpoint instead; if none, stop and say which connection is missing. |
| 17 | **Competitor overview.** Labs `domain_rank_overview` — their estimated organic traffic and keyword count, for context. |
| 18 | **Your keywords.** `google_search_console__runRawSearchAnalytics`, dimension `["query"]`, last 90 days, high rowLimit — the full set of queries the user's site gets impressions for. |
| 19 | **Diff into three buckets:** |
| 20 | **Gap** — competitor ranks top 20, you have zero impressions → new content needed |
| 21 | **Behind** — you both rank but they're ≥ 5 spots ahead → improve existing page |
| 22 | **Ahead** — you outrank them (report briefly; it's the moat) |
| 23 | **Prioritize** the Gap and Behind buckets by volume × relevance to the user's product. Drop branded competitor terms unless the user wants comparison pages — then list them separately as "vs / alternative" page candidates. |
| 24 | |
| 25 | ## Output |
| 26 | |
| 27 | Verdict (how big the gap is, in keywords and estimated traffic), then: Gap table (keyword, their position, volume, suggested page), Behind table (keyword, their pos, your pos, your page, fix), and a top-10 action list. Note explicitly which numbers are estimates (theirs) vs real (yours). |
| 28 |
Discussion
Alternatives
Browse more free Claude skills or everything in Product.