Ролик под ключ
Цель навыка: получить от пользователя короткий запрос, один раз согласовать все творческие решения и отдать готовый ролик без перекладывания технического контроля на пользователя.
Сначала выбери маршрут
Если нужен ролик без камеры, анимационный Reels/Shorts, кинетический текст или видео только
из озвучки, передай работу навыку motion-reel и следуй ему до QA.
Он использует audio-only проект, отдельную композицию MotionReel и семь motion-сцен.
Правила видимого спикера в первые секунды, talking-head хука и --template lesson ниже
относятся только к видео со спикером и не переносятся в motion-reel. При обычном монтаже
исходного видео продолжай этот навык.
Сначала покажи выбор монтажа
Прочитай контракт выбора и Creative Motion. Если пользователь ещё не выбрал маршрут, до анализа исходника покажи обязательную карточку «Как монтируем?»: уникальный Creative Motion, готовый установленный стиль или монтаж по референсу. Уникальный вариант пометь рекомендуемым. При явном выборе не спрашивай повторно; «реши сам» означает Creative Motion. После выбора работай автономно до полного проверенного preview.
Границы навыка
- Стандартный и готовый маршруты монтируй через
--template lesson, утверждённый brief, композициюReelScenesи 7 официальных сцен:fullscreen,split,bottom-diagram,blur-overlay,text-only,stat,broll. - В Creative Motion создай новый арт-дирекшн и project-local motion pack внутри
projects/<id>/motion-vNN/. Его полноразмерный слой проходит официальный импорт, нормализацию и SHA-256, затем подключается через поддерживаемуюbroll-сцену с мастер-аудио исходника. Не добавляй клиентские сцены в общий движок. - Не превращай успешный предыдущий ролик в новый шаблон. Повторяемыми остаются только технические стандарты, approval и QA; композиции, типографика и motion-язык выбираются заново под смысл нового ролика.
- Воронка, кружок спикера, официальные социальные логотипы, анимированный градиент и CTA считаются вариантами готовых сцен.
- Draft разрешено рендерить только командой
automontage preview: тот жеReelScenes, watermarkЧЕРНОВИК, пониженное качество, выход только вpreviews/. Всегда называй егополный роликили указывай точный диапазон фрагмента. - Финальный рендер,
renders/иfinal/по-прежнему требуют однозначного «утверждаю» и отдельной approved-копии только последней показанной версии ТЗ. - Не создавай HTML- или FFmpeg-макет дизайна: визуальное согласование использует только настоящий Remotion-preview.
- Не выдумывай цифры, факты и цитаты. Редакторские заголовки и CTA показывай на утверждение.
- Не добавляй в Git исходники, транскрипты, музыку, рендеры, личные пути, ключи и приватные темы.
- Используй текущую подписку Claude Code/Codex: сам прочитай локальный транскрипт и подготовь
draft. Не проверяй, не запрашивай и не используй
ANTHROPIC_API_KEYилиOPENAI_API_KEYдля обычного монтажа. Наличие ключа в окружении не является разрешением на API-вызов. - Для явно заказанного изображения сначала используй встроенную генерацию текущей модели. Только если она недоступна, предупреди об отдельном платном OpenAI API и получи явное подтверждение. Такой ключ разрешён только для подтверждённой генерации изображения и ни для чего другого.
- Никогда не проси прислать API-ключ в чат.
Client-delivery mode
Во время монтажа одного ролика не меняй src/, scripts/, schema/, общие тесты,
документацию и тему. Все изменения ролика живут в projects/<id>/. Если возможности не хватает,
не разрабатывай её внутри ролика: закончи ближайшим поддержанным вариантом и вынеси доработку
движка в отдельную задачу. Для правки только brief запускай его валидацию и preview QA, а не
полный npm test. В Creative Motion разрешены локальные React/Remotion-компоненты, сцены,
design tokens и assets внутри project workspace; они не становятся общей возможностью движка.
Пакетный режим
Если пользователь передал несколько роликов или несколько хуков одного ролика, прочитай
docs/BATCH-REELS-WORKFLOW.md и веди один общий пакет согласования. Каждый выход получает
отдельный projects/<id>/, draft-preview, approval и QA. Общая основа hook-family после точки
стыка должна совпадать по речи, сценам, графике, субтитрам и музыке.
Инвентаризацию, транскрибацию, подготовку brief и активов можно выполнять параллельно. Полные Remotion-рендеры в одном checkout запускай последовательно; параллельный render допустим только в отдельных clone/worktree. Обложки готовь отдельно для каждого выхода и храни локально внутри его workspace.
Публичная и приватная темы
- Если пользователь указал тему, используй её.
- Если задан
THEMES_EXTи запрошенная внешняя тема существует, используй её без копирования в открытый репозиторий. - Если внешней темы нет, явно передавай
--theme lesson-neutral. Не полагайся на локальный приватный дефолт. - Имя темы и геометрия замораживаются в brief. Изменение любого из них требует нового
draftи нового утверждения.
Шаг 0. Восстанови контекст
- Убедись, что находишься в корне AutoMontage-Agent.
- Прочитай
AGENTS.md, локальныйMEMORY.md, последние три дневника, релевантныйmemory/feedback_*.mdи_progress.md, если они есть. - Проверь
git status, текущую ветку иgit log. Выполниgit fetch. Если ветка отстала и дерево чистое, примени только fast-forward. Не делай reset и не перезаписывай чужие изменения. - Проверь наличие Node.js, ffmpeg, ffprobe, Python и faster-whisper через
npm run doctor. - Не проверяй provider API-ключи и не проси пользователя их добавить. Стандартный workflow работает через текущую подписанную сессию. Наличие ключа не означает согласия; отдельный платный OpenAI-вызов для изображения требует предупреждения и явного подтверждения и допустим только когда текущая модель не умеет сгенерировать изображение сама.
Шаг 1. Прими задачу
Если маршрут ещё не выбран, сначала покажи карточку из references/creative-motion.md и
дождись одного ответа. Если пользователь сразу выбрал маршрут, коротко зафиксируй его и продолжай.
После этого не задавай вопросы о вкусовых и технических деталях, которые можешь безопасно решить
сам; вынеси выбранный арт-дирекшн, CTA и музыку в единый пакет preview для утверждения.
Извлеки из запроса:
- путь к исходнику;
- формат:
source,verticalилиhorizontal; - площадку и желаемую длину;
- цель, главную мысль и CTA;
- обязательные формулировки;
- тему и музыкальное настроение;
- логотипы, b-roll и другие обязательные активы.
- короткое название проекта; если пользователь его не дал, выведи из главной темы ролика.
- все исходники, количество выходов и семейства вариантов с общей основой.
Дефолты:
- формат равен исходнику;
- полная длина исходника;
- открытая тема
lesson-neutral, если не подключена внешняя; - современный инструментальный бит с безопасной лицензией, если пользователь просит выбрать музыку;
- один полный пакет согласования перед полным рендером.
- для вертикального Reels говорящей головы первые 2–3 секунды сохраняют видимого спикера;
- для ролика длиной 2–3 минуты используются 3–5 смысловых векторных объяснений.
Задай не более одного уточняющего вопроса, только если без ответа нельзя безопасно продолжать.
Шаг 2. Проверь исходник
До транскрибации проверь через ffprobe:
- ширину, высоту, поворот, FPS и длительность;
- наличие видео- и аудиопотока;
- частоту дискретизации и стартовые таймкоды;
- переменный или постоянный FPS;
- полное декодирование без ошибок.
Извлеки кадры из начала, середины и конца. Определи facePos и faceZoom, чтобы лицо не прыгало
между сценами. Если нужно удалить паузы или изменить сам исходник, сначала создай отдельный
мастер-файл, а уже по нему делай brief. Не меняй исходник после утверждения.
Удаляй только явное молчание, брошенный недоговорённый заход и подтверждённый дубль. Сомнительный повтор оставляй: сначала прослушай оба места и будущий стык, затем вынеси решение в согласование. Не определяй повтор только по похожим строкам транскрипта.
Шаг 3. Создай черновик
Используй large-v3-turbo с таймингами слов. Не запускай стандартный API-backed plan path.
Вместо этого:
- Создай или открой workspace через
createOrOpenProject()изscripts/project/workspace.js. - Извлеки звук через ffmpeg и запусти локальный
scripts/transcribe.pyсlarge-v3-turbo; сохрани слова вtranscript/words.json. - Прочитай транскрипт сам в текущей подписанной сессии и создай lesson JSON/Markdown по
schema/lesson-brief.schema.jsonи семи официальным сценам. - Выполни
validateLessonBrief()и опубликуй пару только черезpublishBriefRevision(). Не правьproject.jsonвручную.
Для Creative Motion перед публикацией brief создай ДНК дизайна, карту смысловых вставок и
project-local motion pack по references/creative-motion.md. Используй семь типов lesson-сцен
как транспорт утверждённого результата, а не как ограничение визуальной композиции: проверенный
полноразмерный motion-слой подключается через brollMedia с audioMode: mute, а голос идёт из
мастер-видео по глобальному таймкоду.
Для внешней темы используй её id вместо lesson-neutral. Результат должен содержать:
projects/YYYY.MM.DD_<latin-slug>/project.jsonс историей работы;brief/vNN-draft.lesson.jsonсо статусомdraft;brief/vNN-draft.lesson.mdдля чтения и утверждения;transcript/words.jsonс таймингами;- отдельные
assets/,previews/,renders/иfinal/внутри той же папки.
Сохрани абсолютный путь созданной project-папки. Все следующие команды этого ролика выполняй
с --project-dir <этот-путь>. Не возвращайся к общему out/.
После генерации:
- Вычитай транскрипт по аудио и покажи все исправления распознавания.
- Раздели экранные тексты на дословную речь, редакторские заголовки и CTA.
- Построй визуальные события с ритмом 1,5–2,2 секунды. Событием может быть смена сцены, плана, текста или этапа анимации.
- Не держи длинную цифровую карточку. Разбей её на короткие акценты.
- Возвращай fullscreen-спикера в ходе ролика и чаще показывай лицо в последней трети.
- Любое пересечение плашки с видео помечай как осознанное. Непомеченное наложение считай дефектом.
- В хуке первые 2–3 секунды оставь спикера в кадре; blur, логотип и текст могут лежать поверх, но чистый text-only экран в начале запрещён.
- Для 2–3-минутного Reels поставь 3–5 векторных объяснений. Процесс раскрывай поэтапно: блок → соединитель → следующий блок → результат, а не движением одной готовой картинки.
- Списки оформляй крупными карточками или дорожками. Сравнимые показатели показывай на общей шкале в одном кадре и явно выделяй победителя.
- На полноэкранной векторной графике субтитры скрывай или убирай, если они перекрывают смысл; speaker PIP также отключай при конфликте.
- Безопасная зона проверяется по всей анимации, а не только в остановившемся кадре: для
1080×1920 текст и его плашка не пересекают границы
left: 70,right: 130,top: 250,bottom: 420изsrc/scenes/safezone.js. Не используй отрицательные координаты илиtranslateX, выносящий текст за экран; анимируй внутри безопасного контейнера.
Шаг 4. Подготовь музыку до утверждения
Если музыку выбирает агент:
- Используй современный инструментал без вокала и с безопасной лицензией.
- Начни с ритмичного участка. Не ускоряй неподходящий трек.
- Если трек не понравился, замени его. Не пытайся исправить выбор многократным изменением gain.
- Сделай две 10–12-секундные аудиопробы на реальном голосе: рекомендуемый трек и один запасной.
- Покажи источник и лицензию в пакете согласования.
- Музыку и лицензию храни в
assets/music/, аудиопробы вpreviews/текущего проекта.
Для разговорного Reels используй как стартовую точку, а не как неизменный рецепт:
{
"gainDb": -20,
"ducking": {
"thresholdDb": -26,
"ratio": 6,
"attackMs": 10,
"releaseMs": 220
}
}
Сначала нормализуй чистый голос, потом подмешивай музыку через sidechain-ducking. В речи целься в
разницу примерно 12–18 dB между голосом и музыкой. В паузах музыка должна подниматься примерно
на 6–9 dB. Проверяй фактический микс, а не только цифру gainDb.
Для hook-family общий блок использует тот же трек, фазу, gain и sidechain. Проверь переход на стыке каждого хука: музыка не должна прыгать или перезапускаться без утверждённого замысла.
Шаг 5. Покажи один пакет согласования
Прочитай references/brief-package.md и используй его формат.
В одном сообщении покажи:
- выбранный маршрут монтажа; для Creative Motion — ДНК дизайна и чем она отличается от прошлых роликов;
- формат, тему, длительность, кадрирование и CTA;
- все исправления транскрипции;
- таблицу каждого визуального события: время, сцена, текст, кадр, анимация и звук;
- ключевые стоп-кадры в целевом формате;
- аудиопробы и лицензию музыки;
- точный путь к Markdown- и JSON-черновикам.
- для пакета: индекс всех выходов, hook-family, обложки и отдельный QA-статус каждой версии.
Для Creative Motion также покажи карту разных визуальных конструкций и короткий anti-template отчёт: нет повторяющейся композиции, соседних одинаковых механик и пустых чёрных переходов.
Перед просьбой об утверждении собери настоящий draft-preview:
automontage preview --project-dir <project-dir> --brief brief/vNN-draft.lesson.json
npm run qa:preview -- --project-dir <project-dir>
Покажи полный ролик или точный диапазон фрагмента. Заверши фразой: «Напиши “утверждаю” или
пришли все правки одним списком». На этом остановись.
Шаг 6. Рендери только утверждённое
После явного утверждения:
- Убедись, что после показа ТЗ не было новых правок.
- Поменяй статус этого brief с
draftнаapproved. - Не меняй утверждённые тексты, музыку, тему, формат и исходник.
- Заморозь утверждённую копию и обнови
project.json:
node scripts/project/approve-brief.js <project-dir> brief/vNN-draft.lesson.json
- Запусти:
node scripts/build.js <project-dir>/input/source.mp4 --template lesson \
--project-dir <project-dir> \
--brief brief/vNN-approved.lesson.json \
--version-label first-render
build.js должен рендерить ReelScenes, сохранять единый таймкод видео, нормализовать голос, компенсировать
задержку финального AAC и после этого подмешивать музыку с ducking. Каждая правка получает новый
--version-label, например new-music, quieter-music или ducking. Не перезаписывай старую версию.
Шаг 7. Проверь готовый файл
Прочитай references/qa-checklist.md и выполни весь чек-лист. Успешный рендер не равен готовому ролику.
Минимальные доказательства качества:
- полное декодирование файла без ошибок;
- геометрия, FPS, кодеки и длительность по ffprobe;
- A/V-синхрон в начале, середине и конце;
- контакт-лист со стоп-кадром каждого визуального события;
- ручная проверка safe-zone, текста, лица, логотипов и наложений;
- замер музыки под речью и в паузах;
- сверка всех текстов с утверждённым brief.
- для hook-family: доказательство, что общая основа совпадает во всех вариантах;
- для пакета: сводная таблица promised outputs, preview/final и per-item/family QA.
Если любая проверка не пройдена, исправь дефект до показа ролика. Если исправление меняет утверждённое
творческое решение, верни brief в draft и покажи изменение на утверждение.
Шаг 8. Отдай результат
В финальном ответе дай:
- Кликабельную ссылку на готовый MP4.
- Коротко: формат, размер, FPS, длительность и кодеки.
- Результат трёх проверок A/V-синхрона.
- Как музыка приглушается под голосом и возвращается в паузах.
- Ссылку на контакт-лист, если он полезен для приёмки.
- Подтверждение, что приватные медиа и тема не попали в Git.
- Ссылку на project-папку, где лежат ТЗ, превью и все версии рендера.
- Для пакета: одну таблицу всех финалов, обложек и SHA-256, чтобы проверялась именно QA-версия.
Для Telegram советуй отправлять ролик как файл, чтобы мессенджер не сжимал вертикаль.
Когда остановиться
Остановись и сообщи конкретную причину, если:
- исходник не найден или не декодируется;
- выбор формата противоречит явному запросу;
- запрошенная приватная тема не найдена;
- музыка или логотипы не имеют понятного источника и лицензии;
- Git-обновление конфликтует с незакоммиченными изменениями.
Не останавливайся из-за технического дефекта, который можно безопасно исправить внутри утверждённого замысла.