Пайплайн видео-продакшна на генеративном AI
Пайплайн видео-продакшна на генеративном AI
От клиентского брифа до финального шота, стадия за стадией
Автор: Alex Nix Статус: Рабочий черновик — for public release Парная статья: A.O.C. — Промпт-фреймворк для генеративных image-моделей
Abstract
Большинство текстов про генеративный AI для видео трактуют генерацию как один шаг: промпт заходит, клип выходит. В продакшн-работе всё иначе. Тридцатишотный ролик — это не тридцать независимых генераций — это граф зависимостей с требованиями scene-series-консистентности, cross-reference-системой для персонажей и локаций, style-lock'ом, который должен держаться через полчаса материала, и LLM-orchestration-слоем, делающим всё это поддающимся написанию.
Эта статья — структурированное описание такого пайплайна, построенного и эксплуатируемого в продакшне на протяжении нескольких лет. Она трактует генеративный AI не как модель для промптинга, а как стадию внутри большей архитектуры. Статья называет стадии, механизмы консистентности, граф зависимостей и дизайн-решения, оказавшиеся несущими. Цель прикладная: дать другим builder'ам референсную архитектуру, с которой можно начать и с которой можно спорить. Слой оркестрации (§ 5) управляется небольшим набором скиллов Claude Code — скиллы применения A.O.C. для хребта промпта, скиллы креативной режиссуры для до-промптовой половины, Happy Horse Prompt для HH-видео, MiniMax Voice для речи и /logo-builder (в generative-logo-design) для айдентики.
1. Тезис
Генеративное AI-видео в продакшн-качестве — это constraint-propagation-пайплайн, а не модель генерации.
Надёжный, консистентный, директабельный выход возникает из пайплайна, который: (а) фиксирует стиль на ранних стадиях с минимальными затратами, (б) разделяет композицию, рендер и motion как независимые стадии, (в) обеспечивает scene-series-консистентность через линейный reference-inheritance и (г) использует LLM-orchestration-слой, чтобы каждый выход стадии был well-formed для следующей.
Модели генерации в этом пайплайне — взаимозаменяемые компоненты. Замените одну видеомодель на другую, замените image-модель на другую — пайплайн продолжает работать, потому что именно пайплайн держит проект вместе, а не какой-то отдельный model-вызов.
2. Шесть стадий
Пайплайн раскладывается на шесть стадий, каждая адресует один класс решений:
setup → scenario → storyboard → moodboard → scenes → video
Каждая стадия берёт выход предыдущей и добавляет один новый класс информации. Каждая стадия может независимо рефайниться без перезапуска ранних. Single-shot-рефайнинг — first-class-операция, намеренно гораздо легче свежей генерации, так что итерация структурно поощряется.
2.1 Setup
Минимально-жизнеспособное описание проекта: тайтл, аспект, оценка хронометража, технические заметки, knowledge-base-файлы (предварительно извлечённые клиентские брифы, скрипты, референс-документы, заметки). Ничего ещё не сгенерировано. Setup — это staging-зона для входов следующих стадий.
2.2 Scenario
Бриф или сценарий становится структурированным шот-листом. LLM, действующая как продакшн-режиссёр, эмитит список шотов, каждый с:
- Имя шота в форме
{номер-сцены}{буква}(1A, 1B, 1C, 2A, …) - Семиэлементное описание: субъект+действие, локация, крупность, угол, движение, оптика, свет
- Тип шота: full-ai / composite / live
- Длительность
- isKeyFrame: опциональный флаг pairing'а под transition-stitching (см. §2.6)
Схема именования шотов несущая. Шоты, делящие номер сцены, образуют серию, которая должна оставаться визуально консистентной; буквенный суффикс упорядочивает их; схема выживает без изменений через каждую downstream-стадию.
Дизайн-решение — почему фиксированное семиэлементное описание: семь элементов — это то, что нужно каждой последующие стадии: storyboard'ы хотят крупность/угол/движение, стиллы хотят субъект/локацию, видео хочет движение/действие. Кодирование как свободная проза заставит каждую downstream-стадию переизвлекать; кодирование как жёсткий объект — всегда-неполная схема. Семь именованных элементов, всегда присутствующие, в форме прозы.
2.3 Storyboard
Быстрый, дешёвый визуальный лок на композицию и язык камеры. LLM эмитит per-shot-промпты, префиксированные фиксированной hand-drawn-storyboard-стилевой строкой («traditional hand-drawn storyboard frame on white paper, clean black ink line art with selective red accent lines…»). Сами storyboard-картинки рендерятся за секунды, малой долей усилий полного рендера.
Два свойства делают эту стадию несущей:
- Тот же стилевой префикс на каждый проект. Это превращает storyboard-картинки во взаимозаменяемый словарь — все «выглядят одинаково», и LLM-architect'ы downstream могут рассуждать о них как о composition-референсах, а не style-референсах.
- Ранние-в-серии storyboard'ы становятся референсами для поздних-в-серии. LLM читает их толщину линии, направление штриховки и углы камеры, затем намеренно выбирает другие углы для следующих шотов — обеспечивая variety при удержании стиля.
2.4 Moodboard (параллельно storyboard'у)
Двухтировая reference-система. Project-level (глобальный) moodboard держит refs, общие между шотами; per-scene-moodboard держит scene-специфичные overrides. Каждый ref несёт типизированную роль (location / character / style / prop / color / camera), которую последующие стадии консультируют, чтобы решить, какой ref отвечает на какой вопрос.
Композитный 16:9-moodboard-image генерируется на сцену — AI-конденсированный single-image-референс, схлопывающий многие refs сцены в одну картинку. Это то, как стиль, цвет и свет достигают стиллс-стадию: как один vision-вход, а не множество сырых reference-картинок, которые would over-constrain генерацию.
2.5 Stills
Per-shot photographic-рендеры. Стадия потребляет шесть входных источников:
- Описание шота (текст)
- Storyboard-картинка (vision — только композиция, стиль игнорируется)
- Предыдущие same-series-рендеры (vision — continuity)
- Композитный moodboard-image (vision — стиль / цвет / свет)
- Moodboard-captions (текст — environment-контекст)
- Shot-type-флаг
Системный промпт построения промптов намеренно запрещает описывать стиль, цвет или свет в тексте — эти измерения приходят через композитный moodboard и moodboard-refs как vision. Текстовый промпт описывает только субъект, локацию, камеру. См. deliberate-omission-paper.
Это намеренная инверсия A.O.C.-подхода, используемого в single-shot- и campaign-контекстах, где A.O.C.-текст-промпты специфицируют все три оси. Разница: продакшн-шоты имеют плотные visual-референсы; campaign-шоты часто только один-два. Аллокация внимания следует доступным якорям.
Linear series inheritance — дешёвый заменитель обучения кастомной character-модели. Внутри серии (1A → 1B → 1C …) каждый render-джоб прикрепляет картинку предыдущего шота как vision-референс. Character design, установленный в 1A, распространяется через 1B, 1C без обучения. См. sequential-consistency-prompt-architecture-paper для полного механизма.
2.6 Video
Motion-генерация. LLM эмитит motion-only-промпты: одно-два предложения, описывающие движение камеры и действие субъекта. Никаких эстетических прилагательных, scene-описаний, mood-слов — сцена уже отрисована; остаётся специфицировать только motion.
Сигнатурная возможность — first / last frame stitching. Для шотов, помеченных парными key-frames на этапе сценария, video-джоб получает рендер стартового шота как первый кадр и рендер конечного шота как последний кадр. Модель генерирует только motion между ними, производя бесшовный морф — без crossfade, без cut. Это возможно только потому, что пайплайн frame-first: motion — это последнее решение, не первое.
3. Задача консистентности и три решения
Консистентность — где наивные пайплайны падают. Тридцатишотный проект имеет тридцать возможностей для гардероба персонажа уплыть, для света сдвинуться, для текста этикетки продукта искажиться. Пайплайн имеет три взаимоблокирующих механизма.
3.1 Scene-series inheritance (intra-series)
Уже описано. Линейный render-порядок внутри сцены; каждый шот наследует рендер предыдущего шота как vision-референс. Continuity по cut-последовательности без обучения.
3.2 Reference typology (между шотами, внутри проекта)
Каждый референс несёт типизированную роль. «Какой референс говорит модели, где разворачивается сцена?» имеет well-defined ответ (location-refs). «Какой говорит, как выглядит персонаж?» (character-refs). Silent-reference-использование запрещено; LLM-architect инструктирован объявлять инлайн, что отдаёт каждый прикреплённый референс.
3.3 Lock layers (per-shot, на уровне промпта)
Для campaign-style-шотов конкретно, A.O.C.-промпты оборачиваются Lock-слоем — IDENTITY LOCK или PRODUCT LOCK — который переигрывает структурированный дескриптор субъекта (лицо, тело, волосы, тон кожи; или форма, материал, ориентация, текст, rigid-unit-правило). Lock неизменен по batch'у и переживает generation-variance.
4. Граф зависимостей
Пайплайн в основном линеен между стадиями, но inter-shot-граф внутри поздних стадий — лес линейных цепочек:
setup → scenario → storyboard → moodboard → scenes → video
↓
сцена 1: 1A → 1B → 1C → ... (линейно)
сцена 2: 2A → 2B → 2C → ... (линейно, параллельно сцене 1)
сцена 3: 3A → 3B → ...
- Между сценами: зависимости нет. Сцены рендерятся параллельно.
- Внутри сцены: строгий линейный порядок. Render-шота блокируется до завершения предыдущих same-scene-шотов.
Два gating-условия обеспечиваят это:
canGenerateStoryboard(shot) // у предыдущих same-series-шотов есть storyboard
canGenerateScene(shot) // у предыдущих same-series-шотов есть render
Форма графа — это то, что делает большой проект поддающимся: работа параллелится между сценами, пока series-консистентность гарантирована внутри каждой сцены.
5. Слой LLM-orchestration
Каждая стадия, кроме moodboard-композитинга, — LLM-вызов. Контракт orchestration на каждый вызов узкий:
| Стадия | Роль LLM | Темп. | Строгий выход |
|---|---|---|---|
| analyze-brief | Производственный режиссёр | 0.4 | Project overview + shot list JSON |
| parse-scenario | Cinematographer cut-finder | 0.3 | Shot list JSON |
| edit-scenario | Director edit-enforcer | 0.3 | Modified shot list JSON |
| storyboard-prompts | Storyboard-художник | — | {shotName: prompt} JSON |
| image-prompts | Минималист-описыватель шота | — | {shotName: prompt} JSON, без стиля/цвета/света |
| video-prompts | Motion-описыватель | — | {shotName: prompt} JSON, только motion, 1–2 предложения |
| scene-moodboard | Production designer | — | Один 16:9-moodboard-промпт |
Два свойства этого слоя несущие:
Дисциплина системного промпта. У каждой роли узкий мандат. Системный промпт image-prompts явно запрещает описание стиля / цвета / света. Системный промпт video-prompts запрещает эстетические прилагательные. Широкий системный промпт позволяет LLM загрязнить следующую стадию заботами, которые должны были остаться в этой. См. two-stage-architect-pattern-paper для разделения температуры-и-роли. На практике эти системные мандаты исполняются через скиллы применения A.O.C. (сборка промптов для изображения и видео) и скиллы креативной режиссуры (brief → moodboard / scenario); engine-специфичные выходы happy-horse-prompt-skill и minimax-voice-skill закрывают Happy Horse и TTS соответственно.
Refinement-варианты. Каждая генеративная стадия имеет дешёвый single-shot-режим рефайнинга, переиспользующий существующий промпт как бэйзлайн. Refinement — дефолтный режим итерации. Экономика этого важна: если бы refinement стоил так же, как свежая генерация, продюсеры бы либо коммитили рано, либо жгли бюджет; ни то ни другое не даёт хороший выход. Дешёвый refinement держит продюсеров в режиссёрской позиции.
6. Что пайплайн намеренно не делает
- Он не обучает кастомные character-модели как дефолтный механизм консистентности. Обучение доступно, но зарезервировано для long-term persona-переиспользования между проектами. Для одного продакшна linear series inheritance + reference typology дешевле и достаточно быстро.
- Он не выставляет одну кнопку «сгенерировать весь проект». Stage-by-stage-прогрессия — это интерфейс; продюсеры остаются в петле на каждой стадии.
- Он не пытается нарративно авторствовать. Парсинг сценария реструктурирует; не изобретает. Бриф — автор; пайплайн — съёмочная группа.
- Он не пытается бороться со model-specific-quirks fallback-логикой. Сбои генерации всплывают обратно к продюсеру как iteration invitations, а не как silent retries.
7. Что оказалось несущим
Hard-won-решения, ранжированные примерно по тому, насколько болезненным было бы их отсутствие:
- Схема именования
{номер-сцены}{буква}. Каждый downstream-механизм консистентности зависит от неё. Без схемы — нет «серии», на которой можно обеспечиваеть continuity. - Фиксированный storyboard-стиль. Тот же стиль на каждый проект означает, что последующие стадии могут трактовать storyboard-картинки как нейтральный composition-словарь.
- Минимализм в image-промптах. Запрет на стиль / цвет / свет в тексте image-промпта и роутинг этих измерений через vision — это то, что спасает сгенерированные стиллы от over-constrained noise.
- Дешёвые refinement-стадии. Single-shot-итерация — это то, что делает пайплайн полезным, а не теоретическим.
- First / last frame stitching. Самый заметный differentiator пайплайна на финальном видео.
- Предсказуемые per-stage-усилия. Продюсеры доверяют системе, потому что могут прогнозировать работу.
8. Открытые исследовательские вопросы
- Скоринг-rubric для well-formed shot descriptions (семь элементов) — сегодня ad-hoc. Улучшит надёжность LLM-architect'ов.
- Cross-scene-консистентность для повторяющихся персонажей. Пайплайн обеспечивает series-консистентность; cross-scene character-консистентность сейчас зависит от moodboard-refs и пользовательской дисциплины. Лёгкий cross-scene-anchor («сцена 3 содержит того же персонажа, что и сцена 1») закрыл бы gap без обучения модели.
- Автоматический выбор shot-type. full-ai / composite / live сейчас задаётся на этапе брифа. LLM-driven-эвристика могла бы снизить ручную разметку.
- DAG вместо леса. Некоторые продакшны имеют настоящие cross-scene-зависимости (matched cut от последнего шота сцены 1 к первому шоту сцены 2). Обобщённый DAG моделировал бы это; сегодня это обрабатывается first/last frame stitching только на смежных индексах.
- Измерение консистентности. Нет автоматического скоринга того, «ощущаются ли 1A и 1B как одна сцена». Можно подойти CLIP-similarity, face-embedding distance или scene-graph comparison.
- Кросс-модальное обобщение. Работает ли та же шестистадийная форма для audio-led-продакшнов (music videos, podcasts)? Для интерактивных продакшнов (игры, experiential video)?
9. Заключение
Описанный здесь пайплайн — результат прогона многих продакшнов через генеративные AI-модели и обучения, тяжёлым путём, тому, что ломается. Что остаётся — это структура, делающая генеративный AI поведенчески похожим на съёмочную группу: constraints propagate forward, итерация дешёвая, style-lock'и держатся, консистентность обеспечивается reference-inheritance'ом, а не обучением, и продюсер остаётся в петле на каждой стадии.
Конкретные имплементационные выборы — не единственная форма, которую эта архитектура может принять. Но stage-декомпозиция, series-based-механизм консистентности, правило минимализма на image-prompt-слое и first-frame-then-motion-порядок оказались наименьшим набором обязательств, надёжно производящим консистентный, директабельный, продакшн-качественный выход из off-the-shelf-генеративных моделей.
Приглашение то же, что и в парной A.O.C.-статье: возьмите, сломайте, расширьте, замените.
Цитирование
Nix, A. (2026). A Generative-AI Video Production Pipeline. Working paper.