Vox Video Style Production
Turn locked narration into a complete, internally consistent production pack. Preserve the narration exactly. Plan visuals, timing, image generation, and image-to-video motion without generating media.
Load the rules
Read these files before producing the pack:
- styles.yaml as the single source of truth for style selection, the default style, Jimeng style prompts, Google Omni motion prompts, and style-specific negative prompts.
- timing-and-storyboard.md for duration estimates, beat splitting, continuity, and factual restraint.
- visual-dna.md for style-neutral composition, recurring-subject rules, labels, and motion constraints.
- output-contract.md for required artifacts, fields, prompt assembly, and final checks.
Read user-guide.zh-CN.md or user-guide.en.md only when the user asks how to invoke, configure, customize, troubleshoot, or distribute this skill.
Never hardcode, paraphrase, or maintain a second copy of any style prompt outside config/styles.yaml.
Defaults
Apply these defaults unless the user explicitly overrides them:
- Input: finalized narration, not a topic, outline, or draft.
- Platform: Douyin.
- Duration boundary: under 3 minutes.
- Canvas: 16:9 landscape, 1920 x 1080 planning resolution.
- Visual style: the style referenced by default_style in config/styles.yaml.
- Image target: Jimeng.
- Image-to-video target: Google Omni.
- Generated source clip: 10 seconds per image; the edit may use only the shot's planned timeline duration.
- Camera: locked unless the selected style's motion configuration explicitly calls for a restrained fixed-frame treatment.
- Output language: match the user's language. Keep prompts in detailed Chinese by default.
Workflow
1. Validate the narration
Treat the supplied narration as locked copy. Do not rewrite, shorten, embellish, fact-correct, reorder, or add voiceover words unless the user separately asks for copy editing.
Estimate runtime. Label it as an estimate when no audio or word-level timestamps are available. If the estimate exceeds 180 seconds, report the excess before generating the full pack and ask whether to keep the full script or return for trimming. Never silently remove narration.
2. Resolve one visual style
Load config/styles.yaml. Match an explicit user choice against the numeric key, id, name_zh, or aliases. Select exactly one style.
If the user gives no style, use default_style and state the selected number and name in the production summary. If the value is invalid or ambiguous, display the eight numbered name_zh values in config order and ask one concise selection question. Do not blend styles unless a future config explicitly enables that behavior.
Use the selected style record for the whole video. Copy image_prompt_zh into every Jimeng prompt, video_motion_prompt_zh into every Google Omni prompt, and negative_prompt_zh into both where applicable. Never substitute motifs from an unselected style.
3. Build the continuity lock
Extract recurring people, objects, locations, documents, vehicles, dates, maps, and color signals. Assign each recurring subject one reusable description. Copy that wording unchanged into every prompt where the subject recurs.
Distinguish confirmed facts from visual inference. Never invent a face, uniform, weapon, document wording, date, number, or location detail and present it as factual. For unidentified or sensitive real people, prefer rear view, silhouette, cropped hands, obscuration, or a censor treatment compatible with the selected style.
4. Split the narration into beats
Split at sentence or natural clause boundaries. Give each beat one visual idea and normally 2.0 to 3.2 seconds of narration, matching the target range in timing-and-storyboard.md. Preserve every narration character and keep the original order.
Compute cumulative estimated timecodes using timing-and-storyboard.md. Do not create gaps or overlaps. Make the final end time equal the total estimate.
5. Direct each shot
Convert the core idea of each beat into one strong documentary visual. Do not illustrate every noun. Select one hero element at roughly 70 percent of visual weight, no more than three supporting elements, and generous negative space.
Choose a style-neutral composition grammar from visual-dna.md. Avoid using the same grammar for more than two consecutive beats. Express every grammar through the selected style only.
6. Write the Jimeng prompts
Write one complete, standalone Jimeng prompt per beat. Include the scene, locked recurring-subject wording, composition, camera framing, label allowance, the selected image_prompt_zh verbatim, aspect ratio, quality target, and selected negative_prompt_zh. Never refer to another prompt or say "same style as above".
Permit no text by default. Allow one 1-to-4-word label only when a name, date, location, or number is narratively essential. Spell the exact permitted label inside the prompt.
7. Write the Google Omni prompts
Write one complete, standalone image-to-video prompt per beat. Treat the supplied Jimeng image as the finished reference composition. Preserve identities, labels, framing, scale, colors, layer order, and object count.
Include the selected video_motion_prompt_zh verbatim, then add shot-specific choreography, opening state, reveal order, final hold, camera lock, ambient sound, and selected negative_prompt_zh. Keep narration and music out of generated clips.
8. Deliver and audit
Follow output-contract.md. For short results, return the whole pack in the response. For long results, create the three required files in a writable workspace and link them. Do not truncate prompts, replace them with examples, or omit later shots.
Run the mechanical half of the audit with the bundled checker, which needs only Python 3.10 or newer and no third-party packages:
python scripts/check_pack.py --storyboard <topic>-storyboard.md --jimeng <topic>-jimeng-prompts.txt --omni <topic>-google-omni-prompts.md --narration <narration file> --style <selected style>
It prints one JSON object and exits non-zero when anything fails, naming the offending shot numbers. It verifies the style resolves to exactly one record, the timeline is contiguous from zero, the narration survives verbatim and in order, one Jimeng and one Omni prompt exist per shot, every prompt carries the selected image_prompt_zh / video_motion_prompt_zh / negative_prompt_zh, no unselected style's prompt leaked in, no prompt refers to another, every Jimeng prompt states 16:9, and no em dash appears anywhere. Fix what it reports and re-run before delivering; when the pack is returned in the response rather than as files, write the three artifacts to a temporary location and check them there.
The checker measures; it does not judge. Confirm the remaining contract items yourself:
- Every prompt contains the selected config blocks and no unselected style motifs.
- Recurring subjects use identical locked wording.
- No prompt requests gore, victim suffering close-ups, logos, watermarks, or unapproved text.
Scope boundaries
Do not generate video ideas, rewrite the narration, synthesize voiceover, create thumbnails, generate images, or render video unless the user explicitly expands the request. This skill's default deliverable is the production plan and prompt pack only.