PromtGen: аудио и видео направление

PromtGen начинался как генератор промтов для товарных изображений, но текущая версия уже смещается в сторону полноценного media-workspace. Главный новый блок — Video Promo (VEO 3): отдельный режим для подготовки продуктовых роликов с раскадровкой, движениями камеры, эффектами, текстовыми overlay и JSON payload.

Аудио-направление пока не реализовано как отдельный модуль, но логика проекта уже подводит к нему: если есть storyboard, длительности кадров, текстовые overlays и сценарий ролика, следующим шагом становится звук — voiceover, саунд-дизайн, music mood и синхронизация аудио с кадрами.

Что уже есть по видео

Видео-модуль реализован в components/VeoPanel.tsx и работает как отдельный guided workspace. Он не смешан с image cards: пользователь явно переключается в режим Video Promo (VEO 3), а тяжёлый компонент загружается лениво.

Текущие возможности:

  • выбор языка итогового prompt: RU или EN;
  • базовое описание продукта;
  • категория товара как контекст;
  • длительность ролика;
  • reference image URL/path или текстовое описание референса;
  • visual style, quality, background, lighting и color palette;
  • storyboard из сцен и кадров;
  • длительность каждого кадра;
  • camera motion: static, pan, orbit, zoom, FPV и другие варианты;
  • эффекты: smoke, water, glitch, fire, rain, particles, underwater и др.;
  • product behavior patterns по категориям;
  • overlay text и иконки;
  • preview summary;
  • full prompt;
  • prompt по отдельным сценам;
  • JSON payload для API-ориентированного workflow.

Важная особенность: модуль не просто просит написать «сделай красивый ролик». Он заставляет разложить ролик на управляемые элементы: что показываем, как движется камера, сколько длится кадр, какой эффект используется, какой текст появляется поверх видео.

Storyboard как ядро видео-модуля

Внутренняя модель видео строится вокруг VeoFormState. Главная часть модели — вложенная структура:

VeoFormState
  -> scenes: VeoScene[]
     -> shots: VeoShot[]

Сцена задаёт крупный блок ролика. Кадр задаёт конкретный визуальный фрагмент: длительность, описание, движение камеры, эффект, свет, overlay text, иконку и при необходимости behavior pattern.

Такой подход удобен для коммерческих роликов, потому что продуктовые видео редко состоят из одного абстрактного запроса. Обычно нужна последовательность:

  1. показать общий вид товара;
  2. приблизиться к материалам или деталям;
  3. продемонстрировать функцию;
  4. вывести benefit или spec;
  5. завершить hero-shot с названием и ключевым сообщением.

PromtGen превращает эту структуру в prompt, который можно копировать целиком или по сценам.

Product behavior patterns

Сильная часть видео-направления — category-specific behavior patterns. Они описаны в constants.ts для разных категорий:

  • электроника: включение устройства, зарядка, интерфейс, RGB-подсветка, waterproof test;
  • одежда: движение ткани, ветер, stretch test, zipper action, texture touch;
  • обувь: бег, прыжок, flex, splash, grip, shock absorption;
  • еда: наливание, нарезка, пар, melting, fizzing;
  • FMCG: pump action, spray, foam, absorb, wipe clean;
  • инструменты: drilling, cutting, sparks, battery swap, drop test;
  • посуда: pouring tea, boiling, non-stick demo, stacking, polishing.

Это важнее обычного списка эффектов: поведение привязано к типу товара и помогает сделать ролик не декоративным, а демонстрационным.

AI-assisted действия в видео

Видео-модуль уже использует Gemini как ассистента для подготовки контента. При наличии VITE_GEMINI_API_KEY доступны сценарии:

  • анализ изображения товара и краткое описание материалов, формы и визуальных признаков;
  • генерация короткого product description;
  • генерация visual style;
  • генерация описания кадра с учётом продукта, категории, движения камеры и, при необходимости, предыдущего кадра.

Эти функции не генерируют финальное видео. Они помогают быстрее заполнить качественные текстовые поля, из которых затем собирается VEO prompt.

Контроль качества prompt перед генерацией

