---
name: Competitor Gap
slug: competitor-gap
category: SEO
description: Competitor Gap compares estimated competitor rankings with your Search Console queries to find keywords they rank for that you do not, plus terms where they outrank you. Use it for content gap and priority opportunities.
github: "https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills/tree/main/skills/competitor-gap"
language: Shell
stars: 262
forks: 2
install: "npx degit https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills/tree/main/skills/competitor-gap ~/.claude/skills/competitor-gap"
installs_to: ~/.claude/skills/competitor-gap
source_path: skills/competitor-gap/SKILL.md
collection_size: 8
category_size: 176
collection_url: "https://dirskills.com/collections/Ryze-AI-Adgent/open-seo-mcp-skills"
added: 2026-09-02T05:20:14.025Z
last_synced: 2026-09-02T05:20:14.025Z
canonical_url: "https://dirskills.com/skills/competitor-gap"
---

# Competitor Gap

Competitor Gap compares estimated competitor rankings with your Search Console queries to find keywords they rank for that you do not, plus terms where they outrank you. Use it for content gap and priority opportunities.

**Install:**

```bash
npx degit https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills/tree/main/skills/competitor-gap ~/.claude/skills/competitor-gap
```

## README

# Competitor Gap

Their rankings are estimates (DataForSEO), yours are real (GSC). Diff them.

## Workflow

1. **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.
2. **Competitor overview.** Labs `domain_rank_overview` — their estimated organic traffic and keyword count, for context.
3. **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.
4. **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)
5. **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).
