{"slug":"content-gap-analysis-method","title":"Content Gap Analysis: Find What Competitors Rank For That You Don't","tags":["content-gap","competitor","keyword-research","seo","content-strategy"],"agent_summary":"Competitor content gap analysis that identifies topics and keywords competitors rank for that your site doesn't. Covers the 3-competitor extraction method, gap prioritization matrix, and content calendar output. Turns competitive gaps into a 90-day content plan.","trigger_phrases":["content gap analysis","what competitors rank for","keyword gap","find content gaps","competitor content gaps","topics I'm missing","content i should write"],"runnable":true,"markdown":"\n# Content Gap Analysis: Find What Competitors Rank For That You Don't\n\nContent strategy without gap analysis is guesswork. This method extracts competitor rankings, maps the gaps against your content, and produces a priority-ordered production plan.\n\n---\n\n## Step 1: Identify 3 True Competitors\n\nTrue competitors = sites ranking for the same keywords in the same geography and niche. They are NOT:\n- Industry publications (Angi, HomeAdvisor for local service businesses)\n- National brands if you are local\n- Sites in adjacent niches\n\nSelect 3 competitors with the closest keyword overlap to your target site.\n\n---\n\n## Step 2: Extract Competitor Rankings\n\nFor each competitor, extract their top-ranking pages and keywords:\n\n**Method A: DataForSEO (recommended)**\n- Endpoint: `GET /v3/serp/competitor/keywords`\n- Pull top 100 ranking keywords per competitor\n- Filter: position 1-20, target country, exclude branded terms\n\n**Method B: Manual SERP mining**\n- Search primary keyword + \"site:[competitor-domain]\"\n- Review top 20 indexed pages\n- For each page: identify primary keyword, ranking position, estimated monthly visits\n\n**Output per competitor:**\n```\nCOMPETITOR: [domain]\nTop 20 ranking pages:\n1. [URL] | [primary keyword] | [position] | [est. monthly visits]\n2. ...\n```\n\n---\n\n## Step 3: Build the Gap Map\n\nCompare competitor rankings against your site's existing content:\n\n**Gap categories:**\n\n| Category | Definition | Priority |\n|----------|-----------|---------|\n| **Hard gap** | Competitor ranks positions 1-5, you have no content | Highest |\n| **Soft gap** | Competitor ranks 1-10, you rank 15-30 | High |\n| **Coverage gap** | You have content but it's thinner than competitor | Medium |\n| **Opportunity gap** | Competitor doesn't rank it well (position 11-30) | Medium |\n\n---\n\n## Step 4: Gap Prioritization Matrix\n\nScore each gap keyword on 4 factors:\n\n| Factor | Weight | Scoring |\n|--------|--------|---------|\n| Search volume | 25% | High=3 / Medium=2 / Low=1 |\n| Keyword difficulty | 25% | Easy=3 / Medium=2 / Hard=1 |\n| Commercial intent | 30% | Transactional=3 / Commercial=2 / Informational=1 |\n| Existing asset | 20% | None=3 / Thin=2 / Solid but needs update=1 |\n\n**Priority score:** Sum of weighted values. Max = 10.\n\n- Score 7.5-10: Produce immediately (hard gap + commercial value)\n- Score 5-7.4: Plan for next 90 days\n- Score below 5: Monitor quarterly\n\n---\n\n## Step 5: Content Brief Generation Per Gap\n\nFor each prioritized gap, generate a brief:\n\n```\nGAP BRIEF:\n- Target keyword: [exact phrase]\n- Gap type: [Hard / Soft / Coverage / Opportunity]\n- Priority score: [X.X]\n- Competitor page: [URL that's outranking]\n- Competitor word count: [number]\n- Target word count: [competitor + 15%]\n- Content type: [article / service page / location page / FAQ / comparison]\n- Key sections to cover: [list from competitor H2 structure + gaps they missed]\n- CTA goal: [call / form / email / purchase]\n```\n\n---\n\n## Step 6: 90-Day Content Calendar Output\n\nSort gaps by priority score and fill the calendar:\n\n| Month | Week | Keyword | Content Type | Priority Score |\n|-------|------|---------|-------------|---------------|\n| Month 1 | Week 1 | [gap 1] | [type] | [score] |\n| Month 1 | Week 2 | [gap 2] | [type] | [score] |\n| Month 1 | Week 3 | [gap 3] | [type] | [score] |\n| Month 1 | Week 4 | [gap 4] | [type] | [score] |\n| Month 2 | Week 1 | [gap 5] | [type] | [score] |\n...\n\nOne new content piece per week = 12 pieces in 90 days. Two per week = 24. Match production capacity to plan.\n\n---\n\n## What to Do With Coverage Gaps\n\nCoverage gaps (you have content but thinner than competitor):\n\n1. Pull the existing page\n2. Run content-refiner-merge-method workflow\n3. Identify the specific sections competitor has that you don't\n4. Add those sections without rewriting what's working\n5. Update publish date after meaningful additions\n\nCoverage gap updates should take 1-3 hours per page. Full rewrites only if the page is fundamentally wrong in angle or intent.\n\n#content-sop #content-gap #competitor #keyword-research\n","html":"<h1>Content Gap Analysis: Find What Competitors Rank For That You Don't</h1>\n<p>Content strategy without gap analysis is guesswork. This method extracts competitor rankings, maps the gaps against your content, and produces a priority-ordered production plan.</p>\n<hr>\n<h2>Step 1: Identify 3 True Competitors</h2>\n<p>True competitors = sites ranking for the same keywords in the same geography and niche. They are NOT:</p>\n<ul>\n<li>Industry publications (Angi, HomeAdvisor for local service businesses)</li>\n<li>National brands if you are local</li>\n<li>Sites in adjacent niches</li>\n</ul>\n<p>Select 3 competitors with the closest keyword overlap to your target site.</p>\n<hr>\n<h2>Step 2: Extract Competitor Rankings</h2>\n<p>For each competitor, extract their top-ranking pages and keywords:</p>\n<p><strong>Method A: DataForSEO (recommended)</strong></p>\n<ul>\n<li>Endpoint: <code>GET /v3/serp/competitor/keywords</code></li>\n<li>Pull top 100 ranking keywords per competitor</li>\n<li>Filter: position 1-20, target country, exclude branded terms</li>\n</ul>\n<p><strong>Method B: Manual SERP mining</strong></p>\n<ul>\n<li>Search primary keyword + \"site:[competitor-domain]\"</li>\n<li>Review top 20 indexed pages</li>\n<li>For each page: identify primary keyword, ranking position, estimated monthly visits</li>\n</ul>\n<p><strong>Output per competitor:</strong></p>\n<pre><code>COMPETITOR: [domain]\nTop 20 ranking pages:\n1. [URL] | [primary keyword] | [position] | [est. monthly visits]\n2. ...\n</code></pre>\n<hr>\n<h2>Step 3: Build the Gap Map</h2>\n<p>Compare competitor rankings against your site's existing content:</p>\n<p><strong>Gap categories:</strong></p>\n<p>| Category | Definition | Priority |\n|----------|-----------|---------|\n| <strong>Hard gap</strong> | Competitor ranks positions 1-5, you have no content | Highest |\n| <strong>Soft gap</strong> | Competitor ranks 1-10, you rank 15-30 | High |\n| <strong>Coverage gap</strong> | You have content but it's thinner than competitor | Medium |\n| <strong>Opportunity gap</strong> | Competitor doesn't rank it well (position 11-30) | Medium |</p>\n<hr>\n<h2>Step 4: Gap Prioritization Matrix</h2>\n<p>Score each gap keyword on 4 factors:</p>\n<p>| Factor | Weight | Scoring |\n|--------|--------|---------|\n| Search volume | 25% | High=3 / Medium=2 / Low=1 |\n| Keyword difficulty | 25% | Easy=3 / Medium=2 / Hard=1 |\n| Commercial intent | 30% | Transactional=3 / Commercial=2 / Informational=1 |\n| Existing asset | 20% | None=3 / Thin=2 / Solid but needs update=1 |</p>\n<p><strong>Priority score:</strong> Sum of weighted values. Max = 10.</p>\n<ul>\n<li>Score 7.5-10: Produce immediately (hard gap + commercial value)</li>\n<li>Score 5-7.4: Plan for next 90 days</li>\n<li>Score below 5: Monitor quarterly</li>\n</ul>\n<hr>\n<h2>Step 5: Content Brief Generation Per Gap</h2>\n<p>For each prioritized gap, generate a brief:</p>\n<pre><code>GAP BRIEF:\n- Target keyword: [exact phrase]\n- Gap type: [Hard / Soft / Coverage / Opportunity]\n- Priority score: [X.X]\n- Competitor page: [URL that's outranking]\n- Competitor word count: [number]\n- Target word count: [competitor + 15%]\n- Content type: [article / service page / location page / FAQ / comparison]\n- Key sections to cover: [list from competitor H2 structure + gaps they missed]\n- CTA goal: [call / form / email / purchase]\n</code></pre>\n<hr>\n<h2>Step 6: 90-Day Content Calendar Output</h2>\n<p>Sort gaps by priority score and fill the calendar:</p>\n<p>| Month | Week | Keyword | Content Type | Priority Score |\n|-------|------|---------|-------------|---------------|\n| Month 1 | Week 1 | [gap 1] | [type] | [score] |\n| Month 1 | Week 2 | [gap 2] | [type] | [score] |\n| Month 1 | Week 3 | [gap 3] | [type] | [score] |\n| Month 1 | Week 4 | [gap 4] | [type] | [score] |\n| Month 2 | Week 1 | [gap 5] | [type] | [score] |\n...</p>\n<p>One new content piece per week = 12 pieces in 90 days. Two per week = 24. Match production capacity to plan.</p>\n<hr>\n<h2>What to Do With Coverage Gaps</h2>\n<p>Coverage gaps (you have content but thinner than competitor):</p>\n<ol>\n<li>Pull the existing page</li>\n<li>Run content-refiner-merge-method workflow</li>\n<li>Identify the specific sections competitor has that you don't</li>\n<li>Add those sections without rewriting what's working</li>\n<li>Update publish date after meaningful additions</li>\n</ol>\n<p>Coverage gap updates should take 1-3 hours per page. Full rewrites only if the page is fundamentally wrong in angle or intent.</p>\n<p>#content-sop #content-gap #competitor #keyword-research</p>\n"}