В VeoPanel.tsx есть review rail и validation logic. Сейчас проверяются:

  • заполнен ли тип товара;
  • добавлено ли описание продукта;
  • есть ли хотя бы одно описание кадра;
  • совпадает ли сумма длительностей кадров с общей длительностью ролика;
  • добавлен ли reference image — это advisory, а не блокирующая ошибка.

Это правильное направление: для видео важно проверять не только наличие текста, но и структурную согласованность сценария. Если ролик заявлен на 10 секунд, а кадры суммарно занимают 6 или 14 секунд, prompt становится менее предсказуемым.

Где здесь аудио

Аудио-модуль пока отсутствует в коде, но его место в продукте понятно. В видео-пайплайне уже есть данные, которые можно использовать для звука:

  • длительность ролика;
  • длительность каждого кадра;
  • описание сцены;
  • overlay text;
  • стиль ролика;
  • категория товара;
  • предполагаемое настроение;
  • sequence/shot структура.

Из этого можно строить audio direction:

  • voiceover script;
  • короткие дикторские реплики по сценам;
  • sound design prompts;
  • music mood prompt;
  • список звуковых акцентов для каждого кадра;
  • тайминг аудио-событий относительно storyboard.

Например, для электроники это могут быть boot sound, UI blips, soft bass pulse и короткий voiceover. Для еды — sizzling, pour, crunch и более тёплый музыкальный фон. Для инструментов — механические щелчки, искры, workshop ambience и уверенный дикторский тон.

Возможная структура Audio Layer

Следующий логичный слой — добавить в VeoFormState аудио-поля:

VeoFormState
  -> audio
     -> voiceoverEnabled
     -> voiceoverTone
     -> musicMood
     -> soundDesignStyle
     -> perShotAudioCues

На уровне интерфейса это может быть отдельный collapsible-блок внутри Video Promo:

  • Voiceover — текст или генерация сценария диктора;
  • Music — настроение, темп, жанр, интенсивность;
  • SFX — звуковые события по кадрам;
  • Mix notes — требования к громкости, паузам, акцентам;
  • Export — audio prompt вместе с video prompt или отдельным блоком.

Важно не превращать PromtGen в аудиоредактор. Ценность проекта — в подготовке структурированного prompt/spec для генеративного пайплайна. Поэтому аудио должно быть описательным слоем, связанным со storyboard.

Кейсы использования аудио/видео направления

Короткий ролик для маркетплейса

Пользователь задаёт товар, 10 секунд длительности, 3–4 кадра, преимущества и финальный hero-shot. На выходе получает full VEO prompt, JSON payload и в будущем — audio direction для озвучки и SFX.

Видео для карточки товара в соцсетях

Можно выбрать aspect ratio 9:16, собрать вертикальный сценарий, добавить overlay text и сделать акцент на быстрых benefit-кадрах.

Демонстрация функции

Behavior patterns подходят для сценариев, где надо показать не только внешний вид, но и действие: включение экрана, водостойкость, сгибание подошвы, распыление, сверление, нарезку или пар.

Подготовка production brief

Даже если финальное видео делает дизайнер или motion-специалист, PromtGen может дать структурированный brief: сцены, кадры, камера, эффекты, текст, стиль, длительности и будущие аудио-заметки.

Что важно не сломать при развитии

Видео-модуль уже большой, поэтому развитие audio/video направления лучше делать поэтапно:

  1. не добавлять генерацию финального видео прямо в VeoPanel.tsx без backend;
  2. вынести prompt builders в отдельные pure-модули;
  3. разделить state и UI-секции видео;
  4. добавить серверный слой для безопасных API-вызовов;
  5. хранить drafts и историю генераций;
  6. добавить тесты для prompt builders и validation.

Визуал статьи

Для этой статьи используется отдельная обложка /images/promptgen-audio-video-cover.png: неоновый media-workstation с holographic storyboard timeline, видеокадрами товара и audio waveform под таймлайном. Главное изображение проекта /images/prmt.jpeg сохранено для основной карточки PromtGen.

Связанные материалы