TubeGap User Guide

How it works

TubeGap finds what your buyers search for on YouTube and shows which of those searches have weak or missing videos, so you know what to make next. One run goes:

  1. Seeds: you type the problems your buyers have, in their words.
  2. Expand: YouTube autocomplete turns each seed into the real searches people type. Free, about 10 seconds per seed.
  3. Cluster: near-duplicate searches are grouped, one video per cluster.
  4. Score: each cluster's top 10 YouTube videos are looked up and rated 0–100. Uses about 102 of your 10,000 daily quota units per cluster.
  5. Pick and publish: you choose the best clusters and make one video for each.

Expanding is free and unlimited; scoring is limited to about 95 clusters a day.

One-time setup

Do these once; after that, just start both apps.

  1. Create the tables: run TubeGap.UpdateDb once.
  2. Get a YouTube API key: in Google Cloud Console, create a project, enable YouTube Data API v3, then Credentials > Create credentials > API key. Restrict the key to YouTube Data API v3.
  3. Store the key: right-click TubeGap.Api > Manage User Secrets, and set "YouTube": { "ApiKey": "your-key" }. Keep ApiKey empty in appsettings.json.
  4. Point Blazor at the API: GlobalPublicVars.APIUrl in TubeGap.Shared must match the API's port, ending in /api/.
  5. Run both apps: right-click the solution > Configure Startup Projects > Multiple startup projects, set TubeGap.Api and TubeGap.Blazor to Start.

The API opens Swagger at /swagger; the app opens in a second browser tab. The top bar shows today's YouTube quota.

Creating a project

Make one project per product or niche, and one YouTube channel per niche. Go to Projects > New project; the defaults work for a first run. Change settings later with Settings on the project page.

SettingWhat it doesDefault
Language / RegionLanguage and country of suggestions and resultsen / US
PrefixesWords put before each seed ("how to" + seed)how to, best, what is, why
SuffixesWords put after each seed (seed + "app")for, vs, app, software, free, checklist, tutorial, tips
Exclude wordsDrops any phrase containing these wordsnone
Alphabet soupAlso queries seed + a to zon
Must share a seed wordDrops phrases with no word from the seedon
Min wordsDrops phrases shorter than this2
Cluster similarity %Word overlap needed to share a cluster60
Rescore after (days)When a score counts as stale30
Small channel under (subs)Cutoff for a "small" channel10,000
Score weightsHow much each factor counts (scaled to 100)35 / 15 / 25 / 10 / 15

Prefixes, suffixes and exclude words are one per line. For finding clients, add question prefixes: how do i, can i, should i, do i need, how much.

Seeds and expanding

A good seed is a problem your buyer types before they know your product exists. Start with 5 to 10.

  • Use their words, not yours: "salon no shows", not your product's feature name.
  • Problems beat product categories: "booth rent collection" finds questions; "salon software" finds brand comparisons.
  • Ask your salesperson and support person for the 20 questions they hear most; those make the best seeds.

On the project's Seeds tab, paste seeds one per line and click Add seeds (duplicates are skipped). Then:

  • Expand all seeds re-runs every seed. Use it after changing prefixes, suffixes or exclude words.
  • Expand new seeds only runs seeds never expanded.
  • Stop after this seed ends a run early.

Each seed takes about 10 seconds. When the run finishes, clusters rebuild and the page moves to the Report tab. Re-expanding updates phrases in place, never duplicates them.

Phrases and clusters

Skim the Phrases tab after each expand; two minutes here saves quota later. It lists every phrase with its hits, best rank, cluster and seed.

Hits is how many of TubeGap's autocomplete queries returned the phrase. It ranks phrases against each other within a project; it is not searches per month.

Clusters group phrases that share most of their meaningful words. Filler words (how, to, best, for) and years are ignored, and endings are trimmed, so "apps" matches "app". The most-searched phrase leads each cluster and is your video's target title.

What you seeFix in SettingsThen
Off-topic phrases (other industries, jobs)Add the words to Exclude wordsExpand all seeds
Near-duplicates in separate clustersLower Cluster similarity % (try 40)Expand any seed
Unrelated phrases in one clusterRaise Cluster similarity % (try 75)Expand any seed

Matching is by words only: "booking" and "scheduling" stay in separate clusters.

Scoring and quota

You can score about 95 clusters a day: each lookup uses about 102 of the 10,000 daily YouTube units, which reset at midnight Pacific.

  • Score top N (Report tab) scores the most-searched unscored clusters first. Start with 5 to 10.
  • Also rescore results older than N days re-checks stale scores in the same run.
  • The chart icon on a row scores just that cluster.
  • Stop after this one ends a run early.

A run is capped to the quota left and stops if YouTube reports the quota used up. The top-bar badge shows today's usage. The report uses the latest lookup per cluster.

Reading the report

Sort by Score, then expand rows to judge for yourself. Unscored rows show only Hits and Phrases until looked up.

ColumnMeaningGood sign
ScoreOverall opportunity, 0–100 (weighted mix of the five factors below)60+ green, 40–59 yellow
Target phraseMost-searched phrase in the cluster; use it as the title—
HitsAutocomplete results across the cluster (relative, not volume)Higher
PhrasesSimilar phrases one video should cover—
Views/moMedian of each top video's lifetime views ÷ its age in monthsHundreds or more
Title matchShare of top 10 titles containing the phraseLow: nobody targets it
Age (mo)Median age of the top 10 videosHigh: stale results
Small ch.Share of top 10 from channels under 10k subscribersHigh: a new channel can rank
Top video nowThe video currently ranking first—

Default weights: Demand (views/mo) 35, Title gap 25, Autocomplete 15, Small channels 15, Age 10. No videos – open gap means people search it and nothing answers it; in a niche these are often the quickest wins.

Expanding a row shows its similar phrases and the 10 competing videos with channel, subscribers, views and publish date.

Picking topics and making videos

Pick clusters with a high score, a searcher who is your buyer, and competing videos you can clearly beat. The score can't judge the last two; you do.

  • Skip mismatched searchers: a high score on a homeowner question is no use if you sell to businesses.
  • Favor questions: aim for about 70% question-answering videos and 30% demos or comparisons.
  • In tiny niches, views/mo is near zero everywhere; lean on hits, title match and open gaps.

For each video:

  1. Use the target phrase as the title, or close to it.
  2. Say the phrase in the first 15 seconds and put it in the description.
  3. Answer the question honestly in the first minute or two.
  4. Show how your product handles it.
  5. End with one call to action: a free trial link in the description and a pinned comment.
  6. Cover the cluster's similar phrases in the script and description.

Keep videos to 3–6 minutes. Start at 2–3 a week and move to 5 once quality holds; watch average view duration in YouTube Studio. After 4–6 weeks, add the search terms from YouTube Studio as new seeds.

Troubleshooting

ProblemLikely causeFix
Expand finds 0 phrasesAutocomplete blocked or failingCheck the API's console output; try again later
Score returns a failureBad API key, or YouTube Data API v3 not enabledCheck user secrets and the Cloud Console
"Daily quota used up"10,000 units spentWait until midnight Pacific
Pages show no dataBlazor can't reach the APIRun both apps; check the GlobalPublicVars.APIUrl port
"Unhandled exception" in the browserA component errorSet "DetailedErrors": true in Blazor's appsettings, restart, check the browser console
No Swagger pageBrowser not opening /swaggerlaunchBrowser: true and launchUrl: "swagger" in launchSettings.json
Old layout or menu after a changeFile not saved, or hot reload missed itFile > Save All, stop and restart, Ctrl+F5
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.