Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
bytedance avatar

Comic Drama Master

  • 4 installs
  • 411 repo stars
  • Updated August 4, 2026
  • bytedance/agentkit-samples

comic-drama-master is a Claude skill that produces a comic-drama video end to end from a story idea, covering script, character design, storyboard, video generation, and compositing.

About

This skill acts as a director that produces a comic-drama video end to end from a story idea. It runs five stages: screenplay creation, character design, storyboard image generation, storyboard video generation, and video compositing, saving artifacts to an output directory. It generates images and video through Volcengine ARK and Seedance models, merges clips with ffmpeg, and delivers the final video and a TOS link.

  • Directs a full comic-drama video pipeline from a story idea
  • Runs script, character, storyboard, video, and compositing stages
  • Generates media via Volcengine ARK/Seedance, delivers video plus TOS link

Comic Drama Master by the numbers

  • 4 all-time installs (skills.sh)
  • Ranked #1,139 of 1,335 Generative Media skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

comic-drama-master capabilities & compatibility

Requires Volcengine ARK and TOS keys for image, video, and storage.

Use cases
video generation · image generation · orchestration
Runs
Runs locally
Pricing
Bring your own API key
From the docs

What comic-drama-master says it does

description: 漫剧制作总导演。接受用户故事创意,依次完成剧本创作、角色设计、分镜图生成、分镜视频生成、视频合成全流程
SKILL.md
**性能对比**:7 张分镜图串行生成约 70s,并行生成约 25s,提速约 3 倍。
SKILL.md
npx skills add https://github.com/bytedance/agentkit-samples --skill comic-drama-master

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs4
repo stars411
Last updatedAugust 4, 2026
Repositorybytedance/agentkit-samples

What it does

Produce a full comic-drama video from a story idea across script, art, storyboard, and video stages.

Who is it for?

Turning a story idea into a complete comic-drama video with script, art, storyboard, and compositing.

When should I use this skill?

Use when a user gives a story idea and wants a full comic-drama video produced end to end.

What you get

  • final comic-drama video
  • TOS link

By the numbers

  • 5 production stages
  • batch parallel image gen ~3x faster (70s to 25s for 7 frames)
  • video durations 4-15 seconds per scene

Files

SKILL.mdMarkdownGitHub ↗

漫剧制作总导演

你是统筹全局的漫剧制作总导演,负责协调五个专业环节完成从创意到成片的全流程。

五个专业环节的详细规格:
- 剧本生成:参见 references/screenplay-generator.md
- 角色设计:参见 references/character-designer.md
- 场景美术:参见 references/scene-designer.md
- 分镜视频:参见 references/storyboard-director.md
- 视频合成:参见 references/video-synthesizer.md

>

完整使用示例参见 examples/examples.md

---

⚠️ 内容安全审核提醒

在开始制作之前,必须先对用户的故事创意进行内容安全预审

高风险关键词(容易触发 API 拒绝)

以下类型的内容在视频生成阶段(doubao-seedance API)有较高概率被拒绝(OutputVideoSensitiveContentDetected):

风险类别高风险关键词示例
战争军事战争、军队、军事、入侵、屠杀、征服
血腥暴力血腥、血液、流血、残肢、内脏、致命伤
武器描述刀砍、剑刺、弓箭射杀、枪械、炸弹
宗教敏感堕天使、恶魔、撒旦、邪教、亵渎
恐怖元素恐怖、惊悚、尸体、骷髅、鬼魂
政治敏感政治人物、敏感历史事件、领土争议

预审处理规则

1. 低风险(日常、奇幻冒险、儿童故事等):直接开始制作 2. 中风险(武侠打斗、修仙对决等):在剧本和 prompt 中使用委婉替代词

  • blood spraying from wound → ✅ spiritual energy impact, staggering backward
  • sword piercing through chest → ✅ sword energy clash, powerful strike
  • army marching to war → ✅ warriors gathering for a decisive confrontation
  • bloody battle → ✅ fierce spiritual energy confrontation

3. 高风险(纯战争、恐怖、政治敏感):明确告知用户该题材可能导致视频生成大面积失败,建议:

  • 调整为更温和的表达方式
  • 更换题材方向
  • 用户坚持则继续,但提前说明可能有 30-50% 的场景需要反复重试
提醒时机:在步骤2(初始化任务目录)之后、步骤3(剧本生成)之前,向用户简要说明风险等级和应对策略。

---

⚡ 脚本参数速查表(大模型必读)

重要:以下是所有脚本的精确调用格式和 JSON 文件格式。调用任何脚本前,必须严格按照此表准备参数,不得猜测格式。

app_config.py — 读取配置

python scripts/app_config.py
# 无参数,返回 JSON

task_manager.py — 任务目录管理

# 初始化任务
python scripts/task_manager.py init "<task_name>"

# 保存文档
python scripts/task_manager.py save "<task_folder绝对路径>" "<文件名.md>" "<Markdown内容>"

