7 пайплайнов

У системы 5 production flow по типам выхода + 2 новых intelligence-pipeline (auto-concept + scene-by-scene clone). Каждый — это последовательность вызовов скиллов с чёткими входами/выходами. Все 7 в одном месте — чтобы видеть полную картину.

Сводная таблица

#PipelineTop-level скиллВыходЦена/штукаВремя
1Voiceover advideo-orchestrator9-30s .mp4 с озвучкой$5-155-15 мин
2Textover advideo-orchestrator15s .mp4 без озвучки (типографика)$1-33-8 мин
3Static creativecreative-orchestrator1-N .png постеров$0.04-0.781-5 мин
4Carouselcreative-carousel5-10 .png + ZIP + PDF$0.0001~1 мин
5Explainer videocreative-explainer-video2-5 мин .mp4 narrated$0.55 (3 мин)5-7 мин
+Screencast (talking-head)video-screencastЧистая монотонная нарезка с captions$0.02~3 мин
6 NEWTrend discovery / concept gentrend-pickerN concept briefs JSON + trend-report.md$0.05-0.252-10 мин
7 NEWCompetitor scene-by-scene clonevideo-clone-competitorfinal.mp4 (структура чужого, контент наш)$5-1510-20 мин

1. Voiceover ad pipeline

Главный пайплайн системы. Превращает бриф в готовое видеообъявление с озвучкой за кадром, музыкой и субтитрами.

Brief.md + clip library в БД
↓
video-copywriter → текст озвучки (storytelling / direct / expert)
↓
video-voiceover → voiceover.mp3 через ElevenLabs + duration
↓
video-director → variant_a.mp4, variant_b.mp4 (FFmpeg монтаж + music ducking)
↓
video-captions → + karaoke субтитры через Remotion
↓
video-reviewer → scores + issues (опционально, для loop)
↓
Финальный .mp4 в ~/video-projects/<project>/videos/

Что происходит внутри

  1. Orchestrator резолвит проект из реплики («сделай 3 ролика для apparatus»), вызывает preflight check (есть ли клипы, голоса, API-ключи)
  2. Copywriter читает brief.md, выбирает type (например storytelling), генерирует текст через Gemini text, проверяет previous generations (чтобы не повторяться), сохраняет в generated_texts
  3. Voiceover берёт next-voice из rotation проекта (least-recently-used), вызывает ElevenLabs TTS, сохраняет voiceover.mp3, замеряет длительность, записывает в voiceover_history
  4. Director читает текст + длительность озвучки → выбирает клипы из project_clips, проверяет recent rotation, строит montage_plan (2-3 варианта) → assemble.py с FFmpeg склеивает + накладывает музыку с ducking
  5. Captions прогоняет Whisper по voiceover, получает word-level timestamps, рендерит karaoke-субтитры через Remotion (с —text оригинал чтобы исправить Whisper-ошибки), накладывает на видео
  6. Reviewer опционально: extract frames → Vision QA → JSON с issues → если score < 7 — обратно на пересборку
Главное: orchestrator может вызвать в auto режиме (всё подряд без остановок) или semi-auto (паузы после text / voice / assembly для approval).

2. Textover ad pipeline

Короткое видео без озвучки — только клипы + музыка + анимированный текст поверх. Fixed 15 секунд. Используется для silent autoplay в Stories / Reels.

Brief.md + clip library
↓
video-copywriter → type=textover_hook (offer + 3 bullets + profit + CTA)
↓
video-director (--format textover --duration 15) → raw_video.mp4 (clips + music 0.30 vol)
↓
video-remotion → + TextoverAd overlay (15 пресетов на выбор)
↓
Финальный textover.mp4

Ключевые отличия от voiceover-пайплайна:

3. Static creative pipeline (poster)

Single или batch постеры через Gemini 3 Pro Image. С variants × aspects × QA loop.

