SuperAPI AI Directory

seo-competitor-gap-analysis

Marketing & growth

View repository

Updated 10-16 01:28

About this skill

Example output: examples/seo-competitor-gap-analysis-wix-com-20260514/REPORT.md

Competitor Gap Analysis

Identify the specific keywords your competitors rank for in the top 20 that your domain does not, ranked by commercial value and realistic capture difficulty.

Prerequisites

  • SE Ranking MCP server connected.
  • User provides: (a) target domain, (b) 3 to 5 competitor domains (or ask the skill to auto-discover them), (c) market country (default: us), and optionally filters (min volume, max KD, intent).

Process

  1. Validate or discover competitors DATA_getDomainCompetitors
    • If the user did not provide competitors, pull the top 5 organic competitors for the target in the target market.
    • Surface the list to the user and ask them to confirm or override before proceeding.
    • Note: the upstream API does not support limit/offset, so this call returns the full set (~60KB for popular domains) and the MCP harness writes it to a file. Read that file path, parse the {data: [...]} JSON, sort by common_keywords desc, and take the top 5.
  1. Pull competitor keyword sets DATA_getDomainKeywords

    • For each competitor, pull keywords where they rank in the top 20 of the target country.
    • Save per-competitor lists.
  2. Pull target keyword set DATA_getDomainKeywords

    • For the target domain, pull all ranking keywords in the target country (any position).
    • This is the exclusion set.
  3. Compute the gap DATA_getDomainKeywordsComparison (cross-check)

    • Keywords ranked by at least one competitor in the top 20 but not ranked by the target domain at all.
    • Use the comparison endpoint as a cross-check.
  4. Filter and segment

    • Apply user-specified filters on volume, KD, and intent.
    • Segment by intent: informational, commercial, transactional, navigational.
    • Segment by competition: how many of the N competitors rank for each gap keyword.
  5. Score and prioritise

    • Score each gap keyword: traffic potential (volume × CTR model) + intent weighting + inverse KD.
    • Surface the top 50 opportunities with reasoning per keyword.
  6. Map to content actions

    • For each top opportunity, recommend: new article, expand existing page, refresh existing page, programmatic template.
    • Flag quick wins: competitors rank with thin content (detected by URL pattern and content-length heuristics).

Output format

Create a folder seo-competitor-gap-analysis-{target-slug}-{YYYYMMDD}/ with:

seo-competitor-gap-analysis-{target-slug}-{YYYYMMDD}/
├── REPORT.md                                (synthesised report — primary deliverable)
├── gaps.csv                                 (full gap list — load-bearing CSV the writers/planners paste into briefs)
└── evidence/
    ├── 01-competitors.md                    (competitor list / discovery — raw step output)
    ├── 02-competitor-keywords-{domain}.md   (one per competitor — raw step output)
    ├── 03-target-keywords.md                (target's existing ranking set — raw step output)
    └── 04-gap-raw.md                        (human-readable full gap list before filtering — raw step output)

Top-level: REPORT.md + gaps.csv. The numbered step files preserve the raw API outputs in evidence/ for reproducibility.

REPORT.md follows this shape:

# Competitor Gap: {target}
Market: {country}
Competitors analysed: {list}

## Summary
- Competitor keywords in top 20: {n}
- Target keywords overall: {n}
- Gap keywords (opportunities): {n}
- Gap traffic potential: ~{n}/mo

## Top 50 opportunities

### Informational intent
| # | Keyword | Volume | KD | Competitors ranking | Action | Score |
|---|---|---|---|---|---|---|
| 1 | {kw} | {n} | {n} | {3 of 5} | New article | {score} |
| 2 | ... | ... | ... | ... | ... | ... |

### Commercial intent
| # | Keyword | Volume | KD | Competitors ranking | Action | Score |
|---|---|---|---|---|---|---|
...

### Transactional intent
...

## Quick wins (top 10)
Keywords where competitors rank in positions 5 to 20 with thin content, low DT, or old dates.

| # | Keyword | Weakest competitor position | Suggested angle |
|---|---|---|---|
| 1 | {kw} | example.com at #14 (2022 article, 800 words) | Fresh, comprehensive guide |

## Recommended next steps
1. Run `content-brief` on the top 3 opportunities to generate writer-ready briefs.
2. Run `keyword-cluster-planner` on the full gap list to build a sequencing plan.
3. Add the gap keywords to an SE Ranking project for rank tracking once content ships.

## Files
- gaps.csv: full gap list for spreadsheet analysis
- evidence/04-gap-raw.md: human-readable full gap list before filtering

gaps.csv columns: keyword,volume,kd,cpc,intent,competitors_ranking,top_competitor_position,target_position,action,score

Tips

  • Data API rate limit: 10 requests per second. For large sites, DATA_getDomainKeywords may paginate heavily; set a ceiling (e.g., top 1,000 keywords per domain) unless the user explicitly asks for the full set.
  • Call DATA_getCreditBalance before running. A full pass on 10 seeds typically consumes 30–80 credits; 20 seeds can exceed 150.
  • The competitors_ranking count is the best signal of realism. Keywords ranked by 4 of 5 competitors are validated opportunities; keywords ranked by only 1 may be noise.
  • Do not recommend capturing branded competitor keywords unless the user explicitly asks. Pivoting to compete on "competitor brand review" is a viable strategy but only if the user opts in.
  • When many gap keywords cluster around a theme, recommend a hub page plus cluster rather than 50 individual articles.
  • Chain this skill with content-brief and keyword-cluster-planner naturally. Mention them in the Recommended next steps section of the output.