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

Куда дальше