---
name: filmscene
description: Route remaking a film scene with the person's own characters — the scene's cuts, setups and lines read from the clip, one replaced picture per camera setup, the actors' own performance re-voiced in the characters' voices with the scene's room tone, H3 in parts of up to 15 s that end on a cut — on a low-cost H3 route or the Seedance 2.5 quality route.
---
# Remake a film scene with your characters

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 sheets and saved voices.

> **Sound.** Room tone and ambience come first from the film itself (its line-free gaps) or from the video model (Seedance generates synced effects). What is missing can be generated with ElevenLabs Sound Effects (`generate_audio` with `model: "elevenlabs-sound-effects-v2"`); keep every effect under the voices — generated effects come out louder.

## Entry level — the quick route first

Make everything first on the cheap route: replaced setup pictures on GPT Image 2.5 Flare 2K (`gpt-image-25-flare`) at `quality: "low"`, every part on H3 Max Turbo (`minimax-h3-max-turbo`) 480P by first and last frame, the voices changed in the finished part. After a result the person likes: a Seedance 2.5 re-shoot or a video enhancement only on their pick.

## 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; show three scenes, one line each — the film (year) and what happens. The pick sets the scene to remake; the person then brings its clip.

## 0 · Cast first

Fix who plays whom before anything else: **{character A} replaces <film role 1>, {character B} replaces <film role 2>** — the person's own characters (sheet, saved voice). Ask if unclear; never cast demo characters. Every later step follows this cast.

## The reference approach

1. **Nothing invented: the scene comes from its clip** — cuts, camera setups (A/B/C), lines with times and speakers → `filmscene-corpus`. No clip → ask the person for it (`show_media_upload_picker`), or offer the remake from frames, which needs no clip: one shot sequence up to 15 s with the person's character, from corpus frames and the person's own sound (`animate-film-scene-refs`, or `animate-storyboard-turbo` on the low-cost route); dialogue with timed lines needs the clip. Corpus frames carry no cuts, lines or times: a part made from them with guessed times (2026-10-14) came out with an extra line and the lines 1.4–1.8 s late.
2. **One picture per camera setup**, not per shot: a dialogue in one place with two angles needs two pictures. Every face replaced (the person's characters in, every extra invented, no watermark) → `filmscene-setups`.
3. **The actors' performance, the characters' voices**: the original dialogue → voice isolation → a voice change per speaker span into each character's saved voice. Timing, pauses and intonation stay the actor's, so lips and edit land where the film has them. **Room tone from the film itself** → `filmscene-sound`.
4. **Parts of up to 15 s that end on a cut**; one prompt per part with every shot: `cut_at`, setup image, camera, action and acting read off the original frames, dialogue with exact times, off-screen lines marked → `filmscene-shots`.
5. **One generation at a time, sent for approval** next to the original. 480P.

## Two routes — offer both with their current quotes

| Route | Model | When |
|---|---|---|
| Low cost | H3 Max Reference to Video or Turbo, 480P | drafts, many takes, a tight budget |
| Quality | Seedance 2.5 (`seedance-2-5`): the setups as @Image1…, the voice track as @Audio1, up to 30 s a call | the final cut, when the look matters |

## Which engine

| The part | Engine | Why |
|---|---|---|
| Starts on one setup and ends on another (A → B), or one setup only | H3 Max Turbo: `firstFrameUrl` = the first setup, `endFrameUrl` = the last setup | cuts within 0.2 s and cheaper — but a given audio only plays under the clip: the lips do not follow it. With a speaker's lips on screen, put the lines in the prompt and change the voices after, or use H3 Max Reference to Video |
| A setup returns in the middle (A → B → A) | H3 Max Reference to Video: Image 1/2 = the setups, Audio 1 = the voices | sees both faces; keeps the first speaker exact but may move the second — or split the part at the cut and use Turbo twice |

## Classify

| The job | Go to |
|---|---|
| Cuts, setups, lines, speakers, part boundaries | `filmscene-corpus` |
| The setup pictures with the person's characters | `filmscene-setups` |
| Voices in the characters' timbre, room tone, checks | `filmscene-sound` |
| The prompt, the request, checks, the comparison | `filmscene-shots` |
| 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` |

## What was tried and dropped

| Approach | Why dropped |
|---|---|
| Text-to-speech on one track, an invented edit | the second speaker out of sync, a dead voice, not the film's edit |
| Two voice tracks; then one track with timing in the prompt | two tracks confused the model; with one, the second speaker moved by about a second |
| One line per generation | H3 adds speech in the silence and stutters on "…"; the edit is still invented |

## Rules

1. **No invention**: cuts, lines, times and speakers come from the clip; acting from the original frames.
2. **No actor's face on screen**, extras included; the actors' own voice is never published — only the voice-changed one.
3. **Only the person's cast**: their characters' sheets and voices.
4. **The audio is exactly as long as the generation** (pad with silence to whole seconds); every line has its time in the prompt.
5. **Never "…" in a line** — H3 stutters on it.
6. **One generation, then the person's approval** — no batches.

## 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/formats-and-exhibition/ai-film-scene/skills/filmscene.md)
- Updated from the owner's skill sources of 2026-10-11.

Read: `filmscene-corpus`, `filmscene-setups`, `filmscene-sound`, `filmscene-shots`, `character-sheet`, `reels-voice`. Source experiments and demo materials are historical; use the person's own approved media.
