ДИЧЬ / OKO · DESIGN SPEC

Перестройка пайплайна вокруг арт-дирекшна

Прошлый прогон отвергнут целиком. Чиним не косметику — меняем центр тяжести: арт-дирекшн становится always-on мастер-слоем, идея проходит гейт, концепция конкурирует, на приёмку выходит картинка.

Дата: 2026-06-17  ·  Статус: брейншторм-конвергенция, утверждён устно («ok»)
Преемник: spec 2026-06-16 (остаётся для истории)  ·  Источник правды: этот документ
Следующий шаг: вычитка → implementation plan (writing-plans)
Центр тяжести

Арт-дирекшн = always-on мастер-слой. Включён ВСЕГДА, не только на дырах.

Governs отбор, композицию, обработку и ритм — и реального материала, и генерёжки. Самотёк запрещён даже на готовом реале: реал тоже надо собрать, скомпоновать и «запечь под соусом».

Гейтов: 2
Стадий: 5
Концепций на скоринг: 3
Креатив-слой: Claude Opus
Язык: RU
Контекст отказа · §0

«Слаб сам подход.» Форма брифа была полной — провалилась механика.

Бриф outputs/ai-darwin-meta/brief.md имел идею/концепцию/LOOK/музыку/персонажей/14 шотов. Но пайплайн отработал как single-pass генератор → 14 шотов с одним абстрактным якорем («светящийся цифровой глаз»). Чистый AI-слоп.

§0Пять дыр, на которых посыпался прошлый прогон

§1Зафиксированные решения (locked)

Наследуем все locked-решения spec 2026-06-16 (faceless, голос Принц Нур, контент во фрейме на крутящемся фоне, без Omni, Remotion один шаблон, RU, 2 гейта). Новые:

РешениеЗначение
Центр пайплайнаАрт-дирекшн = always-on мастер-слой. Включён всегда. Governs отбор/композицию/обработку/ритм реала и генерёжки. Самотёк запрещён даже на готовом реале.
Гейт идеиИдея проходит скоринг (виральность / интерес / попадание в цель) до трат. Не прошла — не едет дальше.
Разведка материалаПервый класс, параллельно скорингу идеи. Отвечает «что реально есть» (док-кадры, фото, скрины) → вход в арт-дирекшн, не замена. MVP — кандидаты находит пайплайн, курирует Тимур на Гейт-1.
Многокандидатность концепцииНесколько концепций-«соусов» рождаются параллельно → скоринг → сильнейшая в исполнение. Как хук-движок, но на уровне реализации.
Визуальная раскадровкаВыход арт-дирекшна ОБЯЗАН включать сгенерённый лист-раскадровку (композитная картинка с панелями) via storyboard-prompt-builder фаза 1. Визуальный якорь ролика + главный предмет приёмки на Гейт-1.
Модель креатив-слояИдея / концепция / сценарий / арт-дирекшн = Claude Opus. Картинка/видео = gemini-3-pro-image + Veo. (Раньше весь креатив шёл через Gemini.)

§2Поток — стадии и гейты

S1 идея+гейт ─┬─> S2 АРТ-ДИРЕКШН (мастер) ──> [ГЕЙТ 1] ──> S3 материалы ──> S4 сборка ──> S5 QA ──> [ГЕЙТ 2] ──> публикация
   разведка ──┘     (Opus, N концепций→скор→             (харвест реала +
   материала         бриф + лист-раскадровка)             генерёжка под лист)
S1

Идея + гейт + разведка материала

Вход: ниша/тема ИЛИ история от Тимура.

Выход: StoryCandidate = {заголовок, сырые факты, idea_score, material_inventory[]}.

  • Сбор кандидатов-историй (реальные события, дух Премии Дарвина) — idea_engine/youtube_source.py, trends.py; защищённые сайты — stealth-fetch.
  • [НОВОЕ] Скоринг идеи: сила хука + прокси-виральность + интерес + попадание в цель ОКО (познавательный шок, ретеншн). Порог → отсев. Внутренний авто-гейт, не пауза.
  • [НОВОЕ, параллельно] Разведка материала: поиск реальных видео/фото/скринов → ссылки в material_inventory с пометкой к какому смыслу/биту относятся.
S2

Арт-дирекшн — СЕРДЦЕ (always-on мастер-слой)

Вход: StoryCandidate (идея + инвентарь материала). Модель: Claude Opus.

  • N концепций-«соусов» параллельно — каждая = распиновка как подаём ВСЮ историю (угол, визуальный мир, тон, ключевой приём). Конкретное режиссёрское решение в одну фразу, не «тёмный киберпанк вообще».
  • Скоринг концепций → сильнейшая (критерии: сила хука, отличимость, реалистичность материала, анти-слоп).
  • Для победителя — полный бриф в двух слоях (см. §3).
  • [НОВОЕ] Генерация листа-раскадровки: storyboard-prompt-builder фаза 1 → композитная картинка с пронумерованными панелями + таймкоды + описания. Consistency-якорь всего ролика.

Выход: ScriptSpec + продакшн-бриф (читаемый) + лист-раскадровка (картинка) → ГЕЙТ 1.

ГЕЙТ 1

Тимур

Смотрит картинку-раскадровку + бриф. Курирует материал (отмечает какие реальные исходники берём). Апрув / правки.

S3

Материалы

Вход: ScriptSpec (после Гейта 1). Выход: папка ассетов + VoiceResult (озвучка + тайминг).

