---
name: animate
description: Route animating the person's AI character with MiniMax H3 — a film scene from its frames, a cheap storyboard take on Turbo, a whole minute in shot pairs, motion from a video, a voice line, character + place + prop images, props that hold, prompt expansion — on a low-cost H3 route or the Seedance 2.5 quality route.
---
# Animate an AI character

FlashBoards user skill, version 1.2.3 (2026-10-13).

On the board, read these guides with `list_skills` and `get_skill` when the assistant exposes them; otherwise use the hosted index through an available read-only retrieval tool. Use that runtime’s actual model discovery, current page context and guarded board actions for execution. Keep native readiness, approval and cost gates; do not claim a guide was read when retrieval is unavailable.

Read related guides with `get_skill({skillId:"<id>"})` or the [hosted index](https://pub-78da82d51ed14147ac554d38094b0c0b.r2.dev/user-skills/1.2.3/index.html). Reading a guide does not start or authorize a paid generation.

Work for the person's own character(s): their photo, sheet and voice. The character always comes in as the person's {character sheet} (face close-up + full body in one image). No sheet yet → `character-sheet` first. Never send a demo character's sheet, prompt, frames or voice for a person's job.

## Entry level — the quick route first

Make everything first on the cheap route: start frames on GPT Image 2.5 Flare 2K (`generate_image` with `gpt-image-25-flare`, `quality: "low"`, 2048 px on the long side, the sheet as a reference), video on MiniMax H3 Max Turbo (`minimax-h3-max-turbo`) image-to-video at 480P from that frame, the character's voice by changing the voice in the finished clip (`reels-lipsync-turbo`). After a result the person likes: a Seedance 2.5 re-shoot or a video enhancement only on their pick (`upscale-video-final`). A whole minute: every part from a fresh start frame made with the sheet; props at 480P; motion from a clip described in words for Turbo (H3 Max Reference to Video only as the person's explicit precise option).

## References first — offer them in the first reply

Offer to look at references together ("Show me references" / "I have my own" / "Skip"). The film corpus: `search_movie_frames` with `query` = what happens ("a woman runs down a rainy alley at night, handheld"); show at most three scenes, one line each — the film (year) and what happens. The pick sets the scene and its motion. A frame's `previewHandle` is a reference for `generate_image`/`generate_video` (`referencePreviewHandles`).

## Two routes — offer both with their current quotes

| Route | Model | When |
|---|---|---|
| Low cost | MiniMax H3 Max Turbo or H3 Max, 480P | drafts, many takes, a tight budget |
| Quality | Seedance 2.5 (`seedance-2-5`): pictures in `referenceGenerationIds` (@Image1…), audio in `referenceAudioUrls` (@Audio1…), up to 30 s a call, `sound: true` for its own synced sound | the final cut, when the look matters |

Seedance 2.5 does this job much better (cuts close to the plan, finer detail, its own synced sound) but takes minutes. Write the same shot-by-shot prompt in plain text and name the references @Image1, @Audio1. Quote both with `estimate_generation_cost` before any paid video.

## 1 · Classify the job

| Input / goal | Go to |
|---|---|
| A film scene up to 15 s: its frames (and its sound), one request | `animate-film-scene-refs` |
| The same scene, cheaper and faster — one storyboard image + the sheet + the audio | `animate-storyboard-turbo` |
| A scene longer than 15 s (a minute, many shots), the face must not drift | `animate-scene-pairs` |
| Borrow motion and camera from a clip (a dance, a walk) | `animate-video-ref` |
| A voice line, lip-sync, or a soundtrack the picture must follow | `animate-audio-ref` |
| No film frames: character + location + prop as separate images | `animate-multi-image` |
| An unusual prop that must keep its shape | `animate-props` |
| Which `promptExpansion` to send | `animate-prompt-enhance` (`"disabled"` for anything scripted) |
| The finished video: will it work before posting | `viral-score` |
| Ready to post: versions per platform, the platform checks, the AI label and a caption | `viral-publish` |

## 2 · Pick the tier

Ask or infer one priority: fast, cheap or best. If the person says nothing: a film scene up to 15 s → H3 Max Turbo with the 3×3 storyboard as the first image and the sheet as the last image (`animate-storyboard-turbo`) — the fastest and cheapest. Use H3 Max Reference to Video when references have different jobs (a motion clip, a voice, a place, a prop): it has a slot per reference (9 images, 3 audio, 3 video) and keeps the sheet off screen on its own.

## 3 · The pipeline

```
{character sheet}
   │ an unusual prop? put it on the character first ── animate-props
   ▼
frames of the scene ── replace the actor with {character} in every frame (character-replace);
   │                   frames with nobody in them stay as they are
   ▼
the engine
   ≤ 15 s, all references in one request ── animate-film-scene-refs  (H3 Max Reference to Video)
   ≤ 15 s, cheap / fast ─────────────────── animate-storyboard-turbo (Turbo)
   > 15 s, many shots ──────────────────── animate-scene-pairs      (Turbo, two shots per generation)
   motion / voice / place + prop ───────── animate-video-ref · animate-audio-ref · animate-multi-image
   ▼
prompt ── shot by shot, promptExpansion "disabled" ── animate-prompt-enhance
   ▼
edit ── trim_video the board / sheet frames, concat_videos the parts, replace_video_audio the sound
   ▼
one final enhancement ── upscale-video-final
```

## 4 · Rules (break none)

