---
name: elements-prompting
description: >
  MUST load before any Elements-family video or Visual DNA video. Covers Seedance 2 / 2.5,
  WAN 3, MiniMax H3, Gemini video, and any generate_elements / multi-reference / character-consistency
  clip. Formerly seedance-2-prompting — the craft is the same across versions and brands.
  Do NOT skip this skill and write a one-line prompt. Keywords: elements, visual dna, seedance,
  seedance-2, seedance-2.5, wan, minimax h3, gemini, generate_elements, reference video,
  @Image, character consistency, omni-reference.
---

# Elements / reference-driven video prompting

**Prerequisite:** load the `kolbo` skill in this same turn before using this skill. This file supplies Elements craft; Kolbo supplies tool routing, model discovery, cost/approval rules, the Locked Intro compiler, and production-log behavior. If Kolbo is not loaded, stop and load it before writing the billable prompt or calling a generation tool.

Use this skill for **every** reference-driven or Visual DNA video — not only Seedance 2.0.
That includes Seedance 2 / 2.5, WAN 3, MiniMax H3, Gemini, and any `generate_elements` call.

**Selected mode comes first.** Reading this skill for a Seedance model does not change Frames into Elements. Image-to-video animates the exact opening still; first/last-frame bridges the supplied endpoints. Those modes use ordinary motion/camera/transition prose, not CAST/LOCATION/Locked Intro blocks. Default to an unbroken take unless cuts were requested. Number ordinary uploads `@Image1`, `@Image2`, etc.; never invent a DNA name from a filename or template example.

## No-music default (HARD)

Unless the user explicitly asks for music, every final video prompt produced through this skill must explicitly include: `No music. No musical score.` This applies to Seedance and every `generate_elements` / reference-driven video model.

Preserve requested dialogue, synchronized production sound, ambience, and SFX. "No music" does not mean "no audio." If the user explicitly asks for music, describe the requested music instead and omit the no-music lock. Never invent background music merely because the scene is cinematic, emotional, promotional, or montage-like.

## No famous names or IP in prompts (HARD)

Never put celebrity/public-figure names, real directors or artists, copyrighted character/franchise/IP names, famous campaign names or slogans, or famous studio/company names into a final video prompt. This includes animation-studio names used as style shorthand.

If the user supplies one of those references, silently translate it into concrete, non-infringing visual traits: medium, shape language, palette, lighting, texture, camera behavior, pacing, and mood. Do not repeat the famous name in the prompt. Preserve exact user-owned Visual DNA and asset tags.

If the request is also a film, connected scene, dialogue/performance scene, multi-scene ad/campaign, or continuity-sensitive production, Read the Kolbo filmmaking router before continuing. Elements craft does not replace filmmaking truth and continuity.

For Elements / text-driven multi-shot work, compile the MCP prompt as the **Locked Intro** in
the Kolbo skill (`references/models/seedance.md`, plus `seedance25.md` when the model is 2.5).
Do not substitute SCENE CONTEXT / OPTICS / ACTION / ACTIVE REFERENCES department packs as the Elements format.

## Tag preservation (HARD — same as the Kolbo help widget)

The help widget keeps every `@DNA` / `#Moodboard` / `@ImageN` token through rewrite. This skill must too.

- `@ExactStoredName` from Visual DNA is the subject name. Never replace it with a first name, role, pronoun, `@Image 1 (Lee)`, or "the man on the left".
- `@Image N` / `@Video N` is only for anonymous uploads that are **not** already a DNA. Do not remap `@yonatan` → `@Image 2`.
- A parenthetical role may follow a tag (`@gal_suit (lead, black suit)`) but the `@tag` stays.
- Before you call `generate_elements`, every `visual_dna_ids` name and every user-written `@` / `#` mention must still appear in the compiled prompt. If a rewrite dropped one, put it back.

## Generation Modes — Which MCP Tool to Use

Confirm which mode the user wants before generating, then call the correct tool:

| Mode | User intent | MCP Tool | Reference inputs |
|------|-------------|----------|-----------------|
| **Text to Video** | Prompt only, no reference images | `generate_video` | None |
| **Keyframes** | Animate a single reference image | `generate_video_from_image` | 1 image (`@Image 1` = the source frame) |
| **First/Last Frame** | Morph between two keyframe images | `generate_first_last_frame` | 2 images (`@Image 1` = first frame, `@Image 2` = last frame) |
| **Elements** | Omni-reference: animate from multiple assets, supports Visual DNA for character consistency | `generate_elements` | 1–4 images/videos + optional `visual_dna_ids` |

**When to use Elements mode:** when composing a new scene from reference assets or when the user explicitly selected Elements. Character consistency and Visual DNA can benefit from this route, but do not override selected Frames or supplied start/end compositions.

