Пайплайн ДИЧЬ — канонический план
2026-06-16 · единый источник правды по конвейеру. Свёл воедино 4 параллельных описания, обновил под двухслойный метод и Omni-через-браузер. Лекарство от «наработки теряются между итерациями».
⚡ Решить тебе
Открытые развилки — план их НЕ выбирает за тебя
- Бренд / персона. Рабочее имя — ДИЧЬ (весь сегодняшний прогон под ним). Но 16-го наплодили альтернативы: «НЕ МОЖЕТ БЫТЬ», персона «Дядя Клава», 3 системы Гоша/Район/Карандаш. Это эскизы, не решения. Остаёмся на ДИЧЬ или пивот?
- Маскот / ведущий: есть он или нет, и кто? Влияет на упаковку и опенер.
- URL интерфейса Omni — без него не достроить генеративный слой-2.
- Reddit OAuth (client_id + secret) — разблокирует движок идей.
- Гринлайт на перенос
sandbox/oko/ → полноценный проект projects/dich/.
Статус-снимок
✅ Решено — не переоткрывать
- Формат: 9:16 shorts, только абсурд/факап в духе Премии Дарвина (не героическая драма).
- Рынок: RU первым, EN потом. (перебивает старый README «английский/глобал»)
- Двухслойный метод: сначала чистая видео-база, потом слой графики поверх.
- Озвучка: Принц Нур (ElevenLabs библиотека) + контекстная разметка ударений.
- Видеоряд (HARD): контент во фрейме на крутящемся фирменном фоне; фуллскрин-сток запрещён.
- Отбор историй (HARD): только с готовым нарезаемым материалом.
- Сборка: Remotion, паттерн фон+фрейм отлажен. Движок сценария
dich-script готов.
🧰 Готово — переиспользовать, не переделывать
- Библиотека ассетов v2 (28 SFX, 10 треков, 9 шрифтов, 6 мемов, FX) → oko-assets.obahoba.com
- Пресет ровной озвучки (stability 0.6 + срез пауз). Эталонный сценарий — акула v2 (7 битов).
- Слой-2 вручную доказан в приложении Omni (ransom-рамка + текст поверх живого видео).
- Логин в Google для Omni автоматизирован и работает (gdrive.py в tmux, сессия сохранена).
- Обтравка мемов
meme_regen.py — одобрена.
Корень проблемы — почему контекст терялся
- Нет одного шаблона сборки — каждый ролик отдельный
.tsx руками, улучшения не наследуются.
- Правила не принудительны — лежат доками, сборщик их не читает.
- Нет QA-гейта — косяки ловятся только глазами постфактум.
- Дрейф документации — README/старые планы описывают прошлые версии. Этот файл лечит №4.
Карта пайплайна — одна
Соответствие two-layer: Stage 0 = M1+M2 · Stage 1 (чистая база) = M3 · Stage 2 (графика) = слой-2 внутри M4 · Stage 3 = M4.
M1 — Идея-движок youtube ✅reddit OAuth 🔴
Источники → StoryCandidate со ссылками на исходный медиаконтент. Добить: гейт «есть нарезаемый материал».
M2 — Сценарий + Direction ✅
dich-script/scripter/factcheck → ScriptSpec + ShotList. Добить: авто-классификатор типа + разметка бита на тип материала.
M3 — Материалы / Слой 1 (чистая база) ✅
Реальные кадры → нарезка; нет → gemini-3-pro-image → Veo в живое движение → чистый шот. Добить: под-модуль сбора реального контента по ссылкам.
M4 — Сборка + Слой 2 (графика) паттерн ✅шаблон 🔴
Хард-каты, мемы, субтитры, переходы. Ядро рефактора: один параметрический DichVideo.tsx (props = ShotList+words) вместо tsx-на-ролик. Убивает корень №1.
M5 — QA-гейт 🔴 с нуля
Авто-проверка против конституции: каты 1.5–3с, микс голос>>SFX>музыка, плотность мемов, нет фуллскрин-стока. Убивает корень №3.
M6 — Фиксы 🔴
Точечная перегенерация бита N без полного ре-рендера.
Слой-2 движок — главное изменение 16-го
Графика поверх чистого шота, оригинал сохраняется. Три пути по приоритету:
- 1. Генеративный Omni через браузер (целевой). Логин автоматизирован ✅. Осталось: URL интерфейса → грузить шот+референсы+промт → генерация → скачивание. Блокер: URL.
- 2. Композитинг (fallback, работает headless сейчас). Ransom-рамка/стикеры + чёткий текст слоем поверх. Не «магия Omni», но без браузера.
- 3. Официальный Vertex Omni API (future). Обещан «в недели», Vertex включён → drop-in.
Фазы реализации
- Фаза 0 — фундамент (рекомендованный старт сборки): конституция в индекс + brand.json + параметрический
DichVideo.tsx. Бьёт в корни 1–2.
- Фаза 1 — QA-гейт (M5). Корень №3.
- Фаза 2 — вход (M1+M2): фильтр «есть материал» + классификатор + арт-директор шот-листа.
- Фаза 3 — сбор реального контента (M3) + слой-2 Omni + фиксы (M6).