Первый этап: разобрана логика выбора кадров, консистентность повествования и производственный тракт. Дальше — наш визуальный стиль, система ассетов и выбор инструментов под каждый шаг.
статичных кадров в ролике. Перемерил правильно: не по первому и последнему кадру шота, а по остаточному локальному движению внутри кадра с компенсацией движения камеры. Минимум по всем 143 шотам — 0,92 единицы яркости, медиана 5,6. Порог «глаз не отличит от стоп-кадра» — примерно 0,3. Ниже него нет ни одного шота. Анимировано абсолютно всё, включая кадры с картой и книгой; предыдущая классификация «почти статика» была артефактом метода, а не свойством ролика.
шота прогнаны через оживление — значит норматив на ролик такой длины это ~145 генераций картинки + 145 анимаций по 2–5 секунд, а не «часть можно закрыть зумом по картинке». Отсюда сразу два следствия. Первое: анимировать надо дёшево и пачкой, иначе экономика не сходится. Второе: чёрные карточки глав — единственное неанимированное место у них, и это наша самая дешёвая точка превосходства. Оживший титр стоит копейки и сразу читается как «сделано лучше».
Это не догадки — каждое правило подтверждается конкретными шотами с таймкодами. Я сверял текст озвучки, который звучит на шоте, с тем, что в этом шоте показано.
Первая же фраза — «Он прожил всего 32 года» — идёт не на мальчика и не на битву, а на мёртвого героя на ложе. Зритель с первой секунды знает, чем всё кончится, и смотрит уже не «что будет», а «как он к этому пришёл».
Кольцо замыкается в финале: последний кадр — мальчик над огромной долиной (7:46, 5,1 с — самый длинный кадр ролика).
«Он мечтал о единой цивилизации» → герой смотрит на живой город сверху. «И утопил её в крови» → макро окровавленного кулака. Противопоставление в предложении всегда разбивается на пару кадров: широкий-светлый против крупного-тёмного.
Тот же приём: 2:32 «сотни тысяч воинов» (бесконечная колонна) → 2:40 «у Александра около 40 000» (горстка всадников в пустом кадре).
«Отец — жёсткий реалист» (0:33, трон) / «политик, полководец» (0:35, перед войском) / «мать Олимпиада, мистичная, религиозная» (0:38, у жертвенного огня). Никаких «одна картинка на весь абзац»: каждое определение получает свой шот на 2–2,6 с.
Так же режется список причин смерти на 6:41–6:48: малярия / брюшной тиф / раны — три кадра подряд.
«Он не хочет быть царём. Он хочет быть великим». В кадре мальчик держит корону и отворачивается от неё, а в зеркале за ним — конный полководец. Абстрактная мотивация показана предметом и отражением, без единого слова на экране. Лучший шот ролика по режиссуре.
Сюда же: 7:14 «наследника нет» — пустой освещённый тронный зал.
«Пролив между Европой и Азией» показан с орбиты, как спутниковый снимок в живописи. Ни одной анимированной карты со стрелочками, ни одной подписи. Масштаб доносится точкой съёмки, а не графикой.
Когда карта всё-таки нужна, она лежит на столе: пергамент, свеча, рука. Карта всегда часть сцены, никогда не оверлей. Тот же приём в финале главы о распаде — рука капает чернила на карту (7:00).
«Армия меньше, беднее и дальше от дома» — четыре всадника в пустом широком кадре. Соотношение сил читается занятой площадью кадра. За весь ролик на экране не появилось ни одной цифры, ни одной подписи, ни одного инфографического элемента.
Крупные планы Александра не рассыпаны равномерно: они стоят ровно на выводах. «Он уже не наследник, он царь» (2:03), «между освободителем и тираном» (4:00, лицо расколото светом надвое), «не пример для подражания» (7:42). Между выводами герой либо в общем плане, либо его вообще нет в кадре.
2,88 с чёрного экрана с золотым титром, жёсткий вход и выход без затемнения и полная тишина в озвучке — диктор молчит только здесь. Это одновременно разметка структуры, передышка для зрителя и точка, где он решает досматривать или нет.
На фразу «Александр Македонский не пример для подражания. Это предупреждение» идут два самых жёстких кадра за весь ролик — окровавленное кричащее лицо в гуще боя, подряд, с нарастанием крупности. Самый сильный визуал приберегается под тезис, а не под битву.
Каркас при этом безупречный и от текста не зависит. Сетка трёхсекундных шотов и паузы на карточках только усилят панч, если он в тексте есть — а у них его нет.
У «Сторикона» с этим ровно та проблема, которую ты назвал: Александр из кадра в кадр — то же амплуа, но не то же лицо. Держится типаж (светлые кудри, красный плащ, бронза), а не личность. На широких планах это не видно, на крупных — заметно. Мы это чиним системно.
| Уровень | Что это | Что фиксируем | Когда обязателен |
|---|---|---|---|
| Персонажи | Александр, Филипп, Олимпиада, Аристотель, Дарий, Гефестион, Парменион | core-ref на нейтральном фоне (3/4, фас, профиль) · палитра одежды · 3 неизменных признака (шрам, наклон головы, застёжка плаща) · возрастные версии (мальчик / 20 / 32) | появляется ≥2 раз или есть крупный план |
| Артефакты | копьё, лавровый венец, карта-пергамент, перстень-печатка, шлем, чаша с ядом | ref-кадр предмета на чистом фоне с 3 ракурсов · размер относительно руки · материал и степень износа | предмет несёт смысл и возвращается |
| Локации | Пелла, Фивы, Вавилон, Персеполь, Гидасп | палитра (3 цвета) · один архитектурный признак · тип света и время суток · погода | глава происходит в этом месте |
vertex_image_ref.py уже умеет принимать core-ref. Без рефа лицо плывёт всегда, с рефом держится.VERTEX_SEED уже поддержан в обёртке — одна серия кадров = один seed.mouth opening, talking, warping.Ты назвал ориентиры — «Человек-паук: Паутина вселенных» и «Аркейн». Оба про одно: трёхмерная форма, но поверхность нарисована рукой. У «Сторикона» этого нет — у них ровная цифровая историческая живопись без графического характера. Вот четыре направления, где мы можем встать; в каждом заложена своя авторская нота.
Аркейн + греческая вазопись. Объёмная нарисованная форма, тушевый контур только на переднем плане, фактура фрески с микротрещинами по всему кадру.
Наша нота: золото — единственный ненатуральный цвет в палитре и появляется только там, где в тексте идёт речь о власти или её цене. Чистого чёрного нет вообще, самый тёмный тон — тёплая умбра.
Сильно: мгновенно узнаётся в превью, цвет работает на смысл.
Плотный живописный 3D, толстый мазок на коже и ткани, тяжёлый объёмный свет, приглушённая база с одним ядовитым акцентом.
Наша нота: холодный мир, тёплый герой — Александр всегда в тёплом пятне света, окружение всегда холоднее на пару шагов.
Риск: ближе всего к тому, что уже у всех; авторства меньше всего.
Паутина вселенных на античном материале. Растровая точка в тенях, сдвиг красного канала по краю героя, жёсткий контур, ризограф-палитра из четырёх красок.
Наша нота: кадр как страница античного комикса — диагональная энергия, зерно бумаги, плашки цвета вместо градиентов.
Риск: тяжелее анимируется, печатная фактура «плывёт» при движении — нужен тест.
Почти монохром: пепел, кость, дым, тёплая пыль. Цвет только два — золото и запёкшаяся кровь, и только на смысловом.
Наша нота: огромное пустое пространство и один тёмный читаемый силуэт. Это же решает главную болезнь ИИ-кадра — кашу в деталях.
Сильно: самый дешёвый в производстве и самый непохожий на конкурентов.
Каждое направление прогоняется через три одинаковые контрольные сцены, подобранные так, чтобы поймать всё, что обычно ломается: крупный план лица (консистентность и «пластилин»), эпический общий план с массовкой (каша в толпе, читаемость силуэта), макро-предмет (узнаваемость артефакта). Двенадцать кадров, один взгляд, один выбор. Скрипт написан и лежит в projects/youtube-factory/research/storikon-teardown/style_probe.py — запускается одной командой, как только откроется генерация.
| Этап | Берём | Почему именно это | Что НЕ берём и почему |
|---|---|---|---|
| Ключевые кадры | Gemini 3 Pro Image на Vertex, с core-ref и фиксированным seed | Единственный из наших, кто уверенно держит референс персонажа и не сыплется на кириллице, если титр всё-таки нужен внутри кадра | Свободные text-to-image без рефа — лицо не удержат |
| Оживление обычного шота ~120 шотов из 145 |
Wan 2.7 через Higgsfield (план ultra уже оплачен) | Дешевле Seedance в 2,5 раза, быстрее вдвое, минимум 2 секунды — ровно наш формат. 8 задач параллельно | Veo на каждый шот — переплата за то, что в спокойном кадре не видно |
| Сложный шот с камерой ~20 шотов |
Veo 3.1 на Vertex, keyframe-цепочка | Единственный, кто внятно водит камеру и держит лицо на крупном. JSON-промптинг, длительность строго 4/6/8 с | Wan на крупном лице — риск «пластилина» |
| Батальный экшен ~13 шотов |
Seedance 2.0 через Higgsfield или OpenRouter | Лучше остальных держит массу и пыль в движении | Veo блокирует толпу с лицами |
| Приёмка шотов | video-qc (Gemini смотрит клип целиком) | Ловит то, что видно только в движении: плывущее лицо, дрожащий предмет, мёртвую анимацию. Меньше $0,10 на 20 шотов | Проверка по стоп-кадрам — пропускает ровно те дефекты, ради которых всё затевалось |
| Озвучка | ElevenLabs, темп 100–105 слов/мин | Норматив снят с их ролика и подтверждён замером | Бесплатные TTS — на восьмиминутном ролике слышно |
| Титры глав | Remotion (движок уже есть) | Оживлённая карточка вместо статичной — наша бесплатная точка превосходства | Статичный PNG, как у них |
| Сборка | Remotion по паспорту ролика + ffmpeg на мастер | Уже работающий тракт из video-nextgen: раскадровка данными, кэш этапов, гейт темпа | Ручной монтаж — не масштабируется на серию |
Твёрдо знаем одно: Seedance стоит примерно $0,12 за секунду — то есть весь ролик на нём в лоб это 145 шотов × 3 с × $0,12 ≈ $52. Wan через уже оплаченный ultra-план даёт основной объём фактически без доплаты, и тогда живыми деньгами платим только за ~20 шотов Veo и ~13 Seedance. Точные цены Vertex за кадр и Veo за секунду я не подтверждал замером — их надо снять на первом же прогоне, а не брать из головы.
800 ± 50 слов на 8 минут. 7 глав по скелету «якорь → событие → механика → поворот → вывод». Фразы 6–12 слов. Плюс наш слой: авторская оценка в конце каждой главы и одна современная параллель на ролик.
Гейт: read-aloud вслух под таймер — 100–105 слов/мин, иначе режемКаждая фраза получает шот: тип (общий / средний / крупный / макро-предмет), функцию (событие / антитеза / вывод / передышка) и длительность 2–5 с. Сумма длительностей сходится с хронометражом озвучки. Выход — storyboard.json, как в video-nextgen.
Из раскадровки выписываются все персонажи, артефакты и локации с числом появлений. Всё, что встречается дважды и чаще, получает core-ref на белом фоне до генерации сцен.
Гейт: ни один шот не уходит в генерацию, пока у его героя нет refГенерация всех ~145 кадров с core-ref, единым seed и единым стилевым блоком промпта. Сложные шоты сразу получают по 3 кадра под keyframe-цепочку.
Гейт: контактный лист всей раскадровки одним листом — стиль и герой держатся по всему роликуПачкой, по 8 параллельно. Обычный шот — Wan, крупный план с камерой — Veo по цепочке, экшен — Seedance. Правило одного движения на крупном, рот закрыт.
Гейт: video-qc по каждому клипу, score ниже порога — переснять, а не «и так сойдёт»ElevenLabs на 100–105 слов/мин, пословные тайминги на выходе. Семь карточек глав в Remotion — с живым фоном и оживающими буквами.
Гейт: на карточке в озвучке тишина — проверяется по таймингам автоматическиШоты режутся по таймингам озвучки. Переходы: 70% встык, 20% провал в чёрное на 0,8 с, карточки жёстко. Музыка — один готовый оркестровый трек на ролик, пока просто подкладываем.
Гейт: мастер −14 LUFS, true peak не выше −1 dBFSПолный просмотр, policy-чек площадки, обложка, описание с таймкодами глав.
Гейт: policy-чек YouTube обязателен до заливкиРазбирал по замерам, не на слух: яркая полоса спектра держится на ровном уровне 0,24 весь ролик — то есть отдельных звуковых эффектов в ролике практически нет. Ни свиста стрел, ни лязга, ни ветра. Только оркестровая подложка и голос.
Консистентность даёт не генерация, а один источник на весь ролик: берётся длинный оркестровый трек с одной гармонией и одним инструментальным составом, и внутри него меняется только громкость и плотность. Как только начинают склеивать разные треки по главам, ролик рассыпается на куски. Если позже захотим генерить музыку — генерить надо один длинный кусок под весь хронометраж, а не по фрагменту на главу.
Проверил фактически: Vertex отвечает BILLING_DISABLED на всех трёх проектах Google (project-2a14e28f, claudebot-video, gen-lang-client), отдельного бесплатного ключа Gemini в системе нет. Higgsfield MCP уже оплачен планом ultra, но требует OAuth-авторизации, а её нельзя пройти из этой сессии — нужна интерактивная. То есть картинки прямо сейчас генерировать нечем.
Дешёвый путь: авторизовать Higgsfield — там план уже оплачен, новых трат не будет вообще. Быстрый путь: включить биллинг на Vertex — тогда работает уже написанный style_probe.py и весь наш проверенный тракт с core-ref и seed.
Направление стиля — A «Терракота и тушь», B «Аркейн в лоб», C «Печатный рельеф» или D «Пепел и золото». Можно не выбирать вслепую: как только откроется генерация, прогоняю все четыре по трём контрольным сценам и присылаю двенадцать кадров одним листом. Моя ставка — A: самая узнаваемая в превью и единственная, где цвет работает на смысл текста.