Skip to content

Screenplay writing guide#

Give this page to your LLM (Grok, ChatGPT, Claude, …) together with the brief at the end, filled in. The answer is a screenplay package that Video Studio imports in one click: project → scenes → shoots with full prompts, reference briefs, dialogue and a seed/frame plan. The rules below come from Maystro's proven recipes; the model is expected to apply them, not to change them.

You are writing a production-ready screenplay package for Maystro, a local AI film studio that renders video with the MiniMax H3 (Hailuo 3.0) model. Maystro renders one shoot (a shot) at a time from a text prompt, reference pictures and optional voice references; it can chain up to sixteen clips inside one shoot for continuous action, and it plays the shoots of a scene back to back. Your package must fit that machine exactly. Follow every rule below; where the brief is silent, choose the safer option.


1. Output structure (deliver ALL sections, in this order)#

  1. Package header — title, logline (≤2 sentences), style anchor, format, dialogue language, estimated total duration.
  2. Subjects — every character that appears on screen.
  3. Locations and guides — every setting, and every pose, composition or prop picture the shoots need (§4).
  4. Scenes and shoots — the storyboard, one block per shoot, in playback order.
  5. Dialogue table — every spoken line with its speaker, shoot, clip and character count.
  6. Reference brief list — image-generation prompts for every subject, location and guide.
  7. Seed and frame plan — one table.
  8. JSON export — the whole package again as one JSON block (schema in §10).

Write sections 1–7 in Markdown for a human reader; section 8 is for the importer. The two must agree exactly (same ids, seeds, frame counts, prompt text).

2. Style anchor#

Write one or two English sentences that fix the visual style, palette and light of the whole film, e.g.

The target video is in a warm 2D-animated storybook style with soft painted textures, a warm muted palette with cool snow tones, and gentle overcast winter light.

or, for live action:

The target video is photorealistic, shot on a cinema camera with natural light, a neutral colour palette and shallow depth of field.

Repeat this sentence verbatim at the start of every clip prompt's detailed_description (see §6). Never paraphrase it between shoots; drift in wording becomes drift in look.

3. Subjects (characters)#

For each character give:

  • id — SUBJ_1, SUBJ_2, …
  • name — as used in the story.
  • identity_lock — one English sentence describing face, hair, build, clothing and any signature detail (a fur coat, a felt cap). This sentence is reused verbatim in every prompt where the subject appears. Keep it under 40 words.
  • trigger_word — only if the brief says the character has a trained LoRA (e.g. chr_rbv2); then the identity lock must start with the trigger word. The LoRA and the reference picture carry the face and the hair: after the trigger word write only what the brief gives (clothing, a signature detail). An invented hair colour or length fights both.
  • variant_of — null, or the id of the base subject when this entry is the same character in another costume or state (a worn robe in the first half, a fur coat in the second). The variant repeats the base's face and hair words verbatim and changes only the clothing clause of the identity lock; it inherits the base's voice. Its reference picture is derived from the base picture by the producer (same face, new clothes), never generated from scratch — write its reference brief as an edit of the base ("the same man as the base reference, now wearing …").
  • voice — a short delivery description used with the speaker id: age, pitch, timbre, pace, accent ("a deep calm male voice", "a raspy warm elderly voice").
  • reference_brief — the image prompt for the character's reference picture (§8).

Rules:

  • Give every on-screen person who must stay recognisable a reference picture. Two people with pictures in one shoot is the tested combination; more are allowed (§9), and each picture adds render time. A person without a picture is carried by description only and must not be described in as much detail as the referenced ones (the model swaps features between detailed unreferenced people).
  • Signature details that carry the plot (the coat only a king could wear) go into the identity lock, the reference brief and the prompt.
  • A costume change is a new subject id linked by variant_of; a shoot references the state visible at its start, and the change itself happens off screen or in a chained shoot.
  • Clothing that differs between scenes (another day, season or occasion) is a costume change too. One reference picture means one outfit in every shoot that uses it, so give each outfit its own variant; "clothing appropriate to the scene" in an identity lock changes nothing on screen.

4. Locations and guides#

Locations#

For each setting: id (LOC_1, …), identity_lock (one sentence: the fixed objects, their positions, the light in one state), reference_brief (the empty setting: no people). Write the brief as a scene ("the empty café terrace at dusk, wet chairs, …"), never as a "plate": image models read that word as a dinner plate and draw one. A location picture holds the room steady when the camera moves or the shot cuts; a shoot that does without one carries the location by its identity lock sentence in the prompt. A place whose look changes during the film (the lights come on, night falls) gets one entry per state (§5).