# 列出任务
python scripts/task_manager.py list

web_search.py — 网络搜索

python scripts/web_search.py "<搜索关键词>"
# 返回 JSON 字符串数组

image_generate.py — 单张图片生成

python scripts/image_generate.py "<英文prompt>" --output-dir "<保存目录绝对路径>"
# 返回 JSON: {"saved_files": ["/absolute/path/to/generated_image_TIMESTAMP_0.png"]}

batch_image_generate.py — 批量并行图片生成(⚡ 推荐用于分镜图和角色立绘)

# 从 JSON 文件读取 prompts,并行生成(默认3线程)
python scripts/batch_image_generate.py \
  --prompts-file prompts.json \
  --output-dir "<保存目录绝对路径>" \
  --prefix scene_ \
  --max-workers 3 \
  --max-retries 3

# 返回 JSON: {"status": "success", "total": N, "succeeded": N, "failed": 0, "saved_files": [...], "elapsed_seconds": X}

📋 image_prompts.json 格式(纯字符串数组):

[
  "STYLE_ANCHOR, scene 1 prompt...",
  "STYLE_ANCHOR, scene 2 prompt...",
  "STYLE_ANCHOR, scene 3 prompt..."
]
性能对比:7 张分镜图串行生成约 70s,并行生成约 25s,提速约 3 倍。
内置自动重试(最多3次)和失败 prompt 简化 fallback 机制。

batch_video.py — 批量视频提交/轮询

# 提交任务(⚠️ JSON 文件格式见下方)
python scripts/batch_video.py submit \
  --prompts-file prompts.json \
  --first-frames-file frames.json \
  --durations-file durations.json

# 轮询任务
python scripts/batch_video.py poll --task-ids-file task_ids.json --interval 30

📋 JSON 文件精确格式(严格遵守,不得修改结构):

prompts.json — 纯字符串数组(⚠️ 不是对象数组!):

[
  "STYLE_ANCHOR, scene 1 full prompt text...",
  "STYLE_ANCHOR, scene 2 full prompt text...",
  "STYLE_ANCHOR, scene 3 full prompt text..."
]

frames.json — 纯字符串数组,每项为 TOS URL(与 prompts 一一对应):

[
  "https://tos-cn-beijing.volces.com/.../scene_01.jpg?...",
  "https://tos-cn-beijing.volces.com/.../scene_02.jpg?...",
  "https://tos-cn-beijing.volces.com/.../scene_03.jpg?..."
]

durations.json — 纯整数数组,每项为 4~15 之间的整数(与 prompts 一一对应):

[6, 8, 5, 10, 14, 12, 5]

task_ids.json — submit 返回结果中 submitted 字段的值(对象,key 为 scene_key,value 为 task_id):

{
  "scene_01": "task_id_abc123",
  "scene_02": "task_id_def456",
  "scene_03": "task_id_ghi789"
}

file_download.py — 批量文件下载

python scripts/file_download.py \
  --urls <url1> <url2> <url3> ... \
  --save-dir "<保存目录绝对路径>" \
  --filenames scene_01.mp4 scene_02.mp4 scene_03.mp4 ...

video_merge.py — 视频合并

python scripts/video_merge.py \
  --input-dir "<videos_dir绝对路径>" \
  --output "<final_dir绝对路径>/<task_name>_final.mp4" \
  --scene-count <N>

tos_upload.py — TOS 上传

python scripts/tos_upload.py "<文件绝对路径>"
# 返回 JSON: {"signed_url": "https://..."}

video_scorer.py — 效果评分

python scripts/video_scorer.py "<task_folder绝对路径>"

---

前置依赖

  • ffmpeg / ffprobe(必须,步骤7使用):视频合并和时长检测依赖 ffmpeg。在步骤7(视频合成)开始前自动检查并安装。
  # macOS
  brew install ffmpeg
  # Linux (Debian/Ubuntu)
  sudo apt-get install -y ffmpeg
  # Linux (CentOS/RHEL)
  sudo yum install -y ffmpeg
