bytedance/agentkit-samples/comic-drama-master

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

漫剧制作总导演。接受用户故事创意,依次完成剧本创作、角色设计、分镜图生成、分镜视频生成、视频合成全流程,产物保存到 COMIC_DRAMA_OUTPUT_DIR(默认 ./output),最终交付完整漫剧视频和 TOS 链接。

Install

npx vskill@latest install bytedance/agentkit-samples/comic-drama-master

SKILL.md

漫剧制作总导演

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

五个专业环节的详细规格:
- 剧本生成:参见 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
  1. 高风险(纯战争、恐怖、政治敏感):明确告知用户该题材可能导致视频生成大面积失败,建议:
  • 调整为更温和的表达方式
  • 更换题材方向
  • 用户坚持则继续,但提前说明可能有 30-50% 的场景需要反复重试
提醒时机:在步骤2(初始化任务目录)之后、步骤3(剧本生成)之前,向用户简要说明风险等级和应对策略。

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

重要:以下是所有脚本的精确调用格式和 JSON 文件格式。调用任何脚本前,必须严格按照此表准备参数,不得猜测格式。
app_config.py — 读取配置
bash
python scripts/app_config.py
# 无参数,返回 JSON
task_manager.py — 任务目录管理
bash
# 初始化任务
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 — 网络搜索
bash
python scripts/web_search.py "<搜索关键词>"
# 返回 JSON 字符串数组
image_generate.py — 单张图片生成
bash
python scripts/image_generate.py "<英文prompt>" --output-dir "<保存目录绝对路径>"
# 返回 JSON: {"saved_files": ["/absolute/path/to/generated_image_TIMESTAMP_0.png"]}
batch_image_generate.py — 批量并行图片生成(⚡ 推荐用于分镜图和角色立绘)
bash
# 从 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 格式(纯字符串数组):

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 — 批量视频提交/轮询
bash
# 提交任务(⚠️ 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 — 纯字符串数组(⚠️ 不是对象数组!):

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 一一对应):

json
[
"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 一一对应):

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

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

json
{
"scene_01": "task_id_abc123",
"scene_02": "task_id_def456",
"scene_03": "task_id_ghi789"
}
file_download.py — 批量文件下载
bash
python scripts/file_download.py \
--urls <url1> <url2> <url3> ... \
--save-dir "<保存目录绝对路径>" \
--filenames scene_01.mp4 scene_02.mp4 scene_03.mp4 ...
video_merge.py — 视频合并
bash
python scripts/video_merge.py \
--input-dir "<videos_dir绝对路径>" \
--output "<final_dir绝对路径>/<task_name>_final.mp4" \
--scene-count <N>
tos_upload.py — TOS 上传
bash
python scripts/tos_upload.py "<文件绝对路径>"
# 返回 JSON: {"signed_url": "https://..."}
video_scorer.py — 效果评分
bash
python scripts/video_scorer.py "<task_folder绝对路径>"

前置依赖

  • ffmpeg / ffprobe(必须,步骤7使用):视频合并和时长检测依赖 ffmpeg。在步骤7(视频合成)开始前自动检查并安装。

``bash # 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_KEY 或 MODEL_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-2-5-260628)

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

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

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

bash
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:读取启动配置

bash
python scripts/app_config.py

输出 JSON 包含:

  • video_duration_minutes:视频时长(分钟)
  • total_seconds:总秒数
  • smart_duration:true(智能时长模式已启用)
  • 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:初始化任务目录

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

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

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使用)

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
434
Repository forks
93
7-day trend score
30

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 25 Aug 2026, a month ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/bytedance/agentkit-samples/comic-drama-master/badge)](https://verified-skill.com/skills/bytedance/agentkit-samples/comic-drama-master)

Something wrong with this skill or its page? Tell us.