YouTube Own Channel Analyzer
Analyze your YouTube channel's performance using the YouTube Data API v3.
Usage
/youtube-own-channel-analyzer @MyChannel
/youtube-own-channel-analyzer https://youtube.com/@MyChannel
/youtube-own-channel-analyzer UCxxxxxxxxxxxxxxxxxxxxxx --max-videos 300
Instructions
Step 1: Parse Arguments
- Channel (required):
@handle, channel URL, or channel ID (UC...)
- --max-videos N (optional): how many recent uploads to analyze (default: 200,
0 = all)
Step 2: Get the API Key
Get a key from Google Cloud Console with YouTube Data API v3 enabled. Check Claude memory first; if not found, ask the user to paste it.
Step 3: Run the Bundled Script
Run scripts/analyze_channel.py — resolve the path relative to this skill's own directory:
YT_API_KEY=API_KEY python3 <skill-dir>/scripts/analyze_channel.py "@CHANNEL" [--max-videos N]
Dependency: pip3 install google-api-python-client.
Step 4: Read the Data
reports/data/channel-analysis-<channel-slug>-<YYYY-MM-DD>.json
Step 5: Write the Report
Write to the path the script printed: reports/channel-analysis-<channel-slug>-<YYYY-MM-DD>.md
What the Script Computes
Channel Resolution
@handle → channels.list(forHandle=...); /channel/UC... and bare UC... → channels.list(id=...); legacy /user/name → forUsername. Never search.list.
Video Collection
contentDetails.relatedPlaylists.uploads → playlistItems.list pagination → videos.list in batches of 50.
Content Types
Categorized by title/description/tag patterns:
| Type |
Pattern |
| Tutorial |
tutorial, how to, guide, learn |
| Review |
review, unbox, first look, comparison |
| Vlog |
vlog, day in, life, daily |
| Educational |
explain, education, lesson |
| Gaming |
gameplay, game, gaming, stream |
| Music |
music, song, cover, lyrics |
| Other |
no match |
Duration Buckets
Short (<5 min), Medium (5-15 min), Long (15-30 min), Very Long (30+ min).
Performance Metrics vs Benchmarks
| Metric |
Formula |
Benchmark |
| View-to-sub ratio |
views / subscribers |
10-20% |
| Engagement rate |
(likes + comments) / views |
1-5% |
| Like rate |
likes / views |
3-7% |
| Comment rate |
comments / views |
0.5-2% |
| Viral threshold |
views > 5x subscribers |
flagged per video |
| Underperforming |
views < 10% of subscribers |
flagged per video |
The benchmarks ship inside the JSON as benchmarks so the report can compare directly.
Upload Patterns
Day-of-week and hour-of-day distribution, average days between uploads, uploads per week, and a consistency score (population stddev of the gaps — lower is more consistent).
Title Analysis
Rates of numbers, emojis, questions, brackets, ALL-CAPS words, and "how to"; average title length in characters and words; the 20 most common non-stopword terms.
Output Report Structure
# Channel Analysis Report: [Channel Name]
*Analyzed [date] | [N] videos*
## Executive Summary
- Subscribers, total views, videos, avg engagement, upload consistency
- One-line health verdict
## Channel Overview
- Basic info, statistics table, description, keywords, country, created date
## Content Analysis
- Category breakdown table (count, %, avg views, avg engagement)
- Duration distribution table
- Title patterns
## Performance Metrics
| Metric | This Channel | Benchmark | Verdict |
|--------|-------------|-----------|---------|
Compare each metric in `performance` against `benchmarks`.
## Upload Patterns
- Optimal day/hour, uploads per week, consistency stddev
- Day and hour distribution
## Engagement Analysis
- Top 5 high-engagement videos (`top_by_engagement`)
- Bottom 5 needing improvement (`needs_improvement`)
- Viral and underperforming counts
## Recommendations
- Content optimization, upload frequency, title suggestions
- Each recommendation tied to a specific number from the data
## Quota Usage
| Operation | Calls | Units |
|-----------|-------|-------|
Use the `quota_used.breakdown` block from the JSON.
Step 6: Report Completion
Tell the user the report path, subscriber/view/video counts, the health verdict, the top recommendation, and the quota consumed.
Quota Estimate
No search.list at all — this skill only touches its own channel.
| Operation |
Calls |
Units |
channels.list (resolve) |
1 |
1 |
playlistItems.list (200 uploads) |
4 |
4 |
videos.list (batches of 50) |
4 |
4 |
| Total (200 videos) |
|
~9 |
Roughly 1 unit per 25 videos analyzed. The previously documented search.list(channelId=...) route cost 100 units per 50 videos (~400 units for the same 200 videos). Daily default allowance is 10,000 units, resetting at midnight Pacific Time.