# Ad Video

> Собрать рекламный ролик в живой Dreamina (Seedance 2.5) из одной строки заказа — раскадровка по таймлайну, роли референсов, EN-промпт и запуск через инструменты dream_generate / dream_wait. Использовать, когда просят «сделай ролик», «сними промо», «рекламу продукта», «видео на 15/30/60 секунд», «промо отеля/курса/приложения», или дают папку с фото и просят из них видео.

- Skill: `danikvr/ad-video` (Agent Skill)
- Install (CLI): `npx skillmds@latest add danikvr/ad-video`
- Raw SKILL.md: https://api.skillmd.com/api/skills/danikvr/ad-video/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: DanikVR (https://skillmd.com/u/danikvr)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/danikvr/ad-video

---


# Рекламный ролик в Dreamina (Seedance 2.5)

Одна строка заказа → готовые клипы на диске. Ниже — ремесло и порядок работы.

## Железное правило: два слоя

Модель отлично ведёт камеру, свет и физику — и **врёт в цифрах, буквах и логотипах**:

| Слой | Чем делается | Что в нём |
|---|---|---|
| Движение | Seedance 2.5 | атмосфера, ход камеры, преображение товара, переходы |
| Факты | титры при монтаже | цифры, названия, УТП, CTA |

Надпись в кадре допустима только короткая (2–4 слова) и только через `【 】`
(`On-screen text: 【Твой ритм】`). Логотип — последним кадром (`frames.last`) с
`keep the logo static, centered, and protected; do not redraw the logo or any small text`.
Никогда не просить модель «нарисовать логотип» или «оживить текст».

## Арифметика хронометража

Seedance 2.5 отдаёт **до 30 секунд одним промптом**. Отсюда: 15 и 30 с — ОДИН промпт
с таймлайном; 45 с — 30 + 15 с; 60 с — два по 30 с (`chain: true` на втором элементе:
первый кадр = последний кадр предыдущего). Цепочка только когда общая длина > 30 с.
Mini — до 15 с, черновики.

Кредиты (Seedance 2.5 / с): 480P 17, 720P 37, 1080P 91; Mini 720P 5 / с.
30 с 720P = 1 110, 30 с 480P = 510, черновик 5 с Mini = 25. Считай `expectedCredits`
и называй цену до старта; `dryRun: true` — проверить без списания.

## Драматургия 30 секунд (четыре стадии в одном промпте)

| Стадия | Секунды | Задача | Приёмы |
|---|---|---|---|
| Hook | 0–5 | самый неожиданный кадр, уже в движении | crash-zoom, dolly-zoom, fpv-weave, zoom-through-detail, bullet-time (с фото) |
| Development | 5–16 | что человек получит, действием | handheld-tracking, lateral-track, dolly-in-endpoint, lipsync-talking-head |
| Proof | 16–25 | товар крупно, деталь, преображение | product-preserve-i2v + light-sweep / condensation-macro / levitation-lift / exploded-assembly / particle-materialize, turntable-360, focus-lock-insert |
| Resolution | 25–30 | награда и бренд, hero hold | pull-back-reveal или crane-up-reveal → logo-morph-final + logo-static-protect |

15 с = Hook 0–4 / Proof 4–11 / Resolution 11–15. Хук и финал не трогать никогда, середину
схлопывать. Один приём (одно движение камеры) на стадию, у каждой — `End state:`. Между
стадиями — `HARD CUT` на названной секунде или мотивированный переход (whip-pan-timed,
similar-object-match, occlusion-mask); мосты суммарно ~2.5 с.

## Референсы вместо «пар кадров»

Главный инструмент — роли референсов, в начале промпта, по одной строке на файл, порядок
`refs[]` = нумерация:

```
@Image 1 defines the product: bottle shape, label, cap and glass color. Do not use the background from @Image 1.
@Image 2 defines the presenter's face, hairstyle and clothing.
@Video 1 defines camera movement only; do not transfer performer, room or logo.
```

Переход А→Б задаётся `frames: {first, last}` и формулой first-last-frame
(`@Image 1 is the first frame … @Image 2 is the last frame … one continuous action`), оба
кадра одного формата. Рабочие связки: мир → экран (zoom-through-detail), деталь → место
(pull-back-reveal), место → логотип (`frames.last` = бренд-карточка), было → стало
(first-last-frame, locked camera).

Товар: описывать ТОЛЬКО что меняется («Only motion changes: light sweep»), не пересказывать
фото; руки в кадре не ставить; парящий товар сажать на тень.

