Purpose
Organize a topic, story, product material, or knowledge point into a video script that can be reviewed, used for image generation, voiceover, and compositing. This Skill handles planning and handoff; it does not replace image generation, video compositing, or official account publishing tools.
Trigger Scenarios
- Need to generate a short video, story video, knowledge video, product introduction, or talking-head video script.
- Need to break long text into shots and prepare visual prompts, narration, and subtitles for each shot.
- Need to hand off the script to
story-to-scenes、image-service、video-creatororwechat-publisherfor further processing. - Need to batch-generate script versions for different platforms, durations, or styles.
This Skill is not triggered by standalone image generation, video compositing, subtitle burning, or official account publishing requests; these requests are handed off to the corresponding sibling Skills.
Security Boundaries
- Only plan and organize content; by default, do not call external services, do not publish, and do not write credentials.
- Use only relative paths and placeholders, for example
projects/{project_id}/scenes/scene-01.png。 - Do not write personal names, personal paths, internal brands, private configurations, Tokens, Cookies, AppSecret, or fixed absolute paths.
- Do not modify files in
story-to-scenes、image-service、video-creator、wechat-publisher; handoff is completed only through agreed fields and relative artifact paths. - Without explicit confirmation, output only drafts and items pending confirmation; do not perform image generation, compositing, or publishing.
Input Contract
First collect the fields in the table below. When non-critical fields are missing, use default values and record the default values in the result; when the topic, purpose, or duration is missing, first ask one minimal clarifying question.
| Field | Required | Default Value or Constraint |
|---|---|---|
topic |
Yes | Topic, story, product, or knowledge point |
purpose |
Yes | Resonance, popular science, conversion, brand awareness, or another goal |
audience |
No | 普通观众 |
platform |
No | 通用视频; short video platforms usually use vertical orientation |
duration_sec |
Yes | Recommended 15–180 seconds; if not provided, ask, do not guess arbitrarily |
aspect_ratio |
No | General default 16:9; when the short video platform is specified, use 9:16 |
style |
No | 清晰、节奏紧凑、视觉统一 |
source_material |
No | Public text, key points, product material, or story outline |
cta |
No | None; add a call to action only when there is indeed a goal |
constraints |
No | Sensitive words, copyright, brand terminology, prohibited visual elements, etc. |
Standard Output Contract
Each delivery generates a human-readable script and, as needed, structured handoff data. The recommended script delivery package is as follows:
projects/{project_id}/
├── script.md # 审阅版脚本,必需
├── script.yaml # 结构化脚本,需下游自动化时提供
├── prompts/ # 每个镜头的中文提示词,可选
│ ├── scene-01.txt
│ └── scene-02.txt
└── handoff/ # 下游交接清单,可选
├── scene-manifest.yaml
├── image-manifest.yaml
├── narration-plan.yaml
└── wechat-article.md
Project-Level Fields
schema_version: "1.0"
project:
id: "{project_id}"
title: "{title}"
topic: "{topic}"
purpose: "{purpose}"
audience: "{audience}"
platform: "{platform}"
duration_sec: 30
aspect_ratio: "16:9"
style: "{style}"
cta: "{cta_or_empty}"
status: draft
global_visual:
style_prefix_zh: "{全片统一风格前缀}"
palette: "{色彩基调}"
continuity_rules:
- "{角色、道具、场景或镜头连续性规则}"
negative_prompt_zh: "无水印、无随机文字、无多格拼接"
scenes: []
Shot-Level Fields
Each shot must fill in at least the following fields; before TTS is completed, timecodes can only be marked as estimates:
- id: "scene-01"
title: "{镜头标题}"
purpose: "hook"
timecode:
start_sec_estimate: 0
end_sec_estimate: 4
duration_sec_estimate: 4
final_duration_sec: null
duration_source: "pending_tts"
visual:
description_zh: "主体、动作、环境、细节、构图和光线"
shot_type: "特写"
camera_motion: "缓慢推进"
prompt_zh: "{可直接交给图像 Skill 的中文提示词}"
negative_prompt_zh: "{中文排除词}"
reference_assets: []
output_path: "projects/{project_id}/scenes/scene-01.png"
audio:
narration: "{旁白}"
subtitle: "{屏幕字幕}"
emotion: "{语气和情绪}"
sound_design: "{环境声或音效;没有则留空}"
continuity:
characters: []
locations: []
props: []
handoff:
story_to_scenes: false
image_service: true
video_creator: true
wechat_publisher: false
Hard requirement: the video-creator finally handed off to final_duration_sec must come from the narration.json timestamps generated by TTS; the use of estimates, even distribution, or duration: auto。
Standard Workflow
1. Parse Requirements
Extract the topic, purpose, audience, platform, duration, aspect ratio, style, material, and call to action. List uncertain items as "pending confirmation"; do not write guesses as facts.
2. Design Content Structure
Choose the structure according to the video purpose:
- Conversion type: problem hook → product or solution → evidence → call to action.
- Story type: setup → conflict → turning point → result or lingering impression.
- Popular science type: counterintuitive hook → core explanation → example → conclusion.
- Voiceover type: one-sentence conclusion → three key points → one-sentence wrap-up.
Label each shot with purpose, to avoid having only visual descriptions without narrative function.
3. Break down shots
Cut shots based on semantic changes, action changes, information points, and rhythm, not by mechanically averaging word counts. Each shot must simultaneously specify:
- The visual subject and action;
- Environment, time, lighting, and color;
- Shot size, composition, and camera movement;
- Voiceover, subtitles, and emotion;
- Continuity of characters, props, and locations;
- Chinese image generation prompt, negative words, and relative output path.
Prioritize keeping the style prefix, aspect ratio, color, and character descriptions consistent within the same project. On-screen text is added only when the script explicitly requires it; by default, exclude watermarks, random letters, garbled text, and multi-panel collages.
4. Write voiceover and subtitles
- Use colloquial short sentences for voiceover; ensure information completeness first, then compress the rhythm.
- Subtitles and voiceover must remain semantically consistent; a single subtitle carries only one information point.
- Do not write unconfirmed facts, prices, effects, or promises as definite conclusions.
- Split the voiceover into sentence segments that can be returned by TTS with timestamps, and in
narration-plan.yamlkeep the mapping between sentence segments and shots.
5. Perform pre-handoff checks
Complete the following checks before outputting the handoff package:
- All shots have a unique
id, numbering is continuous, and the order matches the script. - The sum of duration estimates matches the target duration; the final duration is still marked as
pending_tts。 - Each
prompt_zhspecifies the subject, action, environment, details, style, and color. - All visuals use the same aspect ratio; when reference images exist, record their relative paths.
- Voiceover, subtitles, visuals, and sound effects do not contradict each other.
- All output paths are relative paths or placeholders.
- Remove personal information, internal information, credentials, and private configurations.
Handoff contract with existing Skills
This Skill only provides content and fields; it does not copy or modify downstream Skills. Choose one or more handoff paths from the table below according to requirements.
| Downstream Skill | Trigger condition | Minimum input to it | Result it is responsible for | Boundary of this Skill |
|---|---|---|---|---|
story-to-scenes |
The input is a story, course, picture book, or long text, and character and scene consistency is required | scene-manifest.yaml: characters, locations, scene descriptions, shot types, style prefix, aspect ratio |
Character templates, scene images, and image set index | Does not replace character locking, scene image generation, or resumable processing |
image-service |
Need to generate or edit shot visuals | image-manifest.yaml:prompt_zh, negative words, aspect ratio, reference image relative paths, output relative paths |
Images or edited images | Does not read private configurations and does not directly call image APIs |
video-creator |
Voiceover is confirmed and TTS, subtitles, and video composition are needed | narration-plan.yaml, image list, aspect ratio, BGM/ending preferences |
narration.mp3、narration.json, subtitles, validated configuration, and video |
Do not falsify the final duration; after TTS, timestamps must be backfilled and pass alignment validation |
wechat-publisher |
Explicitly require converting the script into a WeChat Official Account draft or publishing material | wechat-article.md: title, summary, body, relative image paths, public link |
Layout preview or WeChat Official Account draft | Do not inject credentials at the script stage, and do not publish by default |
story-to-scenes Handoff fields
project_id: "{project_id}"
source_type: story
aspect_ratio: "16:9"
style_prefix_zh: "{统一风格}"
characters:
- id: "character-01"
name: "{角色名}"
description_zh: "{可复用外貌描述}"
locations:
- id: "location-01"
name: "{地点名}"
description_zh: "{环境描述}"
scenes:
- id: "scene-01"
description_zh: "{场景动作和叙事目的}"
shot_type: "中景"
mood: "{情绪}"
image-service Handoff fields
project_id: "{project_id}"
aspect_ratio: "16:9"
style_prefix_zh: "{统一风格}"
items:
- scene_id: "scene-01"
mode: text_to_image
prompt_zh: "{中文提示词}"
negative_prompt_zh: "{中文排除词}"
reference_assets: []
output_path: "projects/{project_id}/scenes/scene-01.png"
video-creator Handoff fields
project_id: "{project_id}"
aspect_ratio: "16:9"
narration:
text: "{完整旁白}"
segments:
- id: "narration-01"
scene_ids: ["scene-01"]
text: "{句段旁白}"
images:
- scene_id: "scene-01"
file: "projects/{project_id}/scenes/scene-01.png"
duration_source: "narration.json"
final_duration_sec: null
subtitles_path: "projects/{project_id}/subtitles.srt"
video_config_path: "projects/{project_id}/video_config.yaml"
After TTS is complete, map narration.json 's sentence segment start and end times back to scene_ids, calculate the final duration of each image, run downstream alignment validation, and only then allow composition.
wechat-publisher Handoff fields
Generate only when explicitly required:
---
title: {公开标题}
cover: ./assets/cover.jpg
---
# {公开标题}
> {一句话摘要}
## 视频看点
{从脚本整理出的公开内容}

