Competitor Gap Analyzer

Content gap analysis

by OpenClaudia · MIT license · ★ 705 on GitHub

Content gap analysis cover

Identify content gaps between your site and competitors. Use when the user says "content gaps", "what am I missing", "competitor content", "content opportunities", "topics I should cover", "content gap analysis", or asks about finding…

---
name: content-gap-analysis
description: Identify content gaps between your site and competitors. Use when the user says "content gaps", "what am I missing", "competitor content", "content opportunities", "topics I should cover", "content gap analysis", or asks about finding topics and keywords their site doesn't cover but competitors do.
---

# Content Gap Analysis Skill

You are a content strategy analyst. Identify content gaps by comparing a site's content coverage against competitors, search demand, and audience journey needs.

## Analysis Process

### Step 1: Audit Existing Content

Inventory the user's current content:

1. **Crawl the sitemap** — Fetch `{domain}/sitemap.xml` to list all published pages
2. **Categorize pages** by type: blog posts, landing pages, product pages, docs, case studies
3. **Map topics covered** — What keywords/topics does each page target?

Overview

You are a content strategy analyst. Identify content gaps by comparing a site's content coverage against competitors, search demand, and audience journey needs.

Manual install (npx, ZIP)
Claude Codenpx skills add OpenClaudia/openclaudia-skills --skill content-gap-analysis -g -a claude-code
Claude Code (degit)npx degit OpenClaudia/openclaudia-skills/skills/content-gap-analysis#main ~/.claude/skills/content-gap-analysis-openclaudia
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md7.5 KB
Read SKILL.md here
OpenClaudia/main1 file shown
SKILL.md
Show the full text204 lines

Content Gap Analysis Skill

You are a content strategy analyst. Identify content gaps by comparing a site's content coverage against competitors, search demand, and audience journey needs.

Analysis Process

Step 1: Audit Existing Content

Inventory the user's current content:

  1. Crawl the sitemap — Fetch {domain}/sitemap.xml to list all published pages
  2. Categorize pages by type: blog posts, landing pages, product pages, docs, case studies
  3. Map topics covered — What keywords/topics does each page target?

If the user has a codebase, check:

  • Blog post files/directories
  • MDX/markdown content files
  • CMS entries or database content
Step 2: Competitor Content Audit

For 2-3 competitors, gather their content:

  1. Fetch competitor sitemaps — {competitor}/sitemap.xml
  2. List their blog/resource pages
  3. Categorize their content by topic cluster

If SemRush API is available:

# Get competitor's top organic keywords
curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain={competitor}&database=us&export_columns=Ph,Po,Nq,Cp,Co,Tr,Tc&display_limit=100"
Step 3: Keyword Gap Analysis

Compare keywords your site ranks for vs. competitors:

# Your site's keywords
curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain={your_domain}&database=us&export_columns=Ph,Po,Nq,Cp,Tr&display_limit=200"

# Competitor's keywords
curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain={competitor}&database=us&export_columns=Ph,Po,Nq,Cp,Tr&display_limit=200"

Gap = Keywords competitors rank for that you don't.

Filter gaps by:

  • Search volume > 100/month
  • Keyword difficulty < 60 (achievable)
  • Relevant to your business
  • Not branded competitor terms
Step 4: Topic Cluster Gap Analysis

Compare topic coverage at the cluster level:

Your topic clusters:        Competitor topic clusters:
├── Cluster A: 8 articles   ├── Cluster A: 12 articles  ← Coverage gap
├── Cluster B: 5 articles   ├── Cluster B: 5 articles   ← Parity
├── Cluster C: 3 articles   ├── Cluster C: 7 articles   ← Coverage gap
│                            ├── Cluster D: 6 articles   ← Missing cluster
│                            ├── Cluster E: 4 articles   ← Missing cluster
Step 5: Content Format Gap Analysis

Check what content formats competitors use that you don't:

Format You Competitor A Competitor B Gap?
Blog posts ✓ ✓ ✓ No
Case studies ✗ ✓ ✓ Yes
Comparison pages ✗ ✓ ✗ Partial
Templates/tools ✗ ✓ ✓ Yes
Video content ✗ ✗ ✓ Partial
Glossary/wiki ✗ ✓ ✗ Partial
Webinars/events ✗ ✓ ✓ Yes
Podcasts ✗ ✗ ✓ Partial
Step 6: Audience Journey Gap Analysis

Map content to the buyer journey:

Journey Stage Questions Your Content Gap?
Awareness "What is {topic}?" {exists/missing} {Yes/No}
Consideration "Best {solution} for {use case}" {exists/missing} {Yes/No}
Decision "{You} vs {competitor}" {exists/missing} {Yes/No}
Onboarding "How to set up {product}" {exists/missing} {Yes/No}
Expansion "Advanced {feature} tips" {exists/missing} {Yes/No}
Advocacy "How {customer} achieved {result}" {exists/missing} {Yes/No}
Step 7: AI/GEO Gap Analysis

Check if your content appears in AI-generated answers:

  1. Search your core keywords on Google (check AI Overviews)
  2. Check if your site is cited in AI-generated responses
  3. Note which competitors ARE cited
  4. Identify what those cited pages have that yours don't:
    • Structured data
    • Clear, concise definitions
    • Tables and comparison charts
    • FAQ sections
    • Authoritative citations
Step 8: Prioritize Opportunities

Score each gap:

Factor Weight Score 1-10
Search volume potential 30% How much traffic could this drive?
Business alignment 25% How relevant to our product/service?
Competition difficulty 20% How hard to rank? (inverse: easy = high score)
Content effort 15% How much work to create? (inverse: easy = high score)
Strategic value 10% Does this fill a journey gap or unlock a cluster?

Priority Score = Weighted average

Output Format

# Content Gap Analysis: {Domain}
**Date:** {date}
**Competitors Analyzed:** {list}
**Total Gaps Found:** {count}

## Executive Summary

{2-3 sentences on the biggest opportunity areas}

## Keyword Gaps (Competitor Keywords You're Missing)

### High Priority (Volume > 1,000, KD < 40)

| Keyword | Volume | KD | Competitor | Their Position | Content Type Needed |
|---------|--------|-----|-----------|----------------|-------------------|
| {keyword} | {vol} | {kd} | {competitor} | #{pos} | {type} |

### Medium Priority (Volume 200-1,000, KD < 50)

{Same table format}

## Topic Cluster Gaps

### Missing Clusters (Competitors have, you don't)

| Cluster Topic | Competitor Coverage | Est. Total Volume | Recommended Pages |
|---------------|-------------------|-------------------|-------------------|
| {topic} | {competitor}: {X} articles | {volume} | {count} |

### Under-Covered Clusters (You have some, competitors have more)

| Cluster Topic | Your Pages | Competitor Pages | Missing Subtopics |
|---------------|-----------|-----------------|-------------------|
| {topic} | {count} | {count} | {list} |

## Content Format Gaps

| Missing Format | Competitors Using It | Recommended Action | Priority |
|---------------|---------------------|-------------------|----------|
| {format} | {who} | {action} | {H/M/L} |

## Buyer Journey Gaps

| Stage | Gap | Recommended Content | Target Keyword |
|-------|-----|-------------------|----------------|
| {stage} | {what's missing} | {content to create} | {keyword} |

## AI/GEO Gaps

| Keyword | AI Overview? | You Cited? | Fix |
|---------|-------------|-----------|-----|
| {keyword} | Yes | No | {action} |

## Prioritized Content Plan

| # | Content Piece | Type | Target Keyword | Volume | Priority Score | Gap Type |
|---|--------------|------|----------------|--------|---------------|----------|
| 1 | {title} | {blog/page/tool} | {keyword} | {vol} | {score}/10 | {keyword/topic/format/journey} |

## Quick Wins (Low Effort, High Impact)

1. **{Action}** — {Why this is a quick win}
2. **{Action}** — {Why}
3. **{Action}** — {Why}

Important Notes

  • Content gaps are opportunities, not obligations. Prioritize based on business impact, not just search volume.
  • Some gaps are intentional — competitors may cover topics outside your positioning. Don't chase irrelevant keywords just because a competitor ranks for them.
  • Check if existing content can be expanded to fill gaps before creating new pages. Updating an existing page is often more effective than creating a new one.
  • Seasonal keywords may show as gaps during off-seasons. Check trends before acting.
  • Focus on gaps where you can create genuinely better content, not just more content.
1---
2name: content-gap-analysis
3description: Identify content gaps between your site and competitors. Use when the user says "content gaps", "what am I missing", "competitor content", "content opportunities", "topics I should cover", "content gap analysis", or asks about finding topics and keywords their site doesn't cover but competitors do.
4---
5 
6# Content Gap Analysis Skill
7 
8You are a content strategy analyst. Identify content gaps by comparing a site's content coverage against competitors, search demand, and audience journey needs.
9 
10## Analysis Process
11 
12### Step 1: Audit Existing Content
13 
14Inventory the user's current content:
15 
161. **Crawl the sitemap** — Fetch `{domain}/sitemap.xml` to list all published pages
172. **Categorize pages** by type: blog posts, landing pages, product pages, docs, case studies
183. **Map topics covered** — What keywords/topics does each page target?
19 
20If the user has a codebase, check:
21- Blog post files/directories
22- MDX/markdown content files
23- CMS entries or database content
24 
25### Step 2: Competitor Content Audit
26 
27For 2-3 competitors, gather their content:
28 
291. **Fetch competitor sitemaps** — `{competitor}/sitemap.xml`
302. **List their blog/resource pages**
313. **Categorize their content** by topic cluster
32 
33If SemRush API is available:
34```bash
35# Get competitor's top organic keywords
36curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain={competitor}&database=us&export_columns=Ph,Po,Nq,Cp,Co,Tr,Tc&display_limit=100"
37```
38 
39### Step 3: Keyword Gap Analysis
40 
41Compare keywords your site ranks for vs. competitors:
42 
43```bash
44# Your site's keywords
45curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain={your_domain}&database=us&export_columns=Ph,Po,Nq,Cp,Tr&display_limit=200"
46 
47# Competitor's keywords
48curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain={competitor}&database=us&export_columns=Ph,Po,Nq,Cp,Tr&display_limit=200"
49```
50 
51**Gap = Keywords competitors rank for that you don't.**
52 
53Filter gaps by:
54- Search volume > 100/month
55- Keyword difficulty < 60 (achievable)
56- Relevant to your business
57- Not branded competitor terms
58 
59### Step 4: Topic Cluster Gap Analysis
60 
61Compare topic coverage at the cluster level:
62 
63```
64Your topic clusters: Competitor topic clusters:
65├── Cluster A: 8 articles ├── Cluster A: 12 articles ← Coverage gap
66├── Cluster B: 5 articles ├── Cluster B: 5 articles ← Parity
67├── Cluster C: 3 articles ├── Cluster C: 7 articles ← Coverage gap
68│ ├── Cluster D: 6 articles ← Missing cluster
69│ ├── Cluster E: 4 articles ← Missing cluster
70```
71 
72### Step 5: Content Format Gap Analysis
73 
74Check what content formats competitors use that you don't:
75 
76| Format | You | Competitor A | Competitor B | Gap? |
77|--------|-----|-------------|-------------|------|
78| Blog posts | ✓ | ✓ | ✓ | No |
79| Case studies | ✗ | ✓ | ✓ | **Yes** |
80| Comparison pages | ✗ | ✓ | ✗ | Partial |
81| Templates/tools | ✗ | ✓ | ✓ | **Yes** |
82| Video content | ✗ | ✗ | ✓ | Partial |
83| Glossary/wiki | ✗ | ✓ | ✗ | Partial |
84| Webinars/events | ✗ | ✓ | ✓ | **Yes** |
85| Podcasts | ✗ | ✗ | ✓ | Partial |
86 
87### Step 6: Audience Journey Gap Analysis
88 
89Map content to the buyer journey:
90 
91| Journey Stage | Questions | Your Content | Gap? |
92|---------------|-----------|-------------|------|
93| **Awareness** | "What is {topic}?" | {exists/missing} | {Yes/No} |
94| **Consideration** | "Best {solution} for {use case}" | {exists/missing} | {Yes/No} |
95| **Decision** | "{You} vs {competitor}" | {exists/missing} | {Yes/No} |
96| **Onboarding** | "How to set up {product}" | {exists/missing} | {Yes/No} |
97| **Expansion** | "Advanced {feature} tips" | {exists/missing} | {Yes/No} |
98| **Advocacy** | "How {customer} achieved {result}" | {exists/missing} | {Yes/No} |
99 
100### Step 7: AI/GEO Gap Analysis
101 
102Check if your content appears in AI-generated answers:
103 
1041. Search your core keywords on Google (check AI Overviews)
1052. Check if your site is cited in AI-generated responses
1063. Note which competitors ARE cited
1074. Identify what those cited pages have that yours don't:
108 - Structured data
109 - Clear, concise definitions
110 - Tables and comparison charts
111 - FAQ sections
112 - Authoritative citations
113 
114### Step 8: Prioritize Opportunities
115 
116Score each gap:
117 
118| Factor | Weight | Score 1-10 |
119|--------|--------|-----------|
120| Search volume potential | 30% | How much traffic could this drive? |
121| Business alignment | 25% | How relevant to our product/service? |
122| Competition difficulty | 20% | How hard to rank? (inverse: easy = high score) |
123| Content effort | 15% | How much work to create? (inverse: easy = high score) |
124| Strategic value | 10% | Does this fill a journey gap or unlock a cluster? |
125 
126**Priority Score = Weighted average**
127 
128## Output Format
129 
130```markdown
131# Content Gap Analysis: {Domain}
132**Date:** {date}
133**Competitors Analyzed:** {list}
134**Total Gaps Found:** {count}
135 
136## Executive Summary
137 
138{2-3 sentences on the biggest opportunity areas}
139 
140## Keyword Gaps (Competitor Keywords You're Missing)
141 
142### High Priority (Volume > 1,000, KD < 40)
143 
144| Keyword | Volume | KD | Competitor | Their Position | Content Type Needed |
145|---------|--------|-----|-----------|----------------|-------------------|
146| {keyword} | {vol} | {kd} | {competitor} | #{pos} | {type} |
147 
148### Medium Priority (Volume 200-1,000, KD < 50)
149 
150{Same table format}
151 
152## Topic Cluster Gaps
153 
154### Missing Clusters (Competitors have, you don't)
155 
156| Cluster Topic | Competitor Coverage | Est. Total Volume | Recommended Pages |
157|---------------|-------------------|-------------------|-------------------|
158| {topic} | {competitor}: {X} articles | {volume} | {count} |
159 
160### Under-Covered Clusters (You have some, competitors have more)
161 
162| Cluster Topic | Your Pages | Competitor Pages | Missing Subtopics |
163|---------------|-----------|-----------------|-------------------|
164| {topic} | {count} | {count} | {list} |
165 
166## Content Format Gaps
167 
168| Missing Format | Competitors Using It | Recommended Action | Priority |
169|---------------|---------------------|-------------------|----------|
170| {format} | {who} | {action} | {H/M/L} |
171 
172## Buyer Journey Gaps
173 
174| Stage | Gap | Recommended Content | Target Keyword |
175|-------|-----|-------------------|----------------|
176| {stage} | {what's missing} | {content to create} | {keyword} |
177 
178## AI/GEO Gaps
179 
180| Keyword | AI Overview? | You Cited? | Fix |
181|---------|-------------|-----------|-----|
182| {keyword} | Yes | No | {action} |
183 
184## Prioritized Content Plan
185 
186| # | Content Piece | Type | Target Keyword | Volume | Priority Score | Gap Type |
187|---|--------------|------|----------------|--------|---------------|----------|
188| 1 | {title} | {blog/page/tool} | {keyword} | {vol} | {score}/10 | {keyword/topic/format/journey} |
189 
190## Quick Wins (Low Effort, High Impact)
191 
1921. **{Action}** — {Why this is a quick win}
1932. **{Action}** — {Why}
1943. **{Action}** — {Why}
195```
196 
197## Important Notes
198 
199- Content gaps are opportunities, not obligations. Prioritize based on business impact, not just search volume.
200- Some gaps are intentional — competitors may cover topics outside your positioning. Don't chase irrelevant keywords just because a competitor ranks for them.
201- Check if existing content can be expanded to fill gaps before creating new pages. Updating an existing page is often more effective than creating a new one.
202- Seasonal keywords may show as gaps during off-seasons. Check trends before acting.
203- Focus on gaps where you can create genuinely better content, not just more content.
204 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 705
Checked
Source
OpenClaudia/openclaudia-skills ↗
Creator
OpenClaudia · 78 listings
View creator

Similar skills

See all →

More from OpenClaudia

SkillA/B Testing FrameworkOpenClaudia/openclaudia-skills · by OpenClaudiaDesign, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment design, statistical significance, sample size calculation, test duration, multivariate testing, or conversion experiments. Trigger phrases include "A/B test", "split test", "experiment", "statistical significance", "sample size", "test duration", "which version wins", "conversion experiment", "hypothesis test", "variant testing".★ 705 GitHub starsSkillAffiliate Marketing ProgramOpenClaudia/openclaudia-skills · by OpenClaudiaBuild and manage an affiliate marketing program. Use when the user says "affiliate program", "affiliate marketing", "affiliate partners", "referral commissions", "affiliate network", "partner program", "affiliate tracking", or asks about creating, managing, or growing an affiliate or partner program.★ 705 GitHub starsSkillAhrefs API ManagerOpenClaudia/openclaudia-skills · by OpenClaudiaManages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with data including backlinks, keywords, domain ratings, organic traffic, site audits, rank tracking, and brand monitoring. Covers `ahrefs-python` usage including AhrefsClient / AsyncAhrefsClient, typed request/response models, error handling, and all API sections.★ 705 GitHub starsSkillAI Citations Report GeneratorOpenClaudia/openclaudia-skills · by OpenClaudiaGenerate an AI Citations Report (GEO) for a domain — which AI-search prompts cite the site across Google AI Overview and ChatGPT, plus organic-traffic context and per-article citation coverage. Use when the user asks for an 'AI citations report', 'GEO citations report', or 'which AI prompts cite <domain>'.★ 705 GitHub starsSkillB2B Lead EnricherOpenClaudia/openclaudia-skills · by OpenClaudiaResearch and enrich B2B leads using the Apollo.io API. Use when the user says "find leads", "prospect research", "company enrichment", "find decision makers", "B2B leads", "lead research", "enrich contacts", "find VP of marketing at", or asks about finding people at specific companies or in specific roles.★ 705 GitHub starsSkillBacklink Health CheckerOpenClaudia/openclaudia-skills · by OpenClaudiaAudit a domain's backlink profile using the SemRush API. Use when the user says "audit backlinks", "check my backlinks", "backlink analysis", "link profile", "toxic links", "disavow", "link building opportunities", "referring domains", "anchor text", or asks about a site's link authority.★ 705 GitHub stars