All videos

    I Built a Free YouTube Outlier Finder With Claude AI in 2 Hours

    I cancelled VidIQ and TubeBuddy and built my own YouTube outlier finder with Claude Code in 2 hours. It pulls fresh API data every morning at 8 AM and flags the videos blowing up in my niche.

    Share this video

    Every serious YouTube creator eventually runs into the same problem: raw view counts lie. A video with 500,000 views might be completely average for a channel with 5 million subscribers, while a video with 8,000 views on a 2,000-subscriber channel is actually a viral event. Finding those breakout videos — what the YouTube research community calls outliers — is how you reverse-engineer what's working in your niche right now. I built a free YouTube outlier finder using Claude Code in about two hours. It replaced my paid subscriptions to VidIQ and TubeBuddy for this specific use case, pulls fresh API data every morning at 8 AM, and flags the videos blowing up in my niche before they're saturated.

    What Is a YouTube Outlier Video?

    A YouTube outlier is a video that significantly outperforms a channel's typical reach, measured by views as a percentage of subscriber count. It signals that a topic is resonating, independent of the channel's existing audience size. A video with 50,000 views on a channel with 10,000 subscribers is a 5x outlier. That same 50,000 views on a channel with 2 million subscribers is a complete flop. Raw view counts without subscriber context tell you nothing about whether a topic is resonating. The outlier signal filters out videos that only performed well because the channel is already huge — you're not looking for channels that win because of their existing audience, you're looking for topics that are winning regardless of channel size.

    The Three-Tier Scoring System

    The YouTube outlier finder categorizes videos into three performance tiers based on the views-to-subscriber ratio. Hot: views greater than 10% of subscriber count — performing above average for the channel. Outlier: views greater than 30% of subscriber count — strong signal this topic is resonating. Fire: views greater than 100% of subscriber count — a viral breakthrough, high-priority topic to study. A Fire-tier video on a 5,000-subscriber channel has more than 5,000 views. For a small channel, that's a legitimate viral moment, and the topic that drove it is worth understanding.

    Why Not Just Use VidIQ or TubeBuddy?

    VidIQ and TubeBuddy are excellent tools and I still use them for certain things. But for outlier detection specifically they have limitations: they surface popular videos rather than proportionally successful ones (trending feeds favor high-view-count videos from large channels), they don't let you define your own outlier threshold (you get their algorithm, not yours), they require a paid plan for the depth of channel analysis that actually matters, and they don't run automatically — you have to log in and remember to check. The custom YouTube outlier finder solves all four. It's free (YouTube Data API has a generous free quota), runs automatically, and the outlier thresholds are parameters you control.

    How the YouTube Outlier Finder Works

    The tool is a Python + SQLite + Flask application with an HTML/JS frontend. Four database tables store the data: Channels (the accounts you're tracking, including subscriber counts over time), Videos (every video pulled from tracked channels, with view counts and timestamps), Search Queries (keyword searches for keyword gap analysis), and Mined Comments (audience comments extracted for content idea generation). Data is append-only with timestamps — so you can track how a video's performance changes over time, useful for understanding whether a topic has a long tail or burns out fast.

    The Daily Automation

    A Windows Task Scheduler job runs all data-pull scripts at 8 AM every day. This matters for two reasons: fresh data without manual effort (you open your dashboard and the overnight winners are already flagged), and API quota management — YouTube's Data API gives you 10,000 units per day for free, and the scripts are designed to stay inside this limit through efficient batching and caching. You don't need a paid API tier for personal research use.

    The Dashboard: Five Research Tabs

    Channels Tab shows subscriber growth over time for every channel you track — context that matters when interpreting their outlier videos. Videos Tab is the core view: every video sorted by performance tier, filterable by channel, date range, or tier. Keyword Research Tab does gap analysis by keyword, showing top-performing videos in that keyword space so you can find underserved angles. Content Ideas Tab clusters high-performing titles by structure and identifies patterns — question formats, numbered lists, comparisons. Comment Mining Tab extracts audience feedback from high-performing videos, giving you authentic phrasing for your own titles, thumbnails, and scripts.

    How to Find YouTube Outliers: The Daily Workflow

    Once the tool is running, the actual research workflow is fast. Morning check (5 minutes): open the Videos tab, filter to the last 24 hours, sort by tier, and review every Fire and Outlier video — note the title structure, the thumbnail concept, and the topic. Weekly pattern analysis (20 minutes): open the Content Ideas tab and look at which title patterns are repeating in high-tier videos. Before you script a video (10 minutes): run the keyword for your planned topic through the Keyword Research tab to check whether there are existing outlier videos on that exact angle. If yes, study them. If no, you may have found an underserved topic.

    Built with Claude Code in 2 Hours

    The entire application — database schema, API integration, scraping logic, Flask routes, and dashboard UI — was built using Claude Code as the primary developer. The workflow was conversational: describe what the tool needs to do, review what Claude produces, iterate. This is the kind of tool that used to require either a significant engineering investment or an ongoing paid subscription to an analytics platform. With AI-assisted development, it's a two-hour weekend project.

    Build the YouTube Outlier Finder yourself — full setup guide

    This is the complete technical walkthrough for building the dashboard from scratch. The stack is Python + SQLite + Flask for the backend and a static HTML/JS dashboard on top. All data is append-only — every pull adds new rows with a timestamp so you can track channel and video performance over time. The core scripts run on any OS; the daily automation step uses Windows Task Scheduler.

    1. 1. Prerequisites

      Install Python 3.10+ from python.org, Node.js LTS from nodejs.org (used to serve the dashboard via npx serve), and the youtube-pp-cli (a Go-based CLI for the YouTube Data API). Create a project in Google Cloud Console, enable the YouTube Data API v3, and generate an API key — the CLI reads from its own config. Heads up: the API has a daily quota of 10,000 units. Each search costs 100 units; each video-details fetch ~3–5. The refresh scripts are designed to stay well under that.

    2. 2. Project structure

      Create a youtube-dashboard/ folder with: db/ (holds youtube.db, created on first run), scripts/ (db.py, pull_ai_productivity.py, pull_channels_for_videos.py, backfill_duration.py, pull_comments_for_ideas.py), dashboard/ (index.html, app.js, style.css), plus server.py (Flask) and daily_refresh.ps1 at the root. The DB has four tables: channels (subscriber snapshots), videos (metadata + stats), searches (which video appeared for which query), and comments (mined comments linked to videos).

    3. 3. Install Python dependencies

      Open a terminal in the project folder and install Flask.

      pip install flask
    4. 4. Verify the YouTube CLI

      Confirm youtube-pp-cli is on your PATH and configured with your API key. You should see JSON come back.

      youtube-pp-cli youtube channels-list --agent --part snippet,statistics --for-handle "@mkbhd"
    5. 5. Initialize the database

      Run the first pull — it creates db/youtube.db automatically, runs 7 topic search queries, fetches video details, and stores everything. Expect 30–60 seconds on first run. Always use -X utf8 on Windows to avoid encoding errors on emoji and accented characters.

      python -X utf8 scripts/pull_ai_productivity.py
    6. 6. Pull channel + duration + comment data

      Each script is independent and append-only. Channels pulls fresh subscriber counts for every channel that has appeared in your videos table. Backfill fetches durations for any videos missing them (used to classify Shorts vs Long-form). Comments mines up to 100 relevance-sorted comments per long-form video over 10K views — the videos where viewers are most likely to leave content requests worth acting on.

      python -X utf8 scripts/pull_channels_for_videos.py
      python -X utf8 scripts/backfill_duration.py
      python -X utf8 scripts/pull_comments_for_ideas.py
    7. 7. Run the dashboard

      You need two things running at once: the Flask API (port 5000) and a static file server for the dashboard (port 3000). Open two terminals. Flask adds CORS headers, so the dashboard can call the API freely. Then open http://localhost:3000 in your browser.

      python -X utf8 server.py
      npx serve dashboard
    8. 8. Automate the daily refresh (Windows)

      daily_refresh.ps1 runs all four scripts in sequence and writes a timestamped log to logs/. Register it as a scheduled task once in an elevated PowerShell window (replace the path with your project folder). It will fire at 8 AM daily. You can also run it on demand with Start-ScheduledTask or by invoking the .ps1 directly.

      $action  = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NonInteractive -ExecutionPolicy Bypass -File `"C:\path\to\youtube-dashboard\daily_refresh.ps1`""
      $trigger = New-ScheduledTaskTrigger -Daily -At "08:00AM"
      $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -RunOnlyIfNetworkAvailable -ExecutionTimeLimit (New-TimeSpan -Minutes 10)
      Register-ScheduledTask -TaskName "YouTubeDashboardDailyRefresh" -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -Force
      Start-ScheduledTask -TaskName "YouTubeDashboardDailyRefresh"
    9. 9. Using the dashboard — the five tabs

      Channels: every tracked channel with subscriber growth over time. Videos: all stored videos with FIRE / OUTLIER / HOT badges, filterable by Shorts vs Long-form. Keyword Research: tracked topics with volume, gap scores, and heat signals (TRENDING / ACTIVE / STEADY) — click a topic to reveal long-tail keyword opportunities scored by difficulty and opportunity. Content Ideas: title pattern lift analysis, outlier deep-dive on small channels punching above their weight, and top titles by raw views. Comment Mining: content requests, unanswered questions, and most-liked comments from your highest-performing videos.

    10. 10. Metrics reference — how scoring works

      Outlier badges: FIRE = views ≥ 100% of subscriber count (every subscriber watched it, plus more). OUTLIER = views ≥ 30% of subs or 5× channel average. HOT = views ≥ 10% of subs or 2× channel average. Gap Score = Avg Views ÷ Number of Channels Covering the Topic — high gap = underserved niche with proven demand. Title Pattern Lift = Avg views of videos using a pattern ÷ Avg views of videos not using it. Keyword Difficulty (0–100) = 65% log-scaled avg subs of competing channels + 35% video volume. Keyword Opportunity (0–100) = 60% log-scaled avg views + 40% views-per-subscriber. Sort by highest opportunity, then lowest difficulty — those are your best bets.

    11. 11. Troubleshooting

      Dashboard shows "—" everywhere: Flask isn't running — start server.py. UnicodeDecodeError: you forgot -X utf8. Quota exceeded: 10,000 units/day per project; wait until midnight Pacific or create a second API key. Keyword Opportunities empty: a phrase has to appear in at least 2 different titles for the same topic — pull more data over a few days. Scheduled task ran but data looks old: Flask reads from SQLite on every request — just reload the tab. Comment Mining empty: only fires on long-form videos with 10K+ views — let pull_ai_productivity.py build up view counts for a few days first.

    Frequently asked questions

    Is the YouTube outlier finder free to use?
    Yes. The YouTube Data API provides 10,000 free units per day, which is enough to track dozens of channels daily without a paid tier. The tool itself has no cost.
    How is a YouTube outlier different from a trending video?
    Trending videos are popular in absolute terms. Outlier videos are popular relative to a channel's typical performance. A video with 20,000 views on a 3,000-subscriber channel is a bigger outlier than a video with 1 million views on a channel with 10 million subscribers.
    What is a good views-to-subscriber ratio on YouTube?
    For most niches, a video that reaches 10-30% of a channel's subscriber count in the first 30 days is performing well. Anything over 100% is a genuine breakout. These numbers vary by niche.
    Can I track competitor YouTube channels with this tool?
    Yes. You track any public YouTube channel by its channel ID. Most creators use this to monitor 10-30 channels in their niche, including direct competitors and adjacent creators.
    Does the YouTube outlier finder work on Mac or Linux?
    The Python and Flask components work on any OS. The Task Scheduler automation is Windows-specific, but Mac and Linux users can use cron or systemd timers for the same daily automation.
    How many channels can I track before hitting the API quota?
    With efficient batching, you can typically track 40-60 channels and pull fresh video data daily while staying under 10,000 units. Channels that post infrequently cost fewer quota units to monitor.

    Join the conversation

    Like, comment, and shape the next video

    Every like and comment tells YouTube to show this to more people who need it. Pick a prompt below, drop it under the video, and Chad reads (and replies to) every one.

    • "Building this today — cancelling my VidIQ sub right after 🙌"

    • "Thanks for the free guide Chad, can't wait to set this up this weekend!"

    • "Mind blown that you did this in 2 hours with Claude. Trying it tonight."