| name | short-drama-prompt-director |
| description | Turn traditional scripts, story ideas, novels, or short-drama briefs into professional Seedance 2.0-ready AI video prompt packages. Use when Codex needs to create structured short-drama production materials: script diagnosis, beat sheets, 4-15 second Seedance generation segments, scene snapshots, shot cards, video prompts, NOT constraints, and P0/P1/P2 QA reports. Also use when adapting a rough idea into a prompt package that will later be fed to video models; do not use for directly generating videos, dubbing, subtitles, editing, or web UI work. |
Short Drama Prompt Director
Purpose
Generate a production-grade prompt package for AI short-drama video generation. Treat the output as pre-production material for Seedance 2.0: precise enough to feed downstream image/video tools, but not a finished video. Only the seedance2_prompts section is model-ready copy; planning notes, agent logs, QA reports, and validation output must stay outside the video prompt.
Default Delivery Contract
When the user asks to "generate prompts", "生成提示词", or gives a script/episode for prompt generation, default to direct-model detailed segment delivery after a short intake pass:
- Before generating, ask the necessary high-impact production questions when the user has not already specified the choices. Prioritize delivery depth (
quick test vs professional multi-shot storyboard), internal shot density per Seedance segment, visual style/medium, reference image binding, target use (direct Seedance input vs director/editor handoff), total runtime or segment count, and aspect ratio. Group related choices when useful and recommend defaults in the question, but wait for the answer unless the user explicitly says to proceed without questions, says 只要提示词, gives all needed choices, or the task is a minor revision of an already approved package.
- Build the complete production package internally and save it as a local Markdown or JSON file.
- Always save two direct-model prompt exports next to the full package: a
director_detailed file with readable multi-shot director prompts, and a seedance_compact file with shorter Seedance feed prompts. The detailed file is the default primary deliverable path; the compact file is for lower-cost model testing. director_detailed must include professional cinematic parameter density: focal length, aperture/depth of field, camera height/distance/angle, movement state or speed, composition rule, lighting color temperature/source, sound frequency/RT60/ambient bed where useful, and color/material anchors. If the user supplies reference images, videos, or audio, add explicit Jimeng @素材名 bindings and entry selection (首尾帧 or 全能参考) from references/seedance2_official_jimeng_rules.md; use references/seedance2_multimodal_reference_rules.md for the role taxonomy and conflict-resolution layer.
- Reply in chat with clickable paths to the saved full package,
director_detailed, and seedance_compact files plus a compact validation/score summary by default. Paste the full director_detailed prompt text in chat only when the user explicitly asks 直接贴完整提示词, 把完整提示词发出来, or similar.
- When full prompt text is explicitly requested in chat, use the detailed segment feed in plain readable text: a segment heading such as
S01 | 10s | 9:16, a standalone 通用约束栏 · 本 segment 共享 line, global constraint fields on separate lines, then one or more standalone 镜头 N lines with every shot field on its own line. Do not add Markdown decoration such as ##, -, or ** by default. A compact block such as S01 | 10s | 9:16 + one paragraph + 负向:..., or a compressed one-line block such as 通用约束栏:风格声明... / 镜头 1:时间码..., is forbidden unless the user explicitly asks for compact, quick test, or 正负提示词.
- Each saved or pasted prompt block must represent one independent Seedance model call. It may contain multiple internal shots, but the whole segment duration must stay 4-15 seconds. Internal shot
时间码 in the chat export must be segment-relative, starting from 0:00 inside each segment, not full-film absolute timecode. Before saving or pasting the detailed prompt export, self-check every segment uses plain readable line breaks: Sxx | duration | aspect_ratio, blank line, 通用约束栏 · 本 segment 共享, blank line, global lines such as 风格声明:..., blank line, 镜头 N, blank line, and shot lines such as 时间码:.... Required shot fields are 时间码/视角/Beat/叙述/对白/台词/机位/镜头/构图/运镜/画面动态/光影/声音/本镜NOT; if any are missing, absolute to the full episode instead of segment-relative, compressed into one line, or too vague to pass professional density QA, rewrite the chat output instead of delivering.
- Do not include
project_brief, script_diagnosis, beat_sheet, segment_plan, scene_snapshots, shot_cards, not_constraints, qa_report, validation logs, scoring notes, or process explanations as separate chat sections unless the user explicitly asks to see the full package in chat.
- Keep the final chat response short by default: the absolute paths or clickable links of the saved full package,
director_detailed prompt file, and seedance_compact prompt file, plus a compact validation/score summary. If the user says "只要路径" or "不要解释", omit validation/score text and keep only the saved path note.
- If no output path is provided, save the full package under
./prompt_outputs/. Use a readable filename such as <source-stem>_ep<episode>_prompt_package_<YYYYMMDD-HHMM>.md.
Default chat prompt variant is Chinese with stable professional lens/camera terms allowed where useful. If the user asks for language comparison or A/B testing, include the requested variants as separate copyable detailed segment blocks, but still keep planning and QA sections out of chat.
Dialogue Preservation Rule
Dialogue is P0 story information for short drama. When the source is a script or contains quoted speech, do not convert all dialogue into silent visual action. Extract the plot-critical lines, compress only filler, and carry them through beat_sheet, shot_cards, seedance2_prompts, and final chat output.
- Every shot card and every chat
镜头 N block must include a separate 对白/台词:... line after 叙述.
- If the source has dialogue, include the key spoken lines or faithful paraphrases with speakers, such as
林澈说:“银幕里的人是我。” 放映员压低声音:“可那是明天的素材。”
- If a segment is intentionally silent or source has no dialogue, write
对白/台词:无对白 or 对白/台词:无关键对白,仅保留呼吸/环境声.
- Keep
不要字幕 as a visual constraint by default, but do not let it remove spoken dialogue. Spoken dialogue, voice-over, and off-screen voice cues belong in 对白/台词 and 声音; only on-screen text/subtitles are forbidden unless requested.
Fast Path For Script Episodes
When the request names a local script file and an episode number, use this fast path unless the user asks for custom choices:
- Set UTF-8 stdio for the current command process before running helper scripts: PowerShell
$env:PYTHONUTF8='1'; $env:PYTHONIOENCODING='utf-8'. This prevents Chinese paths, dialogue, and emoji-like source filenames from corrupting stdout/stderr.
- Do not read the whole script if it is large. First run
scripts/prepare_episode_workspace.py <script> <episode> --status-to-stderr. This extracts the episode into prompt_outputs, creates last_workspace_manifest.json, and returns stable paths for episode_source, package_path, director_output, seedance_output, and finalize_summary. Treat the manifest as the source of truth; do not infer or invent a parallel video_prompts directory unless the user explicitly requests it.
- Read the extracted
episode_source file from the manifest, not the 100-episode source. Copy source_extract_path and source_extract_sha256 from the manifest into project_brief of the generated package. If shell stdout is hidden, truncated, or garbled, do not probe repeatedly; open prompt_outputs/last_workspace_manifest.json and then read small chunks of episode_source.
- Apply default assumptions without asking: professional multi-shot storyboard, Seedance 2.0, vertical 9:16, Chinese prompt, pure text generation/no reference images, live-action short-drama realism unless the source clearly says animation.
- Read only the references needed for the task. For ordinary episode-to-prompt generation,
workflow.md, output_schema.md, seedance2_rules.md, quality_rules.md, and cinematic_parameter_rules.md are enough. Load seedance2_official_jimeng_rules.md when the user supplies or asks about reference images/videos/audio, @图片/@视频/@音频, first/last frames, Jimeng UI operation, video extension, video editing, one-take continuity, music beat matching, or official platform limits. Load seedance2_multimodal_reference_rules.md when designing multi-asset role bindings or resolving asset conflicts; treat community-derived patterns as secondary unless confirmed by official docs or tests. Load continuation_retake_project_state.md when continuing adjacent segments/episodes, using accepted generated frames, reviewing real Seedance outputs, or planning retakes. Load cinematic_source_map.md when adding or challenging professional parameter rules, explaining why a numeric preset is reliable, or deciding whether a rule can become a hard QA gate. Load when shot continuity/camera quality needs help, and load only when explaining score quality.
Core Workflow
Follow this sequence every time unless the user explicitly asks for only one section:
- Intake the script, story idea, or brief.
- Run a pre-generation choice gate. If delivery depth, shot density, style/medium, reference image use, target use, runtime/segment count, or aspect ratio are unspecified and could materially change the output, ask concise follow-up questions before generating the full package. Include recommended defaults and concrete options; group related choices when useful instead of omitting important decisions. Do not silently choose the fast/single-shot path for a full script or episode unless the user has asked for speed, compact output, or no questions.
- Offer 1-3 creative directions when the brief leaves meaningful style, genre, audience, or ending choices open.
- Split the selected direction into Seedance 2.0-compatible video-generation segments. Each segment is one prompt/model call and must be 4-15 seconds; internal sub-shots inside that segment can be shorter.
- Build scene snapshots for each segment: characters, locations, props, light, sound, continuity, and spatial rules.
- Generate shot cards and Seedance 2.0 prompts with concrete visual, motion, camera, sound, and NOT constraints. For the detailed director prompt, apply
cinematic_parameter_rules.md: do not leave camera, lens, composition, lighting, sound, or material fields at generic phrases such as 中景, 自然光, or 环境声; expand them into professional parameters appropriate to the scene. Choose one purposeful primary movement per shot, such as push-in, pull-back, pan, truck, follow, orbit, or crane, and add stabilizers so motion stays story-driven without identity drift. When using Jimeng reference assets, explicitly map each @素材名 to role, subject ID, timing, and entry path from seedance2_official_jimeng_rules.md; use seedance2_multimodal_reference_rules.md to state what not to copy from broad video/style references.
- Run QA. P0 issues must be fixed before final delivery; P1 issues need fixes or explicit notes; P2 issues are optional improvements.
- Assemble clean
seedance2_prompts separately from internal planning sections, save the full package to disk, save both director_detailed and seedance_compact prompt exports, and return concise links/paths plus validation status by default.
Prompt Language Policy
For Chinese short-drama production, default to Chinese Seedance prompts. When the output will be used for model comparison, generate three prompt variants per segment:
prompt_zh_pure: pure Chinese, no English camera terms.
prompt_en: pure English for overseas or baseline comparison.
prompt_zh_camera_terms: Chinese main prompt with a small number of stable English camera terms in parentheses, such as slow dolly in, over-the-shoulder, shallow depth of field.
Keep each actual generation prompt internally consistent. Do not mix long Chinese and English sentences in the same prompt unless producing prompt_zh_camera_terms.
Prompt length policy: treat BytePlus official API guidance as the evidence-backed ceiling: recommended prompt length under 1000 English words. Treat the third-party Seedance2.so claim (<=500 Chinese characters or <=1000 English words) as a non-official reference only. For production, use conservative soft limits: Chinese prompts should be about 300-500 Chinese characters; English prompts should usually be 60-200 English words and should not approach 1000 words unless the scene truly requires it.
Full Package Required Outputs
Always include these top-level sections in the saved full package file:
project_brief
script_diagnosis
beat_sheet
segment_plan
scene_snapshots
shot_cards
seedance2_prompts
not_constraints
qa_report
Use Markdown by default. If the caller asks for machine-readable output, use JSON with the same section names.
Do not paste the full package into chat by default. The chat answer is a concise delivery surface for saved direct-to-model prompt files unless the user explicitly asks for the full prompt text.
Mandatory Seedance 2.0 Rule
Each independent video-generation unit, meaning one Seedance 2.0 prompt/model call, must be between 4 and 15 seconds. Sub-shots, reaction inserts, cuts, or timed action moments inside that generation unit may be shorter; they are not individually constrained unless they are exported as separate model calls.
Before finalizing, check the timeline manually and, when working on files, run scripts/validate_timeline.py on the output draft. Also keep internal process text out of seedance2_prompts; if a source resembles an agent log, extract only the final shot-card material before prompt assembly.
Load References As Needed
- Read
references/workflow.md before creating a full prompt package.
- Read
references/output_schema.md when deciding final section names, shot-card fields, or JSON shape.
- Read
references/seedance2_rules.md before segmenting timelines or writing Seedance prompts.
- Read
references/seedance2_official_jimeng_rules.md when using Jimeng multimodal reference assets, official platform limits, @素材名 bindings, first/last frame workflows, video extension, video editing, music beat matching, or real-face upload compliance.
- Read
references/seedance2_multimodal_reference_rules.md when using multi-asset references, open-source/community multimodal binding ideas, role taxonomies, or asset conflict-resolution patterns. Treat it as secondary guidance, not hard official policy.
- Read
references/quality_rules.md before QA or when a draft needs repair.
- Read
references/continuation_retake_project_state.md when generating consecutive segments/episodes, continuing from accepted frames, recording real Seedance test outcomes, or preparing retake patches.
- Read
references/cinematic_parameter_rules.md before generating or repairing director_detailed output, especially when the user asks for professional director/camera/lighting/sound quality.
- Read
references/cinematic_source_map.md before adding new cinematic rules, citing parameter reliability, or promoting a heuristic/needs-test rule into a hard QA requirement.
- Read
references/segmind_seedance_wrapper.md when the downstream target is Segmind API, when generating API payload JSON, or when validating Segmind-specific duration/resolution/reference/audio/seed fields.
- Read
references/directing_rules.md when adapting process logs, improving shot quality, checking continuity, or deciding what can be copied into the video model prompt.
- Read
references/scoring_rubric.md when the user asks how to judge prompt quality, compare outputs, prepare a manual test, or decide whether a package is ready to spend video-generation budget.
Subagent Policy
Treat workflow labels such as Script Diagnosis Agent, Scene Planning Agent, and QA Agent as process roles by default. This skill does not require real concurrent subagents for MVP work. Use real subagents only in host environments that support them, mainly for independent QA, continuity review, or batch prompt production; deterministic validators remain the first quality gate.
Helper Scripts
scripts/validate_timeline.py <file> validates independent video-generation segment durations and total timeline parsing.
scripts/validate_output.py <file> validates required package sections, shot-card/prompt/QA field coverage, and whether seedance2_prompts accidentally contains internal agent logs or QA text.
scripts/score_prompt_package.py <file> gives a deterministic 100-point pre-generation score based on Seedance compatibility, structure, prompt cleanliness, beat fidelity, visual specificity, camera control, continuity, style/sound, NOT constraints, and generation readiness.
scripts/export_chat_prompts.py <full-package-file> exports copyable direct-to-model segment feeds from the saved full package; default --style detailed uses 通用约束栏 plus 镜头 N cards and normalizes internal shot timecodes to segment-relative values. Use --style compact for the shorter Seedance feed prompt file.
scripts/validate_chat_export.py <chat-export-file> rejects default chat output that falls back to compact positive/negative prompt blocks, omits required detailed segment-feed fields, or uses full-episode absolute shot timecodes instead of segment-relative shot timecodes.
scripts/validate_cinematic_density.py <director-detailed-file> checks whether the detailed director export contains professional camera/lens/aperture/composition/lighting/sound/color-material density. It defaults to failing P1 and above.
scripts/validate_reference_bindings.py <full-package-or-chat-file> checks Jimeng multimodal @图片/@视频/@音频 references, official file-count metadata when present, 首尾帧/全能参考 entry choice, asset role clarity, real-face upload risk notes, and video-extension duration alignment.
scripts/validate_project_state.py <full-package-file> checks continuation/retake hygiene: missing project_state, retake without keep/fix/avoid diagnosis, and direct prompts overloaded with state internals.
scripts/validate_source_freshness.py <full-package-file> checks source_extract_path, source_extract_sha256, and explicit reuse_mode/reuse_source_package metadata so old packages cannot be silently reused as fresh generation.
scripts/validate_segmind_payload.py <payload.json> validates Segmind Seedance 2.0 wrapper JSON payloads when the user asks for API export: 4-15 second duration, resolution, bitrate mode, aspect ratio, reference asset limits, first/last-frame constraints, booleans, and seed range.
Run finalize_package.py after saving a generated full package. If using individual scripts instead, run validate_timeline.py, validate_output.py, score_prompt_package.py, export_chat_prompts.py --style detailed, export_chat_prompts.py --style compact, validate_chat_export.py, validate_cinematic_density.py, validate_source_freshness.py, validate_reference_bindings.py when the package contains Jimeng reference assets, and validate_project_state.py when the package continues prior segments or plans retakes. After saving the full package, include paths to the full package and both saved prompt exports. Treat 90+ as ready for production testing, 80-89 as usable after minor fixes, 70-79 as revise before spending generation budget, and below 70 as not ready.
Explicit Non-Goals For Version 1
- Do not call video generation APIs.
- Do not create web UI, dubbing, subtitles, editing, or final compositing.
- Do not adapt prompts to multiple video models unless asked; default to Seedance 2.0. Multiple prompt languages for Seedance 2.0 are allowed when requested for A/B testing.
- Do not promise one-click finished videos. Deliver a professional prompt package for downstream generation.