Inspiration
Every YouTube creator obsesses over analytics, retention curves, and SEO — but there's a well-known problem in web SEO that almost nobody applies to YouTube: keyword cannibalization, where multiple pages (or in this case, videos) unknowingly compete for the same search intent and split their own traffic. We noticed that tutorial and course-style channels are especially prone to this — a creator uploads "Introduction to C++" and months later "C++ Basics for Beginners," and both videos quietly fight each other for the same search results instead of reinforcing one another. We wanted to build something that catches this automatically, the same way SEO tools do for websites, but nobody had built it for individual YouTube creators.
What it does
YouTube Cannibalization Detector takes a channel URL and:
- Fetches all videos on the channel using the YouTube Data API
- Pulls transcripts where available for deeper content analysis
- Compares videos using topic similarity to detect pairs that are likely competing for the same search intent
- Generates a traceable severity score for the channel based on real overlap data, not a made-up estimate
- For each flagged pair, suggests a specific fix — Retitle, Cross-link, or Merge/Consolidate — with a plain-English explanation grounded in the actual shared keywords between the videos
- Lets the creator generate a ready-to-use fix (a suggested new title or cross-link description text) with one click
- Visualizes the whole channel as an interactive overlap graph, showing which videos are most "tangled" with each other and should be addressed first
How we built it
We built the full pipeline in Python with Streamlit for the interface, split into four stages: fetching videos via the YouTube Data API, fetching transcripts via youtube-transcript-api, computing topic similarity between videos, and generating suggestions using Google's Gemini API. We designed the whole system around graceful degradation from the start — every stage has a reliable fallback, so the tool never fails outright even when an external dependency does.
Challenges we ran into
The biggest challenge was working entirely with free-tier resources under real rate limits. YouTube's transcript API blocks requests from many IPs, and Gemini's free tier has strict per-minute and per-day quotas — we hit both constantly during development. Rather than treating these as blockers, we built the pipeline to degrade gracefully: when transcripts aren't available, the tool falls back to comparing titles and descriptions; when Gemini's quota is exhausted, a local rule-based engine generates the topic, fix, and reasoning instead, using the real overlap data we already computed. This meant the tool never crashes or produces empty results, even under the exact conditions a solo creator using free-tier tools would actually hit.
We also had to debug a run early on where our fallback logic was producing generic, repeated placeholder text instead of genuinely data-driven output — we caught this by testing on real data and rebuilt the fallback to extract real keywords and reasoning from each specific pair instead.
Accomplishments that we're proud of
- A fully working, end-to-end pipeline that runs reliably on real YouTube channels, not just a mockup
- An honest, traceable severity score — you can see exactly how the number was calculated, not just told to trust it
- Genuine graceful degradation: every single external dependency (transcripts, Gemini) has a real fallback that still produces meaningful, accurate output
- An interactive overlap graph that visually shows creators exactly which videos are competing with each other, not just a table of numbers
What we learned
We learned just how much production reliability matters even in a hackathon context — free-tier APIs fail constantly in the real world, and a tool that only works when everything goes right isn't actually useful. Building real fallback logic (not just error messages) taught us more about resilient system design than building the "happy path" ever would have. We also learned a lot about YouTube's API quirks, transcript access limitations, and how to translate an SEO concept from the web into a genuinely new application on YouTube.
What's next for YouTube Cannibalization Detector
- Support for larger channels with smarter batching and caching so full-catalog analysis stays fast at scale
- Direct integration with YouTube Studio so creators could apply suggested fixes (retitles, description cross-links) with one click instead of copy-pasting
- Historical tracking — re-run analysis over time to see if search traffic actually improves after applying suggested fixes
- Expanding beyond title/description similarity to deeper semantic analysis of full video content and viewer search query overlap
Log in or sign up for Devpost to join the conversation.