Watch Video — визуальный разбор видео
Отличие от youtube-transcript/deepgram: те дают только ТЕКСТ. Здесь агент получает кадры с таймкодами как изображения + транскрипт — и отвечает на вопросы про то, что на экране (слайды, UI, демо, код, графики).
Пайплайн (всё уже установлено: yt-dlp, ffmpeg, whisper/Deepgram)
- Скачать (или взять локальный файл):
yt-dlp -f "bv*[height<=720]+ba/b[height<=720]" --write-auto-subs --sub-langs "ru,en" -o "%(id)s.%(ext)s" <URL>
Нативные субтитры (--write-auto-subs) — бесплатный транскрипт; Whisper/Deepgram — только если субтитров нет.
- Извлечь кадры ffmpeg по выбранному режиму (ниже), в
scratchpad/<video-id>/frames/.
- Ужать кадры до ширины 512px (лимит-friendly для image-input):
ffmpeg -i frame.png -vf "scale=512:-2" frame_s.jpg
Имя файла = таймкод (frame_03m15s.jpg) — чтобы ссылаться на момент.
- Дедуп статичных кадров (говорящая голова, застывший слайд) — перцептуальное сравнение или просто реже sample.
- Read кадры (Claude читает изображения) + транскрипт с таймкодами → ответ со ссылками на MM:SS.
4 режима токен-бюджета
| Режим |
Извлечение |
Кадров |
~img-токенов |
Когда |
| transcript |
без кадров, только субтитры/Whisper |
0 |
0 |
Вопрос по содержанию речи — это режим youtube-transcript |
| efficient |
быстрые keyframes (I-frames) |
≤50 |
~10K |
Быстрый визуальный обзор: «о чём ролик, что показывают» |
| balanced (дефолт) |
scene-change detection |
≤100 |
~20K |
Разбор вебинара/демо: слайды, переходы, UI |
| token-burner |
scene-aware без лимита кадров |
все сцены |
~23K+ |
Плотный разбор: каждый слайд/экран важен (конкурентный teardown) |
Команды ffmpeg:
# efficient — только keyframes
ffmpeg -skip_frame nokey -i in.mp4 -vsync vfr -frame_pts 1 frames/kf_%04d.png
# balanced / token-burner — по смене сцены (порог 0.3; burner: 0.2 и без head-лимита)
ffmpeg -i in.mp4 -vf "select='gt(scene,0.3)',showinfo" -vsync vfr frames/sc_%04d.png
# равномерный fallback (нет явных сцен): 1 кадр в N сек, потолок 2 fps
ffmpeg -i in.mp4 -vf "fps=1/10,scale=512:-2" frames/u_%04d.jpg
Таймкоды кадров — из showinfo (pts_time в stderr) либо из fps-арифметики.
Опции разбора
--start/--end: сначала ffmpeg -ss <start> -to <end> -c copy cut.mp4 — режь ДО извлечения кадров, экономит всё.
- Текст на экране мелкий (код, таблицы) → scale 768–1024px вместо 512 только для нужных кадров.
- Длинное видео (>30 мин) → сначала transcript-режим, найди интересные диапазоны, потом balanced только на них.
Когда что
- Разбор вебинара со слайдами, teardown конкурентного YouTube, «что за продукт в ролике», проверка своего видео перед публикацией → этот скилл.
- Чисто «что сказали» →
youtube-transcript / deepgram.
- Скачать и всё →
video-downloader.
- Тренд-скан превью/хуков →
trend-engine (сюда — когда нужно заглянуть внутрь ролика).
1---2name: watch-video3description: Агент «смотрит» видео: кадры с таймкодами + транскрипт. Триггеры: «посмотри видео», «что показывают на экране», «разбери вебинар со слайдами». НЕ текст→youtube-transcript.4---56# Watch Video — визуальный разбор видео78Отличие от youtube-transcript/deepgram: те дают только ТЕКСТ. Здесь агент получает **кадры с таймкодами как изображения** + транскрипт — и отвечает на вопросы про то, что на экране (слайды, UI, демо, код, графики).910## Пайплайн (всё уже установлено: yt-dlp, ffmpeg, whisper/Deepgram)11121. **Скачать** (или взять локальный файл):13 ```bash14 yt-dlp -f "bv*[height<=720]+ba/b[height<=720]" --write-auto-subs --sub-langs "ru,en" -o "%(id)s.%(ext)s" <URL>15 ```16 Нативные субтитры (`--write-auto-subs`) — бесплатный транскрипт; Whisper/Deepgram — только если субтитров нет.172. **Извлечь кадры** ffmpeg по выбранному режиму (ниже), в `scratchpad/<video-id>/frames/`.183. **Ужать кадры** до ширины 512px (лимит-friendly для image-input):19 ```bash20 ffmpeg -i frame.png -vf "scale=512:-2" frame_s.jpg21 ```22 Имя файла = таймкод (`frame_03m15s.jpg`) — чтобы ссылаться на момент.234. **Дедуп** статичных кадров (говорящая голова, застывший слайд) — перцептуальное сравнение или просто реже sample.245. **Read кадры** (Claude читает изображения) + транскрипт с таймкодами → ответ со ссылками на MM:SS.2526## 4 режима токен-бюджета2728| Режим | Извлечение | Кадров | ~img-токенов | Когда |29|-------|-----------|--------|--------------|-------|30| **transcript** | без кадров, только субтитры/Whisper | 0 | 0 | Вопрос по содержанию речи — это режим youtube-transcript |31| **efficient** | быстрые keyframes (I-frames) | ≤50 | ~10K | Быстрый визуальный обзор: «о чём ролик, что показывают» |32| **balanced** (дефолт) | scene-change detection | ≤100 | ~20K | Разбор вебинара/демо: слайды, переходы, UI |33| **token-burner** | scene-aware без лимита кадров | все сцены | ~23K+ | Плотный разбор: каждый слайд/экран важен (конкурентный teardown) |3435Команды ffmpeg:3637```bash38# efficient — только keyframes39ffmpeg -skip_frame nokey -i in.mp4 -vsync vfr -frame_pts 1 frames/kf_%04d.png4041# balanced / token-burner — по смене сцены (порог 0.3; burner: 0.2 и без head-лимита)42ffmpeg -i in.mp4 -vf "select='gt(scene,0.3)',showinfo" -vsync vfr frames/sc_%04d.png4344# равномерный fallback (нет явных сцен): 1 кадр в N сек, потолок 2 fps45ffmpeg -i in.mp4 -vf "fps=1/10,scale=512:-2" frames/u_%04d.jpg46```4748Таймкоды кадров — из `showinfo` (pts_time в stderr) либо из fps-арифметики.4950## Опции разбора5152- `--start/--end`: сначала `ffmpeg -ss <start> -to <end> -c copy cut.mp4` — режь ДО извлечения кадров, экономит всё.53- Текст на экране мелкий (код, таблицы) → scale 768–1024px вместо 512 только для нужных кадров.54- Длинное видео (>30 мин) → сначала transcript-режим, найди интересные диапазоны, потом balanced только на них.5556## Когда что5758- Разбор вебинара со слайдами, teardown конкурентного YouTube, «что за продукт в ролике», проверка своего видео перед публикацией → этот скилл.59- Чисто «что сказали» → `youtube-transcript` / `deepgram`.60- Скачать и всё → `video-downloader`.61- Тренд-скан превью/хуков → `trend-engine` (сюда — когда нужно заглянуть внутрь ролика).