Video Download & Subtitle Generation
This skill downloads videos from 1800+ websites and generates subtitles using Faster Whisper AI.
Supported Websites
This skill supports downloading from virtually any video website thanks to yt-dlp. Some popular ones include:
Video Platforms:
- YouTube, YouTube Shorts
- Bilibili (哔哩哔哩), Niconico (ニコニコ動画)
- TikTok, Douyin (抖音)
- Twitter/X, Facebook, Instagram
- Vimeo, Dailymotion
- Twitch (clips, VODs), Kick
- Rutube, VK Video
Chinese Platforms:
- iQiyi (爱奇艺), Youku (优酷), MangoTV (芒果TV)
- Weibo Video, Douyu (斗鱼), Huya (虎牙)
International:
- Netflix, Disney+, HBO Max, Amazon Prime Video
- BBC iPlayer, ITV, Channel 4
- ARD, ZDF, Arte
For the complete list of 1800+ supported sites, see: yt-dlp supported extractors
Local document about supported sites: references/supportedsites.md
Important: If you see an error like Sign in to confirm you’re not a bot, you should use the cookiefile parameter for authenticated downloads. See the cookiefile usage section at the end of this document.
Prerequisites
Ensure the following Python packages are installed:
yt-dlp - For downloading videos from any supported site
yt-dlp-ejs - External JavaScript for yt-dlp supporting many runtimes
ffmpeg-python - For audio extraction
faster-whisper - For speech-to-text transcription (faster and more memory-efficient than openai-whisper). Note: The first run will download models from HuggingFace (default: small, ~3GB). A VPN is required for mainland China users.
tqdm - For progress bar display during transcription
Install via pip:
pip install yt-dlp yt-dlp-ejs ffmpeg-python faster-whisper tqdm
ffmpeg must also be installed on your system
Usage
Command Line
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads"}'
Parameters
| Parameter | Type | Required | Description |
|---|
urls | array | Yes | List of video URLs from any supported website |
output | string | No | Output directory (default: "./downloads") |
model | string | No | Faster Whisper model size: tiny, base, small, medium, large, large-v2, large-v3, turbo (default: "small") |
transcribe | boolean | No | Whether to transcribe video to subtitle (default: true) |
subtitle_format | string | No | Subtitle format: txt, srt, vtt, json (default: "txt") |
download_subtitle | boolean | No | Download video's built-in subtitles if available (default: false) |
onlysubtitle | boolean | No | Only download subtitles. When true, the script uses skip_download + writesubtitles + writeautomaticsub internally (default: false) |
overwrite_subtitle | boolean | No | Overwrite existing subtitle files (default: true, set to false to skip if exists) |
cookie | string | No | Cookie header string; injected into http_headers.Cookie (default: "") |
cookiesfrombrowser | string | No | Read cookies from browser (default: ""; injected only when non-empty) |
cookiefile | string | No | Netscape-format cookie file path (default: ""; injected only when non-empty) |
Output
The skill will:
- Create a folder for each video (named after the video title)
- Download the video file to that folder
- Extract audio as WAV file
- Generate transcript using Faster Whisper
- Save subtitle as .txt file
Output structure:
downloads/
└── Video Title/
├── Video Title.mp4
├── Video Title.wav
└── Video Title.txt
Examples
Download YouTube video:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"output":"./my_videos"}'
Download Bilibili video:
python scripts/video_parser.py '{"urls":["https://www.bilibili.com/video/BV1xx411c7XD"],"output":"./downloads"}'
Download TikTok video:
python scripts/video_parser.py '{"urls":["https://www.tiktok.com/@username/video/1234567890"],"output":"./tiktok"}'
Download multiple videos from different sites:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO1","https://www.bilibili.com/video/BV1xx","https://twitter.com/user/status/123"],"output":"./videos"}'
Download Twitch clip:
python scripts/video_parser.py '{"urls":["https://www.twitch.tv//channel/clip/ClipName"],"output":"./clips"}'
Download only (without transcription):
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","transcribe":false}'
Generate SRT subtitle:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","subtitle_format":"srt"}'
Generate VTT subtitle:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","subtitle_format":"vtt"}'
Download video with built-in subtitles:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","download_subtitle":true}'
Download with custom Faster Whisper model:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","model":"large"}'
Skip transcription if subtitle already exists:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","overwrite_subtitle":false}'
Download video with Cookie:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","cookie":"sid=xxx; token=yyy"}'
Download video with cookies from browser:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","cookiesfrombrowser":"chrome"}'
Download video with cookie file:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","cookiefile":"/path/to/cookies.txt"}'
Only download subtitles:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","onlysubtitle":true,"cookiefile":"/path/to/cookies.txt"}'
cookiefile usage:
python scripts/video_parser.py '{"urls":["https://www.youtube.com/watch?v=VIDEO_ID"],"output":"./downloads","cookiefile":"/Users/yourname/Downloads/cookies.txt"}'
Troubleshooting
- ffmpeg not found: Install ffmpeg via
brew install ffmpeg (macOS) or your system's package manager
- Faster Whisper model download fails: Models are downloaded from HuggingFace. Mainland China users need a VPN/proxy to download models. The default small model is ~75MB.
- Download fails: Some videos may be geo-restricted, age-gated, or unavailable. Check the video URL and try again.
- Cookie/auth required: Some sites need authentication. You can pass cookies via yt-dlp options if needed.