Процесс по source_origin бита

  • real → скачать исходник по source_ref, нарезать/обработать под стиль листа-раскадровки (не «бросить клип», а приготовить).
  • generatedgemini-3-pro-image (чистый кадр без текста, консистентный с панелью) → Veo (image-to-video).
  • hybrid → реальный кадр как основа для доп-генерации.
  • Плюс: озвучка Принц Нур (voice.py + accentize.py), музыка/SFX из библиотеки, мемы (meme_regen.py).
S4

Сборка

Вход: ассеты + VoiceResult + ShotList. Выход: mp4 9:16.

Один параметрический Remotion-шаблон DichVideo.tsx (props = ShotList + words): контент во фрейме на крутящемся фирменном фоне, хард-каты по битам, субтитры word-by-word, текст-панчи накладкой, микс голос >> SFX > музыка. Дельта: свести DichV1/PenguinV1/FragFullV3 в один шаблон с calculateMetadata.

S5

QA + финал-тест

Вход: mp4 + ShotList. Выход: отчёт о косяках с таймкодами → ГЕЙТ 2.

Авто-проверка против конституции: длина катов 1.8–4 с, уровни звука, плотность мемов, нет фуллскрин-стока / пустых кадров, каденс 30–46 с. Дельта: лёгкий чек-скрипт (MVP — базовые проверки).

ГЕЙТ 2

Тимур

Финал перед публикацией. Апрув / правки.

§3Контракт выхода арт-дирекшна (требования к S2)

Форма — один артефакт в двух лицах + картинка

Машинный контракт (ScriptSpec/Beat) — исполняется S3 без додумывания.

Читаемый продакшн-бриф — тот же контент по-человечески, для Гейта 1.

Лист-раскадровка (PNG) — главный визуальный артефакт приёмки.

Слой 1 — концепция (на весь ролик)

Слой 2 — раскадровка по битам (на каждый бит)

Планка приёмки — анти-слоп барьер (7 требований)

То, на чём прошлый бриф сыпется. Все 7 обязаны быть пройдены к Гейту 1.

  1. Каждый бит — конкретная визуальная идея, привязанная к смыслу. Тест: «подошёл бы этот кадр любому другому ролику?» → да = слоп = отклоняем.
  2. Соус — настоящее режиссёрское решение, не «тёмный киберпанк вообще».
  3. Визуальное разнообразие — никаких повторяющихся якорей по всем шотам.
  4. Полнота — ни одного placeholder; каждый бит исполним без новых креативных решений.
  5. 2 бана — ноль упоминаний конкурента (Премия Дарвина и пр.), ноль нераскрытого жаргона.
  6. Лист-раскадровка сгенерён и визуально консистентен.
  7. На гейт приходит победитель из N кандидатов (отобран скорингом).

§4Контракт данных — дельта

СущностьПолеНазначение
Beatsource_originLiteral["real","generated","hybrid"] = "generated"
source_refOptional[str] = None
directorial_treatment NEWкак приготовить бит (отбор/нарезка/обработка для реала; обоснование промпта для гена)
shot_typeLiteral["framed","collage","fullscreen"] = "framed"
shot_secOptional[float] = None
text_accent · kindtext-punch и тип ген-кадра — уже есть
StoryCandidate NEWidea_scorefloat + разбивка (hook / virality / interest / fit)
material_inventorylist[{ref, type, beat_hint}]
ScriptSpecconceptConceptLayer (соус / look / music / characters / hook)
storyboard_sheet_path NEWпуть к сгенерённой картинке-раскадровке
lang · caption_style"ru" · "boxed"; акцент ДИЧЬ — из профиля

Профиль ДИЧЬ — profile_dich.py

Голос Принц Нур oKxkBkm5a8Bmrd1Whf2c (рабочий аккаунт ElevenLabs, eleven_multilingual_v2), язык ru, субтитры boxed, акцентный hex.

§5Карта работы (дельта к существующему коду)

СтадияReuseНовое
S1 идеяidea_engine, trends, stealth-fetchскоринг-гейт идеи; разведка реального материала (сбор ссылок)
S2 арт-дирекшнконституция, hook_engine, scripter, factcheck, storyboard-prompt-builderперевод на Opus; N-концепций+скоринг; генерация листа-раскадровки; расширение Beat
S3 материалыassets, meme_regen, align, voice+accentize, библиотекахарвестер реала; генерёжка консистентная с листом
S4 сборкаBg+Framed, captionsодин DichVideo.tsx (props-driven)
S5 QAлёгкий чек-скрипт
Спинаcontracts.pyBeat + StoryCandidate + ScriptSpec.concept/storyboard + профиль

§6Открытые вопросы / риски

Не блокируют старт, но решить в плане.

Как пайплайн зовёт Opus

Текущий пайплайн ходит в Gemini. Варианты: (а) Anthropic API-ключ (надо завести/найти); (б) Claude-в-цикле — креатив-текст генерируется Claude в гейтовом прогоне.

Рекомендация: для MVP — (б), не плодить инфру до обкатки. Решить в плане.

§7Критерий готовности MVP

Один полный ролик ДИЧЬ сквозь это ядро: идея прошла гейтарт-дирекшн (Opus, N концепций → победитель) выдал бриф + картинку-раскадровку (Гейт 1) → материалы (реал курированный + ген консистентный с листом) → сборка одним шаблоном → QA-отчёт (Гейт 2) → mp4 9:16, прошедший конституцию.

Анти-слоп барьер §3 — пройден.

ДИЧЬ / OKO · DESIGN SPEC · 2026-06-17
Источник: sandbox/oko/docs/superpowers/specs/2026-06-17-dich-artdirection-pipeline-redesign.md