Write the single-episode intent into something performable, shootable, and capable of changing the story state 剧集/<EP>/剧本.md。
Quick Start
Maintain only one script Markdown; do not separately create episode cards, beats, block indexes, recording sheets, QA, or acceptance records.
Use for the level-one heading # EP001 集名, and use for scene headings ## EP001-SC001 内 · 地点 · 时间/天气.
Write dialogue as 角色(可选表演提示):台词; use for production tags [VO]、[OS]、[SFX]、[画面文字]、
[连续性]、[转场]. Do not mistakenly write action narration containing a colon as dialogue.
Entry
- Has episode planning: read this episode's entering state, goal, turn, payoff, and handoff facts.
- Has only an idea/outline: form the minimum single-episode contract and causal beats in context, then write the script directly.
- Has an existing script: preserve the author's language and make only the targeted revisions the user names.
- Non-standard text needs to enter production: preserve the original text and only normalize scenes, action, dialogue, and production tags as necessary.
Development outlines and long-form analysis are optional upstream inputs; when the current material is sufficient, write directly.
Workflow
- Lock in the viewing experience this episode promises, who wants what now, the resistance, the episode's payoff, and the exit state.
- Identify only the engines that actually exist in this episode: if it centers on a difficult choice, check the values on both sides; if the judgment turn depends on disputed evidence, check the boundaries of proof; if it foregrounds a precise deadline, check action capacity; if the premise limits a number of times, rounds, breaths, or beats, check whether each unit completes the required state within the boundary. When none exist, do not force them in; when the input already uses it as the main engine, make it truly change actions, relationships, or outcomes, not merely name it in dialogue.
- Arrange "because—action—result—next pressure" in context; do not commit a beat sheet to disk; let objects, dialogue, silence, space, or sound carry the necessary work according to this episode's genre, without presupposing any one carrier.
- Determine scene by scene the irreplaceable function, visible change, and end-of-scene state; for scenes organized by pursuit or conflict, further specify the focal agenda and resistance. Supporting characters carrying major dramatic functions should have their own strategies; transactional or environmental characters can remain concise.
- Write action, dialogue, voice-over, sound facts, and on-screen text into the same script.
- If the user asks for the whole episode, write the complete episode, and automatically continue running scene batches.
- Before submission, silently re-check: from the script alone, can this episode's promise be received, do character actions have causality, and is the genre tone consistent; then run targeted checks on the choices, evidence, limited units, or precise deadlines that this episode actually uses. If self-checking makes the script grow devices the input did not require, remove the devices rather than finding reasons for them.
- For local revisions, preserve unrelated passages; directly fix clear problems, and hand only genuine plot forks to the user.
Writing Requirements
- First obey the facts already given by the input,
必须/禁止, the genre viewing contract, and the exit state; this skill's review items and craft defaults only help realize these requirements, and must not in turn fabricate precise numbers, records, resources, procedures, relationships, or devices that the premise does not have. - Every scene changes information, power, relationships, emotions, physical state, or risk; delete or merge scenes with no change. The turn of the core resistance must have traceable facts, leverage, authority, cost, or character action, and cannot rely only on the opponent ceasing to react.
- Dialogue must be pursuing, avoiding, probing, pressuring, or redefining the relationship; express state through visible, audible, or touchable behavior, do not replace action with explanation, and do not restate a mechanism that has already been played out.
- For dialogue drafts you write yourself, read them once after finishing, and delete sentences that do not carry action or conflict; every sentence left must be convertible into one action or expression for an actor, and anything that cannot be converted should be deleted or changed into action. Original text brought by the creator is not deleted under this rule.
- The first beat of the full episode must itself be a hook, seeopening first beat。
- The stakes necessary for the audience to understand the current action must enter the script, but the carrier obeys the genre; special rules such as choices, evidence, limited units, and precise deadlines are enabled only when the input truly uses them as the engine, and are read as neededdramatic craft, and ordinary decisions, ordinary objects, and vague time pressure are not upgraded into the same set of devices.
- When compressing process, keep only the nodes that change strategy, relationships, risk, or outcome. Resources and external reactions must come from the input or earlier setup, and cannot complete the hardest dramatic action on behalf of the characters.
- Characters carrying the main conflict must maintain commensurate goals, judgment, or strategy; transactional and environmental characters stay concise, and secrets, reversals, or character arcs are not forcibly added for a checklist.
- Established costs, irreversible consequences, key held objects, space, and knowledge states must enter a traceable exit state; the ending may advance, leave blank space, be ironic, close quietly, form resonance, or make an existing action take on new meaning, and external events are not forcibly appended; when the accepted pacing profile's
end_on_peakistrue, stop on the peak and do not follow with resonance (seeproject pacing profile)。 [连续性]hand off only states already established by earlier action that are also easy to lose downstream; author labels cannot be used to prove that something never happened off-screen, and results already clearly presented in the main text are not restated.- Before submission, silently do one economy check: whether precise numbers or record chains not required by the input were added; whether labels/dialogue repeat action; whether multiple consequences in the same direction were piled up after the payoff. Delete content with no new function; do not delete the knowhow itself.
- When the input gives a target duration, read through and compress the draft according to real performance, action, and pauses, first deleting repeated verification, explanation, and synonymous endings; do not fill a template with uniform word counts, shot counts, or beat counts.
- The user's original text takes priority; "removing AI flavor" is targeted revision and does not flatten the author's personality.
knowledge on demand
By default, read only this SKILL and the direct input. When the following clear signals appear, read the corresponding knowledge before writing the main text; if the same input has multiple different issues, they may be read separately, but do not traverse irrelevant references:
- Stage boundaries and rule levels:stage contract
- Scene headings, dialogue, and production label syntax, or normalizing a ready-made script brought by the creatornormalization:script format
- Project-specific production draft dialect:production format dialect
- Input containscore choice、limited counts/rounds/breaths/beats、precise countdownorkey physical evidence that will change a character's judgment:Playwriting craft
- Past relationships must enter through dialogue, or key characters easily remain mere exposition devices:Dialogue craft
- Sound sources, negative space, and sound bridge:Scene sound dramaturgy
- Different filmable realizations of the same story obligation:Alternative realizations
- Minimal handoff for long single episodes across contexts:Scene handoff capsule, kept only in context
- This episode needs to use
[VO]or interior monologue to convey information, or there is a pain point to convey:Show, don't tell short-drama.jsoncontainsstatusasacceptedofcreator_authority.rhythm_profile:Project pacing profile
Duration estimate (as needed)
Only when the user asks about duration, or the project has accepted a pacing profile and the VO ratio needs to be checked, write the index into the system temporary directory. First use Python to query the cross-platform temporary directory, and replace the full path printed by the first command verbatim into the quotes of the latter two commands. Each of the following is a complete one-line command, not relying on shell variables or line continuation characters; on Windows when there is no python3 command, use py -3。--speaker example value must be replaced with the actual speaker of this episode.
--project short-drama.json Add only to the third command(duration_estimate.py only accepts it,
screenplay_index.py does not have this parameter, adding it will directly report unrecognized arguments), and only add it when the project configuration actually exists:
python3 -c "from pathlib import Path; import tempfile, uuid; print(Path(tempfile.gettempdir()) / ('short-drama-' + uuid.uuid4().hex + '.jsonl'))"
python3 "{技能目录}/scripts/screenplay_index.py" "剧集/EP001/剧本.md" --output "粘贴第一条命令输出的完整路径" --speaker "本集角色一" --speaker "本集角色二"
python3 "{技能目录}/scripts/duration_estimate.py" "剧集/EP001/剧本.md" --index "粘贴第一条命令输出的完整路径"
Rerun after revision: the output path written once by the second command cannot be directly written again, or it will fail with already holds an index .
To keep the original block IDs, add --previous-index <同一路径>, to renumber from scratch, add --no-previous;
or simply go back to the first command and take another temporary path.
Distinguish counting conventions before estimating:dialogue_characters includes punctuation; the reference speech rate in video prompts is calculated by pronounceable character count.
When converting by speech rate, exclude punctuation, and handle numbers and abbreviations according to actual reading; do not mix the two counts.
When the project has accepted a pacing profile, the output includes one more item: vo_share:[VO] the ratio of character count to the total dialogue character count, the profile upper limit, and whether it is exceeded.
Estimation is a reference, not a gate; when there is no speech rate or action segment rate, report only countable facts, do not guess seconds. But when the task has given a target duration, the writer must still use real read-aloud and action run-through to judge whether it can fit, and directly compress repeated beats; "cannot estimate seconds precisely" is not a reason to ignore the target.
Complete
The named scope has been written, scene causality is coherent, dialogue and action are performable, promises are fulfilled or intentionally delayed, and the ending completes the episode's predetermined dramatic or emotional function—then it is complete. The form of the final beat follows the ending item above; to judge whether it is effective, do not substitute "whether another event happens" for it.
Assets, storyboards, review, and production start only when the user names them.
Once the five creative documents are complete, you may switch to $short-drama to perform a mechanical check of the cross-document structure; content quality is still reviewed by the creator.
Installation and maintenance
Run only when installing, upgrading, or troubleshooting python3 scripts/selftest.py。