---
name: mira-video-prompting
description: >-
  Which of Mira's video models to pick (the live list is in references/selection.md) and how each
  one treats a prompt: Seedance 2.5, Runway Gen-4.5, Kling 4.0, Kling 3.0 (and Turbo),
  Gemini Omni Flash, MiniMax H3, HappyHorse, Wan 3.0. Use it before any generate_video call on Mira, when the
  user asks "which model", "how long can it be", "does it have sound", "промпт для видео", or pastes
  a video prompt to improve. NOT for stills (mira-image-prompting) or for the camera and light banks
  themselves (mira-craft).
license: MIT
metadata:
  version: "0.1.0"
---

# Mira video prompting

One prompt pipeline for every model in references/selection.md. The pipeline projects your prose into each model's native
format, so you never write model syntax. What you do decide is the model, and the facts the
prompt must carry. Read this router, then exactly one model file.

## Step 1. Choose the model

Name the ONE thing that decides the clip. If any of these is true, take the model for it:

| The clip needs | Model |
|---|---|
| a person speaking on camera, or legible in-frame text, or Cyrillic | `minimax` |
| several ordered camera moves and timed beats in one prompt, forceful camera work | `runway` |
| convincing human anatomy and physics, sport, cloth, water | `kling` |
| the same, as one quick single take from text or one start frame, cheaper | `kling-turbo` |
| the same, as ONE long continuous take (up to 30 s) or a wide 21:9 frame, the newest Kling | `kling-4` |
| 10, 15 or 30 seconds, heavy referencing, an attached AI Blogger or photo of a person as identity | `seedance-2-5` |
| an edit of a clip that already exists | `omni` |
| a 30 second story in one continuous take with one cast | `wan3`; `wan3-prime` when the user is waiting (same model, about ten times faster) |
| multi-language lip-sync with many character references | `happyhorse` |
| THIS character repeating the motion of THAT clip (a dance trend, a presenter's gesture) | `kling-motion` — one photo + one driving clip, output as long as the clip; for the user's AI Blogger, `blogger_motion` (mira-generate) |
| a clip of your own whose motion, camera or grade to follow | `seedance-2-5`, `minimax`, `wan3` / `wan3-prime` or `omni` with `referenceVideoUrls` |

If none of them is true, a simple short clip, the answer is one of two by what the clip is FOR:
`omni` as the working default, cheapest, it cuts on its own and renders on-frame text well, but
you cannot pin its duration and it takes no 1:1; `kling` when the clip is the hero and photoreal
people, physics and native sound are the point, in 1080p at roughly twice the price, finals only.
The Veo keys are withdrawn (Google retired Veo 3.1 on 2026-10-22). Price is the last tie-breaker, never the first
filter, and repeating the same model out of habit is the most common routing failure.

Full facts per model, generated from the live registry:
[references/selection.md](references/selection.md).

## Step 2. Read the model file

One file, not all of them: `references/models/<key>.md`. It carries the model's doctrine, the
format law the critic applies, the limits (seconds, resolution, references, audio) and the things
that model renders badly.

## Step 3. Write the prompt

Read [references/universal-rules.md](references/universal-rules.md) once per session. The short
version: prose in English; subject, then action, then camera, then lens and framing, then light;
count every entity; give every object a carrier and a state after it leaves; every visible change
has a named cause; every moving body gets its mechanism or gait with the contact and what follows
(U12); one move per shot with a start and an end; pace words from one ladder for the lens only; no
adverbs of softness; no layout words such as overlay or safe zone, the model draws them as
objects; spoken lines word for word in quotes; on-screen text exactly or not at all; hands act
with the whole body, one contact between people per shot, idle hands at rest and never clasped.

For any real place read [references/textures.md](references/textures.md): the two or three
surfaces that fill the frame get their wear and the light that shows it, at the scale the camera
sees; never smooth, clean or render words - a surface left unsaid comes back as a game engine's.

Every timed beat states where the camera stands, what the lens is aimed at, the move with its
cause and the frame it ends on (U13). For a fight, a chase or any impact read
[references/action.md](references/action.md): a beat budget, contact before consequence, one
slowed hit, and two bodies kept apart on screen.

## Step 4. Check before you send

- Does the first two seconds contain a hook: an action, a face, the product in motion?
- Is there exactly one thing the clip proves?
- Would the model file object to anything you wrote (speech on a silent model, a cut on a
  one-take model, a 1:1 on Omni)?
- Did a bank key leak in (`push_in`, `rembrandt`)? Replace it with the described motion or light.
- Do the big surfaces have wear and light, or would the model draw them clean (references/textures.md)?
- Does every beat say where the camera is and what frame it ends on (U13)?
- In a fight: within the beat budget, one slowed hit, the two bodies never merging (references/action.md)?

## Output

Return the prompt as one block of prose, then the model id and the duration. Nothing else.
