How to Run a YouTube Content Gap Analysis (Step-by-Step Guide)
Learn how to find underserved YouTube topics with a content gap analysis. Step-by-step guide with manual and automated methods using BrightBean.
On this page
How to Run a YouTube Content Gap Analysis (Step-by-Step Guide)
Most YouTube creators pick their next video topic the same way: Gut instinct, a trending topic, or whatever their competitor just posted.
The result? Saturated topics where your video competes with 500 others, or obscure topics nobody is searching for. Both mean fewer views.
A content gap analysis fixes this. It systematically identifies topics where audience demand outpaces the supply of quality content, giving you the highest-probability video ideas.
This guide covers both the manual method (free, time-consuming) and the automated method (faster, using BrightBean’s /content-gaps API). By the end, you’ll know how to find content gaps in any niche and turn them into a prioritized content calendar.
What Is a Content Gap Analysis?
A content gap is a topic where:
- Viewers are searching for or interested in the topic (demand exists)
- Few quality videos currently cover it (supply is low)
The intersection of high demand and low supply is your opportunity zone.
HIGH DEMAND
│
Saturated ┤ ★ Opportunity
(avoid) │ Zone
│
┤
│
Dead Zone ┤ Low Priority
(avoid) │ (skip)
│
└──────────────────
HIGH SUPPLY
A gap analysis maps this space for your niche so you can consistently target the opportunity zone.
The Manual Method
You can run a basic content gap analysis without any tools. It takes 2-3 hours per niche but teaches you the fundamentals.
Step 1: List Your Niche’s Core Topics
Start with 15-20 broad topics in your niche. For “home fitness,” this might include:
- Bodyweight workouts
- Resistance band exercises
- Yoga for beginners
- Home gym setup
- No-equipment cardio
- Stretching routines
- Mobility work
- Workout plans for weight loss
- Core exercises
- Upper body home workout
Step 2: Check Existing Supply
For each topic, search YouTube and evaluate:
- How many results appear? High volume = high supply
- How recent are the top results? Old results = potential gap for fresh content
- What’s the quality level? If top results have poor production, poor structure, or outdated information, there’s a quality gap even if supply looks high
- What angles are missing? Maybe “bodyweight workouts” has 10,000 results, but “bodyweight workouts for people over 50” has very few
Record your findings in a spreadsheet with columns for topic, result count, top result age, quality assessment, and missing angles.
Step 3: Estimate Demand
For each topic, check demand signals:
- YouTube autocomplete: Type the topic and see what YouTube suggests — more suggestions = more search interest
- Google Trends: Compare topics to see relative interest over time
- Comment sections: What are viewers asking for in related videos?
- Community posts/forums: What questions come up repeatedly on Reddit, Discord, and niche forums?
Step 4: Score and Prioritize
Rate each topic on a simple scale:
- Demand: High / Medium / Low
- Supply: High / Medium / Low
- Your expertise fit: High / Medium / Low
Priority = High demand + Low supply + High expertise fit.
The problem with the manual method is that it’s subjective, slow, and hard to repeat consistently. Your assessment of “low supply” is a judgment call, and demand estimation from autocomplete is imprecise.
This is where automation helps.
The Automated Method: BrightBean’s /content-gaps Endpoint
BrightBean’s /content-gaps endpoint does the heavy lifting. It analyzes supply, demand, and quality across a niche and returns a ranked list of opportunities.
Step 1: Get Your API Key
Sign up at brightbean.xyz to get your free API key. The free tier includes 500 calls — more than enough for regular gap analysis.
Step 2: Run the Analysis
import httpx
import json
response = httpx.post(
"https://api.brightbean.xyz/v1/content-gaps",
headers={
"Authorization": "Bearer bb-YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"niche": "home fitness",
"limit": 15
}
)
gaps = response.json()
print(json.dumps(gaps, indent=2))
Or with cURL:
curl -X POST https://api.brightbean.xyz/v1/content-gaps \
-H "Authorization: Bearer bb-YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"niche": "home fitness", "limit": 15}'
Step 3: Read the Response
Here’s what BrightBean returns:
{
"niche": "home fitness",
"analyzed_at": "2026-03-15T10:30:00Z",
"gaps": [
{
"topic": "resistance band back workouts",
"demand_score": 82,
"supply_gap": 0.73,
"opportunity_rating": "high",
"search_volume_trend": "rising",
"existing_videos_quality": "low",
"suggested_angle": "Complete back workout using only resistance bands, targeting people without gym access",
"related_queries": [
"resistance band lat pulldown alternative",
"back exercises at home no pullup bar",
"resistance band row variations"
]
},
{
"topic": "morning stretching routine for office workers",
"demand_score": 76,
"supply_gap": 0.65,
"opportunity_rating": "high",
"search_volume_trend": "stable",
"existing_videos_quality": "medium",
"suggested_angle": "Quick 10-minute routine specifically designed for desk workers with neck and hip focus",
"related_queries": [
"desk stretch routine",
"stretches for sitting all day",
"morning mobility for office workers"
]
},
{
"topic": "HIIT for beginners over 40",
"demand_score": 71,
"supply_gap": 0.70,
"opportunity_rating": "high",
"search_volume_trend": "rising",
"existing_videos_quality": "low",
"suggested_angle": "Low-impact HIIT modifications for joint safety with clear progression path",
"related_queries": [
"beginner hiit over 40",
"safe cardio for older beginners",
"low impact hiit at home"
]
}
]
}
Let’s break down each field:
demand_score (0-100)
A composite score reflecting audience interest based on search volume, trending signals, community activity, and related content engagement. Higher = more people want this content.
supply_gap (0.0-1.0)
Measures how underserved the topic is. 1.0 means virtually no quality content exists. 0.0 means the topic is fully saturated. Anything above 0.5 is notable; above 0.7 is a significant gap.
opportunity_rating (high / medium / low)
A combined assessment factoring in demand, supply gap, and trend direction. “High” means this topic should be near the top of your list.
search_volume_trend (rising / stable / declining)
Direction of search interest. Rising topics are particularly valuable — you can establish authority before competition increases.
existing_videos_quality (high / medium / low)
BrightBean’s assessment of existing content quality. A “low” quality rating even with moderate supply means there’s room for a well-produced video.
suggested_angle
An AI-generated content angle based on what’s missing in existing coverage.
related_queries
Related search terms to include in your video’s title, description, and content for maximum discoverability.
Step 4: Prioritize the Results
Not every gap is worth pursuing. Filter based on:
- Does it align with your channel? A gap in “resistance band workouts” only matters if your channel covers equipment-based fitness.
- Can you make it well? A gap in “advanced calisthenics progressions” isn’t valuable if you can’t demonstrate the skills.
- Is the trend favorable? Rising trends are better than stable ones, which are better than declining ones.
- Is the demand score above your threshold? For most channels, a demand_score below 50 means the audience is too small.
A practical filter:
# Filter for high-priority gaps
priority_gaps = [
gap for gap in gaps["gaps"]
if gap["opportunity_rating"] == "high"
and gap["demand_score"] >= 60
and gap["search_volume_trend"] in ("rising", "stable")
]
# Sort by opportunity (demand * supply_gap)
priority_gaps.sort(
key=lambda g: g["demand_score"] * g["supply_gap"],
reverse=True
)
for gap in priority_gaps:
score = gap["demand_score"] * gap["supply_gap"]
print(f"[{score:.0f}] {gap['topic']} — {gap['suggested_angle']}")
Real Example: Home Fitness Gap Analysis
Let’s walk through a complete analysis. We ran /content-gaps for “home fitness” with limit: 15 and got back 15 opportunities.
After filtering (demand_score >= 60, opportunity_rating high or medium, trend not declining), we had 9 viable topics:
| Rank | Topic | Demand | Gap | Trend | Rating |
|---|---|---|---|---|---|
| 1 | Resistance band back workouts | 82 | 0.73 | Rising | High |
| 2 | Morning stretching for office workers | 76 | 0.65 | Stable | High |
| 3 | HIIT for beginners over 40 | 71 | 0.70 | Rising | High |
| 4 | Apartment-friendly cardio (no jumping) | 69 | 0.68 | Stable | High |
| 5 | Progressive bodyweight workout plan | 67 | 0.62 | Stable | Medium |
| 6 | Home workout for posture correction | 65 | 0.71 | Rising | High |
| 7 | Resistance band leg day | 64 | 0.55 | Stable | Medium |
| 8 | Quick core routine for runners | 62 | 0.60 | Stable | Medium |
| 9 | Full body stretch for recovery | 60 | 0.58 | Stable | Medium |
The top 3 stand out: High demand, large supply gap, and rising trends. These should be next on the content calendar.
Building a Content Calendar from Gap Analysis
Once you have prioritized gaps, turn them into a calendar:
4-Week Calendar Template
Take your top 8 gaps (for 2 videos/week) and:
- Score title candidates for each gap using BrightBean’s
/score/titleendpoint (see our title formulas guide) - Group related topics in the same week for thematic consistency
- Alternate content types — don’t put two listicles back-to-back
- Place rising-trend topics first while the opportunity is freshest
Example:
| Week | Day | Topic | Title | Score |
|---|---|---|---|---|
| 1 | Mon | Resistance band back | “5 Resistance Band Back Exercises That Replace the Gym” | 81 |
| 1 | Thu | Morning stretch | “The 10-Minute Morning Stretch That Fixed My Desk Posture” | 78 |
| 2 | Mon | HIIT over 40 | “HIIT for Beginners Over 40 — Safe, Effective, No Gym” | 74 |
| 2 | Thu | Apartment cardio | “Apartment Cardio That Won’t Annoy Your Neighbors” | 77 |
| 3 | Mon | Posture correction | “Fix Your Posture in 2 Weeks With This Home Routine” | 76 |
| 3 | Thu | Progressive bodyweight | “The 12-Week Bodyweight Program That Actually Builds Muscle” | 73 |
| 4 | Mon | Resistance band legs | “Full Leg Day With Only Resistance Bands (Quad, Hamstring, Glute)” | 72 |
| 4 | Thu | Core for runners | “The 8-Minute Core Routine Every Runner Needs” | 75 |
Automating the Whole Workflow
If you want to run this every month on autopilot, see the tutorial: How to Build a YouTube Content Planning Agent, which chains gap analysis, title scoring, and calendar generation into a single LangChain agent.
Advanced: Layering Multiple Niches
If your channel spans multiple topics, run gap analysis for each sub-niche and compare:
niches = [
"home fitness",
"bodyweight training",
"resistance band workouts",
"home gym equipment reviews"
]
all_gaps = []
for niche in niches:
response = httpx.post(
f"https://api.brightbean.xyz/v1/content-gaps",
headers=headers,
json={"niche": niche, "limit": 10}
)
for gap in response.json()["gaps"]:
gap["source_niche"] = niche
all_gaps.append(gap)
# Deduplicate by topic similarity and sort by opportunity
# (In practice, you'd want fuzzy matching here)
all_gaps.sort(
key=lambda g: g["demand_score"] * g["supply_gap"],
reverse=True
)
This cross-niche approach often surfaces opportunities that single-niche analysis misses: Topics that sit at the intersection of two niches where neither community has good coverage.
Content Gap Analysis vs. Keyword Research
A common question: How is this different from YouTube keyword research?
| Keyword Research | Content Gap Analysis | |
|---|---|---|
| Focus | Search terms | Topics and angles |
| Data source | Search volume | Supply + demand + quality |
| Discovery | What people search for | What’s underserved |
| Limitation | Only captures search intent | Captures search + browse + recommendation |
| Best for | SEO optimization | Content strategy |
They’re complementary. Use keyword research to optimize titles and descriptions for topics you’ve already chosen. Use content gap analysis to choose the right topics in the first place.
Related Reading
- How to Build a YouTube Content Planning Agent — Automate the entire gap-to-calendar workflow
- 12 YouTube Title Formulas That Actually Work in 2026 — Score titles for the topics you find
- YouTube Data API vs Intelligence API — Why raw data isn’t enough for content strategy
Find your next video topic with data, not guesswork. Get your free BrightBean API key — 500 calls, no credit card required. Start your first gap analysis at brightbean.xyz.