Шаг 0 — Подготовка
Что нужно на входе
Подготовка

Весь монтаж — это один движок: закидываешь сырое видео → получаешь готовую вертикаль с субтитрами и музыкой. Но чтобы движок выдал результат уровня «в публикацию», на входе должно быть чисто. Этот шаг — про то, что готовим заранее.

Принцип: мусор на входе → мусор на выходе. Движок умный, но он не спасёт кадр без глаз в кадре, кашу из звука или съёмку в горизонт. 80% результата — это материал. Остальные 20% докручиваем тут по шагам.
Исходник (обязательно)
Сырое видео целиком: .MP4 / .MOV. Можно с дублями, паузами, «эээ» — движок сам отберёт и вырежет. Главное — чистый звук и глаза в кадре.
Сценарий (по желанию)
Если есть — скрин таблицы (1.jpg / 2.jpg) или текст. Движок сверит речь со сценарием и точнее выберет дубли. Нет сценария — режет по смыслу сам.
Терминал открыт
Папка reels_analysis/. Одна команда запускает весь конвейер. Сюда же падают готовые версии.
Ключ Groq в окружении
Транскрипция идёт в облаке Groq (быстро). Ключ лежит в ~/.zshrc — проверь, что он подхватился.
⚠️
Снимай вертикально или с запасом, глаза держи на одной высоте, не уезжай из центра. Движок ставит статичный кадр и пунчи по глазам — если ты «гуляешь» по кадру, склейки будут прыгать.

Закидываем сырьё в движок одной командой. Дальше шаги 2–9 он проходит сам — твоя задача понимать, что происходит на каждой стадии, и проверять результат (human-in-the-loop).

🎬
Команда reelraw — это и есть весь конвейер: транскрипция → отбор дублей → нарезка → кадр → субтитры → музыка → рендер. Ты запускаешь один раз и идёшь смотреть результат.
1

Открой терминал в папке движка

Перейди в reels_analysis/. Команда reelraw — это алиас на reel_raw.py, оркестратор всего процесса.

2

Запусти движок на своём файле

Перетащи видео в терминал или впиши путь. Без сценария — просто файл. Со сценарием — добавь скрин таблицы.

3

Жди — дальше всё автоматически

Движок сам пройдёт стадии 2–9. На выходе — 2 готовые версии. Время зависит от длины исходника.

Команда — вставить в терминал
reels_analysis/ · базовый запуск
reelraw ~/Downloads/C0002.MP4
Со сценарием (точнее отбор дублей)
reels_analysis/ · с раскадровкой
reelraw ~/Downloads/C0002.MP4 --script ~/Downloads/1.jpg

Первая стадия движка: видео превращается в текст с точным таймингом каждого слова. Без этого нечего резать по смыслу — это фундамент всей нарезки.

💡
Транскрипция идёт через Groq (whisper-large-v3) в облаке — это быстро и точно. Каждое слово получает свой тайм-код начала и конца. Так движок видит, где речь, а где пауза.
1

Звук → WAV 16kHz моно

Движок вытаскивает дорожку и шлёт в Groq в правильном формате. Важно: именно WAV, не сжатый mp3 — иначе whisper «галлюцинирует» и теряет хуки.

2

Получаем слова с таймингом

На выходе — список слов вида {слово, начало, конец}. Это сырьё для отбора и нарезки.

3

Длинные слова подрезаются

Whisper иногда «растягивает» слово на паузу (5 сек на «Всё»). Движок ограничивает длину слова ~0.9 сек — так паузы становятся видимыми и их можно вырезать.

ℹ️
Если нужно просто получить субтитры/расшифровку отдельно (например, для чужого ролика) — есть отдельный инструмент transcribe.py: видео → TXT + SRT.

Самая важная стадия. AI-режиссёр читает всю расшифровку и собирает из неё ролик: хук → тело → CTA. Выкидывает повторы, воду, неудачные дубли. Оставляет только то, что держит внимание.

🎯
Тут движок думает как монтажёр, а не как робот. Он группирует слова в цельные фразы (по точкам и паузам), сравнивает дубли одной мысли и берёт лучший. Никаких «пиши-пиши» дважды и провисаний.
1

