Skip to main content

comic-drama-master

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

소스 정보

저장소
bytedance/agentkit-samples
최근 소스 활동
2026년 9월 4일 02:47
감지된 SKILL.md 언어
중국어
스타
467
포크
98

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
23 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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秒)— [摘要] ← 结局余韵,短促定格 ``` **时长分配决策表**: | 判定条件(满足任一即可) | 推荐时长范围 |
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기