Tutorials

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.

Jan | | 8 min read
How to Run a YouTube Content Gap Analysis (Step-by-Step Guide)

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:

  1. Does it align with your channel? A gap in “resistance band workouts” only matters if your channel covers equipment-based fitness.
  2. Can you make it well? A gap in “advanced calisthenics progressions” isn’t valuable if you can’t demonstrate the skills.
  3. Is the trend favorable? Rising trends are better than stable ones, which are better than declining ones.
  4. 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:

  1. Score title candidates for each gap using BrightBean’s /score/title endpoint (see our title formulas guide)
  2. Group related topics in the same week for thematic consistency
  3. Alternate content types — don’t put two listicles back-to-back
  4. 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.


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.

Share this post

Want structured YouTube intelligence?

Content gap analysis, title scoring, thumbnail intelligence, and hook classification. Delivered via API and MCP server.

Get your free API key →