Слова → фразы

Атом нарезки — не слово, а цельное предложение. Движок режет поток на фразы по знакам . ! ? … и паузам длиннее 1.5 сек.

2

Дедупликация дублей

Одна мысль сказана 3 раза? Движок находит повторы (по пересечению слов) и оставляет один — лучший дубль.

3

Сборка драматургии

AI-режиссёр выбирает порядок: сильный хук в начало → тело → призыв в конце. Цель — плотные 45–60 сек без воды.

ℹ️
Тут твоя валидация. Движок присылает выбранную раскладку фраз — глянь, та ли мысль в хуке, нет ли потерянного сильного куска. Если что — поправим отбор и перезапустим стадию.

Выбранные фразы движок вырезает из исходника и склеивает встык. Молчание и «мычание» между словами — вон. Получается плотная дорожка без провисаний.

✂️
Главная боль сырого видео — паузы. 10 секунд тишины убивают ретеншн. Движок режет по отсутствию слов: где нет речи дольше порога — кусок выгрызается. Между фразами остаётся ровный микро-зазор, чтоб не звучало рвано.
1

Вырезаем тишину внутри фразы

Паузы между словами схлопываются. Речь становится плотной, но не «пулемётной» — остаётся естественный зазор.

2

Склейка фраз встык

Соседние повторяющиеся слова на стыке («пиши пиши») схлопываются в одно. Добавляется короткий хвост ~0.24 сек, чтоб слово не обрывалось.

3

Оригинальный звук сохраняется

Голос остаётся твой, живой — никакой озвучки. Режется только тишина и лишнее.

⚠️
Стандарт нарезки из интервью/доклада: без AI-бролла, графики и SFX по умолчанию. Кадр статичный либо пунчи по глазам. Био-роллы — только если ты явно их заказал (шаг 8).

Движок приводит картинку к железному стандарту: вертикаль 9:16, статичный кадр, глаза на линии, поля 10%. Это узнаваемый почерк — одинаково на каждом ролике.

📐
Стандарт = предсказуемость. Зритель привыкает к кадру, ничего не отвлекает, фокус на лице и смысле. Никаких случайных зумов и дёрганий — только осмысленные пунчи на ключевых мыслях.
Вертикаль 9:16
Кадр кадрируется под Reels. Если снято горизонтально/повёрнуто — движок сам определяет ориентацию по лицу и доворачивает.
Статика + eye-lock
Базовый зум 1.0, кадр стоит. Глаза держатся на одной высоте от склейки к склейке — лицо не прыгает.
Пунчи по глазам
На акцентах — короткие наезды (100 / 122 / 144%) с сохранением линии глаз. Только по смыслу, не ради эффекта.
Поля 10%
Железное правило: 10% отступа с каждой стороны. Ни лицо, ни субтитры не липнут к краю.
ℹ️
Переходы (zoom-punch, смуз-склейки) — на паузе. Движок их умеет, но по умолчанию выключены: ты их забраковал. Вернём, когда решим.

Субтитры — твой фирменный почерк. Montserrat Bold капсом + акценты курсивом Playfair, лесенкой, на груди. Движок генерит сразу две версии на выбор.

💬
Субтитры держат тех, кто смотрит без звука (а это большинство). Лесенка и акцентные слова ведут глаз по смыслу. Всегда поверх картинки и b-roll — текст никогда не перекрывается.
Шрифт
Montserrat Bold капсом — тело. Ключевые слова — курсивом Playfair Italic. Мягкая тень для читаемости.
Лесенка
Слова идут ступеньками, а не в строку. Динамика + акцент на главном слове фразы.
Позиция — на груди
Субтитры стоят на уровне груди, не закрывают лицо, не липнут к низу. В пределах 10% полей.
Поверх всего
Если есть b-roll — субтитры рисуются сверху него, не прячутся под картинкой.
Две версии на выбор
PIL-версия
·
рендер питоном, классическая лесенка, быстро
Remotion-версия
·
кинетика, плавная анимация слов, «дороже» на вид