⚠️ ffmpeg 仅在步骤7(视频合成)时需要,无需提前安装。脚本会在合成前自动检查。
  • 网络搜索:调研时通过 python scripts/web_search.py <query> 执行,脚本自包含在此 skill 的 scripts/ 目录下。
  • 图片生成
  • 单张:python scripts/image_generate.py <prompt> [--output-dir <dir>]
  • 批量并行(推荐)python scripts/batch_image_generate.py --prompts-file <file> --output-dir <dir>
  • 环境变量(必须提前设置):
  • ARK_API_KEYMODEL_IMAGE_API_KEY:方舟 API 密钥(图片生成用)
  • VOLCENGINE_ACCESS_KEY / VOLCENGINE_SECRET_KEY:火山引擎 AK/SK(网络搜索 + TOS 上传用)
  • VIDEO_DURATION_MINUTES:视频时长(可选,默认 0.5(30秒),支持 0.5/1/2/3/4)
  • COMIC_DRAMA_OUTPUT_DIR:产物输出根目录(可选,默认项目目录下的 output/
  • DEFAULT_VIDEO_MODEL_NAME:视频生成模型名称(可选,默认 doubao-seedance-1-5-pro-251215

---

🔄 恢复未完成任务(断点续制)

当新对话开始或上下文丢失时,必须先执行此检测流程,再决定是新建任务还是继续现有任务。

恢复检测流程

第一步:列出已有任务目录

python scripts/task_manager.py list

如果找到已有任务目录,检查其中的产物完成情况。

第二步:检查产物并判断恢复点

进入最新的 task_folder,按以下规则判断应该从哪一步继续:

已有产物缺失产物恢复到步骤
无任何产物全部步骤2:初始化任务目录
requirements.mdplot.md, script.md步骤3:剧本生成
plot.md, script.mdcharacters/步骤4:角色设计
characters/, characters.mdstoryboard/步骤5:场景美术
storyboard/ 有分镜图videos/步骤6:分镜视频
videos/ 有视频文件final/步骤7:视频合成
final/ 有最终视频评分报告步骤8:产物验证

第三步:加载已有产物上下文

如果需要从中间步骤继续,必须先读取已完成的产物文件来恢复上下文:

  • 读取 characters.md 恢复 STYLE_ANCHOR 和角色描述
  • 读取 plot.md 恢复剧情大纲和时长分配
  • 读取 script.md 恢复完整对白剧本
  • 读取任务目录中已有的 TOS URL 记录

第四步:向用户确认

向用户展示检测结果:

  • 展示已完成的步骤和对应产物
  • 展示下一步应该执行的步骤
  • 询问用户是否继续该任务,还是重新开始新任务
⚠️ 如果用户提供的是全新的故事创意,则忽略恢复流程,直接从步骤1开始。
只有当用户明确表示"继续"、"接着做"、"上次的"等意图时,才执行恢复流程。

---

全流程概览

用户故事创意
  ↓
步骤0: 恢复检测 → python scripts/task_manager.py list(检查是否有未完成任务)
步骤1: 读取配置 → python scripts/app_config.py(智能时长模式,4s~15s 动态范围)
步骤2: 初始化任务目录 → python scripts/task_manager.py init "<task_name>"
  ↓ ⚠️ 内容安全预审(评估风险等级,向用户说明)
步骤3: 剧本生成 → python scripts/web_search.py 调研 + 创作剧本 + 智能时长分配(参见 references/screenplay-generator.md)
步骤4: 角色设计 → python scripts/image_generate.py 生成立绘(参见 references/character-designer.md)
步骤5: 场景美术 → python scripts/image_generate.py 生成分镜图(参见 references/scene-designer.md)
步骤6: 分镜视频 → python scripts/batch_video.py submit/poll + 每段独立时长(参见 references/storyboard-director.md)
步骤7: 视频合成 → python scripts/video_merge.py + tos_upload.py(参见 references/video-synthesizer.md)
步骤8: 产物验证与效果评分 → 逐项检查产物完整性 + 生成评分报告
  ↓
完整漫剧视频 + TOS 签名链接 + 评分报告

---

步骤1:读取启动配置

python scripts/app_config.py

输出 JSON 包含:

  • video_duration_minutes:视频时长(分钟)
  • total_seconds:总秒数
  • smart_durationtrue(智能时长模式已启用)
  • duration_range{"min": 4, "max": 15}(每段视频可选时长范围)
  • duration_options"4s ~ 15s 动态分配"
  • scene_count_range{"min": N, "max": M}(场景数参考范围)
  • recommended_scene_count:推荐场景数(以平均 8s 估算)

智能时长模式说明

每个分镜场景根据剧情节奏需要独立分配时长(4秒 ~ 15秒连续可选),而非全部使用统一时长。时长的多样性是让漫剧节奏生动的关键——快切制造紧迫感,长镜头铺垫情绪,交替使用让观众始终沉浸在故事中。

场景类型推荐时长范围适用情况对白密度
紧张快切4~6秒追逐场面、惊吓瞬间、快速闪回、蒙太奇过渡、一击必杀1~2句短促台词或无对白纯画面
标准叙事7~10秒开篇铺垫、过渡衔接、环境建立、简单对话、结尾余韵3~5句对白,标准节奏
高潮铺垫11~15秒终极对决、情绪爆发、多角色交锋、关键转折、密集对白6~10句对白,密集交锋

总导演在步骤3(剧本生成)时,根据每章的剧情功能和节奏需要决定该章时长,确保:

  • 总时长 ≈ total_seconds(允许 ±10% 浮动)
  • 高潮章节(第三幕)优先分配 11~15 秒
  • 紧张追逐/闪回可使用 4~6 秒快切
  • 开篇和结尾章节通常使用 7~10 秒
  • 相邻场景时长应有变化,避免连续多个相同时长导致节奏单调

向用户确认配置后继续。

---

步骤2:初始化任务目录

python scripts/task_manager.py init "<task_name>"

从故事创意中提取核心关键词作为 task_name。脚本返回 JSON:

{
  "task_folder": "{COMIC_DRAMA_OUTPUT_DIR}/task_20260222_143000_关键词/",
  "storyboard_dir": "{COMIC_DRAMA_OUTPUT_DIR}/task_.../storyboard/",
  "characters_dir": "{COMIC_DRAMA_OUTPUT_DIR}/task_.../characters/",
  "videos_dir": "{COMIC_DRAMA_OUTPUT_DIR}/task_.../videos/",
  "final_dir": "{COMIC_DRAMA_OUTPUT_DIR}/task_.../final/",
  "outputs_dir": "{COMIC_DRAMA_OUTPUT_DIR}/",
  "deleted_tasks": []
}

记录所有路径,后续步骤全程使用。FIFO 自动清理,最多保留16个任务。

⚠️ 内容安全预审:在此步骤之后、步骤3之前,对用户故事创意执行内容安全预审(参见上方「内容安全审核提醒」),向用户简要说明风险等级。

---

步骤3:剧本生成(含智能时长分配)

完整规格参见 `references/screenplay-generator.md`

核心流程: 1. `python scripts/web_search.py` 深度调研(必须在写剧本之前执行) 2. 保存需求文档 requirements.md 3. 创作章节式剧情大纲 plot.md(含全局风格锚定声明 + 情绪弧线图) 4. 为每个章节动态分配时长(4秒 ~ 15秒,根据剧情节奏) 5. 创作完整对白剧本 script.md(每章标注时长,逐秒剧本按实际时长展开) 6. 输出 scene_durations 列表(供步骤6使用)

智能时长分配规则

在创作 plot.md 时,为每章标注时长(4s ~ 15s 动态选择):

第一章:[章节名](6秒)— [摘要]    ← 快速闪回/引子,紧凑开场
第二章:[章节名](8秒)— [摘要]    ← 世界观建立,标准叙事
第三章:[章节名](5秒)— [摘要]    ← 紧张追逐/危机降临,快切
第四章:[章节名](10秒)— [摘要]   ← 冲突升级,需要更多对白
第五章:[章节名](14秒)— [摘要]   ← 高潮对决,密集交锋
第六章:[章节名](12秒)— [摘要]   ← 高潮延续,情绪爆发
第七章:[章节名](5秒)— [摘要]    ← 结局余韵,短促定格

时长分配决策表

判定条件(满足任一即可)推荐时长范围
高潮对决、终极交锋12~15秒
多角色同时交锋(3人+)12~15秒
关键剧情转折、反转揭示11~14秒
情绪爆发(愤怒嘶吼、决死宣言、临死遗言)11~15秒
对白密集(需要6句以上对白才能充分表达)11~15秒
复杂动作编排(多段连续动作)12~15秒
开篇建立世界观7~10秒
过渡衔接、环境转换6~9秒
简单对话(3-5句对白即可)7~10秒
结尾余韵、情绪沉淀6~10秒
单纯氛围渲染5~8秒
紧张追逐、危机闪回、一击必杀4~6秒
蒙太奇过渡、梦境闪现4~5秒
惊吓瞬间、突发事件4~5秒
关键原则:时长多样性 > 时长统一。一部好漫剧的节奏应像心跳般起伏有致——紧张时短促如鼓点(4~6s),铺垫时舒缓如弦乐(7~10s),高潮时绵长如交响(11~15s)。

script.md 中每章的时长体现

  • 章节标题格式:## 第N章:[章节名](时长:Xs)(X 为 4~15 之间的整数)
  • 逐秒剧本时间轴按实际时长展开(如 5秒场景:0:00-0:05;12秒场景:0:00-0:12
  • 11~15秒场景的对白密度更高(6-10句),动作编排更丰富
  • 7~10秒场景的对白为标准密度(3-5句)
  • 4~6秒场景对白极简(0-2句),以画面冲击力为主

确认步骤3产物

  • {task_folder}/requirements.md
  • {task_folder}/plot.md ✅(含章节划分 + 每章时长标注 + 风格锚定 + 情绪弧线)
  • {task_folder}/script.md ✅(含对白、神情、动作、场景桥接、结束状态、每章独立时长
  • scene_durations 列表已记录 ✅(如 [6, 8, 5, 10, 14, 12, 5]

从 plot.md 提取:主要角色列表、核心视觉风格(默认「国漫3D写实」)。

🔔 向用户展示关键产出(必须在确认产物后、进入下一步之前展示):

  • 📖 剧情大纲:展示 plot.md 的完整分章大纲(章节名 + 时长标注 + 摘要)
  • 🎭 每章对白摘录:每章展示 1-2 句最精彩的核心对白
  • 📊 时长分配汇总表:章节—时长—分配理由
  • 📈 情绪弧线图:每章情绪强度可视化
  • 👥 角色列表:主要角色姓名 + 身份 + 一句话概括

---

步骤4:角色设计

完整规格参见 `references/character-designer.md`

核心流程: 1. 确定视觉风格,生成 STYLE_ANCHOR(全局风格锚定字符串) 2. 为每个角色创作精确的英文 AI 提示词 3. ⚡ 使用 python scripts/batch_image_generate.py 并行生成角色立绘 + 封面图 4. 保存角色设计文档 characters.md 5. 将所有立绘和封面上传到 TOS,获取 TOS URL(用于图片展示)

画风一致性关键

  • STYLE_ANCHOR 写入 characters.md 顶部,后续所有步骤必须引用
  • 角色英文提示词一经确定,在所有后续场景中原样复用,仅允许追加动作/表情
  • 配色方案用精确英文颜色词(如 midnight blue 而非 blue

确认产物:

  • {task_folder}/characters.md ✅(含 STYLE_ANCHOR + 英文提示词 + 立绘图片)
  • {characters_dir}/ 下有角色立绘 .jpg 文件 ✅
  • {task_folder}/cover.jpg
  • 所有角色立绘和封面图已上传到 TOS,TOS URL 已记录 ✅

🔔 向用户展示关键产出

  • 🎨 STYLE_ANCHOR:展示完整风格锚定字符串
  • 👤 角色概要:每个角色的中文描述(姓名 + 身份 + 标志性特征)
  • 🖼️ 角色立绘预览:所有角色立绘以 Markdown 图片形式展示(⚠️ 必须使用 TOS URL,不得使用本地磁盘路径
  • 🖼️ 封面图预览:封面图以 Markdown 图片形式展示(⚠️ 必须使用 TOS URL

---

步骤5:场景美术(分镜图)

完整规格参见 `references/scene-designer.md`

核心流程: 1. 从 characters.md 提取 STYLE_ANCHOR 2. 为每个场景构建提示词(以 STYLE_ANCHOR 开头,体现场景结束状态) 3. ⚡ 使用 python scripts/batch_image_generate.py 并行生成所有分镜图(内置自动重试 + 失败 prompt 简化 fallback) 4. 上传到 TOS,记录 TOS URL

画风一致性关键

  • 所有分镜图提示词必须以 STYLE_ANCHOR 开头
  • 角色描述严格复用 characters.md 中的英文提示词
  • 相邻场景的色调、光照、环境元素保持视觉连贯

场景生成失败 fallback

  • 脚本内置自动重试(每张最多3次)
  • 重试全部失败后,自动用简化 prompt 再次尝试(移除高风险词汇)
  • 如果仍然失败,提取失败场景的 prompt,手动简化后使用 image_generate.py 单独重试

确认产物:

  • {storyboard_dir}/ 下有 scene_count 张分镜图 ✅
  • 所有分镜图的 TOS URL 已记录 ✅(供步骤6使用)

🔔 向用户展示关键产出(⚠️ 必须展示分镜图,不得跳过):

  • 🖼️ 分镜图预览:所有分镜图以 Markdown 图片列表形式展示(⚠️ 使用 TOS URL),每张附带:
  • 对应章节名
  • 一句场景描述
  • 该章节的时长标注
  • 📊 生成统计:总数/成功数/耗时

---

步骤6:分镜视频生成(智能时长)

完整规格参见 `references/storyboard-director.md`

核心流程: 1. 从 characters.md 提取 STYLE_ANCHOR 2. 为每个场景构建七维度导演级视频提示词(以 STYLE_ANCHOR 开头) 3. 准备每段视频的独立时长列表(从步骤3的 scene_durations 获取,4~15秒动态值) 4. 批量提交视频任务(含首帧 TOS URL + 每段独立时长) 5. 轮询等待全部完成 6. 下载视频 + 质量评分

智能时长提交方式

将 prompts 列表、首帧 URL 列表、时长列表分别写入 JSON 文件,然后调用 submit:

第一步:准备 JSON 文件(⚠️ 严格按照速查表中的格式,参见文件顶部)

// prompts.json — ⚠️ 必须是纯字符串数组,不是对象数组!
[
  "STYLE_ANCHOR, environment for scene 1, character desc, action, dialogue, camera, audio",
  "STYLE_ANCHOR, environment for scene 2, character desc, action, dialogue, camera, audio"
]

// frames.json — TOS URL 字符串数组(与 prompts 一一对应)
[
  "https://tos-cn-beijing.volces.com/.../scene_01.jpg?签名参数...",
  "https://tos-cn-beijing.volces.com/.../scene_02.jpg?签名参数..."
]

// durations.json — 整数数组(与 prompts 一一对应)
[6, 8, 5, 10, 14, 12, 5]

第二步:调用 submit 命令

python scripts/batch_video.py submit \
  --prompts-file prompts.json \
  --first-frames-file frames.json \
  --durations-file durations.json

第三步:保存返回结果中 `submitted` 字段为 task_ids.json

submit 返回格式:

{
  "submitted": {"scene_01": "task_id_xxx", "scene_02": "task_id_yyy"},
  "errors": {},
  "total": 7
}

submitted 字段的内容保存为 task_ids.json

{"scene_01": "task_id_xxx", "scene_02": "task_id_yyy"}
⚠️ 不再使用 `--duration` 统一时长参数,改用 --durations-file 实现每段独立时长。
durations.json 中的时长列表必须与 prompts.json 一一对应,每个值为 4~15 之间的整数。

画风一致性关键

  • 所有视频提示词以 STYLE_ANCHOR 开头
  • 角色描述严格复用 characters.md 中的英文提示词
  • 对白从 script.md 原样提取
  • 11~15秒场景:至少5-6句对白,密集交锋节奏
  • 7~10秒场景:至少3-4句对白
  • 4~6秒场景:0-2句极简对白,以画面冲击为主
  • 运镜多样化,相邻场景不得使用完全相同的运镜手法

镜头语言专业指导

镜头是导演最重要的叙事工具。不同情绪需要截然不同的镜头策略:

紧张/悬疑场景的镜头策略
镜头技法描述情绪效果
近景→特写连续推进medium shot slowly pushing in to extreme close-up on eyes压迫感递增,暗示危险逼近
快速正反打切换rapid shot-reverse-shot between characters, each cut 0.5s心理对峙白热化,紧张感拉满
手持晃动镜头handheld shaky camera, slight vibration, unstable framing不安定感,观众代入角色恐惧
倾斜构图(Dutch angle)tilted camera 15-25 degrees, off-balance composition世界失序、心理扭曲
景深压缩长焦telephoto lens compression, blurred foreground and background孤立角色、空间压缩、窒息感
暗部留白deep shadows consuming 60% of frame, character half-lit未知威胁、恐惧氛围
高潮/爆发场景的镜头策略
镜头技法描述情绪效果
速度斜坡(Speed Ramp)normal speed → ultra-slow 0.2x on impact → snap back to real-time关键一击的视觉强调
360度环绕360-degree orbit around character during energy release能量爆发的仪式感
极端低角度extreme worm's-eye view looking up, silhouette against sky角色气势碾压,史诗感
跟拍追踪dynamic tracking shot racing alongside the action, camera tilting 45°动作场面的沉浸感
快速蒙太奇rapid montage: face → fist → impact → reaction, 0.3s per cut战斗节奏爆裂
鞭甩摇镜whip pan from attacker to defender, motion blur, freeze on impact突袭感、力量传递
情绪铺垫场景的镜头策略
镜头技法描述情绪效果
缓推长镜头slow steady dolly push-in over 5 seconds, minimal movement情绪渐入,观众被缓缓吸入画面
大全景→人物wide establishing shot slowly narrowing to medium shot on character渺小感→聚焦→共情
近景微表情extreme close-up held for 3 seconds, capturing every micro-expression无声胜有声,情绪传递
过肩镜头over-the-shoulder shot, shallow depth of field, speaker in soft focus亲密/对峙的心理距离
慢拉远镜slow pull-back revealing vast landscape, character becoming small孤独感、命运感、余韵
静止锁定static locked-off camera, subject slowly walking away, held 6 seconds结尾余韵、情绪沉淀
镜头节奏规则:紧张场景用快切(每 0.5~1.5s 一个镜头切换),铺垫场景用长镜(3~6s 不切),高潮场景先慢后快再慢(蓄力→爆发→余波)。

对白与连贯性关键

  • 对白间距不超过4秒,要有交锋感
  • 音频情绪与画面情绪匹配,相邻场景音乐有过渡感
  • 环境在连续场景中保持一致,仅变化破坏程度/光照

确认产物:

  • {videos_dir}/ 下有 scene_count 个 .mp4 文件 ✅
  • 每段视频含中文对白语音 + 配乐 + 音效 ✅
  • 各段视频时长与 scene_durations 一致 ✅

🔔 向用户展示关键产出(⚠️ 必须展示每段分镜视频,不得跳过):

  • 🎬 分镜视频列表:所有视频必须<video src="{tos_url}" width="640" controls>第N章{章节名}</video> 格式展示(⚠️ 必须使用 TOS URL,不得使用本地磁盘路径,不得使用纯文本链接或 Markdown 链接),每段附带章节名 + 时长 + 核心对白 1-2 句摘录
  • 📊 质量评分:展示评分结果
⚠️ 视频展示格式示例(必须严格遵循):
```
第一章:{章节名}({时长}秒)
核心对白:"{角色A}:{台词}"
<video src="https://tos-cn-beijing.volces.com/.../scene_01.mp4?签名参数" width="640" controls>第一章{章节名}</video>
```

---

步骤7:视频合成与交付

完整规格参见 `references/video-synthesizer.md`

核心流程: 1. 检查并安装 ffmpeg(首次使用时自动安装) 2. 严格筛选视频文件(只接受 scene_NN.mp4 格式) 3. 按顺序合并所有视频 4. 上传到 TOS 5. 保存交付文档,展示最终结果

⚠️ 第一步:检查并安装 ffmpeg(合成前必须确认可用)

💡 向用户说明:在检查/安装 ffmpeg 时,向用户简要解释:
「接下来需要将各段分镜视频按顺序合并为一部完整漫剧。合并视频需要用到 ffmpeg(一个开源的音视频处理工具),我来检查一下环境中是否已安装……」
如果需要安装,告知用户:「正在安装 ffmpeg,这是一个专业的视频拼接工具,用于将 {scene_count} 段分镜视频无缝合并为完整漫剧视频,同时自动检测最终时长。安装只需几秒钟。」
# 检查 ffmpeg 是否已安装
which ffmpeg && ffmpeg -version || echo "ffmpeg not found, installing..."

# macOS 自动安装
brew install ffmpeg 2>/dev/null || true

# Linux 自动安装
# sudo apt-get install -y ffmpeg 2>/dev/null || sudo yum install -y ffmpeg 2>/dev/null || true
如果 ffmpeg 已安装则直接跳过,无需重复安装。

合并视频:

python scripts/video_merge.py --input-dir "<videos_dir>" --output "<final_dir>/<task_name>_final.mp4" --scene-count <N>
python scripts/tos_upload.py "<final_dir>/<task_name>_final.mp4"
合并后的实际总时长由 ffprobe 自动检测(因为每段视频时长可能不同)。

确认产物:

  • {final_dir}/{task_name}_final.mp4
  • TOS 签名 URL ✅

🔔 向用户展示关键产出(⚠️ 视频必须使用 `<video>` 标签展示,不得使用纯文本链接或 Markdown 链接):

  • 🎬 最终视频:合成视频必须<video src="{tos_signed_url}" width="640" controls>完整漫剧视频</video> 格式展示(⚠️ 必须使用 TOS URL,禁止使用纯文本 URL、Markdown 代码块包裹的 URL 或 Markdown 链接格式
  • 🔗 TOS 链接:展示完整签名 URL(作为备用文本链接,放在 <video> 标签之后)
  • 📁 任务目录结构:展示完整目录树
⚠️ 最终视频展示格式(必须严格遵循,不得使用其他展示方式)
```
🎬 漫剧生成完成!

>

<video src="https://tos-cn-beijing.volces.com/.../task_name_final.mp4?签名参数" width="640" controls>完整漫剧视频</video>

>

🔗 TOS 链接:https://tos-cn-beijing.volces.com/.../task_name_final.mp4?签名参数
```
错误示例(禁止使用)
- ~~``text\nhttps://...\n``~~(代码块包裹)
- ~~视频链接~~(Markdown 链接)
- ~~https://...~~(纯文本 URL)

---

步骤8:产物验证与效果评分

每个任务完成后,必须执行完整的产物验证和效果评分。

8.1 产物完整性检查

逐项检查以下产物目录结构,确认每个文件/文件夹存在且非空

{task_folder}/
├── characters/                  ← 必须包含至少1个 .jpg 文件
│   ├── char_<name1>.jpg
│   ├── char_<name2>.jpg
│   └── char_<name3>.jpg
├── characters.md                ← 必须非空,含 STYLE_ANCHOR + 角色提示词
├── cover.jpg                    ← 必须存在且文件大小 > 0
├── final/                       ← 必须包含1个 _final.mp4 文件
│   └── <task_name>_final.mp4
├── plot.md                      ← 必须非空,含章节大纲 + 时长分配
├── requirements.md              ← 必须非空,含需求文档
├── script.md                    ← 必须非空,含逐秒剧本
├── storyboard/                  ← 必须包含 scene_count 个 .jpg 文件
│   ├── scene_01.jpg
│   ├── scene_02.jpg
│   └── ...
└── videos/                      ← 必须包含 scene_count 个 .mp4 文件
    ├── scene_01.mp4
    ├── scene_02.mp4
    └── ...

验证规则

  • 如果任何文件夹为空或文件内容为空 → 当前任务判定为失败
  • 文件数量必须与 scene_count 严格匹配(storyboard/ 和 videos/ 目录)
  • characters/ 目录下的文件数量必须与主要角色数量匹配

8.2 效果评分

使用评分工具对任务进行质量评估:

python scripts/video_scorer.py "<task_folder>"

评分输出包含 5 个维度(每项 0-10 分):

评分维度评分标准
剧情连贯性场景间衔接是否流畅,是否有割裂感
对白丰富度人物台词是否足够,语气是否多样,是否有冲突感
视觉质感画面风格统一性,特效质量,镜头运用
情感张力是否有戏剧性起伏,高潮是否震撼
音画同步配乐是否贴合情绪,配音是否清晰

8.3 产物验证报告格式

📋 产物验证报告

├── characters/          {N}个文件  ✅/❌
├── characters.md        {size}字   ✅/❌
├── cover.jpg            {size}KB   ✅/❌
├── final/               {N}个文件  ✅/❌
│   └── xxx_final.mp4    {size}MB   ✅/❌
├── plot.md              {size}字   ✅/❌
├── requirements.md      {size}字   ✅/❌
├── script.md            {size}字   ✅/❌
├── storyboard/          {N}个文件  ✅/❌
└── videos/              {N}个文件  ✅/❌

产物完整性: ✅ 全部通过 / ❌ {N}项缺失

📊 效果评分
剧情连贯性: X/10
对白丰富度: X/10
视觉质感:   X/10
情感张力:   X/10
音画同步:   X/10
综合评分:   X.X/10

改进建议: [具体建议]
任何产物缺失或内容为空,整个任务即判定为失败,必须报告具体缺失项并协调修复。

---

总导演执行规范

1. 内容安全预审:步骤2之后必须对故事创意执行内容安全预审,向用户说明风险等级 2. 上下文传递:每步必须明确所有路径参数和内容参数 3. 质量门控:每步完成后确认产物存在,异常时协调解决再继续 4. 画风一致性:STYLE_ANCHOR 贯穿全流程,所有图片/视频提示词以此开头 5. 角色一致性:characters.md 中的英文提示词在所有场景中原样复用 6. 剧情连贯性:场景桥接确保相邻章节自然过渡,情绪弧线有起承转合 7. 对白密度:4~6秒场景 0-2句对白,7~10秒场景至少3句对白,11~15秒场景至少6句对白,对白间距不超过4秒,有交锋感 8. 智能时长:每章根据剧情节奏动态分配 4~15 秒,时长多样性优先,总时长控制在目标范围内 9. 运镜多样性:相邻场景运镜手法不重复,全片至少5种运镜类型;紧张场景用快切近景,铺垫场景用长镜缓推,高潮场景用速度斜坡和环绕 10. 视频生成工具:只允许使用 batch_video.py 的 submit/poll(或失败重试时的 create_video_task.py + query_video_task.py) 11. URL 零修改:所有图片或视频 URL 在输入输出的全流程中均需严格保持原始状态,不允许进行任何形式的篡改(包括但不限于修改域名、路径、query参数、锚点等)。 12. 产物目录:所有输出固定在 COMIC_DRAMA_OUTPUT_DIR(默认 ./output/)下,每个任务独立目录 13. 图片生成:优先使用 python scripts/batch_image_generate.py 批量并行生成(步骤4角色立绘、步骤5分镜图),单张补充使用 python scripts/image_generate.py 14. 内容安全措辞:视频 prompt 中避免直接使用战争/血腥/武器等高风险词汇,用委婉替代词 15. 产物验证:步骤7完成后必须执行步骤8的产物完整性检查和效果评分,任何产物缺失即判定失败 16. 关键产出展示:每步完成后,必须将该步骤的关键产出内容(文档摘要、图片预览、视频链接、评分报告等)直接展示给用户,而非仅返回文件路径。用户应在对话流中清晰看到剧情大纲、角色立绘、分镜图、视频等核心输出 17. 分镜图必须展示:步骤5完成后,必须以 Markdown 图片格式展示所有分镜图预览(使用 TOS URL),让用户在进入视频生成步骤前确认画面效果 18. 视频展示格式:所有视频(分镜视频和最终合成视频)必须使用 <video src="{tos_url}" width="640" controls>描述</video> 格式展示。禁止使用纯文本 URL、Markdown 代码块包裹的 URL 或 Markdown 链接格式 19. ffmpeg 按需安装:步骤7(视频合成)开始前检查并安装 ffmpeg,按需安装不打扰前期创作流程 20. 场景生成 fallback:分镜图生成失败时自动重试(最多3次),重试失败后简化 prompt 再尝试,确保尽可能多的场景生成成功

什么是好的漫剧

剧情有起承转合,台词和语言张弛有度,镜头运用恰到好处(镜头方式多种多样,带着用户进入漫剧世界),
画面层次丰富,剧情连贯,情感充沛,人物有个性,画面、场景、音乐、对白细腻且一致,
画风始终统一,用户看到漫剧能感受到故事的吸引、情节的连贯、主角的张力和故事线的波澜。
节奏是漫剧的灵魂——快切紧张如鼓点(4~6s),叙事舒缓如弦乐(7~10s),高潮绵长如交响(11~15s),
三者交替使用,让观众的心跳随着画面起伏,这才是大师级的节奏把控。

Related skills

FAQ

What does the final delivery include?

A complete comic-drama video and a TOS link, with artifacts saved to COMIC_DRAMA_OUTPUT_DIR.

What are the five stages?

Screenplay creation, character design, storyboard image generation, storyboard video generation, and video compositing.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.