1. **Replace the real actor in every film frame first** (`character-replace`). H3 accepts a frame with the actor and copies the actor's face, hair and shirt. Frames with nobody in them go in as they are.
2. **Say what the sheet is for**: "only the look of {character} … it never appears on screen as a shot". Without it the video opened on the sheet for the first second.
3. **Blind wording**: a reference is named by its role, never re-described — "Image 1 is only the look of {character}: exactly their face, hair and outfit from Image 1, nothing added". The expression of a reference frame (gaze, brows, mouth) may be named.
4. **On Turbo, first and last images that are references stand far off the timeline** (the first at -00:10, the last at +01:40, no frozen shots for them); as frozen shots they took screen time and a whole shot was lost.
5. **`promptExpansion: "disabled"`** for every scripted scene: an expansion invented a cut and the video followed the rewrite.
6. **Cuts land early** (0.5–2 s before the asked times); the order holds, the timing does not — plan the edit for it, and find the real cuts with `detect_video_cuts`.
7. **An audio reference is played back, not re-performed**, so a voice line must already be {character}'s voice. A video reference gives motion and camera, never the costume.
8. **A prop is given as a picture on the character**, not described in words.
9. **Images under 256 × 256 are refused**: put them on a canvas with `pad_image`, do not scale them.
10. **H3 invents speech** when nothing is said: write "no dialogue, no speech" for a silent shot and check with `transcribe_media`. The words do not always hold and H3 Max / Turbo have no sound switch: if a line still comes back, keep the take, drop its track for free with `conform_video` (`removeAudio: true`), lay the intended sound with `replace_video_audio` (room tone and effects: `reels-room-sound`) and transcribe once more.

## Execute through MCP or on the board

Use the person's FlashBoards account; never ask for a personal provider key or run the source's local scripts. Discover `get_account`, `list_generation_models` and the tools of this client first: a published guide does not prove a feature is deployed.

**Headless, no open board.** Quote with `estimate_generation_cost` (skill models: `estimate_skill_model`), then run `generate_image`, `generate_video`, `generate_audio` or `run_skill_model` with one stable `generationAttemptId` per logical attempt. Pass `maxCostUsd` only when the current operation and selected model support it; otherwise use the quoted cost and the person's explicit approval with the supported controls. Never silently ignore an unsupported spending cap; make one `get_generation` check after `retryAfterSeconds`. Pass the person's own results by `generationId`: images in `referenceGenerationIds`, `firstFrameUrl` and `endFrameUrl`, audio in `referenceAudioUrls` or `targetAudioUrl`, videos in `referenceVideoGenerationIds`. They are read on the server; signed result links do not work as public URLs. Every `generationId` a tool returns stays valid: a later read of the same result gives a different string, and both work. Film frames and gallery pictures go in by `previewHandle`: `referencePreviewHandles` of the generation tools, a `{previewHandle}` source of `arrange_images`, `crop_image` and `pad_image`, and `describe_media`. New files come from `show_media_upload_picker` as receipts. The person's character comes in as its sheet, by `generationId` or as an upload; there is no search by name. If the person names a character without the sheet, ask for it or make one with `character-sheet`; do not scan recent results for it. Free server steps: `trim_video`, `concat_videos`, `conform_video`, `replace_video_audio`, `extract_video_frame`, `extract_video_audio`, `detect_video_cuts`, `crop_image`, `pad_image`, `arrange_images`, `cut_audio_span`, `concat_audio_tracks`, `mix_audio_tracks`, `fit_audio_duration`, `add_audio_reverb`. Check every result with `describe_media` (a question about an image; `model`, `mode` and `sourceRange` only for a video) and `transcribe_media` for speech. Both checks are paid: `describe_media` costs a fraction of a cent for an image and about 2–4 ¢ for a short video (more for a long one), `transcribe_media` under 1 ¢ a minute — count the checks you plan in the price you name before the first paid step. `describe_media` is not reliable about sound: it misses effects mixed under music and can hear voices or instruments that are not there. Check speech with `transcribe_media` and ask the person to listen for effects and music. Never repay an uncertain submission; reuse an attempt ID only for the identical request. Make each new `requestId` or `generationAttemptId` unique, for example the task, the date and a short random suffix: an ID used before, even in another chat, replays that earlier request or answers `REQUEST_ID_CONFLICT`.

**On the board.** Inspect with `list_board_sessions` and `get_board_snapshot` and carry the same `sessionId` and a fresh `activeBoardId` as `expectedBoardId`. Native cards: `execute_board_action` (`listNativeModels`, `setModel`), `prepare_board_generation` with ordered board items or owned outputs, then one `generate_on_board` within the authorized budget. Board media tools: `list_media_tools` → `start_media_tool` → `get_media_tool_run`. Put headless results on a board with `add_media_to_board`.

Keep mandatory safety settings and the live limits of each model. Prices, timings, endpoints and "free retry" claims in the sources are historical, not FlashBoards contracts. If a step this guide needs is not available or is refused (a tool error, `audio_not_configured`, a missing model or input), keep the finished assets, tell the person which step is blocked and why, and ask how to go on. A single generation that ends `failed` is not a blocked step: submit it once more with a new `generationAttemptId` (reworded if it may have hit the content checker), and stop to ask only if it fails again. A failed attempt is not always refunded, so the retry may be paid again and `maxCostUsd` caps each request on its own: count both against the budget the person approved. Never swap in another route on your own: no image model redrawing a layout or a frame, no `describe_media` in place of the frames it should check, no clip generated only to take its sound, no picture drawn where the guide takes a film frame.

## Source and related guides

- [Original Learn guide](https://flashboards-h01.vercel.app/learn/acting/animate-ai-character/skills/animate.md)
- Updated from the owner's skill sources of 2026-10-11.

Read: `animate-film-scene-refs`, `animate-storyboard-turbo`, `animate-scene-pairs`, `animate-video-ref`, `animate-audio-ref`, `animate-multi-image`, `animate-props`, `animate-prompt-enhance`, `character-sheet`, `upscale-video-final`. Source experiments and demo materials are historical; use the person's own approved media.
