Extract structured data from YouTube videos, channels, and playlists for content research. Powered by yt-dlp — no API key required.
Version: 1.2.0
Prerequisite: yt-dlp >= 2024.01.01, jq (optional, for JSON formatting)
When user provides a YouTube URL or asks about YouTube content research, use this skill.
# macOS
brew install yt-dlp
# pip
pip install yt-dlp
# Verify
yt-dlp --version
Extract title, channel, stats, description, tags, and available formats.
yt-dlp --dump-json --no-playlist --skip-download "URL"
Parse key fields from JSON output:
| Field | JSON path |
|---|---|
| ------- | ----------- |
| Title | .title |
| Channel | .channel / .uploader |
| Channel URL | .channel_url |
| Upload date | .upload_date (YYYYMMDD → reformat to YYYY-MM-DD) |
| Duration | .duration (seconds → convert to H:MM:SS) |
| Views | .view_count |
| Likes | .like_count |
| Comment count | .comment_count |
| Description | .description |
| Tags | .tags[] |
| Categories | .categories[] |
| Thumbnail | .thumbnail |
| Available heights | .formats[].height (deduplicate, filter where .vcodec != "none") |
Output format: Present as a Markdown table with key stats, followed by description and tags sections.
List available languages:
yt-dlp --list-subs --no-playlist --skip-download "URL"
Download subtitles as SRT:
yt-dlp --skip-download --no-playlist \
--write-sub --write-auto-sub \
--sub-lang en \
--sub-format vtt --convert-subs srt \
-o "/tmp/yt-sub-%(id)s.%(ext)s" "URL"
After download, read the .srt file and clean it:
^\d+$)^\d{2}:\d{2}:\d{2})<[^>]+>)Output format: [HH:MM:SS] subtitle text — one line per caption segment.
Replace en with user's requested language code. Common codes: en, zh-Hans, zh-Hant, ja, ko, es, fr, de, pt, ru.
yt-dlp --dump-json --no-playlist --skip-download \
--write-comments \
--extractor-args "youtube:max_comments=20,all,100,0" "URL"
Parse comments from JSON: .comments[] array, each with:
| Field | JSON path |
|---|---|
| ------- | ----------- |
| Author | .author |
| Text | .text |
| Likes | .like_count |
| Pinned | .is_pinned |
| Hearted | .is_favorited |
Sort by .like_count descending. Adjust max_comments=N for custom count.
Output format: Numbered list with author, like count, and quoted text.
yt-dlp --flat-playlist --dump-json "PLAYLIST_URL"
Output is one JSON object per line. Parse each for:
.title, .duration, .view_count, .url (or .id).url is just an ID, prefix with https://www.youtube.com/watch?v=Output format: Table with columns: #, Title, Duration, Views.
yt-dlp --flat-playlist --dump-json --playlist-end 20 "CHANNEL_URL/videos"
Append /videos to channel URL if not present. Parse same fields as playlist.
Output format: Table with columns: #, Title, Duration, Views, Date.
{n/1M:.1f}M (e.g. 1754100000 → "1754.1M"){n/1K:.1f}K (e.g. 18900 → "18.9K")When user provides a YouTube URL:
When user asks to analyze a video:
When user asks to download a video:
--list to check available languages, or try auto-generated captionsYouTube Research Kit is an open-source project by SnapVee.
共 1 个版本