YouTube source intelligence dashboard. Tracks channel videos, pulls transcripts, monitors view velocity (VPH), and generates a sortable HTML dashboard showing trending videos with sparkline charts. Use when you want to analyze source channel performance, track viral videos, plan content strategy, or add new channels to track.
YouTube source intelligence dashboard. Monitors tracked channels, tracks view velocity, and surfaces trending videos with visual trend charts.
/youtube-planner or youtube-plannersources.json)Add tracked channels to :
sources.json{
"sources": [
"@realrobtheaiguy",
"@aiadvantage",
"@matthewberman"
]
}
youtube-planner
Or target specific date:
youtube-planner --date 2026-02-16
Use direct Python/curl approach for efficient batch processing:
sources.jsonworkspace/group/youtube/{date}/{channel-name}/latest.jsonFirst run detection: Check if any metadata files exist in workspace/group/youtube/. If empty, this is the first run.
Use direct Python script to process all videos efficiently:
latest.json files that match the time rangefind workspace/group/youtube -path "*/{channel-slug}/{title-slug}/transcript.txt"metadata/{timestamp}.jsonPython approach is faster and more reliable than spawning hundreds of agents.
Run the dashboard generator:
python3 .claude/skills/youtube-planner/generate-dashboard.py
Output: workspace/group/youtube/dashboard.html
The Trend column shows an inline sparkline chart based on all metadata files in metadata/:
Example progression:
metadata/2026-02-16-0800.json → 1,200 views
metadata/2026-02-16-1200.json → 2,500 views
metadata/2026-02-16-1600.json → 4,100 views
Sparkline shows upward curve → green chart
workspace/group/youtube/
dashboard.html
2026-02-16/
rob-the-ai-guy/
latest.json
google-geminis-new-upgrades/
transcript.txt
transcript.json
metadata/
2026-02-16-0800.json
2026-02-16-1200.json
2026-02-16-1600.json
VPH calculation: views / hours_since_publish
Trend direction: Compare VPH from last 2 snapshots:
| Path | Purpose |
|---|---|
workspace/group/youtube/dashboard.html | Sortable table with sparkline charts |
workspace/group/youtube/{date}/{channel}/latest.json | Channel's latest 15 videos |
workspace/group/youtube/{date}/{channel}/{video}/transcript.txt | Cached transcript |
workspace/group/youtube/{date}/{channel}/{video}/metadata/{datetime}.json | Timestamped view count snapshot |
metadata/ subdirectorysources.json at skill base directoryWhen the user asks to add a new channel (e.g., "add @ChannelHandle to sources"), automatically:
Update sources.json:
# Read current sources
sources=$(cat .claude/skills/youtube-planner/sources.json)
# Add new channel to the list
# Use Edit tool to add the channel
Fetch last 30 days of data:
python3 .claude/skills/youtube-planner/catch-up-channel.py @ChannelHandle
Regenerate dashboard:
python3 .claude/skills/youtube-planner/generate-dashboard.py
Important: Always use the catch-up script for new channels to bootstrap with 30 days of historical data, even if other channels are in "24-hour mode".
# First run: Fetches all videos from last 30 days
youtube-planner
# Subsequent runs: Only fetch videos from last 24 hours
youtube-planner
# Force specific date range (override auto-detection)
youtube-planner --date 2026-02-15
# Add new tracked channel (handled automatically)
# User says: "add @DanKoeTalks to sources"
# Skill will: update sources.json → fetch 30 days → regenerate dashboard
At the end, confirm:
workspace/group/youtube/dashboard.html