Claude Code собирает Reels из одного дубля. Монтаж стоит ноль
Вы снимаете тридцать секунд на телефон. Дальше тишина вырезается сама, кадр режется по границам фраз, субтитры встают пословно, а титры рисует браузер — поэтому в кадре не бывает опечаток. Ни одного обращения к видео-модели, ни подписки, ни вотермарка.
Все цифры замерены на нашем материале и воспроизводимы: комплект лежит в открытом репозитории. Клонируйте, прогоните проверку и монтаж — получите те же числа или напишите нам, что не сошлось.
Дорогая часть рилса — не съёмка
Съёмка — это тридцать секунд перед телефоном. Дорогим ролик делает монтаж: подрезать паузы, поставить титры, сменить крупность, свести это в динамику, за которой досматривают. Именно здесь живут монтажёр, дизайнер и стопка платных программ.
Представьте монтаж как сборочную линию. На ленту кладётся сырьё — одно говорящее видео. Дальше оно проходит станции: на одной речь становится текстом с точным временем каждого слова, на второй считается монтажный лист, на третьей поверх кадра ложится слой титров, на четвёртой куски склеиваются и выравнивается громкость. Роль бригадира — того, кто запускает станции по порядку и следит, чтобы деталь не потерялась, — берёт на себя Claude Code.
И вот главное отличие нашей линии от популярного пути: ни одна станция не обращается к видео-модели. Не потому что мы против генерации — мы её используем точечно и расскажем где. А потому что для монтажа она не нужна, и без неё результат получается точнее и дешевле.
Вы отвечаете только за то, что сказать в кадре. Всё, что делает ролик «смонтированным», собирает связка Claude Code и обычных инструментов — ffmpeg и браузера.
Четыре вещи, и все бесплатные
Здесь у популярного пути стоит список из платного аккаунта видео-модели, зарубежной карты и VPN. У нас этого нет вообще — поэтому и список короче.
Тот самый агент, который ведёт линию. Командуете обычными словами по-русски, программировать не нужно.
Бесплатный инструмент для видео. В версии 8 он умеет ещё и распознавать речь — отдельная программа под это больше не нужна.
Chromium через Playwright. Именно он рисует субтитры и карточки — поэтому текст в кадре всегда без ошибок.
Снять тридцать секунд. Ровный свет от окна, тихая комната, чистый звук.
Всё это ставится один раз. В комплекте есть самопроверка: она проходит по списку и говорит, чего не хватает, человеческим языком.
Снять говорящее видео на телефон
Сырьё для всей линии — один вертикальный ролик секунд на тридцать, где вы просто говорите на камеру. Никакой студии. Важно ровно одно: чистый звук, потому что именно ваш голос останется в финальном ролике. Монтаж добавляется сверху, а звук не трогается вообще.
Сценарий держите по структуре рилса: первая фраза — крючок, середина — суть, финал — призыв. Чем яснее проговорена мысль, тем точнее машина потом расставит титры.
Три рабочих обхода. Запись экрана или горизонтальное видео — кадр ляжет в рамку на размытом фоне, титры встанут сверху и снизу; проверено даже на файле без звука, субтитры не уехали ни на кадр за 39 секунд. Слайд карусели → короткий клип движением камеры. Закадровый голос вместо лица. И честно: если ролик сегодня не выйдет, выпуск соберётся из трёх форматов вместо четырёх, и это нормально. Комплект без ролика лучше, чем комплект с чужим стоком.
Речь превращается в текст с точным временем каждого слова
Первая станция. Распознавание идёт на вашем компьютере, офлайн и бесплатно: в ffmpeg 8 встроен фильтр распознавания речи, работающий на whisper.cpp. Отдельного Python-окружения не нужно — ffmpeg у вас уже стоит, потому что без него не будет монтажа.
Языковая модель весом 490 МБ скачивается один раз и дальше живёт локально. Наш замер: тридцать секунд речи расшифровываются за тринадцать секунд.
Зачем такая точность. Время по словам — это разметка для монтажа. По нему кадр режется по границам фраз, а не по секундомеру: кусок не обрывается на полуслове. Оттуда же берутся паузы, которые надо вырезать, и оттуда же — караоке-субтитры.
Распознавание ошибается на именах, названиях и хвостах фраз. На нашем прогоне «поиском виралок» превратилось в «поиском вера лак». Субтитры берутся ровно из этого файла, слово в слово — и ошибка уехала бы на экран крупными буквами. Файл текстовый, две правки руками решают, тайминги при этом не съезжают.
Монтажный лист: где какая крупность
Здесь популярный путь просит нейросеть нарисовать картинку-раскадровку из шести панелей. У нас этот шаг считает код. В движке заведено двенадцать крупностей и композиций: общий план, средний, крупный, крупный со сдвигом вверх и вбок, уходы влево и вправо, два медленных проезда, спикер в рамке на размытом фоне, кружок-врезка и сплит-экран.
План меняется каждые три-шесть секунд, и соседние крупности никогда не совпадают — это правило зашито в код, а не оставлено на внимательность человека. Из одного статичного дубля, снятого с одной точки, получается смонтированный ролик с движением.
На нашем боевом дубле это выглядит так: вход 43,7 секунды, выход 38,8 — почти пять секунд тишины ушло, и линия поставила 23 кадра вместо одного статичного.
Титры рисует браузер, а не нейросеть
Вот главная развилка. У популярного пути здесь стоит видео-модель: кусок отдают ей вместе с раскадровкой, и она перерисовывает картинку. Мы пробовали. И отказались — не из экономии.
МЫ подавали модели видео, реальные кадры и подробный посекундный промпт с таймкодами. Модель проигнорировала титры целиком: там, где должна была стоять строка кода, в кадре появилось «imgert tlealire». Вывод короткий и дорогой: посекундную раскадровку генеративные видео-модели не выполняют, и текст им поручать нельзя.
Поэтому слой у нас рисует браузер. Монтажный лист превращается в обычную веб-страницу: караоке-субтитры пословно, титры-карточки, плашка хука, мокап терминала или переписки. Playwright открывает её в Chromium, снимает кадры — и они ложатся на видео.
$ node reels/montage/run.mjs my-reel.config.mjs [монтаж] вход: 720×1280, 43.73 сек [монтаж] вырезано тишины: 4.93 сек → ролик 38.80 сек [монтаж] катов: 23 (tight → wide → boxed → mid → …) [монтаж] длительность базы: 38.801 сек, план 38.800 — дрейф 0.03 кадра [монтаж] титров-перекрытий: 2 [монтаж] без лица в кадре: 4.5 сек (11%), самый долгий кусок 2.4 сек [монтаж] кадров оверлея: 1164 за 50.2 сек [монтаж] громкость: замер -26.9 LUFS → приводим к -14 [монтаж] готово: reel.mp4
Что это даёт
Текст в кадре всегда тот, что вы написали. Его не угадывает модель — его верстает браузер. Кириллица, цифры, код в окне терминала: без единой опечатки.
Цена ноль. Ни одного обращения к нейросети, ни подписки, ни вотермарка. Бейдж поверх чужого водяного знака нам не нужен — закрывать нечего.
Прогон повторяемый. Не понравилось оформление — меняете одно слово в настройках и гоните заново. Бесплатно, сколько угодно раз. Именно поэтому ниже у нас восемнадцать вариантов одного дубля, а не три.
Тайминг не плывёт. Слой рисуется по фактической длительности собранной базы, а не по плану. Расхождение — 0,03 кадра, и прогон печатает это число сам, каждый раз.
Мы не перерисовываем мир вокруг спикера. Нужен цех, которого не было, или другой фон за спиной — вёрсткой это не собрать. Здесь чужой путь объективно сильнее, и притворяться, что это не так, глупо.
Генерация у нас есть, но точечная: заменяются одна-две сцены, лицо и голос остаются вашими. Одна сцена b-roll — 7,5 кредита, а не 28, как за премиальный клип. Вставка кладётся в базу до звука и титров, поэтому субтитры ложатся на неё так же, как на снятое. Звук всегда берётся из базы: любая видео-модель портит дорожку, даже когда в запросе написано «сохрани оригинальный звук». Не больше двух сцен на ролик — лицо не должно пропадать дольше трёх секунд. И перед тратой стоит проверка, которая сверяет длину запроса числом: обрезанный запрос выглядит правдоподобно и тратит кредиты полностью.
Сборка и громкость
Куски склеиваются в один вертикальный ролик. Делает это ffmpeg — но не тем способом, который советуют по умолчанию. Простая склейка встык не годится: после смены крупности клипы расходятся по параметрам кадра, и такой список файлов просто не собирается. Поэтому склейка идёт графом фильтров, а сам граф передаётся файлом — иначе на Windows он не влезает в длину командной строки.
Последним идёт звук. Громкость приводится к −14 LUFS в два прохода: сначала замер, потом применение по замеренным числам. Одного прохода мало — площадки принимают ролик по этой шкале, и промах слышен.
На выходе — готовый вертикальный Reels: ваш голос, динамичная картинка, титры и субтитры по смыслу. Ни одной программы для монтажа вы так и не открыли.
Один дубль: слева как снят, справа после линии
Разница не в том, что вы сняли, а в том, кто собирал ролик. Смотрите на правую панель в конце: она гаснет раньше левой ровно на вырезанную тишину.
- скинуть видео в монтажку, подрезать паузы вручную
- набить титры по одному, свести тайминги на глаз
- заказать врезки дизайнеру, ждать, править
- к ночи готов один ролик. Иногда
- вы: смонтируй этот дубль рилсом
- агент: расшифровал, вырезал 4,93 сек тишины, поставил 23 ката
- агент: готово, дрейф 0,03 кадра — посмотрите контрольные кадры
- ролик на выходе. Ноль потраченных тенге
Оформление отделено от материала
Съёмка одна и та же. Пересборка в новом стиле — это одно слово в настройках и новый прогон, без новой съёмки и без единого кредита. Вот одна наша запись, прогнанная через все восемнадцать наборов, которые лежат в комплекте.


















