将小说转换为短视频的端到端工作流编排器。当用户提到做视频、创建项目、继续项目、查看进度时必须使用此 skill。触发场景包括但不限于:"帮我把小说做成视频"、"开个新项目"、"继续"、"下一步"、"看看项目进度"、"从头开始"、"拆集"、"自动跑完流程"等。即使用户只说了简短的"继续"或"下一步",只要当前上下文涉及视频项目,就应该触发。不要用于单个资产生成(如只重画某张分镜图或只重新生成某个角色设计图——那些有专门的 skill)。
你(主 agent)是编排中枢。你不直接处理小说原文或生成剧本,而是:
核心约束:
内容模式规格(画面比例、时长等)详见
.claude/references/content-modes.md。
projects/{名称}/ 及子目录(source/、scripts/、characters/、scenes/、props/、storyboards/、videos/、drafts/、output/)project.json 初始文件narration(默认)或 dramasource/projects/ 中的项目进入工作流后,使用 Read 读取 project.json,使用 Glob 检查文件系统。按顺序检查,遇到第一个缺失项即确定当前阶段:
drafts/episode_{N}/step1_segments.mddrafts/episode_{N}/step1_normalized_script.md确定目标集数:如果用户未指定,找到最新的未完成集,或询问用户。
每个 subagent 返回后,主 agent 执行:
触发:project.json 中 characters / scenes / props 中任一为空(定义缺失)
dispatch analyze-assets subagent:
项目名称:{project_name}
项目路径:projects/{project_name}/
分析范围:{整部小说 / 用户指定的范围}
已有角色:{已有角色名列表,或"无"}
已有场景:{已有场景名列表,或"无"}
已有道具:{已有道具名列表,或"无"}
请分析小说原文,提取角色 / 场景 / 道具信息,写入 project.json,返回摘要。
触发:目标集的 source/episode_{N}.txt 不存在
每次只切分当前需要制作的那一集。主 agent 直接执行(不 dispatch subagent):
source/_remaining.txt 存在则使用,否则用原始小说文件peek_split_point.py 展示切分点附近上下文:
python .claude/skills/manage-project/scripts/peek_split_point.py --source {源文件} --target {目标字数}
python .claude/skills/manage-project/scripts/split_episode.py --source {源文件} --episode {N} --target {目标字数} --anchor "{锚点文本}" --dry-run
--dry-run)触发:目标集的 drafts/ 中间文件不存在
根据 content_mode 选择 subagent:
split-narration-segmentsnormalize-drama-scriptdispatch prompt 包含:项目名称、项目路径、集数、本集小说文件路径、角色/场景/道具名称列表。
触发:scripts/episode_{N}.json 不存在
dispatch create-episode-script subagent:传入项目名称、项目路径、集数。
前置条件:三类资产的定义(characters / scenes / props)均已通过阶段 1 写入 project.json。若任一类定义为空(数组缺失),应回到阶段 1 补提取,而非停留在阶段 5。
触发:三类资产中任一类存在缺 sheet 项:
调度规则(显式条件判断,按类型独立决定):
对于 type ∈ {character, scene, prop}:
若该类存在缺 *_sheet 项 → dispatch 对应的 `generate-assets` subagent
若该类均已齐全 → 跳过,不 dispatch
三类判断彼此独立,结果可能 dispatch 0~3 个 subagent。
所有 dispatch 的 subagent 返回后,合并摘要展示给用户,进入阶段间确认。
下面三个 dispatch 块是模板,只实例化满足上述条件的那几个:
触发:有角色缺少 character_sheet
dispatch `generate-assets` subagent:
任务类型:character
项目名称:{project_name}
项目路径:projects/{project_name}/
待生成项:{缺失角色名列表}
脚本命令:
python .claude/skills/generate-assets/scripts/generate_asset.py --type character --all
验证方式:重新读取 project.json,检查对应角色的 character_sheet 字段
触发:有场景缺少 scene_sheet
dispatch `generate-assets` subagent:
任务类型:scene
项目名称:{project_name}
项目路径:projects/{project_name}/
待生成项:{缺失场景名列表}
脚本命令:
python .claude/skills/generate-assets/scripts/generate_asset.py --type scene --all
验证方式:重新读取 project.json,检查对应场景的 scene_sheet 字段
触发:有道具缺少 prop_sheet
dispatch `generate-assets` subagent:
任务类型:prop
项目名称:{project_name}
项目路径:projects/{project_name}/
待生成项:{缺失道具名列表}
脚本命令:
python .claude/skills/generate-assets/scripts/generate_asset.py --type prop --all
验证方式:重新读取 project.json,检查对应道具的 prop_sheet 字段
触发:有场景缺少分镜图
检查 project.json 的 generation_mode:
"single" 或未设置 → dispatch generate-storyboard subagent(现有逻辑)"grid" → dispatch generate-grid subagent(新增)
dispatch generate-assets subagent:
dispatch `generate-assets` subagent:
任务类型:storyboard
项目名称:{project_name}
项目路径:projects/{project_name}/
脚本命令:
python .claude/skills/generate-storyboard/scripts/generate_storyboard.py episode_{N}.json
验证方式:重新读取 scripts/episode_{N}.json,检查各场景的 storyboard_image 字段
dispatch generate-assets subagent:
dispatch `generate-assets` subagent:
任务类型:storyboard
项目名称:{project_name}
项目路径:projects/{project_name}/
脚本命令:
python .claude/skills/generate-grid/scripts/generate_grid.py episode_{N}.json
验证方式:重新读取 scripts/episode_{N}.json,检查各场景的 storyboard_image 字段
触发:有场景缺少视频
dispatch generate-assets subagent:
dispatch `generate-assets` subagent:
任务类型:video
项目名称:{project_name}
项目路径:projects/{project_name}/
脚本命令:
python .claude/skills/generate-video/scripts/generate_video.py episode_{N}.json
验证方式:重新读取 scripts/episode_{N}.json,检查各场景的 video_clip 字段
工作流不强制从头开始。根据状态检测结果,自动从正确的阶段开始: