Content gap analysis skill

Identify content gaps between your site and competitors.

by OpenClaudia·MIT license·★ 705 Stars on the repo·GitHub ↗

Use now

Files of Content gap analysis

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 

Discussion