Восемнадцать прогонов одного дубля заняли полчаса машинного времени и ноль тенге. Ни один не упал, дрейф субтитров во всех восемнадцати — те же 0,03 кадра.
Тот же результат, другая механика
Популярный путь строится вокруг генеративной видео-модели. Наш — вокруг кода. Ниже станция за станцией, честно, включая место, где чужой путь сильнее.
| Станция | Как обычно | Как у нас |
|---|---|---|
| Расшифровка | отдельная программа на Python со своим окружением | фильтр внутри ffmpeg, который уже стоит; офлайн и бесплатно |
| Нарезка | куски по десять секунд, граница подгоняется к фразе | режем по фразам целиком, паузы вырезаются, дрейф меряется в кадрах |
| Раскадровка | шесть панелей рисует генератор картинок | двенадцать крупностей расставляет код, соседние не повторяются |
| Монтаж | видео-модель перерисовывает кадр; платно, с вотермарком | слой титров рисует браузер; ноль обращений к нейросети |
| Текст в кадре | его угадывает модель — и иногда пишет абракадабру | его верстает браузер, поэтому опечаток не бывает |
| Стили | меняются вместе с новой генерацией | восемнадцать наборов, переключаются одним словом бесплатно |
| Звук | модель просят «сохранить оригинал» | модель к звуку не допущена вообще; громкость в два прохода |
| Деньги | подписка плюс кредиты за каждую генерацию | монтаж стоит ноль; платим только за то, что решили добавить сверху |
| Где сильнее чужой путь | перерисовывает мир вокруг спикера: новый фон, врезки, которых не было | вёрсткой это не собрать — только точечной генеративной вставкой |
Чего эта линия не делает
Мысль и слова ваши. Линия работает с тем, что вы сказали в кадре.
Автопостинга нет, и это решение, а не недоделка. На выходе папка с файлами и текстами под площадки.
Музыка и озвучка, если нужны, приходят файлом снаружи и подмешиваются на сборке.
Полноценный режим без спикера мы не разворачиваем и не обещаем. Есть счётчик: если лица нет дольше трети ролика, прогон предупредит.
Три места, где теряют время
Проверьте расшифровку до монтажа
Субтитры берутся из неё дословно. Имена, названия и хвосты фраз портятся чаще всего, а увидите вы это уже на готовом ролике крупными буквами. Правка — две минуты в текстовом файле.
Нижние 250 пикселей кадра трогать нельзя
Там площадка рисует свой интерфейс: подпись, кнопки, аватар. Титр, поставленный ниже, будет закрыт — и на мониторе вы этого не увидите. Проверять только на телефоне, в самом приложении.
Шумная запись ломает караоке
Если звук грязный, распознавание плывёт, а вместе с ним плывут и подсветки слов. Тридцать секунд в тихой комнате экономят полчаса возни на монтаже.
Четыре сомнения на входе
…я никогда не монтировал?
И не начнёте. Ни одной программы для монтажа в этой линии нет: вы командуете обычными словами, инструменты делают своё. Умеете снять видео на телефон — соберёте и рилс.
…мой голос заменят на робота?
Нет, и это не обещание, а устройство. Звук всегда берётся из вашей записи, генеративная модель к дорожке не допущена вообще — даже когда используется точечная вставка сцены. Именно поэтому важен чистый звук на съёмке.
…нейросеть выдаст брак?
В монтаже нейросети нет — брать браку неоткуда. Прогон сам печатает контрольные числа: сколько тишины вырезано, сколько катов, какой дрейф субтитров, и кладёт пять контрольных кадров, чтобы посмотреть глазами до публикации.
…это дорого?
Монтаж стоит ноль: съёмка бесплатная, расшифровка считается на вашем компьютере, склейка тоже. Деньги появляются ровно в одном месте — если вы сами решили добавить сгенерированную сцену или музыку. Одна такая сцена обходится в 7,5 кредита.
Между «есть что сказать» и «вышел ролик» стоял монтаж
Он съедал вечер, требовал денег на дизайнера и навыка в программах, которого у вас нет. Из-за этой стены большинство хороших мыслей так и не становятся роликами — просто некогда и некому собирать.
Линия убирает стену. Съёмка занимает те же тридцать секунд, а монтаж перестаёт быть вашей задачей. Это рычаг не только по времени, но и по деньгам:
- по открытым вакансиям hh.kz и gorodrabot.kz
- плюс подписка на видео-модель, если монтаж генеративный
- плюс вотермарк, который надо чем-то закрывать
- расшифровка — на вашем компьютере, офлайн
- склейка и громкость — ffmpeg, бесплатно
- платно только то, что вы сами решили добавить сверху
Мы не считаем за вас экономию в процентах: у каждого свой объём и своя ставка. Здесь два прайса — дальше считайте сами.
Линия лежит в открытом репозитории
Движок монтажа, восемнадцать наборов оформления, демо-ролик для самопроверки и описание всех шагов человеческим языком. Клонируйте, прогоните проверку окружения — и соберите первый ролик из своего дубля.
Автомонтаж — одна станция большой линии. Дальше идут темы, поиск чужих виралок, карусели, набор форматов под площадки и выпуск пачкой. Это мы собираем на интенсиве «Фабрика контента».
На чём стоит наша линия
Разобрали и не взяли
Мы читали документацию этих инструментов и пробовали их в бою. Решение не брать их в монтаж стоит на этих же страницах, а не на догадках.