Движок сам подбирает музыку по смыслу ролика и кладёт ровным фоном. На ключевой мысли — дроп. Никакого дакинга, голос всегда сверху.

🎵
Музыка задаёт энергию, но не мешает речи. Стандарт: ровный тихий фон (база ~0.10–0.16), без «ныряния» громкости под каждое слово. Дроп — один, на самой сильной мысли, чтобы подчеркнуть её.
1

Авто-подбор по смыслу

Движок смотрит на тему и тон ролика и выбирает трек из базы. Динамичный смысл — драйвовее, личный — мягче.

2

Ровный фон, без дакинга

Громкость музыки стабильна, не прыгает под голос. Голос разборчив всегда.

3

Дроп на ключевой мысли

В точке главного смысла бит «вступает» — зритель чувствует акцент. Один дроп на ролик, не больше.

ℹ️
Не зашло? Можно перебрать трек или поднять/опустить фон. Музыка — отдельная стадия, её легко перегенерить без полного прохода.

Опциональная стадия. Если ролику нужны перебивки (тебя-в-деле или графика-метафора) — движок подмешивает b-roll из Higgsfield по таймкодам. По умолчанию для интервью b-roll выключен.

🎞️
B-roll нужен не всегда. Для говорящей головы из интервью — статика честнее и держит лучше. Подключаем b-roll, когда ролик «продающий» и метафора усиливает смысл (телефон → робот вылезает и т.п.).
Реализм, не неон
Картинки нативные и реалистичные. Меньше кислотного неона — больше похоже на жизнь.
Всегда под субтитры
B-roll — это подложка. Субтитры всегда рисуются сверху, текст не теряется.
Привязка к смыслу
Перебивка встаёт на ту фразу, которую иллюстрирует — по таймкодам, не «как попало».
Раскадровка
Под ролик готовится storyboard: ~50% говорящая голова / ~30% ты-в-деле / ~20% графика.
⚠️
Higgsfield на стартовом тарифе: fast-режим, максимум 2 задачи параллельно. Генерация стоит кредиты — заказывай b-roll осознанно, под конкретные фразы.

Финальная сборка. Движок собирает всё вместе и выдаёт две готовые версии — с PIL-субтитрами и с Remotion. Смотришь, выбираешь, при желании докручиваешь.

🚀
На руках — финальная вертикаль 9:16: чистая речь, стандартный кадр, фирменные субтитры, музыка с дропом. Это уже «в публикацию». Твои 20% — финальный взгляд и правки.
Хук цепляет в первые 2 секунды
Нет провисаний и пауз — речь плотная
Глаза в кадре не прыгают, поля 10% соблюдены
Субтитры читаются, на груди, поверх картинки
Музыка ровная, голос разборчив, дроп на месте
Концовка ведёт к действию (CTA)
ℹ️
Готовые файлы лежат рядом с исходником в папке движка. Что-то не так на конкретной стадии — перегоняем только её, не весь ролик заново.

Финал конвейера. Готовый ролик кладём в очередь автопостинга — и каждый день автоматом выходит рилс + карусель. Руками больше ничего не публикуешь.

📲
Рилсы и карусели мешаются в одной очереди и постятся по расписанию (старые — первыми). Тип определяется сам: папка с .mp4 → рилс, со slide_*.png → карусель.
1

Положи ролик в очередь

Одна команда добавляет рилс с кэпшеном в очередь автопостинга.

2

Кэпшен — через хуманайзер

Текст под ролик прогоняется через humanizer-ru, чтобы звучал живо, без AI-клише.

3

Дальше — расписание

Крон постит сам: рилс утром, карусель днём. Ты только подкидываешь контент в очередь.

Команда — положить рилс в очередь
Автопостинг/ · добавить рилс
./рилс-в-очередь.sh путь/ролик.mp4 "кэпшен"
⚠️
Подключение Instagram к API — отдельная история (идёт через прямой Instagram-токен, graph.instagram.com). Код готов; как добьём токен — постинг включается этой же командой.