# Дорожная карта видеофич — Техническая консультация v1 **Дата:** 22 марта 2026 **Консультанты:** ML/AI-инженер, Backend-архитектор, Remotion-инженер, Frontend-архитектор, DevOps-инженер, Инженер по производительности --- ## Общая картина Четыре фичи. От простого к безумному. Вот что получается, если разложить всё по полочкам: | # | Фича | Сложность | MVP | Полная версия | Доп. инфраструктура | |---|-------|-----------|-----|---------------|---------------------| | 1 | Продвинутые шаблоны Remotion | Легко-средне | 3-4 дня | 3-4 дня | Ничего — можно начинать хоть сейчас | | 2 | Детекция вирусных моментов | Средне | 5-7 дней | 8-12 дней | Только API-ключ для LLM | | 3 | Авто-монтаж и трекинг лица | Очень сложно | 12-15 дней | 30-45 дней | Фаза 1: ничего; Фаза 2: GPU-воркер | | 4 | Конвертация в вертикальные Shorts (9:16) | Средне | 6-8 дней | +3-4 дня после #3 | Ничего | | **Итого** | | | **26-34 дня** | **44-65 дней** | | Реалистичный прогноз для одного разработчика: **6-8 недель** (все MVP) или **3-4 месяца** (полные версии). --- ## Фича 1: Продвинутые шаблоны Remotion **Статус:** Спецификация и план реализации уже написаны. Бери и делай. - Спецификация: `docs/superpowers/specs/2026-03-21-advanced-remotion-templates-design.md` - План: `docs/superpowers/plans/2026-03-21-advanced-remotion-templates.md` **Что делаем:** Расширяем `CaptionStyleSchema` четырьмя новыми стилями подсветки слов (pop_in, karaoke, bounce, glow_pulse), двумя переходами (zoom_in, drop_in), тремя полями (word_entrance, highlight_rotation_deg, text_transform). Добавляем два системных пресета: "Shorts" и "Podcast". **Где трогаем код:** Расширение схемы в Remotion + бэкенде, логика рендеринга в `Captions.tsx`, Alembic-миграция для пресетов, контролы в StyleEditor на фронте. **Особый интерес специалистов не требуется** — всё спроектировано, новой инфраструктуры нет. Самая безрисковая фича в этом списке. --- ## Фича 2: Детекция вирусных моментов Вот тут начинается самое интересное. За $0.005 за видео мы можем автоматически находить самые цепляющие фрагменты в подкастах и интервью. Пять копеек — и AI выкладывает тебе на блюдце моменты, которые зрители пересылают друг другу. ### Архитектура **LLM API:** Gemini 2.5 Flash — лучшая поддержка русского языка, $0.15/$0.60 за 1М токенов. Альтернатива: GPT-4o-mini (те же деньги, русский чуть хуже). Стоимость анализа одного 30-минутного видео: примерно $0.005. **Аудио-подкрепление:** `librosa` для кривых RMS-энергии — уточняет границы клипов до естественных пауз, повышает скор для энергичных сегментов. Зависимость ~20МБ, обработка 30-минутного аудио за <10 секунд. **Пайплайн:** 1. Берём транскрипцию из БД 2. librosa считает огибающую энергии по всему аудио (разрешение 100мс) 3. LLM анализирует текст транскрипции через промпт со structured JSON output 4. Постобработка: привязка границ клипов к точкам низкой энергии, расчёт energy-скоров 5. Сохраняем клипы в новую таблицу `clips` ### Бэкенд **Новый модуль:** `clips` (models, schemas, repository, service, router) — хранит найденные клипы со связями project/file/job. **Модель клипа:** ``` Clip { project_id: UUID (FK projects) source_file_id: UUID (FK files) job_id: UUID? (FK jobs) title: str start_ms: int end_ms: int score: float source_type: "viral_detected" | "user_created" | "auto_generated" status: "pending" | "approved" | "rejected" | "exported" meta: JSON? (рассуждения LLM, теги, хэштеги) } ``` **Новый тип джоба:** `VIRAL_DETECT` в `JobTypeEnum`. Актор вызывает LLM API напрямую через `httpx` из Dramatiq-воркера — отдельный сервис не нужен. **Интеграция с LLM:** - Прямой HTTP-вызов из актора с retry + exponential backoff на 429 - Промпты хранятся в `cpv3/infrastructure/prompts/viral_detection_v1.txt` - Активная версия контролируется через env-переменную `LLM_VIRAL_PROMPT_VERSION` - Новые настройки: `LLM_API_URL`, `LLM_API_KEY`, `LLM_MODEL_NAME` ### Фронтенд - Новый `ViralClipsStep` в визарде проекта (features/project/) - Список клипов с превьюшками, скорами, заголовками, кнопками принять/отклонить - Модалка редактирования клипа с видео-превью (воспроизведение ограничено диапазоном start/end) - Новый тип джоба `VIRAL_DETECT` в обработке нотификаций (через существующую WebSocket-инфраструктуру) ### Ключевые цифры | Метрика | Значение | |---|---| | Точность (precision) | 50-70% | | Полнота (recall) | 60-80% | | Время обработки | 10-20 секунд | | Стоимость за видео | ~$0.005 | | Стоимость при 1 000 видео/месяц | ~$5 | | Новые зависимости | `google-generativeai` или `openai` (~10МБ) + `librosa` (~20МБ) | 10-20 секунд и пять долларов за тысячу видео. Вдумайтесь в эти цифры. ### Риски - **Качество промпт-инжиниринга** определяет ценность фичи — придётся итерировать по фидбеку пользователей - **Визуальные моменты** (мимика, физическая комедия) из текста не ловятся — ~20-30% вирусных моментов проходят мимо - **Качество транскрипции критично** — Whisper `tiny` даёт ~25% WER на русском; для входных данных вирусной детекции использовать минимум `small` - **LLM галлюцинирует таймстемпы** — обязательно валидировать возвращённые метки времени против реальных границ сегментов ### MVP vs Полная версия - **MVP:** Только текстовый анализ через LLM, без аудио-энергии. Возвращает клипы со скорами. Пользователь ревьюит и принимает/отклоняет. - **Полная:** Добавляем librosa-анализ энергии, few-shot примеры из принятых пользователем клипов, пакетную обработку, прямой экспорт клипов в 9:16. --- ## Фича 3: Авто-монтаж и трекинг лица Самая амбициозная фича. Самая сложная. И, возможно, самая впечатляющая для пользователей. Представьте: загружаете подкаст с двумя спикерами, а на выходе получаете динамичное вертикальное видео, где камера сама «следит» за говорящим — как будто это снимал живой оператор. ### Архитектура **Детекция лиц:** MediaPipe BlazeFace (Apache 2.0, модель ~2МБ, 30-60 FPS на CPU). Сэмплируем на 3 FPS — позиции лиц не меняются значительно за 330мс. Зависимость: `mediapipe` (~30МБ). **Диаризация спикеров:** pyannote.audio 3.1 (MIT, ~10% DER, self-hosted). На CPU работает со скоростью 0.17-0.33x реального времени (5-10 минут на 30-минутное аудио). GPU ускоряет до 1-2 минут. Зависимости: `pyannote-audio` (~200МБ) + `torchaudio` (~50-80МБ). PyTorch уже установлен через Whisper. **Маппинг лицо-спикер:** - **Фаза 1:** Эвристика по временнОй корреляции — сопоставляем треки лиц с сегментами спикеров по максимальному пересечению во времени. 70-85% точности для видео с двумя спикерами. Ноль дополнительных зависимостей. Около 100 строк Python. - **Фаза 2:** TalkNet-ASD (Active Speaker Detection) — совместный анализ движения губ и аудио для определения, кто говорит. 92.3% точности. Требует `torchvision` + веса модели (~50МБ). Нужен GPU (2-5 FPS на CPU vs 15-25 FPS на GPU). **Видео-композитинг (подход Remotion):** Динамический кроп через CSS `transform: scale() translate()` на элементе `