## 观看与行动
{公开链接或行动号召}
Cover images and illustrations must use relative paths; before draft submission, wechat-publisher completes content, safety, and permission checks.
Quality checklist
Content
- The opening raises a clear question, conflict, or benefit at the target platform's first pacing point.
- Every shot advances information, emotion, or action; remove empty shots with no function.
- The ending is consistent with
purpose; when there is no CTA, do not force one in.
Visuals
- The same project uses a unified aspect ratio, style prefix, color, and character description.
- Prompts include subject, action, environment, details, style, and color.
- By default, exclude watermarks, random text, garbled text, multi-panel collages, and irrelevant people.
- For story-based projects, first hand off to
story-to-scenesfor character/scene consistency, then hand off toimage-serviceto generate the specific visuals.
Audio-visual
- Narration sentence segments can be clearly segmented by TTS.
- Subtitles are semantically consistent with the narration and readable in length.
-
final_duration_secis empty before TTS, and after TTS comes fromnarration.json。 - Before video composition,
video-creator's audio-visual alignment validation has already been run.
Desensitization and delivery
- Contains no personal names, personal paths, internal brands, private configurations, or credentials.
- All resource paths are relative paths or placeholders.
- Generate
wechat-article.mdonly when explicitly required, and do not submit or publish by default.
Reusable resources
templates/video-script.md: a standard Chinese script template, including project fields, shot fields, and handoff fields.examples/product-launch.md: a desensitized 30-second product introduction example, used to check whether the fields are complete.