From google-skill
This skill should be used when the user asks about "youtube", "my videos", "my channel", "youtube search", "video comments", "playlists", "list videos", "channel stats", "video details", "download video", "get transcript", "video subtitles", "summarize channel", "latest videos from channel", "video timestamp", "link to timestamp", or mentions YouTube operations. Provides YouTube Data API integration and yt-dlp for downloading videos, transcripts, and metadata from any channel. Includes workflow for comprehensive channel video summaries.
npx claudepluginhub the-focus-ai/claude-marketplace --plugin google-skillThis skill uses the workspace's default tool permissions.
Search YouTube, list videos, channels, playlists, view comments, download videos, and extract transcripts.
Retrieves texts, DMs, one-time codes, and inspects threads in ECC workflows. Provides evidence of exact sources checked for verification before replies.
Delivers expertise for HS tariff classification, customs documentation, duty optimization, restricted party screening, and trade compliance across jurisdictions.
Process documents with Nutrient API: convert formats (PDF, DOCX, XLSX, images), OCR scans (100+ languages), extract text/tables, redact PII, sign, fill forms.
Search YouTube, list videos, channels, playlists, view comments, download videos, and extract transcripts.
For API commands (your channel data): Run npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/gmail/scripts/gmail.ts auth to authenticate with Google. Tokens are stored per-project in .claude/google-skill.local.json.
For yt-dlp commands (any public content): Install yt-dlp with brew install yt-dlp (no auth needed).
By default, this skill uses embedded OAuth credentials. To use your own Google Cloud project instead, save your credentials to ~/.config/google-skill/credentials.json.
# List your YouTube channels
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts channels
# Get channel details
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts channel <channelId>
# List your videos
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts videos
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts videos --max=20
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts videos --channel=UC...
# Get video details
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts video <videoId>
# List your playlists
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts playlists
# Get playlist items
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts playlist <playlistId>
# Search YouTube
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts search --query="typescript tutorial"
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts search --query="coding" --type=video --max=5
# Get video comments
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts comments <videoId> --max=50
These commands use yt-dlp to access any public YouTube content without OAuth.
# Get detailed info about any video
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-info dQw4w9WgXcQ
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-info "https://youtube.com/watch?v=..."
# List videos from any public channel (by @handle, channel ID, or URL)
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-channel @mkbhd
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-channel UCXuqSBlHAE6Xw-yeJA0Tunw --max=50
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-channel "https://youtube.com/@channelname"
# Get video transcript (auto-generated or manual subtitles)
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts transcript dQw4w9WgXcQ
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts transcript dQw4w9WgXcQ --lang=es
Returns both the full text and timestamped segments for analysis.
Transcript Output Format:
{
"success": true,
"data": {
"language": "en",
"text": "Full transcript text joined together...",
"segments": [
{ "start": 0.16, "text": "First segment text" },
{ "start": 4.55, "text": "Second segment text" },
...
],
"segmentCount": 566
}
}
Use segment timestamps to create deep links to specific moments in videos:
URL Format: https://www.youtube.com/watch?v={videoId}&t={seconds}s
Examples:
https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=120shttps://www.youtube.com/watch?v=dQw4w9WgXcQ&t=3661sConverting segment.start to link:
segment.start = 289.12
videoId = "rHdMviAhDtE"
link = https://www.youtube.com/watch?v=rHdMviAhDtE&t=289s
Markdown format for summaries:
[4:49](https://www.youtube.com/watch?v=rHdMviAhDtE&t=289s) - Eddie Bauer review starts
Helper: Convert seconds to MM:SS or HH:MM:SS:
4:49 (Math.floor(289/60) + ":" + (289%60).toString().padStart(2,'0'))1:01:01# Download video (best quality)
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts download dQw4w9WgXcQ
# Download to specific directory
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts download dQw4w9WgXcQ --output=./videos
# Download specific quality
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts download dQw4w9WgXcQ --format=720p
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts download dQw4w9WgXcQ --format=mp4
# Extract audio only (MP3)
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts download dQw4w9WgXcQ --audio-only
# Download with subtitles
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts download dQw4w9WgXcQ --subtitles --sub-lang=en
# Download entire playlist
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-playlist "https://youtube.com/playlist?list=PL..."
# Download first 5 videos
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-playlist "https://youtube.com/playlist?list=..." --max=5
# Download videos 10-20
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-playlist "https://youtube.com/playlist?list=..." --start=10 --end=20
# Download as audio
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts dl-playlist "https://youtube.com/playlist?list=..." --audio-only --output=./music
| Option | Description |
|---|---|
--output=DIR | Output directory (default: current) |
--format=FMT | Format: best, mp4, 720p, 480p, 360p |
--audio-only | Extract audio as MP3 |
--subtitles | Download subtitles with video |
--sub-lang=LANG | Subtitle language code (default: en) |
--max=N | Max videos for playlist download |
--start=N | Start from video N in playlist |
--end=N | End at video N in playlist |
Video IDs are the 11-character code in YouTube URLs:
https://www.youtube.com/watch?v=dQw4w9WgXcQ → ID is dQw4w9WgXcQhttps://youtu.be/dQw4w9WgXcQ → ID is dQw4w9WgXcQChannels can be referenced by:
@mkbhdUCXuqSBlHAE6Xw-yeJA0Tunwhttps://youtube.com/@mkbhdAll commands return JSON with success and data fields.
npx tsx ${CLAUDE_PLUGIN_ROOT}/skills/youtube/scripts/youtube.ts --help
For comprehensive summaries of a channel's recent videos (with transcripts, key points, and external links), see CHANNEL-SUMMARY.md in this skill directory.
Quick workflow:
pnpm run youtube dl-channel "@channelname" --max=10This workflow is ideal for: