The person brings an idea: a premise in a sentence or two ("a nurse finds out her husband is married to someone else", "a CEO goes undercover at her own company"), and which part of the series it is. You deliver one episode: 9:16, 45–60 s, everything generated, the cast speaking lip-synced lines in cast voices, usually over the lead's inner voiceover, scored, and ending on a cliffhanger that loops back into the open.
The route: two or three long Seedance 2.5 reference-to-video takes, one per location group, each driven by the cast's views, the location plates and the scene's whole voice track, then cut, reordered and scored locally. Gate every look: script, faces, voices, stills, locations, scenes, cut and music.
Start from the idea
Ask only what the idea doesn't answer: which part this is and what came before; who the lead is and how they look (microdrama leads are usually striking and glamorous; follow the person); the tone (revenge, romance, thriller, comedy). The default format is 9:16, 45–60 s, on-screen dialogue plus the lead's inner voiceover.
For Part 2 or later, read the earlier episode's AGENTS.md and carry its cast sheets,
voices, location plates and grade forward unchanged.
Steps
- Write the script as
script.mdto the shape below, thenllm-convert-written-scriptfor timings. Gate: the script.- The hook (first 1–2 s) is the most shocking image in the episode, often the cliffhanger's moment or prop pulled to the front: a text message, a face frozen in shock, someone where they shouldn't be. It works with the sound off and raises a question.
- A present-day confrontation, short and charged, 1–3 lines.
- A flashback or setup ("48 HOURS EARLIER") told mostly in the lead's inner voiceover: 4–5 short, punchy sentences, each with its own beat on screen.
- The turn back to the hook, ending on a reaction or one word. No end card: the last frame loops into the cold open.
- About 3 scenes and 10–12 beats, one sentence per line. A cast of 2–3 on screen and 3–5 locations: every person and place is a reference to build and hold. Each scene's dialogue and action fit in about 30 s, Seedance's limit per take.
- Cast faces. Three castings of each on-screen character at once on nano banana
Pro, each a 2x2 sheet (front close-up, profile, full front, full back) at 1:1 2K.
When the story needs the same face twice (twins, doubles, a disguise, a past self),
edit the picked sheet on nano banana Pro edit: "keep the face exactly identical,
change only the styling", and pick the take most different in silhouette (hair,
colours, wardrobe). Split every sheet into single views
(
python-split-character-sheet). Gate: a face per character. - Cast voices (
guide-cast-a-voice,elevenlabs-voice-search): three auditions per character on their own lines. Two roles can share one voice, told apart by direction tags alone (sweeter, slower, colder). Gate: a voice per character. - Record the track (
elevenlabs-tts-v4): each on-screen line as its own take, the whole voiceover as one take with[long pause]between sentences. Find sentence boundaries withsilencedetect(noise=-38dB, d=0.25); whisper's word times are too coarse to cut on. - Set the look. One hero still of the hook or confrontation (nano banana Pro edit
with the character views, 9:16 2K). Gate: it sets the grade. Then the other
beats' stills referencing it, all at once (
nano-banana-stage-cast-in-set); check on-screen text and that the right person is in each. Gate: the stills, as a set. They are for the look and the plates; the renders never see them (Dead ends). - Location plates (
guide-design-a-set). For each location, edit an approved still to remove the people and vehicles, keeping the grade; make an interior seen only from outside as a new still from the matching shots. Conform to 1080x1920 (python-conform-to-1080p). Gate: the plates. - Scene tracks. Per scene, lay its lines onto one mono 48 kHz WAV with
adelayat the times you want, padded to a whole second. Note each line's start and end. - Render the scenes on Seedance 2.5 reference-to-video, all at once, at 720p
(
seedance-2-5-prompt-format; the prompt shape is inreferences/scene-prompt.md): the cast's views (face plus full front each) and that scene's plates as images, no storyboard stills and no first frame; the scene track as@Audio1, the duration equal to its length. Price the whole batch against the balance first. Check each take with a frame sheet (fps=0.5,tile) and a whisper transcript: every line heard once, mouths closed on the voiceover. Gate: the scenes, joined. - Cut (local).
ffmpeg-scene-cuts(0.15) inside each take, then reorder in one filter graph: cold open, confrontation, flashback, turn.- Re-lay the voiceover sentence by sentence from the clean take onto the beats the person names, each sentence's first syllable at a cut plus about 0.25 s. Mute the take's own audio under the voiceover: Seedance re-voices it at its own pace.
- Slow a shot (
setptsplusminterpolate, 0.7x) to make room rather than rushing a line. Keep the take's own audio where people speak on screen.
- Fix in-world text with overlays: Seedance gets numbers and UI words wrong. Draw a crisp replacement (a message bubble, a sign) as a full-frame PNG with PIL and lay it over the model's own.
- Titles (the time jump), composited, never rendered into a take
(
guide-add-titles-and-motion-graphics): an elegant letter-spaced serif with a soft dark glow and an alpha fade. - Music (
elevenlabs-generate-music): three instrumental beds at the cut's length in three moods that suit the tone; render the cut once per bed. The bed at 0.2 under dialogue and 0.42 under the voiceover, then loudnorm to -14 LUFS, -1.5 dBTP (ffmpeg-normalize-loudness, with its target changed for social). Gate: music and cut together. Expect frame-level trim notes (start later, end earlier so it loops) and apply them exactly. - Finish (
guide-prepare-renders-for-delivery): deliver the 720p cut, and offer 1080p as atopaz-upscaleof the approved cut. Thendeliverthe round (core skill).
Choices this workflow makes
- Long takes per location group, not one clip per shot. The cuts happen inside the take, so performances and faces carry across them and the scene flows.
- References only. Cast views and empty plates, never the storyboard stills: the stills settle the look with the person and give the plates, nothing more.
- The whole scene's voice in one track, each line pinned to its time, so Seedance lip-syncs the speakers and keeps every mouth shut through the voiceover.
- 720p renders, upscale for 1080p. A 1080p render costs about 2.5× and re-performs every take; Topaz on the approved cut keeps what was approved.
- One voice for a double when the person wants it, told apart by direction.
Dead ends
- One clip per shot (12 Kling and Seedance clips, 3–6 s each): "too stilted", even with every clip good on its own.
- One long take with a storyboard still pinned at every cut: every cut landed and it flowed better, but the stills still "broke up the flow". References only was kept.
- Kling with
generate_audiovoiced a word the prompt said to mouth silently. - A batch failed mid-way on low balance.
Worked example
Part 1 of a twin-reveal thriller: a city lawyer, Nora, finds her identical twin living her life in the suburbs. 9:16, 24 fps, 45.6 s delivered at 720x1280. One face for both sisters, restyled; one library voice (Voice A) for both, the twin sweeter and slower. Four plates: office, hallway, house, kitchen.
| Part | Route | Note → change |
|---|---|---|
| Rough cut, 12 shots | Kling v3 Pro 1080p, Seedance r2v + audio on the 3 speaking close-ups | "too stilted" → long takes |
| Take A (office, 28 s), take B (suburbs, 22 s) | Seedance r2v 720p, a storyboard still per cut ($26.02) | "too many key frames" → references only |
| Takes A and B again | Seedance r2v 720p, cast views plus plates ($26.02) | kept; take B drew "12 years" for "32", A's profile UI was gibberish → PIL bubble overlay |
| Cut v2 | the text message moved to the front as the hook, the card-decline beat put on its line, 3 beds ($0.48) | bed A picked; start at 2.14 s, office at 3.35 s, end at 48.79 s to loop, no end card |
| Cut v3 | trims applied | approved and delivered at 720p |
About $56 at list prices plus the abandoned rough cut: $26.02 for the kept takes, $26.02 for the storyboard version, about $3 of faces and stills, $0.68 of plates, $0.48 of music and about $0.15 of voices. Done right first time it is about $31. The 1080p upscale (about $6) was offered, not run.


