Skill #5 · Veo 3.1 clip generation

video-clipgen

AI-креативный продюсер: берёт бриф + референс-фото, планирует пачку клипов, гонит через Google Veo 3.1, анализирует результат и складывает в clip library проекта — готовые «кирпичи» для Director.

Путь
~/.claude/skills/video-clipgen/
Триггеры
сгенерируй клипы, нужны клипы для рекламы, generate clips, заготовки для видео, Veo, наполни библиотеку, reference images, добавь референс
Зависит от
GOOGLE_API_KEY, google-genai, httpx, project.yaml с veo.demographics и veo.scene_context
Пэйрится с
analyzer (анализ результата), director (потребитель клипов), motionfx (альтернатива для абстрактных сцен)

Что делает простыми словами

Не путать с companion-скиллом video-clipgen-higgsfield NEW. Veo — generic scenes, lifestyle, atmosphere. Higgsfield — cinematic camera moves (80+ presets: dolly zoom, orbit, FPV) и image-to-video из статичных фото. Они работают параллельно, оба пишут в одну clips table. Director использует клипы из обоих источников вперемешку.

Это «съёмочная группа на чипах». Вместо аренды площадки, актёров и оператора — ты даёшь бриф и пачку фоток (например интерьер клиники + врача), а Veo генерирует короткие видео-куски 4-8 секунд. Эти куски потом склеит director в готовый ролик.

  1. Читает бриф проекта (что за бизнес, кто аудитория, какая цель рекламы)
  2. Смотрит на референс-фото — буквально смотрит через Vision, не по имени файла
  3. Сохраняет каждый референс в БД с описанием, типом (doctor/interior/product/...) и ключевыми словами
  4. Анализирует текущую library (analyze-library) — что уже есть, чего не хватает
  5. Планирует 5 клипов (hook, product, lifestyle, testimonial, cta) и согласовывает с пользователем
  6. Подбирает релевантные референсы под каждую сцену (match-references)
  7. Гонит Veo 3.1 с правильным промптом + до 3 референс-картинок
  8. Извлекает кадры результата, описывает что реально получилось (Veo иногда понимает промпт по-своему)
  9. Обновляет clip в БД с честным описанием — director потом по нему ориентируется
Это не Director. Clipgen только производит сырые клипы и складывает в library. Сборка готового ролика из этих клипов — это уже video-director.

Prompt Rules — главные запреты

Эти правила вшиты в SKILL.md и нарушать их нельзя — иначе клип уйдёт в мусор. Veo плохо умеет генерить читаемый текст и интерфейсы.

NO TEXT / LABELS / SIGNS / CAPTIONS в сцене. Любые надписи Veo превращает в кривые артефакты. Единственное исключение — простой графический логотип без читаемого текста.
NO SCREENS / MONITORS / UI. Никаких телефонов с открытыми приложениями, мониторов с интерфейсами, планшетов с экраном. Эти штуки в Veo выглядят как болезненный сюр.
NO AUDIO. Все клипы генерятся с generate_audio=False. Голос накатывает voiceover отдельно, музыку добавляет director при сборке.
Demographics — из project.yaml. Внешность и возраст людей берутся из veo.demographics, подсказки из veo.demographics_hint, запреты из veo.forbidden_demographics. Никаких хардкодов «европеоид/азиат» в промпте.
Visual quality в каждом промпте: обязательно указывай camera movement (slow pan / push-in / static / tracking), lighting (natural / soft LED / warm) и color tones (golden / clinical / clean white). Без этого Veo выдаст что-то общее и плоское.

Reference images — золотая жила

Если у клиента есть фотки реальной локации, врача, продукта — это в разы лучше, чем «generic medical office». Veo 3.1 принимает до 3 референсов на одну генерацию и сохраняет визуальную идентичность.

Filenames mean NOTHING. Файл «виниры.jpg» может содержать портрет доктора без всяких виниров. Всегда открывай картинку через Read tool и описывай что РЕАЛЬНО видишь, а не что написано в имени файла.

Image types — выбирай один

image_typeКогда использовать
doctorСпециалист в рабочей среде
interiorИнтерьер бизнеса без явного фокуса на человеке
productКрупный план продукта/оборудования
patientКлиент/пациент (до/после, в кресле, результат)
equipmentСпецифичное для бизнеса оборудование/инструменты
resultРезультат услуги (готовая работа, до-после)
logoЛого, вывеска
lifestyleЛюди в обычной/lifestyle обстановке
teamГрупповое фото, команда

Скоринг match-references

ScoreЧто делать
≥ 8Точно прикреплять — сильное совпадение
4–7Подумать — посмотри match_reasons, если совпадение осмысленное (не просто общие слова) — бери
< 4Пропустить — генерь без референса

Команды

Сохранить бриф

python ~/.claude/skills/video-clipgen/scripts/db.py save-brief \
  ~/video-projects/apparatus \
  --text "Импланты Straumann, премиум-сегмент, аудитория 35-55..."

Добавить референс (после Read картинки)

python ~/.claude/skills/video-clipgen/scripts/db.py add-reference \
  ~/video-projects/apparatus /path/to/photo.jpg \
  --description "Специалист в современном кабинете, мягкое LED, бежевые тона..." \
  --image-type doctor \
  --keywords "специалист,клиника,LED,интерьер,доверие"

Анализ library — ОБЯЗАТЕЛЬНО перед планированием

python ~/.claude/skills/video-clipgen/scripts/db.py analyze-library \
  ~/video-projects/apparatus

# → JSON: by_scene_type, by_mood, missing_types, weak_types,
#         overrepresented, suggestions (приоритизированные идеи)

Подобрать референсы под сцену

python ~/.claude/skills/video-clipgen/scripts/db.py match-references \
  ~/video-projects/apparatus "Профессионал в рабочей среде, крупный план" \
  --image-type doctor --limit 3

Генерация клипа (Veo 3.1)

python ~/.claude/skills/video-clipgen/scripts/veo_generate.py \
  --project-dir ~/video-projects/apparatus \
  --prompt "Close-up of a Central Asian specialist smiling, soft window light, warm golden tones, shallow DOF. Slow push-in. 9:16 vertical." \
  --duration 6 \
  --model veo-3.1-lite-generate-preview \
  --reference-image /path/to/doctor.jpg

Анализ сгенерированного клипа

python ~/.claude/skills/video-clipgen/scripts/analyze_clip.py \
  ~/video-projects/apparatus /path/to/clip.mp4 --frames 3
# → извлекает 3 кадра (начало/середина/конец), потом смотришь их через Read

Обновить описание клипа после визуального анализа

python ~/.claude/skills/video-clipgen/scripts/db.py update-clip \
  ~/video-projects/apparatus 42 \
  --description "Что РЕАЛЬНО на видео..." \
  --scene-type hook --mood energetic \
  --tags "specialist,smile,warm" --actions "looks at camera,subtle nod" \
  --reference-image-ids "[2, 3]"

Скрипты

ФайлЧто делает
scripts/veo_generate.pyГлавный воркхорс — вызывает Veo 3.1 API, передаёт промпт + до 3 reference_image, скачивает результат, кладёт в clips/, автоматически регистрирует в БД
scripts/analyze_clip.pyИзвлекает N равноотстоящих кадров из готового клипа (для визуального анализа через Vision)
scripts/analyze_reference.pyХелпер для анализа референс-фоток (вытаскивает метаданные, готовит к add-reference)
scripts/imagen_generate.pyЗапасной путь — генерация stills через Google Imagen, если нужны статичные референсы
scripts/db.pyCRUD по brief + reference_images + clips (project-scoped через junction-таблицы). Тут же analyze-library и match-references
scripts/api_keys.pyРезолвит API-ключи из project/api_keys.db или env
scripts/schema.pyОбщий schema-source-of-truth (v8) — копия одинакова во всех скиллах

Veo 3.1 параметры

ПараметрЗначения
Модель (best)veo-3.1-generate-preview — $0.15/sec at 720p (для hero-клипов)
Модель (budget)veo-3.1-lite-generate-preview — $0.05/sec at 720p (для большинства)
Длительность4, 6 или 8 секунд
Aspect ratioВсегда 9:16 (vertical для рекламы)
Reference imagesДо 3 штук per generation, reference_type="asset"
Output720p или 1080p MP4

Цена

Грубый расчёт по моделям:

Подтверждай выбор модели и оценку стоимости с пользователем перед генерацией. Генерация занимает 1-3 минуты на клип, гнать последовательно — у Veo жёсткие rate limits.

Workflow в одном куске

load brief + refs analyze-library plan 5 clips user approval match-references veo_generate × 5 analyze frames update descriptions

Gotchas и tips

Не описывай картинки по имени файла. Всегда Read → смотришь → описываешь. Иначе референсы будут привязаны не к тому, что реально на фотке, и Director потом подберёт мусор.
Не генерь дубли overrepresented типов. analyze-library показывает что есть избыток (например 3 testimonial-клипа) — не плоди ещё одно «доказательство», лучше закрой пробел (hook или CTA).
Описывай реальность, не задуманное. После генерации обновляй description через Vision-анализ кадров. Veo часто интерпретирует промпт по-своему — клип может оказаться больше lifestyle, чем product. Director потом ориентируется по тому, что записано, а не по тому, что просили.
Используй Lite по умолчанию. Разница в качестве 3x по цене не оправдывается для большинства roll-сцен. Best оставляй на hook и CTA, где важна каждая деталь.
Альтернатива — motionfx. Если сцена не требует реальных людей/локации (график, цифры, абстрактный фон, 3D-показ продукта) — это работа для video-motionfx, а не Veo. Дешевле, быстрее, детерминистично.

🎬 Примеры работы

Открой Showcase → veo-clips — там 3 Veo 3.1 клипа сгенерированные для bas-dent (lifestyle, interior, врач-пациент). Все примеры — реальные production-runs, embedded локально (работают офлайн).

Место в пайплайне

project-setup clipgen (Veo) analyzer director captions reviewer

Clipgen наполняет clips table. Без library не запустится director — нечего собирать. Параллельная альтернатива — motionfx для motion graphics клипов.

Clipgen использует ту же базу director.db, что и Director. Связи через project_clips и project_reference_images junction-таблицы — клипы и референсы scoped к проекту.