video-production-cli — ИИ-агент монтирует скринкасты через FFmpeg
📂 Исходный код на GitHubGo-CLI для агентного монтажа видео со встроенными скиллами: агент смотрит и слушает запись и выбирает правки, CLI исполняет их через FFmpeg, а финальный рендер делается из исходника после вашего одобрения.
Записать скринкаст — половина дела. Дальше начинаются повторные дубли, неудачные куски в начале и часы перетаскивания клипов на таймлайне. video-production-cli отдаёт эту работу ИИ-агенту: агент просматривает запись, подбирает склейки, собирает предпросмотр, а вы смотрите его и решаете, годится ли монтаж.
Проект открытый, написан на Go и распространяется по лицензии MIT. Разделение ролей простое: решает агент, исполняет CLI. Агент смотрит и слушает видео и выбирает, где резать. CLI делает выбранное через FFmpeg.
Какой агент нужен
Автор советует брать агента, который умеет смотреть видео и слушать звук напрямую, — например Gemini. Расшифровка речи тут не спасает: по тексту легко найти фразу, но невозможно понять, не отрезает ли склейка половину слова, не ломает ли она подачу и не убирает ли что-то важное с экрана. Агент с «глазами и ушами» сам видит и слышит, что происходит в месте стыка.
Установка
Понадобятся Go 1.27.1+, make и FFmpeg с ffprobe версии 7 или новее в PATH. CLI работает локально; агента и доступ к модели вы приносите с собой.
git clone https://github.com/timurkhakhalev/video-production-cli.git
cd video-production-cli
make install
Бинарник ставится в ~/.local/bin. Проверить окружение можно так:
video-production-cli doctor
Затем установите встроенный скилл для своего агента:
video-production-cli skills install --agent gemini
Кроме gemini поддерживаются claude, agy2 и codex; команда без аргумента ставит скилл всем поддерживаемым агентам сразу. Скилл ссылается на инструкции внутри бинарника, поэтому они всегда совпадают с установленной версией.
Как отдать запись агенту
Откройте сессию агента с доступом к записи и вставьте короткое задание:
Edit /path/to/lesson.mp4 with video-production-cli.
First read: video-production-cli skills get core
Remove false starts, repeated takes and long pauses.
Keep the complete explanations and the on-screen demo steps.
Watch and listen to the footage; use the transcript only as a guide.
Check every splice for clipped words and abrupt visual changes.
Use full review mode and send me a preview before the final render.
Длинный урок удобнее разбить на части: для этого есть режим step, где монтаж проверяется кусками. Для короткой записи подойдёт режим full — вся правка проверяется сразу. Скажите агенту, какие фрагменты важны, что выбросить и какие паузы превратить в ускоренные отрывки без звука.
Перед финальным рендером вы смотрите предпросмотр и одобряете правку. Замечания агент вносит по таймкодам из предпросмотра, а CLI сопоставляет их с исходной записью.
Что происходит внутри
Ваша запись + задание
↓
Агент смотрит и слушает → пробует склейки → проверяет каждый стык
↓
Предпросмотр → ваши правки → одобрение
↓
Финальный рендер из исходника + отчёт с проверками
| Задача | Что CLI даёт агенту |
|---|---|
| Вырезать дубль, не задев следующую фразу | Прослушивание аудио, пробные склейки, короткие аудиофрагменты |
| Проверить, что видно на экране в месте склейки | Облегчённые копии видео, раскадровки, пары полноразмерных кадров |
| Выбрать куски из длинного выступления | Диапазоны сохранения: оставить выбранное, выкинуть остальное |
| Ускорить паузу или нудный шаг | Таймлапсы без звука — только по явной просьбе |
| Продолжить незаконченный монтаж | Файл edit.json со склейками, причинами, статусом проверки и заметками |
| Проверить готовый файл | Длительность, число кадров, согласованность звука и видео, выборочные кадры |
Финальный ролик собирается из исходной записи, а не из рабочих копий. После рендера CLI пишет отчёт .verify.json. Он дополняет просмотр готового файла, но не заменяет его.
Попробовать руками
video-production-cli init /path/to/lesson.mp4
cd /path/to/lesson-edit
video-production-cli mode full
video-production-cli status
# Inspect the first minute of the source.
video-production-cli proxy 0 60
# Try a cut without changing the edit. Open and listen to the resulting clip.
# These times are examples: choose boundaries from your own recording.
video-production-cli listen --try 12.4 16.8
# After checking it, save the cut with a reason.
video-production-cli cuts add 12.4 16.8 --reason "Remove the abandoned first take"
# Inspect every join, then render a preview for review.
video-production-cli joins
video-production-cli frames --join 1
video-production-cli listen --join 1
video-production-cli preview
Посмотрели предпросмотр и одобрили правку — остаётся собрать финал:
video-production-cli chunks set all approved
video-production-cli final
Нужны только пара фрагментов из длинной записи? Начните с диапазонов сохранения:
video-production-cli init talk.mp4 --workdir short-edit \
--keep 100 150 --keep 200 220
Это оставит куски 1:40–2:30 и 3:20–3:40. Дальше их можно подрезать и проверять склейки. Инструмент выбирает кадры, но не перекраивает видео под вертикальный формат.
Границы инструмента
Это стадия чернового монтажа: вырезать лишнее, склеить части записи с совпадающими настройками, ускорить паузы. Титры, эффекты, переходы, зум, вертикальные форматы и чистка звука — отдельный финальный этап в другом редакторе.
Рендер работает с исходниками H.264/AAC. На старте инструмент отклоняет записи с переменной частотой кадров, с ненулевым временем начала потока и части записи с разными настройками. Перед началом запустите doctor — он проверит установку FFmpeg.
Зачем автор его сделал
Автор записывает обучающие скринкасты. Монтаж был тем местом, из-за которого он откладывал запись: час видео мог означать дни в редакторе. Нанятый монтажёр помогал, но склейки всё равно приходилось объяснять словами, собирать таймкоды и внимательно проверять результат.
Первая версия на ИИ работала через расшифровку речи: агент монтировал по тексту, и склейки выходили грубыми. Переход на Gemini, который смотрит и слышит запись сам, всё изменил. Инструмент начинался как обёртка на Python вокруг FFmpeg со скиллом-инструкцией, а после реальных уроков вырос в этот Go-CLI с проверкой каждой склейки и обязательным предпросмотром.
Команды и разработка
У каждой команды есть --help, а с флагом --json — машиночитаемый вывод. Команды сами находят edit.json в текущей папке или в единственной вложенной папке *-edit; можно указать файл явно через --edit PATH.
video-production-cli skills get core --full # Workflow, commands and edit.json schema
video-production-cli skills list # Cutting, audio, speed-ups, shorts and review
video-production-cli --help
Для сборки и проверок:
make build # Build bin/video-production-cli
make test # Unit, CLI and golden tests
make test-e2e # End-to-end checks on synthetic media; needs FFmpeg / ffprobe
make vet
Все тестовые файлы синтетические: python3 testdata/generate_fixtures.py пересоздаёт видео для тестов, а make golden — эталонные результаты (Python 3.9+ нужен только для тестов).
Лицензия — MIT.