# Reels Console

> Edit a vertical reel (Reels, Shorts, TikTok) out of one static take — entirely in the console, no CapCut. Cuts pauses by speech, slices a single fixed shot into different crop levels anchored to the face, adds push-ins and a motion-blurred punch zoom, drops in B-roll, burns three-level captions from speech recognition, ducks music under the voice. Use when asked to «смонтируй ролик», «собери рилс», «сделай видео динамичным», «нарежь дубль», «поставь субтитры на видео», «убери паузы из видео», edit my talking head video, make this reel dynamic, cut the silences.

- Skill: `gurudevvv/reels-console` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add gurudevvv/reels-console`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gurudevvv/reels-console/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: GuruDevvv (https://skillmd.com/u/gurudevvv)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/gurudevvv/reels-console

---


# Монтаж статичного дубля в консоли

Скилл закрывает разрыв между редакторским гайдом и инструментами: как сделать ролик
динамичным, написано много где, а руки к этому обычно прикладывают в CapCut.
Здесь всё то же самое делает ffmpeg, а решения принимает модель.

**Что на входе:** один дубль, снятый с одной точки, человек говорит в камеру.
**Что на выходе:** вертикальный ролик 1080×1920 с вырезанными паузами, сменой
крупности, титрами и сведённым звуком.

## Четыре приёма, на которых всё держится

Зритель скучает не потому, что человек стоит на месте, а потому, что картинка
долго не меняется. Цель монтажа — менять её каждые 1,5–3 секунды. Для этого хватает:

1. **Смена крупности** — из одного кадра вырезаются общий, средний и крупный планы.
2. **Перебивки (B-roll)** — отдельно снятые детали поверх речи.
3. **Титры с акцентами** — основная масса мелко, 2–4 главных слова крупно, одно цветом.
4. **Звуковые акценты** — музыка тише голоса, короткие звуки на события.

## Порядок работы

### Шаг 1. Посмотреть план до рендера

```bash
python scripts/reel.py дубль.mp4 --dry-run
```

Скрипт напечатает, сколько пауз нашёл, где лицо, **до какой крупности можно
приближаться** и как он собирается нарезать дубль. Это самое важное место:
если предельная крупность около 1,0, дубль снят слишком близко, приём смены
крупности не сработает вообще, и лучше сказать об этом человеку сразу, а не
показывать ему потом ролик, в котором картинка не меняется.

### Шаг 2. Выбрать акцентные слова

Их выбирает модель или человек, не скрипт. Прочитайте расшифровку
(`<дубль>-work/words.json` появляется после первого прогона) и возьмите:

- **2–4 акцентных слова** — те, ради которых сказана фраза;
- **одно слово-призыв** — то, что зритель должен написать в комментариях или запомнить.

Не выделяйте служебные слова и не ставьте больше одного цветного слова на ролик:
если выделено всё, не выделено ничего.

### Шаг 3. Собрать

```bash
python scripts/reel.py дубль.mp4 -o ролик.mp4 \
  --accent впервые главное результат --cta подпишись \
  --broll руки.mp4@7.5:1.8 --broll лицо.mp4@12.5:1.2 \
  --music бит.mp3 --whoosh вжух.wav --pop поп.wav
```

Перебивка пишется как `файл@секунда:длительность` по таймлайну **готового** ролика
(после вырезания пауз). Музыка, звуки и перебивки необязательны.

### Шаг 4. Посмотреть глазами

Рядом с роликом появляется раскадровка `<ролик>-sheet.png` — двенадцать кадров
в одной картинке. Открывайте её, а не сам файл: по ней за один взгляд видно,
меняется ли картинка, не срезана ли макушка, не закрывают ли титры лицо.
Отдельный инструмент для просмотра видео для этого не нужен.

### Шаг 5. Проверить по списку

- [ ] Картинка меняется каждые 1,5–3 секунды.
- [ ] Есть минимум три крупности; наезды — на главное, отъезд — перед финалом.
- [ ] Перебивки стоят на словах, которые иллюстрируют.
- [ ] Титры не закрывают лицо и не уезжают под интерфейс соцсети.
- [ ] Выделено 2–4 слова, цветом — одно.
- [ ] Музыка тише голоса, звуки не чаще раза в 2–3 секунды.
- [ ] Ролик понятен без звука.

## Что скрипт решает сам, а что нет

**Сам:** где паузы и сколько от них оставить; где лицо и куда его поставить в кадре;
до какой крупности можно приближаться; где границы планов (по паузам между словами);
какой план чем разбавить; тайминги титров (и пересчёт их после вырезания пауз).

**Не сам, и не должен:** какой дубль лучше; какое слово главное; в какой момент
нужен наезд; что показать перебивкой; что вообще стоит говорить. Это работа человека
или ваша как модели — договоритесь об этом до сборки, а не после.

## Требования

- ffmpeg и ffprobe в PATH (сборка с libx264, `subtitles`, `zoompan`, `sidechaincompress`).
- `pip install openai-whisper opencv-python insightface onnxruntime` — whisper нужен
  для титров, остальное для привязки кропа к лицу. Без них скрипт работает,
  но титров не будет, а кроп пойдёт от центра кадра.
- Шрифт с кириллицей для титров (по умолчанию Arial и Arial Black).

## Съёмка, без которой монтаж не получится

1. **Запас вокруг человека.** Снимать надо так, чтобы было видно по пояс, с воздухом
   сверху и по бокам. Если лицо занимает половину кадра, приближаться некуда
   и главный приём пропадает. Встать от камеры на 1,5–2 метра.
2. **Вертикально и в 4K.** Из вертикального 4K (2160 точек в ширину) можно приблизиться
   вдвое без потери качества. Если снять горизонтально и вырезать вертикаль,
   в ней останется 1215 точек и запаса почти не будет — совет «снимай горизонтально,
   потом вырежешь» работает только для горизонтального ролика.
3. **Текст по фразам, дублями.** Говорить фразу 2–3 раза подряд; лишнее уберётся,
   стыки спрячутся сменой крупности.
4. **После основного плана — 2–3 детали:** руки, эмоция, предмет. Каждую с новой точки.

## Подробности

`references/recipes.md` — все команды ffmpeg по отдельности, с замерами и граблями:
почему `crop` не умеет менять размер во времени, как сделать настоящий смаз движения
на ударном наезде, почему `amix` без `normalize=0` съедает голос, что ломается
в путях у фильтра `subtitles`.