Brief / hook + brand.yaml + references/
↓
creative-orchestrator (mode=run)
↓
creative-poster brand show → brand context auto-injected
↓
creative-poster variants × N → angle explosion (math/emotion/fear/curiosity/...)
↓
creative-poster gen (per variant) → 4:5 base через Gemini
↓
creative-poster qa_review → JSON {score, issues, suggested_fix}
↓
creative-poster refine (если score < 7) → multi-turn edit
↓
creative-poster multi_aspect → 4:5 → 9:16 / 1:1 / 2:3 / 16:9 outpaint
↓
creative-poster db log + present.py → + HTML preview (GR-1)
↓
~/video-projects/<project>/posters/<run>/*.png

3 режима creative-orchestrator

ModeЧто делаетКогда брать
quick1 постер + опц. QA + опц. multi-aspect + опц. deliveryБыстрая итерация / single creative
runFull pipeline: variants × aspects + auto-QA + refinement loop + keep top-N + deliveryBatch для production (5-20 постеров)
perf-importMeta Graph API → creative_performance → winners report по CPL/CTRКогда есть live метрики и нужен feedback loop

4. Carousel pipeline

Instagram-карусели через REMOTION (TSX templates), НЕ через Gemini Image. Это даёт perfect Cyrillic, нет CTA-bug, нет softbox-bug, $0 на slides.

topic + brand.yaml + references/
↓
creative-carousel init_project.py → bootstrap <project>/carousel-remotion/ (one-time)
↓
creative-carousel plan.py → JSON plan через Gemini text (slide_n / type / headline / subhead / visual_hint)
↓
[APPROVAL GATE] пользователь смотрит plan.json, опционально редактирует
↓
creative-carousel render_slides.py → npx remotion still × N (TSX → PNG)
↓
creative-carousel pack.py → ZIP (для Meta) + PDF (для клиента)
↓
creative-carousel present.py → HTML preview с scroll-snap + lightbox + per-slide payload
↓
~/Desktop/<slug>_carousel.zip + .pdf + .html

Почему Remotion, не Gemini

Раньше карусель делалась через Gemini Image — было плохо:
  • Cyrillic typos — ~50% случаев символ ₸ заменялся на букву Т
  • CTA-pill рисовался поверх несмотря на запрет в промпте
  • Softbox попадал в кадр (промпт «studio light» → модель рисовала источник)
  • Все слайды получались одинакового стиля (один промпт)
С Remotion это невозможно by construction: TSX рендерит HTML/CSS → ₸ это реальный Unicode-символ, нет понятия «CTA-кнопка», нет рендеринга «источника света». Это просто другой класс bug'ов.

5. Explainer video pipeline

Длинные narrated видео 2-5 мин. Туториалы, case-study, демо. Remotion + ElevenLabs.

topic + brand.yaml + assets (product photos, screenrecords)
↓
explainer init_project.py → bootstrap <project>/explainer-remotion/ (one-time)
↓
explainer plan.py → JSON scene plan: vo_text + on_screen_text + visual_hint + asset_ref
↓
[APPROVAL GATE] review vo-тексты, опц. править
↓
explainer vo.py → ElevenLabs TTS per scene → mp3 + patch duration_seconds в plan
↓
explainer render.py → npx remotion render → mp4 (+ опц. ffmpeg bg-music mix)
↓
explainer present.py → HTML с embedded MP4 + clickable timeline + per-scene payload
↓
~/Desktop/<slug>_explainer.mp4 + _preview.html

Ключевые особенности

+ Screencast (talking-head) pipeline

Альтернативный путь — когда пользователь сам снимает на камеру/Screen Studio с несколькими дублями. Никакой AI-генерации, только чистка и сборка.

raw .mp4 (запись пользователя) + canonical script.txt
↓
video-screencast detect_takes.py → silence detect + per-chunk Whisper + dedup → cut_plan.json
↓
video-screencast cut_and_clean.py → ffmpeg trim/concat + voice cleanup chain + pad 1080×1920
↓
video-captions (style=karaoke, highlight=monochrome) → scale-pop субтитры через Remotion
↓
video-director overlay_music.py (--volume 0.08) → background music (тише чем для TTS — реальный микрофон нужен больше headroom)
↓
Финальный .mp4 готовый к публикации

Voice cleanup chain (для реального микрофона)

highpass=f=80,                                          # вырезать гул < 80Hz
afftdn=nf=-25,                                          # FFT-denoise -25 dB
acompressor=threshold=-18dB:ratio=3:attack=20:release=200:makeup=2,   # компрессор
loudnorm=I=-16:TP=-1.5:LRA=11                           # нормализация громкости
НЕ применять этот voice cleanup chain к ElevenLabs TTS аудио. Для TTS используется простой loudnorm — TTS уже чистый, дополнительные фильтры ломают качество. Voice cleanup нужен ТОЛЬКО реальному микрофону.

6. Trend discovery / concept generation pipeline NEW

Intelligence-pipeline. Превращает competitive intel в готовые брифы для production. 3 mode: trend_discovery / viral_analysis / creator_dna. Стандартный input для downstream video-copywriter + video-clipgen.

Mode 1: trend_discovery

niche / список @конкурентов
↓
instagram-research (search + rank by engagement_velocity) → top 15 reels с метриками
↓
instagram-analyze (download top-10) → 10 mp4 в trends/<date>/reels/
↓
video-analyzer (per-reel frame analysis) → analyzed/*.json (camera, mood, hook, format_type)
↓
LLM in-session (pattern extraction) → patterns.md: common hook/structure/CTA across top-10
↓
LLM in-session (concept generation, читает project.yaml + brief.md + creatives/*.md) → concepts.json: 8 ready-to-go briefs по строгой схеме
↓
trends/<date>/{concepts.json, trend-report.md}

Mode 2: viral_analysis (single URL)

1 specific reel URL
↓
instagram-analyze (download + comment scrape top 50) → source.mp4 + comments.json
↓
video-analyzer (frame-by-frame deep analyze) → scenes[] + hook_first_3s + cta_present + camera_moves[]
↓
LLM in-session (why-it-works analysis) → viral-breakdown.md: engagement breakdown + comment themes + pattern interrupts
↓
LLM in-session (1 clone-ready brief) → concepts.json (1 brief) с inspiration_source.url
↓
Готов для chaining → video-clone-competitor

Mode 3: creator_dna (@handle)

@handle конкурента
↓
instagram-research (get_profile_reels, top 20) → top_reels.json по engagement
↓
instagram-analyze + video-analyzer (per-reel deep dive) → analyzed/*.json (visual + transcript + camera)
↓
LLM in-session (DNA extraction по 9 сигнатурам: visual / lighting / hook / voice / structural / CTA / topic / pacing / aesthetic) → dna-<handle>.md (full 9-section profile)
↓
LLM in-session (N concepts в DNA-style под наш бренд) → concepts-dna.json (N briefs)
↓
trends/<date>/{dna-<handle>.md, concepts-dna.json}
Smart routing: после генерации концептов video-orchestrator читает concepts.json и маршрутизирует каждый по format_type — UGC идёт в Seedance, cinematic в Cinematic Studio, talking-head в Soul Cast + Soul-ID, motion graphics в MotionFX, viral 1:1 — в video-clone-competitor напрямую с inspiration_source.url.

7. Competitor scene-by-scene clone pipeline NEW

Intelligence-pipeline. Берёт конкретный URL чужого ролика и пересобирает его структурно (сцена за сценой) под наш бренд. Inspired by Higgsfield Supercomputer video-adapt, но реализован локально с backend-agnostic routing.

URL ролика + project_slug + clone_mode (product-swap / avatar-swap / location-swap)
↓
yt-dlp / instagram-cli MCP → source/source.mp4
↓
scene_split.py (PySceneDetect) → scenes/scene_NNN.mp4 + scenes.json (durations)
↓
video-analyzer (per-scene) → scenes/scene_NNN.json (camera + mood + subject + lighting)
↓
LLM in-session (load project.yaml + brief.md + Soul-ID UUIDs + references/)
↓
LLM in-session (per-scene MCSLA rewrite, applies mode rules) → adapted/adapted_scenes.json (MCSLA prompts + image refs)
↓
regenerate.py --backend auto (parallel ≤3) → regenerated/scene_NNN.mp4
↓
stitch.py (ffmpeg concat, preserves original durations + rescales to source resolution) → final.mp4 + optional watermark
↓
clones/<clone_id>/final.mp4 + intermediate artifacts

Per-scene backend routing (auto mode)

Сцене нужноBackendReason
soul_id_needed: true (avatar-swap)higgsfieldТолько Soul-ID имеет persistent face training
Cinematic camera move (orbit / vertigo / robo arm / dolly zoom / FPV / lazy susan / crane)higgsfieldVeo не контролирует надёжно
Higgsfield-native model (cinematic_studio_*, kling*, wan*, seedance*, soul_cast)higgsfieldNative support
Veo model (veo3_1*, veo3*)direct Veo (GCP)Cheaper, нет vendor lock-in
Всё остальноеdirect Veo (default)Cheap fallback
Cost: типичный 10-сценовый clone reel ~$5-7 на auto-routing (vs $10-15 если всё через Higgsfield) — ~50% экономия. Force через --backend higgsfield или --backend veo если нужно.

3 mode — что меняется

ModeМеняемСохраняем
product-swapПродукт + packaging + надписи на упаковкеАктёр, локация, действие, камера, mood, тайминг
avatar-swapЛицо/тело/одежда (через Soul-ID UUID)Продукт, локация, действие, камера, тайминг (с Identity/Motion separation)
location-swapОкружение (interior/exterior)Актёр, продукт, действие, камера

Cross-pipeline: GR-1 (preview pages)

Каждый production-пайплайн автоматически создаёт preview.html с payload-сайдбаром в конце своего flow. Это обязательное правило системы (для 2 новых intelligence-пайплайнов preview пока TODO). Подробно: GR-1.

ПайплайнPreview скриптCoverage
Voiceover ad(пока нет)TODO — нужно добавить
Textover ad(пока нет)TODO
Static creativecreative-poster/scripts/present.py✅
Carouselcreative-carousel/scripts/present.py✅
Explainer videocreative-explainer-video/scripts/present.py✅
Trend discovery / concepts(пока нет) — auto-генерится trend-report.md в стандартный markdownTODO
Competitor clone(пока нет) — clones/<id>/ directory с regen_log.json содержит provenanceTODO

Куда дальше