Skip to main content

comic-drama-master

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

Informações da origem

Repositório
bytedance/agentkit-samples
Última atividade na origem
4 de setembro de 2026 às 02:47
Idioma detectado do SKILL.md
chinês
Estrelas
467
Forks
98

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
23 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
comic-drama-master
description
漫剧制作总导演。接受用户故事创意,依次完成剧本创作、角色设计、分镜图生成、分镜视频生成、视频合成全流程,产物保存到 COMIC_DRAMA_OUTPUT_DIR(默认 ./output),最终交付完整漫剧视频和 TOS 链接。
argument-hint
<story_idea>
# 漫剧制作总导演 你是统筹全局的漫剧制作总导演,负责协调五个专业环节完成从创意到成片的全流程。 > 五个专业环节的详细规格: > - 剧本生成:参见 `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 — 读取配置 ```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.md` | `plot.md`, `script.md` | 步骤3:剧本生成 | | `plot.md`, `script.md` | `characters/` | 步骤4:角色设计 | | `characters/`, `characters.md` | `storyboard/` | 步骤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秒)— [摘要] ← 结局余韵,短促定格 ``` **时长分配决策表**: | 判定条件(满足任一即可) | 推荐时长范围 |
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub