video-summarizer — скилл для Claude Code: что делает и как установить
Скачивает видео и аудио с веб-сайтов через yt-dlp, извлекает субтитры или распознаёт речь через faster-whisper и собирает текстовое саммари.
npx skills add liang121/video-summarizer --skill video-summarizer -a claude-codeЧто делает video-summarizer
Скилл автоматизирует разбор роликов с видеохостингов через yt-dlp. Он сохраняет исходный файл в MP4 с качеством до 1080p, извлекает аудиодорожку в MP3 и забирает готовые субтитры. Если субтитров нет, запускается скрипт параллельной транскрипции на базе faster-whisper, который делит аудиозапись по паузам и расшифровывает речь. Итоговый текст форматируется в Markdown-отчёт по шаблону.
Внутри связка полагается на утилиту uv, которая управляет Python-окружением, а также скрипт проверки ffmpeg и yt-dlp. Все материалы складываются в папку downloads в текущем каталоге. Если сервис требует авторизацию, скилл умеет подтягивать cookies из браузера.
Для работы транскрипции при первом запуске потребуется загрузка модели Whisper, поэтому на машине должен быть доступ к сети и свободное место.
Какие задачи решает
- скачать видео и аудиодорожку с видеохостинга
- извлечь субтитры или транскрибировать речь через faster-whisper
- подготовить структурированный конспект ролика в формате Markdown
- обойти ограничения авторизации на сайтах через cookies браузера
Примеры запросов агенту
- Скачай это видео и сделай краткий конспект: <ссылка>
- Извлеки аудиодорожку и расшифруй речь из ролика: <ссылка>
- Сделай саммари видео по ссылке: <ссылка>
Как установить video-summarizer
1Через Skills CLI (Vercel)
npx skills add liang121/video-summarizer --skill video-summarizer -a claude-code2Вручную: положить файлы
~/.claude/skills/video-summarizer/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/video-summarizer/
1Через Skills CLI (Vercel)
npx skills add liang121/video-summarizer --skill video-summarizer -a codex2Вручную: положить файлы
.agents/skills/video-summarizer/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add liang121/video-summarizer --skill video-summarizer -a cursor2Вручную: положить файлы
.cursor/skills/video-summarizer/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install liang121/video-summarizer video-summarizer2Вручную: положить файлы
.github/skills/video-summarizer/SKILL.md1Через Skills CLI (Vercel)
npx skills add liang121/video-summarizer --skill video-summarizer -a gemini-cli2Командой платформы
gemini skills install https://github.com/liang121/video-summarizer --path skills/video-summarizerВручную: положить файлы
.devin/skills/video-summarizer/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add liang121/video-summarizer --skill video-summarizer -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Похожие
Рядом в теме «Заметки, задачи и проекты»
Всё по теме «Заметки, задачи и проекты» →Вопросы о video-summarizer
Как установить video-summarizer в Claude Code?
Установите скилл командой npx skills add liang121/video-summarizer --skill video-summarizer -a claude-code.
Что делает video-summarizer?
Скилл скачивает видео и аудио через yt-dlp, извлекает субтитры либо выполняет локальную транскрипцию через faster-whisper, после чего формирует саммари в Markdown.
Какие зависимости нужны для работы скилла?
Вспомогательный скрипт автоматически ставит uv, yt-dlp и ffmpeg, а библиотеки Python запускаются через uv.
Исходный текст
SKILL.md · MIT
---
name: video-summarizer
description: "Download videos from 1800+ platforms (YouTube, Bilibili, Twitter/X, TikTok, Vimeo, Instagram, etc.) and generate complete resource package with video, audio, subtitles, and AI summary. Actions: summarize, download, transcribe, extract video content. Platforms: youtube.com, bilibili.com, twitter.com, x.com, tiktok.com, vimeo.com, instagram.com, twitch.tv. Outputs: MP4 video, MP3 audio, VTT subtitles with timestamps, TXT transcript, MD AI summary. Auto-installs uv, yt-dlp, ffmpeg. Python dependencies managed by uv."
---
# Video Summarizer
## Overview
Download videos from any platform and generate a complete resource package including:
- Original video file (mp4)
- Audio file (mp3)
- Subtitle file (with timestamps, vtt/srt format)
- Summary file (summary.md)
Supports all 1800+ websites supported by yt-dlp.
## Trigger Conditions
When the user:
- Provides a video link and asks for a summary
- Says "summarize this video", "what's in this video"
- Asks to "extract video content", "transcribe video"
- Says "download this video"
- Provides a link from YouTube/Bilibili/Twitter/Vimeo/TikTok etc.
## Supported Platforms
- YouTube (youtube.com, youtu.be)
- Bilibili (bilibili.com, b23.tv)
- Twitter/X (x.com, twitter.com)
- Vimeo (vimeo.com)
- TikTok (tiktok.com)
- Instagram (instagram.com)
- Twitch (twitch.tv)
- And 1800+ other platforms (all sites supported by yt-dlp)
## Output Structure
All files are saved to `downloads/<video-title>/` in the **current working directory**:
```
./downloads/
└── <video-title>/
├── video.mp4 # Original video
├── audio.mp3 # Extracted audio
├── subtitle.vtt # Subtitles with timestamps
├── transcript.txt # Plain text transcript (no timestamps)
└── summary.md # Structured summary
```
## Workflow
### Step 1: Install Dependencies
Run the install script to check and install all dependencies:
```bash
bash "$SKILL_DIR/scripts/install_deps.sh"
```
This installs: uv (Python package manager), ffmpeg, yt-dlp, and checks Python version.
faster-whisper will be automatically managed by uv.
### Step 2: Get Video Info and Create Output Directory
```bash
# Get video title (sanitize special characters for folder name)
TITLE=$(yt-dlp --print "%(title)s" "VIDEO_URL" | sed 's/[/:*?"<>|]/_/g' | cut -c1-80)
DURATION=$(yt-dlp --print "%(duration)s" "VIDEO_URL")
# Create output directory
OUTPUT_DIR=./downloads/"$TITLE"
mkdir -p "$OUTPUT_DIR"
```
### Step 3: Download Video and Audio
```bash
# Download video (mp4 format, best quality up to 1080p)
yt-dlp -f "bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080][ext=mp4]/best" \
--merge-output-format mp4 \
-o "$OUTPUT_DIR/video.%(ext)s" "VIDEO_URL"
# Extract audio (mp3 format)
yt-dlp -x --audio-format mp3 -o "$OUTPUT_DIR/audio.%(ext)s" "VIDEO_URL"
```
### Step 4: Get Subtitles
**Priority order:**
1. **Try downloading manual subtitles (best quality)**
```bash
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
```
2. **Try downloading auto-generated subtitles**
```bash
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
```
3. **Use faster-whisper transcription when no subtitles available**
```bash
uv run "$SKILL_DIR/scripts/parallel_transcribe.py" \
--input "$OUTPUT_DIR/audio.mp3" \
--output-dir "$OUTPUT_DIR" \
--model small \
--language auto
```
The script automatically:
- Splits long audio files at silence points
- Uses multiple CPU cores for parallel transcription
- Outputs both `subtitle.vtt` and `transcript.txt`
**Transcription Options**:
| Option | Default | Description |
|--------|---------|-------------|
| `--model` | small | tiny/base/small/medium/large-v3 |
| `--language` | auto | Language code or 'auto' |
| `--workers` | CPU/2 | Number of parallel workers |
| `--min-segment` | 60 | Min duration (sec) to enable splitting |
### Step 5: Generate Plain Text Transcript
If subtitles were downloaded (not transcribed), convert to plain text:
```bash
if [[ ! -f "$OUTPUT_DIR/transcript.txt" ]]; then
SUBTITLE_FILE=$(ls "$OUTPUT_DIR"/*.vtt "$OUTPUT_DIR"/*.srt 2>/dev/null | head -1)
if [[ "$SUBTITLE_FILE" == *.vtt ]]; then
sed '/^[0-9]/d; /^$/d; /-->/d; /^WEBVTT/d; /^Kind:/d; /^Language:/d; /^NOTE/d' \
"$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
elif [[ "$SUBTITLE_FILE" == *.srt ]]; then
sed '/^[0-9]/d; /^$/d; /-->/d' "$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
fi
fi
```
### Step 6: Generate Summary File
1. Read prompt template from `$SKILL_DIR/reference/summary-prompt.md`
2. Replace placeholders: `{{TITLE}}`, `{{PLATFORM}}`, `{{URL}}`, `{{DURATION}}`, `{{LANGUAGE}}`, `{{DOWNLOAD_TIME}}`, `{{TRANSCRIPT}}`
3. Generate summary and save to `$OUTPUT_DIR/summary.md`
## Platform-Specific Handling
### Bilibili
```bash
# Prioritize Chinese subtitles
yt-dlp --sub-lang zh-Hans,zh-Hant,zh ...
# If login required
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
```
### Platforms Requiring Login
```bash
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
# or firefox
yt-dlp --cookies-from-browser firefox "VIDEO_URL"
```
## Error Handling
### Cannot Get Subtitles
Use the parallel transcription script (Step 4, option 3).
### Video Too Long (>1 hour)
1. Ask user if they only need partial content
2. The parallel script handles long files automatically
### Unsupported Platform
```bash
yt-dlp --list-extractors | grep -i "platform-name"
```
## Notes
1. **Storage**: Files saved to `./downloads/` in current working directory
2. **Copyright**: For personal learning use only
3. **Network**: Some platforms may require proxy
4. **First Run**: Whisper model download required (~244MB for small)
5. **Parallel Processing**: Long audio (>60s) auto-splits at silence points
© liang121 · MIT · liang121/video-summarizer