Guides (pose, composition, prop)#

A guide is a reference picture that is neither a character nor a setting. Add one only when the brief needs a pose, a blocking or an object that words alone do not pin down:

  • id — GUIDE_1, GUIDE_2, …
  • name — a short label ("Kneeling plea", "Table blocking").
  • role — pose, composition or prop (below).
  • description — one English sentence saying what to take from the picture. It is repeated verbatim in every prompt that references the guide, like an identity lock.
  • reference_brief — the image prompt for the picture (§8).

Roles:

  • pose — a body pose or gesture transferred onto a subject. The picture shows the pose on a plain wooden mannequin or a neutral grey figure, never on another recognisable person: the model would borrow that face.
  • composition — the viewpoint and the placement of people and objects for one shot: a storyboard sketch or a rough frame with the people as plain silhouettes.
  • prop — an object that must look the same in every shoot (a carved box, a sable coat on a stand). Keep a prop that has its own picture out of the location's identity lock and location picture (that picture shows the empty table): two pictures of one object fight.

A guide is referenced like a subject or a location: it takes a place in the shoot's references and gets its own <Picture N> (§6).

5. Scenes and shoots#

A scene groups shoots that share a setting and the same references. A shoot is one shot; it renders as one take. Decide for every shoot:

  • references — the subject, location and guide ids the take is conditioned on, in the order they are numbered <Picture 1>, <Picture 2>, … (at most nine; §9 for the cost).
  • num_frames — per clip, from this list only: 124, 141, 158, 175, 192, 209, 226, 243, 260, 277, 294, 311, 328, 345, 362 (24 fps; 124 = 5.2 s, 192 = 8.0 s, 226 = 9.4 s, 311 = 13.0 s, 345 = 14.4 s, 362 = 15.1 s).
  • clips — 1 for a single take. Use a clip chain (2–16 clips, each num_frames long) only for continuous action that must not cut: standing up and walking, a camera move through the room, one long exchange. The chained take is clips × num_frames − (clips − 1) frames long; every clip renders with the same frame count. Cost: every clip renders like a single take of its length, plus a GPU-state reset of well under a second before every continuation clip (a three-clip 768×512 chain: about 3.3 minutes). A continuation clip without "keep references" carries only the previous clip's last frame (and the voice of a speaking subject); with "keep references" on it costs about 4 % more (measured 2026-10-08: 74 s instead of 71 s per 124-frame clip at 768×512), so choose by continuity, not by cost.
  • keep_references — for chained shoots: true when the camera reveals new parts of the setting or the voice must stay locked (the references and voice references then anchor every clip); false for a static framing. Single-clip shoots: omit. A chained shoot whose subject has a voice imports with the cheap voice anchor on (Keep only the voice references in the continuation clips) unless keep_references is true, which already carries the voice; untick it in the shoot panel if you do not want it.
  • keep_voice — optional, chained shoots whose subject has a voice: false imports the shoot with the cheap voice anchor off (the panel does not switch it back on), true makes the default explicit. Omit it otherwise; with keep_references: true it is ignored (the full anchoring already carries the voice), and on a single-clip shoot it is ignored.
  • seed — sequential integers from the brief's seed base (e.g. 801, 802, …); a shoot and its re-takes share the base and add 10.
  • A cut with a new framing is a new shoot. Inside one clip you may use at most three [Shot N] blocks (§6); use them for a reaction cut, not for a change of place.
  • End every clip on a wide, open pose (no turning away, no leaning out of frame): the next clip, and the next shoot's continuity, starts from that last frame.
  • Keep the camera inside the established framing unless keep_references is on: an unreferenced part of the room is re-imagined by the model.
  • A picture shows one state. When a referenced place or object changes during the film (the room lights come on, the candles are blown out, a glass is emptied), give the new state its own entry, a second location or guide whose brief is an edit of the first picture, or leave the picture out of the shoots after the change and describe the new state in words. A shoot references the state visible at its start; an identity lock or guide description names that state on its own, never the change ("the same room, now lit" points at a picture the shoot does not have).

6. Clip prompt format (MiniMax H3 full-reference rewrite)#

Every clip prompt is a self-contained English text in this exact shape:

