Short-Drama Storyboard and Frozen Keyframes
Transform the script and visual facts into
with shot responsibilities, spatial continuity, and a freezable starting point.
Each shot uses a second-level heading
; within the same shot, use
### Frozen Keyframe Prompt
to write the starting-frame text;
when needed, add
### Ending Keyframe Prompt
for the ending-frame text.
Quick Start
text
用 $short-drama-storyboard 完成 EP001 的正式分镜和每镜冻结关键帧
Entry Point
The current script plus the necessary visual facts is enough to enter directly. Asset image prompts and the storyboard are sibling branches and do not wait for each other. Only when a key scene genuinely has multiple valid director approaches do you compare coverage alternatives in context; for ordinary scenes, design directly.
Creator-readable notes follow the project language; the copyable text of frozen keyframes follows
short-drama.json#/format/prompt_language
. When there is no
, the text defaults to
. Before allocating shot durations, read
short-drama.json#/creator_authority/production_profile/choices/native_duration_seconds
. If a target model is declared but has no native duration, first fill in this one choice; if no target model is declared either, design according to narrative rhythm as usual and do not guess vendor limits.
Before the frozen keyframe is written, who will appear in that frame is not yet decided. Therefore, the three pieces of evidence are backfilled after the keyframe, reading the finished frame, not the shot intention.
If the user has not manually pointed to a reference image, that does not mean text-to-video was chosen. After freezing the keyframe, first determine consistency needs based on the visible characters, locations, key props, and starting composition in the shot, then check real images already present in the project. Only images that are currently readable and whose content and purpose can be verified can be auto-bound; if the filename looks like a character but the content has not been verified, it is still considered not ready.
When there are no images in the project at all, the creator has three paths. State all three clearly at once before asking them to choose, not just two options like 'generate reference images first' and 'switch to text-to-video': put existing images into the project and bind them as
; generate images in their own tool and write a mounting plan with
first in this round; or explicitly switch to text-to-video. Using this suite's production skill to generate images is just one way to take the first path; it requires adapters and credentials outside the project and is not the only entry.
Before starting the storyboard, read the current content of
. When the creator says 'the script has been confirmed for adoption,' they mean that file, not an earlier draft in the conversation; if the two differ, the file takes precedence and the difference should be stated.
Workflow
-
Read the accepted native duration range of the target model, then confirm which shots carry each scene's action, dialogue, sound, on-screen text, and turning point.
-
Determine when the audience knows what, who is aligned, how space is revealed, and which visible action the turning point lands on.
When the script or brief uses relative-time limits such as 'first half / second half / first third / last N seconds' for first appearance, release, or prohibition, convert them to explicit time boundaries using the accepted episode length before breaking down shots; for example, 'first appears in the second half' of a 60-second work must not be earlier than 30 seconds.
-
For each shot, write clearly its sole responsibility, source, duration, shot size/camera position, starting point, sole primary action, ending point, and sound; use
to directly describe how the characters, hands, and held props complete the shot's state transition. Leave the three evidence items to step 6.
When there is dialogue, VO, or OS, first estimate the full vocal duration according to the original text and how the character speaks, then arrange non-overlapping actions, pauses, and end reactions; write the estimation basis briefly in the shot's 'sound' field. See
Dialogue timing estimation for details.
-
Lock characters' orientations, positions, eyelines, held props, entrances/exits, screen direction, and necessary states; when upstream has continuing relationships that constrain action space, project those relationships into the shot's starting and ending points.
-
The frozen keyframe projects only the shot's starting point; remove text, actions, poses, or prop states that appear only at the ending point.
When the shot's responsibility lands on the finishing action, additionally write
### Ending Keyframe Prompt
to project the
ending—the other end of the same frame, with fully symmetric rules: remove what exists only at the starting point and is no longer at the ending point. It is optional; the style and trade-offs are explained in
Paired start and end.
-
After the keyframe is finalized, first read from the finished text which characters, locations, and props in this frame need to maintain identity, styling, or geography, then use the same list to fill all three evidence items at once:
- Visual evidence: write each item as an entry reference to 《视觉设定.md》; this is a required field.
- Image prompt item: if the list already has a suitable entry, write it; otherwise leave .
- Input reference images: according to the list, search for matching images in the user-provided inputs, , and other visible media pointed to by the document; if found, write . If none are found, write
无(待补参考图:<本镜缺失的起始帧、人物、地点、道具>)
; if only some are found, append after the existing , separating gaps only with . When the creator says images will be prepared elsewhere, write this list as slots and the shot is ready; only when the creator explicitly says no images are needed, write .
The three evidence items read the same frame, so they cannot contradict each other: a character or prop named in the keyframe must appear in the visual evidence.
-
When the request is for an entire episode, complete the whole episode and report coverage, rhythm, and genuinely unresolved choices once at the end.
Shot Requirements
-
Each shot has a unique responsibility, a clear source, visible starting and ending states, and a reasonable duration. The 'source' starts with a scene ID that actually exists in 《剧本.md》; after the ID, a brief necessary quotation may follow. For shots spanning multiple scenes, join the sources with
;
creator_markdown_check.py
verifies that every ID parses.
-
The 'source' short quotation should correspond to the action or sound this shot carries. When the text mentions an off-screen character, you may write
in the visual evidence; this only declares that the character is not in the frame and cannot replace the implementation of necessary actions. Actions that need to be seen should be carried by another shot, or the omission should be explained.
-
Every scene in the script must be carried by a shot. If you decide not to shoot a scene, write a line at the beginning of 《分镜.md》:
, joining multiple items with
. SHT-01 always allows omission with a reason, but omission and missing shots look exactly the same in the final document, so the reason must be written down, not left in the conversation.
-
When a native duration is declared, every one-shot-one-generation shot falls within its minimum and maximum seconds. Narrative actions shorter than the lower bound complete within the legal shot length and then maintain the ending point; actions longer than the upper bound are split at visible state closure points, with each resulting shot still having a unique responsibility and credible boundary.
-
The 'sole action' writes the visible state chain from the shot's starting point to its ending point; when handoffs, switching hands, placing, or retrieving are involved, put the contact person, contact method, and object destination in the same chain, and do not connect legal ending points by teleporting off-screen.
-
A cut must bring a change in information, power, emotion, space, or rhythm; redundant synonymous shots should be deleted.
-
Relative time words constrain when an event first becomes visible or audible; they are not released early just because a preceding action is complete. The storyboard timeline directly writes out that boundary; it does not treat narrative ordering like 'later' or 'after the handoff' as a substitute for numeric time.
-
The same action does not occur repeatedly across shots; the ending point should be a credible starting point for the next shot.
-
Readability of key information takes priority over decorative camera moves; vertical composition first ensures the subject and reactions are visible.
-
For complex group scenes, first lock spatial anchors and screen direction, then decide shot size changes.
-
In addition to per-person poses, the starting and ending boundaries must also state the body–object–space relationships this shot depends on. When relationships do not change within the shot, keep them at both ends; when they must change, the process and ending point must have script basis.
-
Frozen keyframes only write what can be seen at that instant; text, fingers, reflections, and occlusions must be generatable.
-
Continuity locks from 《视觉设定.md》 are written verbatim into the frozen keyframe text of the affected shots; a lock is not omitted because 'the reference image will explain it.'
-
If the review finds an omission, fix the document directly; do not generate a coverage table to prove you checked. The 'visual evidence' in the shot block is the evidence field for that shot, not the coverage table mentioned here.
Visual Evidence and Images
- is a prompt entry ID in 《图片提示词.md》. It does not mean the image is already generated, provided, or usable.
- When 《图片提示词.md》 exists and this shot needs one of its entries, write 'image prompt item': the ID must match a visible second-level heading in that document, and also write the Chinese name and the identity, styling, geography, composition, or other boundaries it controls. IDs are only for lookup; the English slug does not carry meaning.
- When 《图片提示词.md》 does not exist or has no suitable entry, write 'image prompt item: none', then point in Chinese to the character, location, or prop items and control scope in 《视觉设定.md》. This is the normal direct entry; do not invent an ID to continue storyboarding, and do not fabricate another stage.
- 'Visual evidence' is a required field for every shot: after the frozen keyframe is finalized, work backward from the actual frame. Visible characters, locations, and props that need to maintain identity, styling, or geography must be written item by item as
《视觉设定.md》·<人物|造型|地点|道具>「<名称>」(控制:<范围>)
, joined with ; the name must find a heading with the same name in 《视觉设定.md》. Small-scale or background characters count as long as their identity still needs to be recognized; off-screen voices and unidentifiable parts do not count. If this shot genuinely has no such entries, write 'visual evidence: none'.
- If the keyframe text mentions an entry's name but it is genuinely not in this frame (the owner has left, the name only appears in on-screen text, or it homographs with another word), append at the end of 'visual evidence'. This is a faithful record, not writing an absent person as present.
- When an entry's name is fundamentally unreliable in the text ( would collide with '手机店', would collide with '下着小雨'), write for that entry in 《视觉设定.md》; then mechanical verification will no longer look for it by name. Whether this shot actually depicts it is still answered truthfully by 'visual evidence'.
- The three evidence items describe the same frame, not an asset roster for the shot. 'Control' only writes the scope this frame can bear: a close-up of the back of a hand does not write 'episode styling'; a shot that shows only a screen and one finger does not write 'body shape'. A binding from the previous shot does not carry over to the next just because 'the character is still in this scene.'
- A character, location, or prop named in the keyframe text (a 《视觉设定.md》 entry name or its declared ) must appear in this shot's 'visual evidence';
creator_markdown_check.py
mechanically checks this. It only catches the category that is named: when the text only describes without naming ('a boy in a hooded jacket'), the machine stays silent, and who is in the frame still has to be read out by this step; do not wait for an error.
- Visible objects that need to stay consistent in this shot but do not yet have an entry in 《视觉设定.md》 (especially props appearing across shots) cannot be treated as having no consistency requirement just because 'they cannot be written into visual evidence.' A pen and a jacket appearing in four shots are the same type of problem. Do two things: pin the object down in the text by using the exact same description in every shot, and name it in the end-of-round report, suggesting add an entry. Do not add entries to 《视觉设定.md》 yourself, and do not stuff it into 'visual evidence' as if it were an existing entry.
- 'Input reference images' is an independent axis: actual images the creator has provided, or that were confirmed as produced and are currently readable, are referenced by stable slots distinct from . Each slot writes at the same time an explicit order, a project-relative path separated only by , a Chinese name, 'purpose', 'control', and 'must not control' scope; when absent, you must distinguish between 'pending reference images' and 'creator explicitly chose text-to-video'; when only a part is ready, keep the existing and append ';待补参考图:……'. Do not write prompt entries, not-yet-generated images, or descriptions from a conversation as — means 'the file is in the project at this moment.'
Images the creator will mount themselves during generation go through below: it likewise does not claim the file exists, but only writes clearly which images this shot will mount.
- Every must follow verbatim the unique format:
REF-<slot>(顺序:<n>)· <项目相对路径>《<中文名称>》(用途:<用途>;控制:<范围>;不得控制:<范围>)
. Note the full-width colon after '顺序:' and the middle dot before the path; do not use as a field separator. Multiple images are joined only with Chinese semicolons ; if some are missing, after the last complete slot append and separate gaps with . After writing, read it back against this format before delivering.
- 'Purpose' can only be one of 、、、、、、、、; what each can control is in 's 《参考角色》.
For a starting-frame image of this shot, write ; for a character image, write or ; for a location image, write ; for a prop-state image, write according to what it decides.
If one image carries two jobs, split it into two slots; a shot has at most one and one , and when writing you must also have .
Downstream video prompts use to say which storyboard starting frame, characters/props/location images are sent to this shot, so a slot without is not ready.
- When this shot does not yet have a starting-frame image, there are two paths. If the creator produces with this suite: the image is generated by using this shot's frozen keyframe text; write as and as this shot's ; the output lands in , and once the real file is available, bind it as . If the creator produces in their own tool: copy the frozen keyframe text over to generate, then put the file into the project and bind it as , or write it this round as
PLAN-SHOT-START(顺序:<n>)· <本镜 SHOT-...>《本镜冻结关键帧》(用途:起始帧;……)
. If neither path is taken, it remains just one item in 'pending reference images'.
- When the creator generates images outside the project and the images do not enter the project, use slots: the syntax is verbatim the same as , except the project-relative path is replaced with or entry IDs, and the Chinese name of must match the title in 《图片提示词.md》. It declares 'this image will be mounted by the creator at generation time in this order'; it does not claim a file exists in the project, so it is not 'pending', and cannot be used for production. When a real file enters the project, rewrite it as . The two slot types can be mixed; is uniformly numbered consecutively.
- Auto-binding is not about cramming all images into one shot. Only select images that are visible in this shot and whose identity, styling, geography, key prop state, or starting composition genuinely need to be stable; write each one's purpose, what it can control, and what it must not control.
- The two axes can combine independently: when there is a valid image prompt item, input reference images can still be 'pending' or the creator explicitly chose text-to-video; when the creator gives real reference images, the image prompt item can also be 'none'.
On-Demand Knowledge
By default, read only this SKILL, the current script, and necessary visual facts. When encountering a corresponding problem, open only one resource:
- Stage boundaries and rule tiers: 阶段契约
- Shot responsibilities, cut reasons, and boundaries: 镜头手艺
- Shot syntax needed for actual production: 生产镜头语法
- Comparing director approaches for key scenes: 场次视觉计划
- Checking whether the original text is fully covered: Coverage Audition
- Multi-person, group, and complex space blocking: 调度手册
- Who is lit and how to write it executably: 光的设计
- Frozen instants, attention centers, and readability: 关键帧手艺
- Shared visual vocabulary for comic/2D-comic forms: 漫剧关键帧词表
- Full example from script facts to keyframes: 剧本到关键帧
- Splitting, merging, and stable shot IDs: 镜头修订身份
- Continuity checks before completion: 审查与示例
Revisions
Keep unaffected shot IDs. When splitting, merging, or changing a shot's responsibility, state which downstream video prompts need refreshing, but do not automatically rewrite files the user did not name.
Completion
When the original text in the named scope has shots carrying it, each shot's responsibility is non-overlapping, space and states are continuous, the starting/ending boundaries are producible, the keyframe can be frozen, each shot's 'source' resolves to a real scene in 《剧本.md》, every scene in the script is carried by a shot or recorded in 'unshot scenes', and every visible character, location, and prop in each shot's keyframe is in that shot's 'visual evidence', the task is complete. For visible objects that the frame needs but that have no entry in 《视觉设定.md》 yet, name them item by item in the end-of-round report. When this request also modifies 《图片提示词.md》 and 《分镜.md》 at the same time, refresh the references of affected shots in the current round; do not create a separate coverage table.
Video prompts, production, and review only start when the user names them.
Once the five creation documents are complete, you may hand off to
for a mechanical cross-document check; content quality is still reviewed by the creator.
Installation and Maintenance
Run
python3 scripts/selftest.py
only when installing, upgrading, or troubleshooting.