## Как писать промпт

По-английски, одним текстом по формуле Seedance 2.5:

```
[Generation Goal] 30-second vertical ad for a glass skincare bottle.
[Reference roles] @Image 1 defines the product … Do not use …
[Subjects] …
[Event script]
Stage 1 (0-5s) Hook: crash zoom from wide to extreme close-up on the cap on impact, hard stop. End state: the cap fills the frame.
Stage 2 (5-16s) Development: locked-off static center frame; a hand places the bottle on wet slate … End state: …
Stage 3 (16-25s) Proof: @Image 1 is the product reference; preserve label, logo, shape. Only motion changes: a narrow warm strip light sweeps once across the glass, left to right. End state: …
Stage 4 (25-30s) Resolution: slow pull-back reveal, one continuous shot, ending wide on the bathroom; 28-30s [HOLD] the bottle holds centered for one silent beat.
Cuts only at the specified points, the camera does not cut on its own.
[Visual] soft daylight 5600K, 35mm, matte skin texture, no flicker.
[Audio] Audio: <water drops, glass tick at the final highlight, room tone>. NO BGM. No subtitles.
[Maintain consistency] Keep the bottle identity, label text position and lighting direction consistent.
```

Не писать: «fast», «cinematic», «epic», «seamless», возраст людей, формат/длину в
тексте, два движения камеры в одной стадии. Речь в кадре — `{Name says in English: …}`
только на 11 языках Seedance; русская озвучка — диктор поверх и `No visible speaker`.

## Порядок работы

1. **Собрать бриф.** Из заказа вытащить: продукт, длительность, формат (9:16 соцсети,
   16:9 сайт и экраны, 1:1 лента, 21:9 кино), тон, надписи. Чего не хватает — брать
   разумное умолчание и говорить, какое взял; не устраивать допрос.
2. **Найти ассеты.** Если названа папка — прочитать её и назначить роли файлам по именам
   (bottle → товар, logo → последний кадр, face → герой). Нет ассетов — сцена пойдёт без
   референсов, о чём сказать прямо.
3. **Проверить готовность:** `dream_status`. Нужны `extension.connected` и `tabReady`.
   Нет — попросить открыть Dreamina (dreamina.capcut.com/ai-tool/home?type=video) и
   войти, задачи в пустоту не слать. `license = "expired"` → активировать ключ.
4. **Черновик.** Первый прогон: `model: "Seedance 2.0 Mini"`, `length: 5`, `resolution:
   "720P"` (25 кредитов) — одна стадия, одно движение, ≤80 слов. Показать результат,
   собрать правки. Черновик подтверждает формулировку, не дубль.
5. **Финал:** `dream_generate` с одним элементом на 30 с, `model: "Seedance 2.5"`,
   `resolution: "720P"`, `aspect`, `length: 30`, `refs[]` с ролями, `expectedCredits`,
   `folder` по названию проекта. 1080P — только по просьбе (2 730 кредитов за 30 с).
6. **Ожидание:** `dream_wait` с `timeoutSec` 300–900 — клип идёт 1–5 минут. `timedOut` —
   не ошибка, позвать снова.
7. **Правки:** `dream_edit` по схеме lock-then-modify (`[Edit Scope] Change only …`,
   потом `[Content to Preserve] Keep …`), одна категория за раз.
8. **Отдать результат:** пути к файлам, что получилось, что нет, и текст титров с
   таймкодами для монтажа.

## Титры отдавать всегда

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

## Частые провалы

- **Кривые буквы в кадре** — в промпт просочился текст вне `【 】` или длинная надпись.
  Убрать, вернуть `No subtitles`, критичное — в титры.
- **Финал не приземляется на логотип** — нет `frames.last` или нет `[HOLD]` перед
  логотипом; добавить `logo-static-protect` и `locked-off`.
- **Клип порезан сам** — посекундные метки внутри «one continuous shot»; либо убрать
  метки, либо закрыть `cuts only at the specified points`.
- **Товар «похожий, но другой»** — нет строки `@Image 1 defines the product …; preserve
  label, logo, shape`; фото переописано словами.
- **Реплика бормочет** — меньше 8 слов на 4 с или язык вне 11 поддерживаемых.
- **Сцена не отправлена, `insufficient-credits`** — снизить до 480P или Mini, спросить
  пользователя.
- **Задачи копятся, ничего не происходит** — закрыт браузер или окно Dreamina. Это
  исполнитель в живом браузере, без него очередь просто ждёт.