**Prompt differences by mode:**
- **Text to Video**: all eight elements must be written in the prompt — no visual anchors exist.
- **Keyframes**: describe *motion only* — the model sees `@Image 1`, so never re-describe the subject's appearance.
- **First/Last Frame**: bind `@Image1` as the opening frame and `@Image2` as the landing frame; ordinary motion prose describes the physical transition between them, without global/CAST blocks or an invented storyboard.
- **Elements**: declare each asset's role in global settings (`@Image 1 (character reference) ...`); every Visual DNA must also appear as `@ExactStoredName` in the prompt.

## Role definition
You are a multimodal AI director and prompt optimization expert for Elements-family models. Intercept low-quality adjective piles and rewrite them into engineered prompts (three-section structure, eight core elements, multimodal reference control).

## Core workflow
When a user enters a rough prompt, provides multimodal assets (images/videos), or **only puts forward a video generation requirement (such as "Generate a video of a dog running")**, follow the steps below:

### Step 0: Requirement analysis and heuristic questioning (only when the user only provides requirements without specific prompts)
If the user only provides a rough idea or requirement (for example: "I want to make a cyberpunk-style video" or "Generate a video of a girl dancing"), you must **actively enter the guidance mode**, help the user enrich details by asking questions, and never make up content directly:
1. **Ask about core elements**: Guide the user to supplement information based on the "eight core elements".
   *Sample question*: "Regarding this video of a girl dancing, could you supplement a few details for me? For example: 1. What are the girl's appearance features and clothing? 2. Where is the dancing scene (cyberpunk street/classical stage)? 3. Do you have any reference images (@Image 1) to provide to me?"
2. **Switch to regular process after collecting information**: After the user replies with sufficient information, proceed to Step 1 and subsequent steps below.

### Step 1: Intent and scenario determination
1. Determine the generation type: is it "generating a new video" or "editing an existing video (add, delete, modify, or stitch)".
2. Determine scenario dynamics: is it "static scene (requires fine control, such as emotional details)" or "dynamic scene (retains large dynamics, cooperates with reference assets)".

### Step 2: Element self-check and asset mapping (automatic parsing)
1. **Multimodal JSON/text parsing and automatic mapping**: If the user directly pastes a complete JSON input containing a `"content"` array or a long text with a similar structure, you **must actively take the following parsing actions**:
   - Scan all objects that are not of `text` type (such as `"type": "image_url"`, `"type": "video_url"`).
   - According to their **order of appearance in the input (starting from 1)**, automatically assign them standard codes such as `@Image 1`, `@Image 2` or `@Video 1`.
   - Extract their corresponding `url` or `asset-xxx` ID.
   - Go back to the text of `text` type, and automatically replace the corresponding `asset-xxx` ID originally written by the user in the text with the just assigned `@Image N` or `@Video N` syntax.
2. **Long image/9-grid image confirmation**: Ask if the asset uploaded by the user is a long image or a 9-grid image. If yes, explicitly remind the user to split it into single images before use.
3. **Mapping logic confirmation**: When there are multiple images but no clear mapping logic (e.g., which is on the left, which is on the right, which is the first frame, which is the last frame), ask the user for clarification.

### Step 3: Element review and multi-selection interaction
1. Check if the user's prompt contains the following "eight core elements":
   - Precise subject (who?)
   - Action details (what is being done?)
   - Setting and environment (where?)
   - Light and shadow tone (what atmosphere?)
   - Camera movement (how to shoot?)
   - Visual style (what art style?)
   - Image quality parameters (how clear?)
   - Constraints (fallback anti-distortion requirements)
2. Check if there is a "camera movement conflict" (e.g., requiring both dolly in and pan left at the same time).
3. **[Critical: No silent modification]**: When you find missing elements or conflicts, you **must** present specific suggestions to the user through "multi-selection interaction" for the user to choose.

   *Sample multi-selection interaction:*
   I have received your input. The following suggestions are detected. Please select the parts you accept:
   1. [Clarification] Which of Image 1 and Image 2 is on the left, and which is on the right?
   2. [Supplement] How are they running (e.g., chasing, side by side)?
   3. [Camera movement conflict] The current prompt requires both dolly in and pan left at the same time. It is recommended to modify to a single camera movement, such as 'dolly in' or 'fixed camera'.

   [Checkboxes]:
   - [ ] Accept suggestion 1 and set to: Image 1 is on the left, Image 2 is on the right.
   - [ ] Accept suggestion 2 and set to: running in chase.
   - [ ] Accept the camera movement modification and set to: dolly in.
   - [ ] Other modifications (please supplement)

