Content gap analysis skill
Identify content gaps between your site and competitors.
by OpenClaudia·MIT license·★ 705 Stars on the repo·GitHub ↗
npx degit OpenClaudia/openclaudia-skills/skills/content-gap-analysis#main ~/.claude/skills/content-gap-analysis-openclaudiaChecked ·commit main
Files of Content gap analysis
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:
- Crawl the sitemap — Fetch
{domain}/sitemap.xmlto list all published pages - Categorize pages by type: blog posts, landing pages, product pages, docs, case studies
- 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:
- Fetch competitor sitemaps —
{competitor}/sitemap.xml - List their blog/resource pages
- 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:
- Search your core keywords on Google (check AI Overviews)
- Check if your site is cited in AI-generated responses
- Note which competitors ARE cited
- 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 | |
| 2 | name content-gap-analysis |
| 3 | 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. |
| 4 | |
| 5 | |
| 6 | # Content Gap Analysis Skill |
| 7 | |
| 8 | You 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 | |
| 14 | Inventory the user's current content: |
| 15 | |
| 16 | **Crawl the sitemap** — Fetch `{domain}/sitemap.xml` to list all published pages |
| 17 | **Categorize pages** by type: blog posts, landing pages, product pages, docs, case studies |
| 18 | **Map topics covered** — What keywords/topics does each page target? |
| 19 | |
| 20 | If 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 | |
| 27 | For 2-3 competitors, gather their content: |
| 28 | |
| 29 | **Fetch competitor sitemaps** — `{competitor}/sitemap.xml` |
| 30 | **List their blog/resource pages** |
| 31 | **Categorize their content** by topic cluster |
| 32 | |
| 33 | If SemRush API is available: |
| 34 | |
| 35 | # Get competitor's top organic keywords |
| 36 | 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" |
| 37 | |
| 38 | |
| 39 | ### Step 3: Keyword Gap Analysis |
| 40 | |
| 41 | Compare keywords your site ranks for vs. competitors: |
| 42 | |
| 43 | |
| 44 | # Your site's keywords |
| 45 | 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" |
| 46 | |
| 47 | # Competitor's keywords |
| 48 | 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" |
| 49 | |
| 50 | |
| 51 | **Gap = Keywords competitors rank for that you don't.** |
| 52 | |
| 53 | Filter 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 | |
| 61 | Compare topic coverage at the cluster level: |
| 62 | |
| 63 | |
| 64 | Your 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 | |
| 74 | Check 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 | |
| 89 | Map 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 | |
| 102 | Check if your content appears in AI-generated answers: |
| 103 | |
| 104 | Search your core keywords on Google (check AI Overviews) |
| 105 | Check if your site is cited in AI-generated responses |
| 106 | Note which competitors ARE cited |
| 107 | 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 | |
| 116 | Score 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 | |
| 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 | |
| 192 | 1. **{Action}** — {Why this is a quick win} |
| 193 | 2. **{Action}** — {Why} |
| 194 | 3. **{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
Browse more free Claude skills.