subject_definitions:
<Subject 1> is the <subject type> from <Picture 1>, <identity lock>. Exactly the same person as in <Picture 1> — same face, same hair, same clothes.
<Subject 2> is the <subject type> from <Picture 2>, <identity lock>. Exactly the same person as in <Picture 2> — same face, same hair, same clothes.

retention_analysis:
<Subject 1>: fully_preserved — face, hair and clothing retained exactly as in <Picture 1>.
<Subject 2>: fully_preserved — face, hair and clothing retained exactly as in <Picture 2>.

detailed_description:
<style anchor sentence(s)>
[Shot 1] <framing and camera>. <Subject 1> (S1), <what is visible: position, action>. <Subject 1> (S1) says in <voice description>, <d>[Turkish] …</d> <action continues; end on an open pose>
[Shot 2] At 00:04.500, the shot cuts to <new framing>. <Subject 2> (S2) replies in <voice description>, <d>[Turkish] …</d>

overall_soundscape: <1–4 sentences: ambience, physical sounds, breathing; no dialogue here>

non_diegetic_music: N/A

Rules:

  • <Picture N> numbers follow the shoot's references order, and a <Subject N> keeps the number of its picture. A location reference is defined as <Subject N> is the <place> in <Picture N>, <location identity lock>. Guides are written as in the table below.
  • One subject_definitions line and one retention_analysis line per referenced item, no more. Unreferenced people and places are described in the shot text only.
  • (S1), (S2) are speaker ids, not subject tags (MiniMax guide): only a source that actually speaks in the clip gets one, numbered in the order of first vocal events and restarting at (S1) in every shoot. A silent subject is written as <Subject N> alone — a tagged silent subject invites lip movement. Write a speaking subject as <Subject N> (Sx) says …, the speaker id right after its subject tag, so the voice binds to the right person. Give the voice description at the speaker's first line in the shoot; later lines may say "in the same voice".
  • Dialogue: directions in English outside <d>, the spoken line inside <d>[Turkish] …</d> (or the brief's language). One speaker per <d>.
  • Voiceover / narrator is a speaker without a subject. Make the shot's first sentence, before the framing and camera sentence, <Subject N> keeps his lips completely closed for the whole shot; the only voice is an off-screen narrator., describe the on-screen characters as silent, and write the line as A <voice> narrator (Sx) says in an off-screen voiceover: <d>[Turkish] …</d> while the lips of <Subject N> remain completely closed., for example A warm, gentle male narrator in his early thirties (S1) says … (field lesson: a closed-lips clause placed only after the line was ignored and the character mouthed the narration). In the dialogue table the narrator's subject is null. Give a narrator line a clip of its own, apart from the on-screen speakers: the closed-lips sentence holds for the whole shot. While the narrator speaks, nobody on screen makes a vocal sound: no laughing, talking, singing, whispering or humming in the description or in the soundscape (a smile, a breath, a nod instead); the importer warns about such a verb in a narrated clip.
  • [Shot 1] has no timestamp; later shots start with [Shot N] At MM:SS.mmm, with strictly increasing times inside the clip's duration (a 124-frame clip ends at 00:05.166).
  • Camera motion is written as an action with type + amplitude + speed when they matter: The camera pushes in with small amplitude at slow speed toward her hands. Vocabulary: Zoom In/Out, Push In/Pull Out, Pan Left/Right, Truck Left/Right, Tilt Up/Down, Pedestal Up/Down, Arc Shot, Tracking Shot, Static Shot, POV; with small/large amplitude, at slow/fast speed.
  • Continuation clips (clip 2..N of a chain) begin the shot text with Continuing the same shot without a cut. and describe only that clip's beat. With keep_references: true, keep the same subject_definitions and retention_analysis blocks; with false, drop them and describe the subjects in words (no <Picture N>).
  • No negative lists ("no extra people, no blur…"): say what you want. Never write "change nothing else" — it freezes camera and motion.
  • Target length of detailed_description: 120–250 words per clip; dialogue-dense clips prioritise the complete spoken timeline over word count.

Guide lines. A guide (§4) is defined by its role, with its description verbatim:

Role subject_definitions retention_analysis In the shot text
pose <Subject N> is the <pose> in <Picture N>: <description> <Subject N>: attribute_transfer — only the pose is transferred, onto <Subject 1>. <Subject 1> kneels in the pose of <Subject N>, …
composition <Picture N> is a composition reference for [Shot 1]: <description> <Picture N> ([Shot 1] composition): weak_reference — only the viewpoint and the placement are followed. The framing follows <Picture N>: …
prop <Subject N> is the <object> in <Picture N>, <description> <Subject N>: fully_preserved — the object is retained exactly as in <Picture N>. <Subject 1> lifts <Subject N>, …

A composition guide is a picture without a subject, so its number is not used for a <Subject N>.

7. Dialogue rules (Turkish)#

  • Write lines with the proper Turkish letters (ç ğ ı İ ö ş ü). ASCII substitutes are read letter by letter.
  • Use the circumflex for long vowels in Ottoman-origin words where it changes the reading: pâdişah, lâkin, selâm, kâğıt, hâlâ.
  • Write numbers, years and amounts in words ("bin dokuz yüz elli").
  • Avoid words the model mispronounces; prefer şahsi over kişisel. Prefer plain, spoken sentence rhythm; one clause per breath.
  • Fit the clip. Speech runs at about 17 characters per second; fill at most 80 % of the clip, and leave a beat of silence at the end rather than cutting the last word:
num_frames seconds max characters (all lines in the clip)
124 5.2 70
141 5.9 79
158 6.6 89
175 7.3 99
192 8.0 108
209 8.7 118
226 9.4 128
243 10.1 137
260 10.8 147
277 11.5 156
294 12.3 166
311 13.0 176
328 13.7 185
345 14.4 195
362 15.1 205

(budget = ⌊num_frames ÷ 24 × 17 × 0.8⌋ characters.) A clip that carries only a short line should be short too: pick the smallest frame count that holds the action, not the largest.

  • A punchline gets its own shoot or its own clip; do not share the clip that carries the key line with a second speaker.
  • One speaker per line; for two speakers, give each their own <d> block and speaker id.

8. Reference briefs (image prompts)#

For each subject, location and guide write an image-generation prompt for Maystro's Image Studio. The picture is the identity anchor, so:

  • Subjects: a sharp, front-lit, eye-level close-up of the face at the size it will appear on screen, neutral expression, plain light background, the full identity lock (hair, clothing, signature detail) visible. By default the runtime scales every reference down to the shoot's own frame size, so a tight face crop keeps the face large while a full-body picture leaves it small. Add a second brief for a full-body sheet only if a costume detail matters. The style anchor applies to the brief too.
  • Locations: the empty setting in the style anchor: the fixed objects and their placement, the light, no people. Describe the place ("the empty kitchen at night, …"); do not call it a "plate", image models draw a dinner plate.
  • Guides: pose — the pose on a plain wooden mannequin or a neutral grey figure, full body, plain background, seen from the shoot's camera angle; composition — a simple frame of the shot with the people as plain silhouettes and the main objects in place; prop — the object alone on a plain background, lit like the scene.
  • Variants (variant_of, §3): the brief states that the picture is an edit of the base reference — same face, hair and framing — with only the clothing or state changed.
  • Give every brief an aspect matching the target format (§9) and 1024 px on the long edge.

9. Format and envelope#

  • Resolution: 768×512 (landscape, fast) by default; 768×768, 1024×576 or 1344×768 (the model's 768p: sharpest, slowest) when the brief asks; 24 fps. The step count is not part of the package: the producer's preset decides it.
  • Frames per clip from the list in §5; chained takes ≤16 clips; ≤9 reference pictures per shoot (subjects, locations and guides together); ≤3 voice references per shoot (attached by the producer, not by you).
  • Render time on the reference GPU (16 GB), once the model is loaded (measured 2026-10-08 on the sped-up stock preset; the standard base is about twice as slow): a 124-frame 768×512 clip with one face reference about 75 s (160 s on the standard base); with five pictures (two faces, a location, a pose and a composition guide) about 90 s; a 345-frame 768×512 take with two faces and two voice references about 3.5 minutes; a 15-second 1344×768 take with one face reference about 11–17 minutes.
  • Every reference picture adds render time (five pictures: steps about 30 % slower than with one). Two faces and two voices at 345 frames stayed inside the 16 GB envelope, so the length of a dialogue take is a creative choice, not a memory limit. A two-shot can still double a face: give it a composition guide (§4) or cut it into single shots. Plan the film in ≤ 20 shoots (about 25 minutes of rendering at 124 frames on the sped-up preset) unless the brief allows more.

10. JSON export schema#

{
  "project": "Title",
  "description": "Logline.",
  "style_anchor": "The target video is ...",
  "format": {"width": 768, "height": 512, "fps": 24, "language": "Turkish"},
  "subjects": [
    {"id": "SUBJ_1", "name": "...", "identity_lock": "...", "trigger_word": null,
     "variant_of": null, "voice": "...", "reference_brief": "...", "reference_aspect": "3:2"}
  ],
  "locations": [
    {"id": "LOC_1", "name": "...", "identity_lock": "...", "reference_brief": "...", "reference_aspect": "3:2"}
  ],
  "guides": [
    {"id": "GUIDE_1", "name": "...", "role": "pose", "description": "...", "reference_brief": "...", "reference_aspect": "3:2"}
  ],
  "scenes": [
    {"name": "S1 — ...", "description": "...", "references": ["SUBJ_1", "LOC_1"],
     "shoots": [
       {"id": "T1", "title": "...", "references": ["SUBJ_1", "LOC_1", "GUIDE_1"], "seed": 801,
        "num_frames": 192, "clips": 1, "keep_references": null, "keep_voice": null,
        "prompt": "subject_definitions:\n...",
        "chain_prompts": [],
        "dialogue": [{"clip": 1, "speaker": "S1", "subject": "SUBJ_1", "line": "...", "chars": 42},
                     {"clip": 1, "speaker": "S2", "subject": null, "line": "(narrator line)", "chars": 40}]}
     ]}
  ],
  "seed_plan": {"base": 801, "retake_offset": 10}
}
  • prompt is clip 1's full text (§6); chain_prompts holds clips 2..N in order (empty for a single take); keep_references is true/false only when chain_prompts is non-empty, and keep_voice only on a chained shoot with a voiced subject (null = default).
  • references ids map to gallery images the producer creates from the briefs; keep the order — it defines <Picture 1>, <Picture 2>, …
  • guides is [] when the film needs none; role is pose, composition or prop.
  • format carries no step count: the producer's preset decides it.
  • dialogue[].speaker is the (Sx) used in the prompt; subject: null marks a narrator line; chars is the line's character count (the importer recounts it). variant_of links costume variants (§3): the importer attaches one voice reference to both ids.
  • Escape newlines inside JSON strings as \n, with one backslash: \\n puts a literal backslash into every prompt and runs its sections together. Do not add fields.

11. Checklist before you answer#

  • Every shoot: references in <Picture N> order (≤9), frames from the list, seed set, prompt in §6 shape.
  • Every clip's detailed_description (continuation clips too) has 120–250 words: framing and camera, positions and actions beat by beat, the spoken timeline, the open end pose.
  • Every clip's dialogue within the character budget of §7; punchlines alone.
  • Style anchor, identity locks and guide descriptions verbatim everywhere they appear.
  • Only sources that speak carry (Sx), numbered by first vocal event and restarting per shoot, written right after their <Subject N>; narrator lines open the shot with the closed-lips sentence, before the framing, have their clip to themselves, and nobody on screen laughs, talks or hums under them.
  • A picture shows one state: after a place or object changes (lights on, candles out), the shoots use the new state's entry or leave the picture out; a prop with its own picture stays out of the location picture.
  • The film's length (every shoot's frames, chains included, divided by 24) is within 15 % of the brief's TARGET LENGTH, with the shoot count the brief asks for.
  • No negative phrasing anywhere ("no one speaks", "does not hurry"): state what happens.
  • Costume variants linked with variant_of, one per outfit (also when the outfit changes between scenes); their briefs are edits of the base picture.
  • A LoRA character's identity lock is the trigger word plus what the brief gives, with no invented hair or face.
  • Pose guides show a mannequin or a neutral figure, never a recognisable person.
  • Continuation clips start with "Continuing the same shot without a cut." and end on an open pose.
  • Sections 1–7 and the JSON agree.

BRIEF (fill in and send with this file)#

TOPIC / STORY: <what happens; the joke or the point; how it should end>
STYLE: <photorealistic | 2D storybook | ...; any palette or light notes>
DIALOGUE LANGUAGE: Turkish
CHARACTERS: <names and one-line descriptions; which ones have a trained LoRA and its trigger word>
TARGET LENGTH: <e.g. about 90 seconds, 8–10 shoots>
FORMAT: <768x512 | 768x768 | 1024x576 | 1344x768>
SEED BASE: <e.g. 801>
GUIDES: <optional: poses, blockings or props that need their own picture>
NOTES: <anything the film must or must not do>