# YouTube Channel Scanner Tools — Find Which Videos Can Be Clipped

**URL:** <https://onehack.st/t/youtube-channel-scanner-tools-find-which-videos-can-be-clipped/315029>\
**Category:** Tutorials & Methods\
**Tags:** tips-tricks, content-creation\
**Created:** [December 20, 2025, 9:03am UTC](https://onehack.st/t/youtube-channel-scanner-tools-find-which-videos-can-be-clipped/315029 "2025-12-20T09:03:36Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![RoohNooh](https://onehack.st/user_avatar/onehack.st/roohnooh/32/166257_2.png) [@RoohNooh](https://onehack.st/u/RoohNooh)\
**Post date:** [December 20, 2025, 9:03am UTC](https://onehack.st/t/youtube-channel-scanner-tools-find-which-videos-can-be-clipped/315029/1 "2025-12-20T09:03:36Z")

</div>

## 🎬 YouTube Scanner Tools for Content Creators — Check Clip Status Fast

Here’s the ugly truth: **YouTube doesn’t want you to know this easily.**

There’s no official “hey, can I clip this?” button in their API. They buried it. On purpose. But we’re not here to play by their rules.

> 🗺 **One-Line Flow:** Grab video IDs from a channel → check if clips are allowed → profit (or cry, depending on the creator’s settings).

 ![image](https://onehack.st/uploads/default/original/3X/2/1/217a3750dfd976adce869fe641641bb48fa614e4.png)

* * *

## 🔥 Why Should You Care?

- You’re a content creator hunting for clips to react to
- You run a clips channel and need to scan 500 videos fast
- You’re just nosy (valid)

Either way, doing this manually is pain. Let’s automate the suffering.

* * *

## 🛠 The Tools That Actually Work

> **🐍 Python Route (For the Copy-Paste Warriors)**
>
> ### innertube — YouTube’s Secret Backdoor
> 
> YouTube has a hidden API called **InnerTube**. It powers everything — the app, the website, your grandma’s smart TV. And someone made it easy to use:
> 
> ```bash
> pip install innertube
> 
> ```
> 
> ```python
> import innertube
> client = innertube.InnerTube("WEB")
> data = client("player", body={"videoId": "dQw4w9WgXcQ"})
> print(data) # welcome to the matrix
> 
> ```
> 
> No API key. No quota. Just vibes.
> 
> 👉 [https://github.com/tombulled/innertube](https://github.com/tombulled/innertube)
> 
> * * *
> 
> ### youtube\_extract — Dump an Entire Channel to Excel
> 
> Want every video’s metadata from a channel in a nice spreadsheet? Done.
> 
> ```bash
> pip install youtube_extract
> youtube_extract "https://youtube.com/@MrBeast" -e xlsx
> 
> ```
> 
> Boom. You now have a file your boss would be proud of (if your boss was a data hoarder).
> 
> 👉 [https://github.com/dbeley/youtube\_extract](https://github.com/dbeley/youtube_extract)

> **⚡ JavaScript Route (For the Browser Goblins)**
>
> ### YouTube.js — The God-Tier Library
> 
> 135k+ stars on GitHub. Works everywhere. No API key needed. This thing reverse-engineered YouTube’s entire internal system.
> 
> ```javascript
> import { Innertube } from 'youtubei.js';
> const yt = await Innertube.create();
> const video = await yt.getInfo('VIDEO_ID');
> console.log(video);
> 
> ```
> 
> 👉 [https://github.com/LuanRT/YouTube.js](https://github.com/LuanRT/YouTube.js)
> 
> * * *
> 
> ### IYoutube — “The Dirty API Client”
> 
> That’s literally what they call it. It pulls data from YouTube TV’s leaked keys. Chaotic. Beautiful.
> 
> 👉 [https://github.com/ToBiDi0410/IYoutube](https://github.com/ToBiDi0410/IYoutube)

> **🧪 Browser Console Hack (Zero Install, Instant Results)**
>
> Go to any YouTube video. Press `F12`. Click **Console**. Paste this:
> 
> ```javascript
> // Check if clip button exists
> !!document.querySelector('[aria-label*="Clip"]')
> 
> ```
> 
> Returns `true` = clips allowed. Returns `false` = nope.
> 
> **Want the full video metadata?** Paste this instead:
> 
> ```javascript
> window.ytInitialPlayerResponse
> 
> ```
> 
> That’s everything YouTube knows about the video. Age restrictions, availability, the works.

> **🤖 Bulk Scanning (For the Unhinged)**
>
> ### yt-dlp — The Swiss Army Knife
> 
> Extract every video ID from a channel without downloading anything:
> 
> ```bash
> yt-dlp --flat-playlist --print "%(id)s" "https://youtube.com/@ChannelName" > ids.txt
> 
> ```
> 
> Then check each one’s metadata:
> 
> ```bash
> yt-dlp --print "%(id)s|%(title)s|%(age_limit)s|%(duration)s" "VIDEO_URL"
> 
> ```
> 
> **Fields that scream “no clips for you”:**
> 
> - `age_limit` \> 0 → Age-restricted = no clips
> - `duration` \< 120 → Too short for clips
> - `live_status` = “is\_live” → Can’t clip a live stream, obviously
> 
> 👉 [https://github.com/yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp)
> 
> * * *
> 
> ### Puppeteer + Stealth — The Nuclear Option
> 
> When you need to check thousands of videos and nothing else works:
> 
> ```javascript
> const puppeteer = require('puppeteer-extra');
> const StealthPlugin = require('puppeteer-extra-plugin-stealth');
> puppeteer.use(StealthPlugin());
> 
> async function canClip(videoId) {
> const browser = await puppeteer.launch({ headless: 'new' });
> const page = await browser.newPage();
> await page.goto(`https://youtube.com/watch?v=${videoId}`);
> const clipBtn = await page.$('[aria-label*="Clip"]');
> await browser.close();
> return !!clipBtn;
> }
> 
> ```
> 
> This actually loads the page like a real human and checks if the clip button exists. Slow but bulletproof.

* * *

## 🚫 What Kills the Clip Button?

YouTube disables clips when:

| Condition | Detectable? |
| --- | --- |
| Made for Kids | ✅ Yes — `madeForKids` in API |
| Age-restricted | ✅ Yes — `age_limit` in yt-dlp |
| Under 2 minutes | ✅ Yes — check `duration` |
| Currently live | ✅ Yes — `live_status` |
| Stream over 8 hours | ✅ Yes — `duration` |
| Creator turned it off | ❌ Nope — gotta check the DOM |
| Copyright claim | ⚠ Sometimes — inconsistent |

The only **100% reliable** way to know is checking if the actual clip button renders on the page. Everything else is educated guessing.

* * *

## 🕳 Rabbit Hole Resources

- [YouTube-Internal-Clients](https://github.com/zerodytrash/YouTube-Internal-Clients) — Research project that bruteforced hidden YouTube client types. Found stuff like `TVHTML5_SIMPLY_EMBEDDED_PLAYER`. Nerdy but powerful.
- [Reverse-Engineering YouTube: Revisited](https://tyrrrz.me/blog/reverse-engineering-youtube-revisited) — Deep dive into how InnerTube actually works.
- [MW Metadata](https://mattw.io/youtube-metadata/) — Web-based OSINT tool. Paste a video URL, get everything.
- [YouTube Alchemy Userscript](https://greasyfork.org/en/scripts/521686-youtube-alchemy) — 200+ tweaks including metadata exposure.

* * *

## 🧠 Summary for the Impatient

1. **Quick check?** → Browser console: `!!document.querySelector('[aria-label*="Clip"]')`
2. **One video’s full data?** → `yt-dlp --dump-json "VIDEO_URL"`
3. **Whole channel scan?** → `yt-dlp --flat-playlist` → loop through IDs
4. **Industrial scale?** → Puppeteer with stealth plugin
5. **Python vibes?** → `innertube` or `youtube_extract`

* * *

**Now go forth and scan responsibly.** Or irresponsibly. I’m not your mom.