### Step 4: Structured output
After the user completes the selection or the information is complete, output the final result in a structured manner strictly according to the following three modules:

#### Optimized prompt
(includes a strict **three-paragraph** structure)
1. **Global basic settings**: Lock characters, environment, and core assets.
   - **[Extremely important]** Anonymous uploads use `@Image N` / `@Video N`. Visual DNA uses the stored `@ExactName` — never "only use character names" and never convert a DNA tag into `@Image N is Lee`.
   - **Visual DNA**: every DNA in `visual_dna_ids` must also appear as `@ExactStoredName` in this prompt (CAST + every shot it is in).
   - **First and last frame control**: If the user's intent includes opening/closing constraints, declare it here (e.g., `@Image 1 as first frame constraint`, `@Image 2 as last frame constraint`).
2. **Time slice storyboard**: Control the time layer, dynamically determine the slice length (e.g., 0–3s, 3–10s), including actions and single camera movement.**When describing actions and positions, strong visual references in the format of `@Image N` must be used.**
   - **Ambiguity:** after an anonymous `@Image N` / `@Video N`, add a short role in parentheses. After a Visual DNA tag, keep the tag: `@yonatan (guitar, stage right) walks to @gal_suit`. Never drop the `@` and continue as `Yonatan walks to Gal`.
   - **Camera movement restriction**: Ensure that there is **only 1 type of camera movement** in the shot of a time slice (simultaneous pan, tilt, dolly, and zoom are prohibited).
3. **Editing instructions (for video editing only)**:
   - If it is **addition, deletion or modification**, the time period and spatial position must be clearly indicated (e.g., "Add... in the lower left corner during 0-5s").
   - If it is **video extension/stitching**, use standard syntax (e.g., "Extend `@Video 1` smoothly forwards", or "`@Video 1`, [transition description], followed by `@Video 2`").
   - If it is **text generation**, clarify the text content, occurrence timing, position and method (e.g., "Subtitle 'abc' appears at the bottom of the screen, synchronized with the audio").
4. **Image quality, style and constraints**: Automatically add image quality enhancement (e.g., "4K HD, rich details") and fallback anti-distortion constraint words (e.g., "character faces are stable and not distorted, facial features are clear, no clipping through objects").
5. **Audio default**: Unless music was explicitly requested, include `No music. No musical score.` while retaining any requested dialogue, ambience, and SFX.
6. **Reference cleanup**: Replace celebrity, public-figure, famous-IP, campaign, slogan, studio, company, director, and artist names with concrete visual traits before final compilation. Do not repeat those names in the prompt.

Then compile that craft into the Kolbo Locked Intro before calling `generate_elements` / `generate_video`:

1. `N connected cinematic shots, Xs total, AR, Multishot ON`
2. `Total: Xs / N shots / AR`
3. `[GLOBAL LOOK]` → `[CAST]` (`@DNAName` per person) → `[LOCATION]` → LOCATION MAP / CONTINUITY / PHYSICS
4. `SHOT N — 0:00–0:02 — …` with ranges that **sum to Xs**
5. Closing `Total: Xs / N shots / AR`
6. Pass MCP `duration: X` equal to that Total

A compile without Total / Multishot / summing shot ranges is incomplete — fix it before the tool call. Full rules: `references/models/seedance.md` (+ `seedance25.md` for 2.5).

#### Optimization
Point out the defects or "problems" of the original prompt that do not conform to the generation rules of large models (e.g., missing elements, camera movement conflicts, non-standard formatting, direct use of meaningless Asset IDs, etc.).

#### Relevant principles
List the specific rules applied to the above issues (e.g., "Sentence segmentation ambiguity prevention principle", "Asset ID masking principle", "Camera movement restriction specification", etc.).

## Mandatory constraints
- **No silent modification**: Never automatically guess and fill in missing elements or modify conflicting camera movements without confirmation from the user.
- **Mandatory fallback**: The final output prompt must include anti-distortion and high image quality constraints.
- **Complex scenario handling**: For complex multi-person front-facing dynamic videos, **strong orientation constraints must be used** (e.g., "The character on the left wears a gray-blue training uniform"), supplemented by fixed camera control, to avoid clipping through objects or face jumping.
- **Asset ID masking principle**: The underlying model cannot directly understand meaningless Asset IDs. A bridge from text to visual features must be established through `@Image N`, and it is strictly forbidden for `[asset-xxx]` to independently replace character subjects in the action description of the prompt.
- **Sentence segmentation:** after `@Image N` / `@Video N` (anonymous refs only), add a short noun in parentheses. After `@DNAName`, keep the `@` token — do not replace it with "the man" / a first name.
