--- name: short-drama description: 基于文件系统初始化和继续短剧或漫剧项目,提供 creator-first 五文档路由、本地 Dashboard、制作形态与 Look Development 决策。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”,或任务跨多个创作阶段时使用;明确的写作、资产、提示词、分镜、剪辑或审查请求由对应子 skill 直接处理。 license: MIT --- # 短剧创作路由 本技能负责项目初始化、跨阶段路由、制作形态与 Dashboard。各阶段正文由对应 owner 完成。 ## Quick Start 所有项目统一使用 [creator-first 工作流](references/creator-workflow.md):每集按需维护 `剧本.md`、`视觉设定.md`、`分镜.md`、`图片提示词.md`、`视频提示词.md`,不建立并行的结构化创作真相。 具体写法见 [五份创作文档](references/creator-documents.md)。 ## 路由 | 用户要做什么 | owner / 行为 | |---|---| | 开发点子、系列承诺、改编和分集地图 | `$short-drama-develop`,仅在用户需要时 | | 已有多集完整剧本/散稿识别分集 | `$short-drama-develop` 按实际边界建立临时索引 | | 分析长篇原著 | `$short-drama-novel-analyze`,仅在用户需要时 | | 写或改单集剧本 | `$short-drama-write` → `剧本.md` | | 拆人物、造型、地点、道具 | `$short-drama-assets` → `视觉设定.md` | | 写资产图片提示词 | `$short-drama-image-prompts` → `图片提示词.md` | | 做镜头和冻结关键帧 | `$short-drama-storyboard` → `分镜.md` | | 写视频/时间线音乐提示词 | `$short-drama-video-prompts` → `视频提示词.md` | | 实际生成媒体 | `$short-drama-produce`,先预览,再显式确认,最后运行 | | 把已生产的素材剪成成片 | `$short-drama-edit` → `剪辑单.md` 与 `制作成果/成片/` | | 审稿或校验 | `$short-drama-review`,仅在用户点名时 | | 初始化、Dashboard、归档点名文档 | 本技能 | `项目开发/` 中的长材料分析与分集索引是可选分析工作区,不参与单集布局判定;写任何一集仍只维护 该集的五份 creator-first Markdown。 现成剧本可直接拆资产;已有视觉事实可直接写图片提示词或分镜;已有分镜可直接写视频提示词。 不要为补齐名义流水线伪造上游。 五份创作文档记录剧本、视觉与提示词;剪辑单在素材生产后记录取舍和后期处理。 修改故事、镜头职责或上游时长声明时,回到负责该内容的文档。 ## 执行请求 1. 找到用户给出的项目或资料,只读当前任务的直接输入。 2. 把用户点名的完整范围交给相应 owner;批次只控制上下文,自动续跑。 3. 只有真实创作分叉才询问;不要拿 schema、目录、事务或检查器询问创作者。 4. 范围完成后一次回报完成内容、关键决定、真实未决项和可选下一步。 5. 不自动开始用户没点名的审查、归档或生产。 6. 请求横跨视觉设定、图片提示词、分镜或视频提示词时,结束前按当前五文档做一次视觉依赖对账; 不因图片提示词和分镜可并行,就把后完成的一支留在另一支的旧引用之外。 7. 视频提示词请求遇到「输入参考图:无」或仍带「待补参考图」时,先路由分镜 owner 检查项目已有图片并刷新绑定。有匹配图就同请求续跑;有必要图缺失就列表停下。 停下时把三条路一起给出:把已有图片放进项目绑成 `REF-...`;由创作者在自己的工具里出图、本轮先用 `PLAN-...` 写出逐镜挂图计划并照常产出视频提示词;或者明确改走文生视频。用本套件生产参考图需要项目外的 adapter 与凭据,只是第一条路的一种做法,不要把它说成唯一入口,也不要只给「生成参考图 / 文生视频」两个选项。 不把“没有手工指定”当成明确选择文生视频。这一轮如果镜头还缺「视觉依据」, 同时按已成稿的冻结关键帧回填;两条依据描述同一格画面,不要只补一条。 8. 用户在会话里点名目标视频模型(“按 MiniMax H3 写”“用 Seedance 2.5”)而 `short-drama.json` 的 `production_profile` 还是 `unset` 时,先把这个选择连同它带来的原生时长、参考方式和正文语言写进档案, 再继续下游阶段。会话里的一句点名不落到档案上,下一轮就会退回通用路径,方言和时长要重猜。 ## 初始化与 Dashboard 需要项目配置时运行: ```bash python3 {技能目录}/scripts/project_tool.py init ./my-drama --title "示例短剧" ``` 直接输入已经确认创作者说明语言、提示词语言、画幅、集数或单集目标时长时,首次 `init` 就带上对应的 `--language`、`--prompt-language`、`--aspect-ratio`、`--episode-count`、`--target-seconds`;只省略 未确认项,不让 Brief 中的确定事实留成配置里的 `null`。写入已确认的生产档案时,状态统一为 `accepted`;`unset` 只表示尚未决定,不另造中间状态。 `init` 只建立配置和空目录;第一次创作时再把文档写入 `剧集//`,不预建空文件。 项目已经建好、用户之后才定下目标视频模型时,把选择写进档案,并同时展示它对时长区间、参考方式和 正文语言的影响。档案只接受已发布并已接受的创作者决策,所以是三步,不是一步。先写一行决策记录 (`accepted_value` 就是要落进 `choices` 的对象本身,不要再包一层 `choices`): ```jsonl {"decision_id":"CD-H3","status":"accepted","target_locators":[{"src":"short-drama","field":"/creator_authority/production_profile/choices"}],"accepted_value":{"target_video_model":"minimax-h3","video_prompt_dialect":"minimax-h3","video_prompt_language":"en","native_duration_seconds":{"min":4,"max":15},"supported_generation_modes":["text","first_frame","first_last_frame","reference"],"audio_generation":"same_pass"}} ``` 再发布、接受、写入: ```bash python3 {技能目录}/scripts/project_tool.py publish --owner short-drama \ --artifact-id AR-PROFILE --output "创作者决策/production-profile.jsonl=输入/profile.jsonl" python3 {技能目录}/scripts/project_tool.py accept --artifact-id AR-PROFILE --decision accepted python3 {技能目录}/scripts/project_tool.py set-authority \ --field /creator_authority/production_profile/choices \ --decision-ref "创作者决策/production-profile.jsonl#CD-H3" ``` 各字段取值由命中的模型方言给出:`$short-drama-video-prompts` 的 MiniMax H3 / Seedance / Wan 3.0 方言文件都写了 推荐档案。写完用 `status` 复核 `video_model_profile` 是否已经出现。 项目定位与安全写入见 [运行预检](references/runtime-preflight.md)。用户明确要求 Dashboard 时运行: ```bash python3 {技能目录}/scripts/dashboard_server.py --workspace --port 0 --detach --open ``` `--detach` 让服务进程脱离当前 shell 独立运行,会话结束、终端关闭或智能体退出都不会带走它; 链接因此在整个创作期间保持有效。运行中的地址、端口和 pid 记录在 `/.short-drama/dashboard.json`(仅本人可读),日志在同目录 `dashboard.log`: ```bash python3 {技能目录}/scripts/dashboard_server.py --workspace --status # 打印当前链接 python3 {技能目录}/scripts/dashboard_server.py --workspace --stop # 停止 ``` 同一 workspace 已有在跑的 Dashboard 时,再次启动只会打印同一个链接,不再开第二个端口;确实要换 端口或换令牌时加 `--restart`。不加 `--detach` 时行为不变:前台运行,Ctrl-C 结束。 Dashboard 按阶段展示项目:全剧页给出下一步和分集进度,每集分剧本、设定、分镜、提示词、成片、审查 六个视图,⌘K 搜索全剧。结构视图只读,改动在「编辑原文」里保存 Markdown。画面只认文档里的绑定: 缩略图是分镜里 `用途:起始帧` 的 `REF-...`,每镜素材是剪辑单的「来源」,成片是剪辑输出;没有绑定 就显示空位,不按文件名配图。它不负责工作流编排或媒体生产,需要写作或生成的地方只复制一句请求交回对话。 每集目标时长取自 `status` 的 `format`,节奏对照只用已接受的 `rhythm_profile`。 ## 项目级创作决定 制作形态、视觉方向、播放面和集长目标确实约束多个阶段时,展示选择及影响后由用户决定。 Look Development 是可选分支,不是进入图片提示词或分镜的固定门槛。 节奏数值(首钩秒数、情绪触点间隔、反转次数、VO 占比、平均镜长等)住在 `creator_authority.rhythm_profile`。字段与默认值由 `$short-drama-develop` 按制作形态提出, 创作者接受或改写后,按上文三步写入:决策的 `accepted_value` 是完整档案对象,`--field` 写 `/creator_authority/rhythm_profile`;档案已接受后,单改一个值时 `--field` 指向该字段。 `set-authority` 只校验类型与范围,缺字段、越界或多出未知字段都拒绝写入。下游只按 `status` 为 `accepted` 的档案做算术核对,缺失、`unset` 或 `proposed` 都表示「未声明,不核对」。写完用 `status` 复核 `rhythm_profile`;手改后档案不合法时 它返回空档案,问题列在 `rhythm_profile_problems`。 按问题只读取一份相关知识: - 规则分级与 owner 路由:[规则与路由索引](references/knowhow-index.md) - 输出语言、稳定 ID、所有权与安全边界:[契约与所有权](references/contract-and-ownership.md) - 实拍、二维、三维、水墨、Q 版、国漫的形态差异:[制作形态](references/production-form-profiles.md) - 需要比较代表帧时:[Look Development](references/look-development.md) - 参考图能控制什么:[参考角色](references/reference-roles.md) - 遮挡、延迟揭示和观众知情时机:[观众揭示](references/audience-reveal.md) - 母版、补拍和替代版的职责:[补拍与替代](references/pickup-and-alternate.md) ## 生产与交付边界 外部生产永远保留 `preview -> explicit confirm -> run`。归档只复制用户点名的当前文档和成品,排除 私有输入、凭据、绝对路径与隐藏运行状态;不为归档补造审批、哈希或第二套内容。 用户问“做完了怎么导出/交付给我”时,用 `export` 打包当前状态: ```bash python3 {技能目录}/scripts/project_tool.py export --out <项目外目录> ``` 它把每集现有的五份创作文档和 `剧集//制作成果/` 复制到 `--out`,附 `manifest.json` 与 `checksums.sha256`,并排除 `输入/`、`交付/` 和 `.short-drama/`。只要一部分时加 `--episode EP001`(可重复);只要文字时加 `--no-media`;覆盖旧目录加 `--overwrite`。 `--out` 必须在项目之外。 `export` 是**当前状态快照**,manifest 里 `asserts_approval` 恒为 `false`:它不声称任何审查或 创作者接受。需要带审批证据的正式交付包仍然只有 `package`/`verify` 那条路径。 ## 安装维护 只有安装、升级或排障时运行 `python3 scripts/selftest.py`。