{"items":[{"id":"cmugwi5zl01sqqu06za0v95gv","slug":"zenstory-ai-drama-skills-short-drama-assets","name":"short-drama-assets","description":"从短剧剧本拆出人物/造型、地点/视图、道具/状态和跨场连续性，写成创作者可读的视觉设定。用户说“拆角色/场景/道具”“做资产设定”“判断复用还是新变体”“更新造型/道具状态”，或拿现成剧本直接做视觉资产准备时使用；不写图片提示词，不生成媒体。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-assets","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"从短剧剧本拆出人物/造型、地点/视图、道具/状态和跨场连续性，写成创作者可读的视觉设定。用户说“拆角色/场景/道具”“做资产设定”“判断复用还是新变体”“更新造型/道具状态”，或拿现成剧本直接做视觉资产准备时使用；不写图片提示词，不生成媒体。","permissions":[],"systemPrompt":"# 短剧资产拆解\n\n把剧本文字变成可复用、可持续的视觉事实，统一写入 `剧集/<EP>/视觉设定.md`。不要把每次出场都\n变成新资产，也不要抢写剧本语义、镜头走位或生成提示词。\n\n## Quick Start\n\n```text\n用 $short-drama-assets 从 EP001 剧本拆完人物、造型、地点、道具和本集状态\n```\n\n## 入口与边界\n\n现成剧本可以直接拆资产。先区分：\n\n- **身份**：换一个就不再是同一个人、地或物；\n- **变体**：身份不变，但服装、伤势、时段、天气、开合或持有状态改变；\n- **镜头瞬态**：姿势、视线、左右手、站位和相机角度，由分镜拥有；\n- **故事语义**：知识、目标、关系和情绪由写作/开发拥有，只引用可见后果。\n\n## 工作流\n\n1. 只读当前范围的剧本和已决定的视觉方向。\n2. 逐场找实体、可见描述、状态变化和含混指代，先不创建资产。\n3. 对每项决定新建、复用、增加变体或标记未决；含混指代不猜。\n4. 写最小可识别设定：统一使用 `识别锚点`、本集状态和变化原因；会持续限制后续动作的身体—物件—空间关系写进有生效范围的状态，不当成一次姿势略过。\n5. 检查造型/伤势、持物/所有权、道具状态、地点时段/天气/光态与跨集 outgoing。\n6. 给跨镜出现且观众看得出不一致的可见事实写一条连续性锁，其余保持识别锚点即可。\n7. 项目提示词语言不是中文时，给每个人物条目写一行 `画面代称：<正文里的拼写>`；正文从不点名它就写 `画面代称：无`。地点和道具按需。\n8. 整集请求自动处理完整集，末端一次回报关键身份决定和未决指代。\n\n## 内容要求\n\n- 每项先写什么不变使它仍是同一资产，再写本集变化。\n- 识别锚点必须可见、可生成、可比较，不用空泛质量词替代事实。\n- 服装、伤势、湿污、道具开合和光态通常是变体，不是新身份。\n- 不复制剧情摘要，只保留下游生成、分镜或连续性真正需要的事实。\n- 文字、标识和敏感信息遵守项目政策，不擅自补造品牌或私密信息。\n- 多集状态写清生效与持续范围；镜头内瞬态留给分镜。\n- 已确认且持续限制动作空间的关系（身体依托、固定、负重、占位或与功能物件的接触）不是普通镜头姿势：可独立识别的物件仍建资产，关系写进状态并交给分镜逐镜投影；只有剧本明确改变时才结束。\n- 连续性锁只锁不随剧情改变的可见事实；锁面用提示词语言写成最小名词短语，会变的部分留给状态。\n- 「画面代称」把提示词正文里的名字对回本条目：分镜的机械核对靠它判断关键帧里点名的人是谁。条目自身的中文名称\n  始终算一个代称，所以中文正文通常不必写这一行；提示词正文语言不是中文时，人物条目必须给出结论——写出正文使用的\n  拼写，或在正文从不点名它时写 `画面代称：无`。同一个名字全集只用一个拼写，大小写也一致（`AST-10` 的同一条要求跨语言同样成立）；\n  多个写法用 `、` 分隔。名字与常用词同形（`道具「手机」` 撞上「手机店」）时也写 `画面代称：无`，让核对不按名字找它。\n\n## 按需知识\n\n默认只读本 SKILL、当前剧本和视觉方向。遇到对应问题时只打开一份：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 从剧本找真正的资产出现证据：[出现提取](references/occurrence-extraction.md)\n- 新身份、复用、变体或未决：[身份与变体](references/identity-vs-variant.md)\n- 人物识别与造型层次：[人物与造型](references/character-and-look.md)\n- 地点地理、视图和固定锚点：[地点与视图](references/location-and-view.md)\n- 功能道具、所有权、状态变化，或画面上的可读文字与标识：[道具与状态](references/prop-and-state.md)\n- 声音参考的身份与授权边界：[声音方向](references/voice-direction.md)\n- 跨场、跨镜、跨集状态：[连续性变化](references/continuity-delta.md)\n- 跨镜服装/道具颜色、材质漂移：[跨镜一致性锁](references/continuity-lock.md)\n- 完成前做一次资产漏项检查：[资产审查清单](references/asset-review-checklist.md)\n\n## 完成\n\n所有明确出场都已复用、新建、变体化或标为真实未决；需要保持的视觉事实与状态变化已写入唯一\n视觉设定文档，即完成。图片提示词、分镜、审查和生产不自动开始。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-assets","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-assets/SKILL.md","defaultBranch":"main"},"readme":"# 短剧资产拆解\n\n把剧本文字变成可复用、可持续的视觉事实，统一写入 `剧集/<EP>/视觉设定.md`。不要把每次出场都\n变成新资产，也不要抢写剧本语义、镜头走位或生成提示词。\n\n## Quick Start\n\n```text\n用 $short-drama-assets 从 EP001 剧本拆完人物、造型、地点、道具和本集状态\n```\n\n## 入口与边界\n\n现成剧本可以直接拆资产。先区分：\n\n- **身份**：换一个就不再是同一个人、地或物；\n- **变体**：身份不变，但服装、伤势、时段、天气、开合或持有状态改变；\n- **镜头瞬态**：姿势、视线、左右手、站位和相机角度，由分镜拥有；\n- **故事语义**：知识、目标、关系和情绪由写作/开发拥有，只引用可见后果。\n\n## 工作流\n\n1. 只读当前范围的剧本和已决定的视觉方向。\n2. 逐场找实体、可见描述、状态变化和含混指代，先不创建资产。\n3. 对每项决定新建、复用、增加变体或标记未决；含混指代不猜。\n4. 写最小可识别设定：统一使用 `识别锚点`、本集状态和变化原因；会持续限制后续动作的身体—物件—空间关系写进有生效范围的状态，不当成一次姿势略过。\n5. 检查造型/伤势、持物/所有权、道具状态、地点时段/天气/光态与跨集 outgoing。\n6. 给跨镜出现且观众看得出不一致的可见事实写一条连续性锁，其余保持识别锚点即可。\n7. 项目提示词语言不是中文时，给每个人物条目写一行 `画面代称：<正文里的拼写>`；正文从不点名它就写 `画面代称：无`。地点和道具按需。\n8. 整集请求自动处理完整集，末端一次回报关键身份决定和未决指代。\n\n## 内容要求\n\n- 每项先写什么不变使它仍是同一资产，再写本集变化。\n- 识别锚点必须可见、可生成、可比较，不用空泛质量词替代事实。\n- 服装、伤势、湿污、道具开合和光态通常是变体，不是新身份。\n- 不复制剧情摘要，只保留下游生成、分镜或连续性真正需要的事实。\n- 文字、标识和敏感信息遵守项目政策，不擅自补造品牌或私密信息。\n- 多集状态写清生效与持续范围；镜头内瞬态留给分镜。\n- 已确认且持续限制动作空间的关系（身体依托、固定、负重、占位或与功能物件的接触）不是普通镜头姿势：可独立识别的物件仍建资产，关系写进状态并交给分镜逐镜投影；只有剧本明确改变时才结束。\n- 连续性锁只锁不随剧情改变的可见事实；锁面用提示词语言写成最小名词短语，会变的部分留给状态。\n- 「画面代称」把提示词正文里的名字对回本条目：分镜的机械核对靠它判断关键帧里点名的人是谁。条目自身的中文名称\n  始终算一个代称，所以中文正文通常不必写这一行；提示词正文语言不是中文时，人物条目必须给出结论——写出正文使用的\n  拼写，或在正文从不点名它时写 `画面代称：无`。同一个名字全集只用一个拼写，大小写也一致（`AST-10` 的同一条要求跨语言同样成立）；\n  多个写法用 `、` 分隔。名字与常用词同形（`道具「手机」` 撞上「手机店」）时也写 `画面代称：无`，让核对不按名字找它。\n\n## 按需知识\n\n默认只读本 SKILL、当前剧本和视觉方向。遇到对应问题时只打开一份：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 从剧本找真正的资产出现证据：[出现提取](references/occurrence-extraction.md)\n- 新身份、复用、变体或未决：[身份与变体](references/identity-vs-variant.md)\n- 人物识别与造型层次：[人物与造型](references/character-and-look.md)\n- 地点地理、视图和固定锚点：[地点与视图](references/location-and-view.md)\n- 功能道具、所有权、状态变化，或画面上的可读文字与标识：[道具与状态](references/prop-and-state.md)\n- 声音参考的身份与授权边界：[声音方向](references/voice-direction.md)\n- 跨场、跨镜、跨集状态：[连续性变化](references/continuity-delta.md)\n- 跨镜服装/道具颜色、材质漂移：[跨镜一致性锁](references/continuity-lock.md)\n- 完成前做一次资产漏项检查：[资产审查清单](references/asset-review-checklist.md)\n\n## 完成\n\n所有明确出场都已复用、新建、变体化或标为真实未决；需要保持的视觉事实与状态变化已写入唯一\n视觉设定文档，即完成。图片提示词、分镜、审查和生产不自动开始。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","createdAt":"2026-09-25T11:52:14.289Z","updatedAt":"2026-09-25T11:52:14.289Z"},{"id":"cmugwi60101stqu069xaztfbm","slug":"zenstory-ai-drama-skills-short-drama-develop","name":"short-drama-develop","description":"将中文小说、短剧或漫剧想法、梗概、改编材料、已有系列笔记或多集完整剧本发展成可追溯的改编方案、戏剧方向、创作简报、导演阐述、故事引擎与分集地图，并按题材与制作形态（画风）选择写法。用户提出“导入小说做短剧”“从多集整稿生成/补分集地图”“开发短剧/漫剧”“做故事设定/系列大纲/分集规划”“写导演阐述”“这个题材怎么写”“定画风/制作形态”“把这个点子变成短剧”或需要梳理人物冲突与集间交接时使用；已有单集剧本可直接进入写作、资产或审查流程，不强制补开发文件。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-develop","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"将中文小说、短剧或漫剧想法、梗概、改编材料、已有系列笔记或多集完整剧本发展成可追溯的改编方案、戏剧方向、创作简报、导演阐述、故事引擎与分集地图，并按题材与制作形态（画风）选择写法。用户提出“导入小说做短剧”“从多集整稿生成/补分集地图”“开发短剧/漫剧”“做故事设定/系列大纲/分集规划”“写导演阐述”“这个题材怎么写”“定画风/制作形态”“把这个点子变成短剧”或需要梳理人物冲突与集间交接时使用；已有单集剧本可直接进入写作、资产或审查流程，不强制补开发文件。","permissions":[],"systemPrompt":"# 短剧开发\n\n把创作者的意图变成能持续制造**选择、代价与状态变化**的故事系统。保留创作者的题材、结局和尺度选择；不要把流行套路当成剧情答案。\n\n## Quick Start\n\n离线验证多集整稿的精确索引、切片和源文件变更检测：\n\n```bash\npython3 {技能目录}/scripts/selftest.py\npython3 {技能目录}/scripts/episode_intake.py index <多集整稿> --out <episode-intake-index.json>\n```\n\n## 开始前\n\n本技能可独立安装和执行。先读取用户明确提供的材料与本任务直接输入；若当前目录是\n`short-drama` 项目且项目工具可用，可以读取 `status` 并使用其发布生命周期，但缺少 core\n或任何其他技能都不是开发工作的阻断条件。[阶段契约](references/stage-contract.md) 给出\n本阶段边界、制作形态输入与规则表，无需读取其他技能的文件。\n\n## 先判断入口\n\n1. **只有想法、题材或情绪目标**：完成方向探索，再建立创作简报与故事引擎。\n2. **已有梗概、小说、改编材料或系列笔记**：保存来源并先列出已承诺事实、可改范围、\n   来源片段与待确认项。长材料先做语义分段、功能账本和候选分集，不用正则人名/名词命中\n   直接发布剧集或资产；不要偷换原意。\n3. **方向已定，只需规划分集**：读取既有简报与引擎，直接制作或修订分集地图。\n4. **已有单集剧本**：不要为了流程完整而虚构开发材料。写/改剧本交给 `$short-drama-write`；拆资产或后续制作可从相应技能直接进入。\n5. **已有多集整稿，要生成或补分集地图**：保留原文件，只加载\n   [多集整稿接入与断点续跑](references/multi-episode-intake.md)。让 Agent 按文件实际结构决定\n   边界与本轮批次；工具只做精确索引、单集切片、校验和续跑，不代写创作判断。\n\n信息足够时直接工作。只有会改变主角、冲突引擎、结局承诺或改编边界的缺口才需要提问。\n\n## 每次执行\n\n### 1. 锁定创作者契约\n\n读取创作者输入和已接受文件，区分：\n\n- 不可改的事实、主题、角色与结局承诺；\n- 可探索的空白；\n- 形式约束与制作边界；\n- 目标观众反复能获得的情绪、信息或权力回报。\n\n新项目复制 [creative-brief.md](assets/creative-brief.md)。若改动已接受事实，先展示语义差异与下游影响，不直接覆盖。\n\n### 2. 探索真正不同的方向\n\n方向未定时，提出少量**机制不同**的候选：改变主角策略、对抗来源、代价或持续冲突方式，而不只是换标题、职业和措辞。方向明确时直接深化，不为凑选项制造伪差异。\n\n每个候选都说明：戏剧承诺、主角追求、对抗机制、反复回报、可升级的状态、长线终止条件、主要制作负担。让创作者选择或组合，并记录取舍理由；未选方案不进入既定事实。\n\n需要完整方法时读取 [story-craft.md](references/story-craft.md)。题材已经确定时，可从\n[genre-cards.md](references/genre-cards.md) 按索引取**一张**题材卡，用来校准该题材更常用的\n压力来源、场面颗粒与制作负担；它是可被创作者一句话覆盖的参考，不替代方向选择，也不进入交付物。\n\n若设定里主角带着一段已经发生过的经历，或获得了一套外部授权的能力，那是叠加在题材之上的\n**前提装置**，另读 [premise-devices.md](references/premise-devices.md)——装置取消阻力，\n必须先给它边界与代价。装置不替代题材卡，也不为它单独建题材。\n\n### 3. 建立故事引擎\n\n复制 [story-engine.md](assets/story-engine.md)，写清：\n\n- 压力如何出现，主角通常如何应对；\n- 对手或系统如何反制，主角为何不能轻易退出；\n- 每轮冲突改变什么，而不是怎样重复得更响；\n- 人物各自的目标、筹码、底线和关系压力；\n- 哪种人物转变或事实揭开会终结这个引擎；\n- 视觉、声音、场景规模和内容边界。\n\n连续剧、长篇改编或人物纵向变化较重时，再读取\n[serial-character-and-memory.md](references/serial-character-and-memory.md)：先建立只供\n作者决策的前史储备，选择旧策略开始付出代价的叙事切入窗口，再记录人物被捍卫的\n信念、压力测试、信息权限和跨集记忆。不要把前史储备直接倒进首集对白。\n\n### 4. 把系列运动落到分集\n\n读取 [episode-design.md](references/episode-design.md)，再复制 [episode-map.jsonl](assets/episode-map.jsonl)。每一集记录进入状态、开场、当集追求、阻力、方向性转折、当集结果、信息释放、出去的压力以及下一集必须继承的事实。\n\n先保证每集产生局部戏剧结果、相邻集能精确交接，再讨论外部压力/情感负荷的双轨\n节奏。集数、钩子类型、是否反转和高潮位置由创作者与项目决定。\n\n### 5. 做所有者检查并交接\n\n在提交预览前检查：\n\n- 引用的集、铺垫和兑现记录可找到，未决项被明确标记；\n- 候选确实改变机制，选定方向贯穿简报、引擎与分集地图；\n- 每次升级能指出权力、信息、关系、暴露、资源、时间或代价的变化；\n- 每集先兑现一部分当集承诺，再留下具体的决定、危险或问题；\n- 没有把格式偏好冒充普遍规律。\n\n这些是所有者自检，不是终审。展示创作者可读的新增/修改摘要，请创作者接受后再作为下游来源；\n需要质量结论时，把 `$short-drama-review` 作为后续单独请求，优先由未参与当前版本创作的 reviewer 执行。\n\n若项目需要导演阐述，本技能只产出 `项目开发/director-brief.md` 候选，并标明它准备\n写入的 `visual_direction` / `production_profile` 语义差异。创作者接受后，由\n`$short-drama` 路由把选择提升到 creator authority；开发技能不直接改写该权威配置。\n\n## 规则分级\n\n- **`structural_invariant`**：本地可证明的引用、ID、显式状态矛盾；可由校验器阻断。\n- **`reviewed_invariant`**：升级是否真实、承诺是否兑现等语义义务；由 reviewer 引用证据判断。\n- **`craft_default`**：通常有帮助的做法；创作者说明理由后可覆盖。\n- **`taste_option`**：钩子、弧线、视角、结局气质等选择；不得单独阻断。\n\n不要用固定的情节点、转折时刻、篇幅比例或数量配方替代因果判断。\n\n## 产物与边界\n\n本技能只拥有：\n\n- `项目开发/creative-brief.md`\n- `项目开发/story-engine.md`\n- `项目开发/director-brief.md`（项目需要时；仅为 creator authority 候选）\n- `项目开发/adaptation-map.jsonl`（长材料改编时；只保留输入 locator/span、\n  去引用的功能摘要、候选去向与未决项，不复制原文；例见\n  [adaptation-map.example.jsonl](assets/adaptation-map.example.jsonl)）\n- `项目开发/series-arc.json`（项目需要时）\n- `项目开发/episode-intake-index.json`（多集整稿接入时；可重建的机械索引，不是创作事实）\n- `项目开发/episode-map.jsonl`\n\n它不写场景动作与台词，不拆资产，不写图片/视频提示词，不生成媒体，也不签发终审结论。剧本语义由 `$short-drama-write` 接管。\n\n## 按需加载\n\n- **承诺、引擎、人物压力、升级与铺垫兑现**：[story-craft.md](references/story-craft.md)\n- **分集契约、因果节拍、集间交接与地图修订**：[episode-design.md](references/episode-design.md)\n- **已有多集完整剧本/散稿，要避免整稿进入上下文并可中断续跑**：\n  [multi-episode-intake.md](references/multi-episode-intake.md)\n- **人物驱动力、前史与切入、跨集变化、信息权限、双轨节奏与恢复记忆**：\n  [serial-character-and-memory.md](references/serial-character-and-memory.md)\n- **有原材料、需要压缩/合并人物场景/把信息视觉化**：\n  [adaptation-craft.md](references/adaptation-craft.md)\n- **创作者提供对标作品、样例剧本或提示词，希望学习机制而非仿写表达**：\n  [creative-reference-intake.md](references/creative-reference-intake.md)\n- **单元故事里同一套机制被反复运行，或中段开始重复、越写越薄**：\n  [mechanism-loop.md](references/mechanism-loop.md)\n- **需要区分揭示、反转、回报和钩子，或按题材选压力机制**：\n  [reveal-reversal-payoff.md](references/reveal-reversal-payoff.md)\n- **按题材选择冲突推进方式、设计开场或规划集尾钩子时的定性案例方法**：\n  [genre-and-hook-playbook.md](references/genre-and-hook-playbook.md)\n- **已确定题材，需要该题材更常用的压力、场面颗粒、钩子取向与制作难点**：\n  [genre-cards.md](references/genre-cards.md)（索引与召回规范；一次只读一张卡）\n- **主角带着已知结果开局，或获得外部授权的能力**：\n  [premise-devices.md](references/premise-devices.md)（装置层，叠加在题材卡之上）\n- **起草项目级视觉方向与生产规则（导演阐述）**：\n  [director-brief-craft.md](references/director-brief-craft.md)\n- **本阶段拥有什么、继承什么、不越权什么**：[stage-contract.md](references/stage-contract.md)","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-develop","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-develop/SKILL.md","defaultBranch":"main"},"readme":"# 短剧开发\n\n把创作者的意图变成能持续制造**选择、代价与状态变化**的故事系统。保留创作者的题材、结局和尺度选择；不要把流行套路当成剧情答案。\n\n## Quick Start\n\n离线验证多集整稿的精确索引、切片和源文件变更检测：\n\n```bash\npython3 {技能目录}/scripts/selftest.py\npython3 {技能目录}/scripts/episode_intake.py index <多集整稿> --out <episode-intake-index.json>\n```\n\n## 开始前\n\n本技能可独立安装和执行。先读取用户明确提供的材料与本任务直接输入；若当前目录是\n`short-drama` 项目且项目工具可用，可以读取 `status` 并使用其发布生命周期，但缺少 core\n或任何其他技能都不是开发工作的阻断条件。[阶段契约](references/stage-contract.md) 给出\n本阶段边界、制作形态输入与规则表，无需读取其他技能的文件。\n\n## 先判断入口\n\n1. **只有想法、题材或情绪目标**：完成方向探索，再建立创作简报与故事引擎。\n2. **已有梗概、小说、改编材料或系列笔记**：保存来源并先列出已承诺事实、可改范围、\n   来源片段与待确认项。长材料先做语义分段、功能账本和候选分集，不用正则人名/名词命中\n   直接发布剧集或资产；不要偷换原意。\n3. **方向已定，只需规划分集**：读取既有简报与引擎，直接制作或修订分集地图。\n4. **已有单集剧本**：不要为了流程完整而虚构开发材料。写/改剧本交给 `$short-drama-write`；拆资产或后续制作可从相应技能直接进入。\n5. **已有多集整稿，要生成或补分集地图**：保留原文件，只加载\n   [多集整稿接入与断点续跑](references/multi-episode-intake.md)。让 Agent 按文件实际结构决定\n   边界与本轮批次；工具只做精确索引、单集切片、校验和续跑，不代写创作判断。\n\n信息足够时直接工作。只有会改变主角、冲突引擎、结局承诺或改编边界的缺口才需要提问。\n\n## 每次执行\n\n### 1. 锁定创作者契约\n\n读取创作者输入和已接受文件，区分：\n\n- 不可改的事实、主题、角色与结局承诺；\n- 可探索的空白；\n- 形式约束与制作边界；\n- 目标观众反复能获得的情绪、信息或权力回报。\n\n新项目复制 [creative-brief.md](assets/creative-brief.md)。若改动已接受事实，先展示语义差异与下游影响，不直接覆盖。\n\n### 2. 探索真正不同的方向\n\n方向未定时，提出少量**机制不同**的候选：改变主角策略、对抗来源、代价或持续冲突方式，而不只是换标题、职业和措辞。方向明确时直接深化，不为凑选项制造伪差异。\n\n每个候选都说明：戏剧承诺、主角追求、对抗机制、反复回报、可升级的状态、长线终止条件、主要制作负担。让创作者选择或组合，并记录取舍理由；未选方案不进入既定事实。\n\n需要完整方法时读取 [story-craft.md](references/story-craft.md)。题材已经确定时，可从\n[genre-cards.md](references/genre-cards.md) 按索引取**一张**题材卡，用来校准该题材更常用的\n压力来源、场面颗粒与制作负担；它是可被创作者一句话覆盖的参考，不替代方向选择，也不进入交付物。\n\n若设定里主角带着一段已经发生过的经历，或获得了一套外部授权的能力，那是叠加在题材之上的\n**前提装置**，另读 [premise-devices.md](references/premise-devices.md)——装置取消阻力，\n必须先给它边界与代价。装置不替代题材卡，也不为它单独建题材。\n\n### 3. 建立故事引擎\n\n复制 [story-engine.md](assets/story-engine.md)，写清：\n\n- 压力如何出现，主角通常如何应对；\n- 对手或系统如何反制，主角为何不能轻易退出；\n- 每轮冲突改变什么，而不是怎样重复得更响；\n- 人物各自的目标、筹码、底线和关系压力；\n- 哪种人物转变或事实揭开会终结这个引擎；\n- 视觉、声音、场景规模和内容边界。\n\n连续剧、长篇改编或人物纵向变化较重时，再读取\n[serial-character-and-memory.md](references/serial-character-and-memory.md)：先建立只供\n作者决策的前史储备，选择旧策略开始付出代价的叙事切入窗口，再记录人物被捍卫的\n信念、压力测试、信息权限和跨集记忆。不要把前史储备直接倒进首集对白。\n\n### 4. 把系列运动落到分集\n\n读取 [episode-design.md](references/episode-design.md)，再复制 [episode-map.jsonl](assets/episode-map.jsonl)。每一集记录进入状态、开场、当集追求、阻力、方向性转折、当集结果、信息释放、出去的压力以及下一集必须继承的事实。\n\n先保证每集产生局部戏剧结果、相邻集能精确交接，再讨论外部压力/情感负荷的双轨\n节奏。集数、钩子类型、是否反转和高潮位置由创作者与项目决定。\n\n### 5. 做所有者检查并交接\n\n在提交预览前检查：\n\n- 引用的集、铺垫和兑现记录可找到，未决项被明确标记；\n- 候选确实改变机制，选定方向贯穿简报、引擎与分集地图；\n- 每次升级能指出权力、信息、关系、暴露、资源、时间或代价的变化；\n- 每集先兑现一部分当集承诺，再留下具体的决定、危险或问题；\n- 没有把格式偏好冒充普遍规律。\n\n这些是所有者自检，不是终审。展示创作者可读的新增/修改摘要，请创作者接受后再作为下游来源；\n需要质量结论时，把 `$short-drama-review` 作为后续单独请求，优先由未参与当前版本创作的 reviewer 执行。\n\n若项目需要导演阐述，本技能只产出 `项目开发/director-brief.md` 候选，并标明它准备\n写入的 `visual_direction` / `production_profile` 语义差异。创作者接受后，由\n`$short-drama` 路由把选择提升到 creator authority；开发技能不直接改写该权威配置。\n\n## 规则分级\n\n- **`structural_invariant`**：本地可证明的引用、ID、显式状态矛盾；可由校验器阻断。\n- **`reviewed_invariant`**：升级是否真实、承诺是否兑现等语义义务；由 reviewer 引用证据判断。\n- **`craft_default`**：通常有帮助的做法；创作者说明理由后可覆盖。\n- **`taste_option`**：钩子、弧线、视角、结局气质等选择；不得单独阻断。\n\n不要用固定的情节点、转折时刻、篇幅比例或数量配方替代因果判断。\n\n## 产物与边界\n\n本技能只拥有：\n\n- `项目开发/creative-brief.md`\n- `项目开发/story-engine.md`\n- `项目开发/director-brief.md`（项目需要时；仅为 creator authority 候选）\n- `项目开发/adaptation-map.jsonl`（长材料改编时；只保留输入 locator/span、\n  去引用的功能摘要、候选去向与未决项，不复制原文；例见\n  [adaptation-map.example.jsonl](assets/adaptation-map.example.jsonl)）\n- `项目开发/series-arc.json`（项目需要时）\n- `项目开发/episode-intake-index.json`（多集整稿接入时；可重建的机械索引，不是创作事实）\n- `项目开发/episode-map.jsonl`\n\n它不写场景动作与台词，不拆资产，不写图片/视频提示词，不生成媒体，也不签发终审结论。剧本语义由 `$short-drama-write` 接管。\n\n## 按需加载\n\n- **承诺、引擎、人物压力、升级与铺垫兑现**：[story-craft.md](references/story-craft.md)\n- **分集契约、因果节拍、集间交接与地图修订**：[episode-design.md](references/episode-design.md)\n- **已有多集完整剧本/散稿，要避免整稿进入上下文并可中断续跑**：\n  [multi-episode-intake.md](references/multi-episode-intake.md)\n- **人物驱动力、前史与切入、跨集变化、信息权限、双轨节奏与恢复记忆**：\n  [serial-character-and-memory.md](references/serial-character-and-memory.md)\n- **有原材料、需要压缩/合并人物场景/把信息视觉化**：\n  [adaptation-craft.md](references/adaptation-craft.md)\n- **创作者提供对标作品、样例剧本或提示词，希望学习机制而非仿写表达**：\n  [creative-reference-intake.md](references/creative-refer","createdAt":"2026-09-25T11:52:14.305Z","updatedAt":"2026-09-25T11:52:14.305Z"},{"id":"cmugwi60k01swqu06dkoee6jo","slug":"zenstory-ai-drama-skills-short-drama-edit","name":"short-drama-edit","description":"将已生成的短剧镜头剪成成片，记录入出点、镜序、声音、字幕与交付规格。用于套剪、加字幕、统一响度、调整节奏或导出精修素材；需要补素材或修改故事时转回对应创作阶段。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-edit","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"将已生成的短剧镜头剪成成片，记录入出点、镜序、声音、字幕与交付规格。用于套剪、加字幕、统一响度、调整节奏或导出精修素材；需要补素材或修改故事时转回对应创作阶段。","permissions":[],"systemPrompt":"# 短剧剪辑与成片\n\n把 `剧集/<EP>/制作成果/` 里的逐镜素材装配成一条成片，取舍写进 `剧集/<EP>/剪辑单.md`。\n每段使用二级标题 `## CUT-...`，各自绑定一个 `MOTION-...` 和一个真实媒体文件。\n\n根据实际素材选择可用片段，按剧本与分镜核对叙事。素材与意图不一致时，记录取舍和缺口。\n\n## Quick Start\n\n```text\n用 $short-drama-edit 把 EP001 已生产的镜头剪成成片\n```\n\n## 入口\n\n进入条件是**素材已经存在且可读**：`剧集/<EP>/制作成果/` 里有本次要用的视频文件。\n提示词写完、job 确认过、adapter 返回成功，都不等于素材可用；本阶段只认当前能打开的文件字节。\n\n素材不全时可以先剪已有连续段落；用户要求完整成片时，将这一版标为片段并列出缺口。\n在「未采用镜头」说明缺文件、质量不可用或叙事取舍。\n\n`剧集/<EP>/分镜.md` 与 `视频提示词.md` 是镜序和职责的来源。剪辑可以**取舍**它们，不能**改写**\n它们：删一镜、缩一镜、换顺序都属于本阶段；改台词、改镜头职责、改起终状态要回上游发修订请求。\n\n内置渲染直接拼接编码后的分段，输入素材的画幅与帧率须一致。`check` 在可探测媒体时核对；\n不同规格先通过外部工具按交付要求统一，保留构图并记录裁切或留边，再更新剪辑单的路径与时间。\n\n渲染与测量需要 `ffmpeg` / `ffprobe` 在 PATH 上。没有时 `edit_tool.py` 直接失败并说明，\n不用别的手段近似，也不把「没测」写成「通过」。\n\n## 工作流\n\n1. **逐段看完整素材，先标可用带，再谈剪辑。** 每个文件从头到尾看一遍，写下它实际能用的时间\n   区间，以及区间之外发生了什么（起势静止、结尾漂移、发白、动作回弹、多余的重复表演）。\n   这一步的产出是事实，不是决定。做法见 [生成素材的可用带](references/generated-footage.md)。\n2. **有台词的镜先定位发声区间。** 保留完整字音和所需停顿。内置工具同步切画面与声音；\n   需要在连续对白上换画面时，使用外部剪辑工具分开处理。\n3. **在可用区间内选叙事入出点。** 按动作、反应或停顿的需要选择入点，出点取信息完成之后、缺陷\n   开始之前。逐段写清入点理由和出点理由。做法见 [入出点与镜序](references/cut-craft.md)。\n4. **排镜序并检查相邻关系。** 检查动作、空间、揭示与声音是否连贯；重复信息没有新增作用时再删。\n5. **比较相邻段的画面。** 按同场景、同光态比较可比区域；有可见偏差时在对应段写 `画面`。\n   做法见 [接镜与色彩一致性](references/generated-footage.md#接镜与色彩一致性)。\n6. **处理声音接缝与响度。** 拼接后回听；需要混音时通过外部工具执行并记录。\n   做法见 [声音、字幕与音乐](references/sound-and-subtitles.md)。\n7. **写字幕。** 字幕的每一个字都取自 `剧本.md` 的台词原文，不取自转写结果；标点可按字幕惯例调整，\n   字不能改。转写只用来定位时间。\n8. **写出 `剪辑单.md`，再渲染。** 先有文档后有成片：文档是可审查、可修订、可复现的那一份，\n   成片是它的产物。\n9. **按可测项验收成片，再交付。** 见 [交付与验收](references/delivery-verify.md)。\n\n## 剪辑单要求\n\n- 正文开头写交付规格：`成片目标时长`、`画幅与帧率`、`交付响度`、`字幕`。目标时长是意图，\n  实际时长与目标的差写在报告里。用户明确要求固定时长时，应满足要求或报告缺少的素材。\n- 每段一个 `## CUT-<EP>-<序号> · <中文名称>`，块内逐行写：\n\n  - `- 来源：<MOTION-...> · <项目相对路径>`——`MOTION-...` 必须是 `视频提示词.md` 里真实存在\n    的条目，路径必须是当前可读的文件。\n  - `- 入点：<秒>` / `- 出点：<秒>` / `- 时长：<秒>`——三者必须自洽，`出点 - 入点 == 时长`。\n    全部用秒，保留两位小数，不写时间码，不写帧号。\n  - `- 取舍：入点=<理由>；出点=<理由>`——理由写画面上发生了什么，不写「节奏需要」。\n    理由应能对应实际素材与本镜叙事需要。\n  - `- 声音：<本段声音怎么处理>`——记录保留原声或外部处理。此行不驱动内置 render 的混音。\n  - `- 画面：<接镜校正>` 或 `- 画面：无`——只在这一段与相邻段明显对不上时写，\n    格式是「亮度 <数>」「饱和 <数>」「色温 <数>」三项的任意组合，用 `；` 分隔。\n    详见 [接镜与色彩一致性](references/generated-footage.md#接镜与色彩一致性)。\n  - `- 字幕：<逐字台词原文>` 或 `- 字幕：无`。本段有多句台词时改用编号写法，\n    每句自带时间：`- 字幕 1：0.20-1.50 请进`、`- 字幕 2：2.30-4.30 门没有锁`。\n    编号从 1 连续，时间相对本 CUT 入点，且不得重叠。\n- 素材里没有被采用的镜头，在正文开头写一行 `- 未采用镜头：<MOTION-...>（理由：……）`，\n  多项用 `；` 连接。理由区分两类：**文件缺失**（还没生产 / 生产失败）和**质量不可用**\n  （生成结果不能用），也可说明叙事取舍。补素材前先判断需要重出还是修订上游。\n- 同一个 `MOTION-...` 可以拆成多个 `CUT-...`（同一段素材的两处分别使用），也可以整段不用。\n  不能凭空出现没有素材来源的 `CUT-...`。\n- 一段素材被用两次时，两个 `CUT-...` 的区间不得重叠：同一批帧在成片里出现两次是重复镜头，\n  不是复用。确需重复出现（闪回、强调）时写明它是有意重复，并说明第二次为什么仍然成立。\n\n## 边界\n\n- **不生成新素材。** 需要补拍、重出、换参考图，回 `$short-drama-produce`；需要改提示词，\n  回 `$short-drama-video-prompts` 或 `$short-drama-image-prompts`。\n- **不改上游语义。** 剪辑单可以让某句台词不出现在成片里（整镜未采用），不能改这句台词是什么。\n  发现剧本层面的问题就点名报告，交回 `$short-drama-write`。\n- **沿用剧本的声音设计。** 保留已有对白、VO 和 OS，不自行增加解说；需要新增叙述时回写作阶段。\n- **不把技术成功写成质量结论。** 渲染完成、时长对上、文件存在，都不是「这条片子能看」。\n  成片质量的判断交给 `$short-drama-review`，或交给创作者本人。\n- **按已授权目标完成。** 继续修复影响交付的问题；新增创作方向或补素材需求交给创作者决定。\n\n## 命令\n\n命令由 [edit_tool.py](scripts/edit_tool.py) 提供：\n\n```text\npython3 <本技能目录>/scripts/edit_tool.py check <剧集/EP001> --project-root <project>\npython3 <本技能目录>/scripts/edit_tool.py render <剧集/EP001> --project-root <project> [--no-subtitles] [--subtitles ffmpeg|remotion] [--remotion-concurrency N]\npython3 <本技能目录>/scripts/edit_tool.py verify <剧集/EP001> --project-root <project>\n```\n\n`check` 只核对不渲染：素材是否比剪辑单新（重出之后字幕时间必须重测）、区间自洽、`MOTION-...` 解析、文件存在、区间不越过素材时长、\n同源区间不重叠、字幕文字能在 `剧本.md` 里找到。其中「区间不越过素材时长」需要 `ffprobe`，\n没有时这一项报「未测」并说明原因，不静默跳过。`render` 按剪辑单切段、拼接、烧字幕、统一响度，\n输出 `剧集/<EP>/制作成果/成片/`。`verify` 只测量已经渲染出来的成片并回报数字，不改文件、\n不给质量结论。\n\n字幕默认由带 libass 的 ffmpeg 烧录。`--subtitles remotion` 换成一条排版可调的\n路线，代价是装一次 Node 依赖，而且叠层要**逐帧过无头浏览器**渲整部成片——慢且吃内存，\n并发默认压在 2（`--remotion-concurrency` 可调，调高前先量本机）。取舍见\n[声音、字幕与音乐](references/sound-and-subtitles.md)，装法见\n[Remotion 字幕叠层](assets/remotion/README.md)。\n\n`render` 保留切好的中间文件。它只切段、硬拼接、统一字幕样式、接镜校正和整片响度，\n不执行 `声音` 行中的混音方案，也不按交付规格自动缩放或改帧率。需要混音、逐镜字幕避让、\n转场或画幅转换时用外部工具完成并记录，验收实际交付文件。\n\n## 按需知识\n\n先读本 SKILL、当前分镜、视频提示词和素材；有字幕时读取剧本原文。按需要打开参考资料：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 可用带、生成缺陷与逐镜取舍：[生成素材的可用带](references/generated-footage.md)\n- 入出点、镜序与节奏：[入出点与镜序](references/cut-craft.md)\n- 声音接缝、字幕与音乐落点：[声音、字幕与音乐](references/sound-and-subtitles.md)\n- 成片可测项与验收：[交付与验收](references/delivery-verify.md)\n- 剪辑单成稿样例：[剪辑单样例](assets/剪辑单.md)\n- 可选的 Remotion 字幕排版：[Remotion 字幕叠层](assets/remotion/README.md)\n\n## 修订\n\n保留未受影响的 `CUT-...` ID。改一段的入出点不触碰其它段；删一段时说明它承担的信息由哪一段\n接住，或明确说明这条信息在成片里不再出现。重新渲染前先更新剪辑单，不要让成片领先于文档。\n\n## 完成\n\n每个 `CUT-...` 都绑定真实素材与自洽区间，台词在成片里完整可听，字幕逐字等于剧本原文，\n剪辑点没有可听的音床硬切，成片响度落在交付目标上，未采用镜头都写明理由并区分了缺文件与缺质量，\n即完成。目标时长与实际时长的差、以及仍然值得再剪一版的地方，写在末尾报告里交给创作者判断。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-edit","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-edit/SKILL.md","defaultBranch":"main"},"readme":"# 短剧剪辑与成片\n\n把 `剧集/<EP>/制作成果/` 里的逐镜素材装配成一条成片，取舍写进 `剧集/<EP>/剪辑单.md`。\n每段使用二级标题 `## CUT-...`，各自绑定一个 `MOTION-...` 和一个真实媒体文件。\n\n根据实际素材选择可用片段，按剧本与分镜核对叙事。素材与意图不一致时，记录取舍和缺口。\n\n## Quick Start\n\n```text\n用 $short-drama-edit 把 EP001 已生产的镜头剪成成片\n```\n\n## 入口\n\n进入条件是**素材已经存在且可读**：`剧集/<EP>/制作成果/` 里有本次要用的视频文件。\n提示词写完、job 确认过、adapter 返回成功，都不等于素材可用；本阶段只认当前能打开的文件字节。\n\n素材不全时可以先剪已有连续段落；用户要求完整成片时，将这一版标为片段并列出缺口。\n在「未采用镜头」说明缺文件、质量不可用或叙事取舍。\n\n`剧集/<EP>/分镜.md` 与 `视频提示词.md` 是镜序和职责的来源。剪辑可以**取舍**它们，不能**改写**\n它们：删一镜、缩一镜、换顺序都属于本阶段；改台词、改镜头职责、改起终状态要回上游发修订请求。\n\n内置渲染直接拼接编码后的分段，输入素材的画幅与帧率须一致。`check` 在可探测媒体时核对；\n不同规格先通过外部工具按交付要求统一，保留构图并记录裁切或留边，再更新剪辑单的路径与时间。\n\n渲染与测量需要 `ffmpeg` / `ffprobe` 在 PATH 上。没有时 `edit_tool.py` 直接失败并说明，\n不用别的手段近似，也不把「没测」写成「通过」。\n\n## 工作流\n\n1. **逐段看完整素材，先标可用带，再谈剪辑。** 每个文件从头到尾看一遍，写下它实际能用的时间\n   区间，以及区间之外发生了什么（起势静止、结尾漂移、发白、动作回弹、多余的重复表演）。\n   这一步的产出是事实，不是决定。做法见 [生成素材的可用带](references/generated-footage.md)。\n2. **有台词的镜先定位发声区间。** 保留完整字音和所需停顿。内置工具同步切画面与声音；\n   需要在连续对白上换画面时，使用外部剪辑工具分开处理。\n3. **在可用区间内选叙事入出点。** 按动作、反应或停顿的需要选择入点，出点取信息完成之后、缺陷\n   开始之前。逐段写清入点理由和出点理由。做法见 [入出点与镜序](references/cut-craft.md)。\n4. **排镜序并检查相邻关系。** 检查动作、空间、揭示与声音是否连贯；重复信息没有新增作用时再删。\n5. **比较相邻段的画面。** 按同场景、同光态比较可比区域；有可见偏差时在对应段写 `画面`。\n   做法见 [接镜与色彩一致性](references/generated-footage.md#接镜与色彩一致性)。\n6. **处理声音接缝与响度。** 拼接后回听；需要混音时通过外部工具执行并记录。\n   做法见 [声音、字幕与音乐](references/sound-and-subtitles.md)。\n7. **写字幕。** 字幕的每一个字都取自 `剧本.md` 的台词原文，不取自转写结果；标点可按字幕惯例调整，\n   字不能改。转写只用来定位时间。\n8. **写出 `剪辑单.md`，再渲染。** 先有文档后有成片：文档是可审查、可修订、可复现的那一份，\n   成片是它的产物。\n9. **按可测项验收成片，再交付。** 见 [交付与验收](references/delivery-verify.md)。\n\n## 剪辑单要求\n\n- 正文开头写交付规格：`成片目标时长`、`画幅与帧率`、`交付响度`、`字幕`。目标时长是意图，\n  实际时长与目标的差写在报告里。用户明确要求固定时长时，应满足要求或报告缺少的素材。\n- 每段一个 `## CUT-<EP>-<序号> · <中文名称>`，块内逐行写：\n\n  - `- 来源：<MOTION-...> · <项目相对路径>`——`MOTION-...` 必须是 `视频提示词.md` 里真实存在\n    的条目，路径必须是当前可读的文件。\n  - `- 入点：<秒>` / `- 出点：<秒>` / `- 时长：<秒>`——三者必须自洽，`出点 - 入点 == 时长`。\n    全部用秒，保留两位小数，不写时间码，不写帧号。\n  - `- 取舍：入点=<理由>；出点=<理由>`——理由写画面上发生了什么，不写「节奏需要」。\n    理由应能对应实际素材与本镜叙事需要。\n  - `- 声音：<本段声音怎么处理>`——记录保留原声或外部处理。此行不驱动内置 render 的混音。\n  - `- 画面：<接镜校正>` 或 `- 画面：无`——只在这一段与相邻段明显对不上时写，\n    格式是「亮度 <数>」「饱和 <数>」「色温 <数>」三项的任意组合，用 `；` 分隔。\n    详见 [接镜与色彩一致性](references/generated-footage.md#接镜与色彩一致性)。\n  - `- 字幕：<逐字台词原文>` 或 `- 字幕：无`。本段有多句台词时改用编号写法，\n    每句自带时间：`- 字幕 1：0.20-1.50 请进`、`- 字幕 2：2.30-4.30 门没有锁`。\n    编号从 1 连续，时间相对本 CUT 入点，且不得重叠。\n- 素材里没有被采用的镜头，在正文开头写一行 `- 未采用镜头：<MOTION-...>（理由：……）`，\n  多项用 `；` 连接。理由区分两类：**文件缺失**（还没生产 / 生产失败）和**质量不可用**\n  （生成结果不能用），也可说明叙事取舍。补素材前先判断需要重出还是修订上游。\n- 同一个 `MOTION-...` 可以拆成多个 `CUT-...`（同一段素材的两处分别使用），也可以整段不用。\n  不能凭空出现没有素材来源的 `CUT-...`。\n- 一段素材被用两次时，两个 `CUT-...` 的区间不得重叠：同一批帧在成片里出现两次是重复镜头，\n  不是复用。确需重复出现（闪回、强调）时写明它是有意重复，并说明第二次为什么仍然成立。\n\n## 边界\n\n- **不生成新素材。** 需要补拍、重出、换参考图，回 `$short-drama-produce`；需要改提示词，\n  回 `$short-drama-video-prompts` 或 `$short-drama-image-prompts`。\n- **不改上游语义。** 剪辑单可以让某句台词不出现在成片里（整镜未采用），不能改这句台词是什么。\n  发现剧本层面的问题就点名报告，交回 `$short-drama-write`。\n- **沿用剧本的声音设计。** 保留已有对白、VO 和 OS，不自行增加解说；需要新增叙述时回写作阶段。\n- **不把技术成功写成质量结论。** 渲染完成、时长对上、文件存在，都不是「这条片子能看」。\n  成片质量的判断交给 `$short-drama-review`，或交给创作者本人。\n- **按已授权目标完成。** 继续修复影响交付的问题；新增创作方向或补素材需求交给创作者决定。\n\n## 命令\n\n命令由 [edit_tool.py](scripts/edit_tool.py) 提供：\n\n```text\npython3 <本技能目录>/scripts/edit_tool.py check <剧集/EP001> --project-root <project>\npython3 <本技能目录>/scripts/edit_tool.py render <剧集/EP001> --project-root <project> [--no-subtitles] [--subtitles ffmpeg|remotion] [--remotion-concurrency N]\npython3 <本技能目录>/scripts/edit_tool.py verify <剧集/EP001> --project-root <project>\n```\n\n`check` 只核对不渲染：素材是否比剪辑单新（重出之后字幕时间必须重测）、区间自洽、`MOTION-...` 解析、文件存在、区间不越过素材时长、\n同源区间不重叠、字幕文字能在 `剧本.md` 里找到。其中「区间不越过素材时长」需要 `ffprobe`，\n没有时这一项报「未测」并说明原因，不静默跳过。`render` 按剪辑单切段、拼接、烧字幕、统一响度，\n输出 `剧集/<EP>/制作成果/成片/`。`verify` 只测量已经渲染出来的成片并回报数字，不改文件、\n不给质量结论。\n\n字幕默认由带 libass 的 ffmpeg 烧录。`--subtitles remotion` 换成一条排版可调的\n路线，代价是装一次 Node 依赖，而且叠层要**逐帧过无头浏览器**渲整部成片——慢且吃内存，\n并发默认压在 2（`--remotion-concurrency` 可调，调高前先量本机）。取舍见\n[声音、字幕与音乐](references/sound-and-subtitles.md)，装法见\n[Remotion 字幕叠层](assets/remotion/README.md)。\n\n`render` 保留切好的中间文件。它只切段、硬拼接、统一字幕样式、接镜校正和整片响度，\n不执行 `声音` 行中的混音方案，也不按交付规格自动缩放或改帧率。需要混音、逐镜","createdAt":"2026-09-25T11:52:14.324Z","updatedAt":"2026-09-25T11:52:14.324Z"},{"id":"cmugwi61101szqu06p21hjri7","slug":"zenstory-ai-drama-skills-short-drama-image-prompts","name":"short-drama-image-prompts","description":"为短剧人物、造型、地点、道具和状态编写或修改可直接复制的图片提示词 Markdown。用户提到角色设定图、三视图、参考图、场景板、道具图、风格帧、Look Development、状态变体或局部编辑提示词时使用；不生成图片，也不调用供应商。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-image-prompts","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"为短剧人物、造型、地点、道具和状态编写或修改可直接复制的图片提示词 Markdown。用户提到角色设定图、三视图、参考图、场景板、道具图、风格帧、Look Development、状态变体或局部编辑提示词时使用；不生成图片，也不调用供应商。","permissions":[],"systemPrompt":"# 短剧资产图片提示词\n\n把视觉事实写成可复用、可修改、可直接复制的角色板、场景板、道具板或状态图提示词，统一保存到\n`剧集/<EP>/图片提示词.md`。每项用 `IMG-...` 标题，正文放在 `### 可复制提示词` 引用块。\n`IMG-...` 只是该提示词条目的稳定 ID，不声明图片已生成或可用；实际图片只能来自创作者已提供的输入，或经确认后的生产结果。\n\n## Quick Start\n\n```text\n用 $short-drama-image-prompts 为 EP001 已确定的人物、地点和道具写可直接复制的图片提示词\n```\n\n## 入口\n\n有当前视觉设定即可直接开始；剧本只在提示词需要确认剧情状态时读取。Look Development 是可选分支。\n先确认用途：身份板、造型/状态变体、地点板、道具板、组合 production sheet 或比较风格帧。\n分镜需要生产尾帧时，可把已接受的「收尾关键帧提示词」落实为独立 `IMG-...` 状态图条目：\n说明来源 SHOT 与终点，沿用视觉事实和参考范围，不重新设计动作。实际生成以该 IMG 条目为来源。\n\n创作者可读说明跟随项目语言；可复制正文跟随 `short-drama.json#/format/prompt_language`。没有\n`short-drama.json` 时正文默认\n使用 `en`，并在同一任务中保持一致；不能从创作者说明语言推断提示词语言。\n\n## 工作流\n\n1. 锁定这一张图要固定的身份、状态、空间或比较变量。\n2. 只读所需资产事实、视觉方向、负面约束和已提供参考图。\n3. 按“主体与身份锚点 → 当前变体 → 构图/视角 → 光色/材质 → 背景边界 → 禁止项”写正文。\n4. 每张参考只控制身份、造型、地理、构图或风格中的明确部分，并在 `REF-...` 槽位里写出封闭词表中的 `用途`。\n5. 检查身份与变体、文字政策、视角和光线是否冲突。\n6. 用户要全部资产就完成全部，资产组只是内部批次。\n\n## 提示词要求\n\n- 开头先写对象和用途，不用风格词淹没身份。\n- 只包含当前图能同时满足的要求；多视图/状态对照写清版面关系。\n- 保留稳定识别锚点，变体只改允许变化的部分。\n- 被《视觉设定.md》连续性锁点名的条目，锁面原样出现在可复制正文里，让这张参考图本身就把跨镜事实定住。\n- 避免无验证作用的质量词堆砌。\n- 可见文字、logo、水印、界面和字幕明确允许或禁止。\n- 正文可直接复制，不含占位符、流程说明、文件路径或 QA 结论。\n\n## 按需知识\n\n默认只读本 SKILL 和当前视觉设定。遇到对应问题时只打开一份：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 普通单图的最小配方：[通用配方](references/common-recipe.md)\n- 人物身份板与造型一致性：[人物与造型](references/character-and-look.md)\n- 地点地理、视角和光线：[地点板](references/location-plate.md)\n- 功能道具、尺度、材质与文字：[道具板](references/prop-plate.md)\n- 造型和状态变体：[造型与状态变体](references/look-and-state-variant.md)\n- 多对象组合板：[Production Sheet 配方](references/production-sheet-recipes.md)\n- 比较视觉方向的代表帧：[Lookdev 风格帧](references/lookdev-frame.md)\n- 局部修改和 preserve set：[定点修改](references/edit-and-revision.md)\n- 完成前的可生成性检查：[审查与示例](references/review-and-fixtures.md)\n\n## 完成与投产\n\n每个点名对象都有明确用途、可复制正文、参考边界和禁止项，且相互不矛盾，即完成。本次请求同时\n修改图片提示词与分镜时，当轮刷新受影响镜头的「图片提示词项」，不另建对账产物。实际生成必须\n转 `$short-drama-produce`，展示精确任务并取得显式确认；本技能不调用外部服务。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-image-prompts","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-image-prompts/SKILL.md","defaultBranch":"main"},"readme":"# 短剧资产图片提示词\n\n把视觉事实写成可复用、可修改、可直接复制的角色板、场景板、道具板或状态图提示词，统一保存到\n`剧集/<EP>/图片提示词.md`。每项用 `IMG-...` 标题，正文放在 `### 可复制提示词` 引用块。\n`IMG-...` 只是该提示词条目的稳定 ID，不声明图片已生成或可用；实际图片只能来自创作者已提供的输入，或经确认后的生产结果。\n\n## Quick Start\n\n```text\n用 $short-drama-image-prompts 为 EP001 已确定的人物、地点和道具写可直接复制的图片提示词\n```\n\n## 入口\n\n有当前视觉设定即可直接开始；剧本只在提示词需要确认剧情状态时读取。Look Development 是可选分支。\n先确认用途：身份板、造型/状态变体、地点板、道具板、组合 production sheet 或比较风格帧。\n分镜需要生产尾帧时，可把已接受的「收尾关键帧提示词」落实为独立 `IMG-...` 状态图条目：\n说明来源 SHOT 与终点，沿用视觉事实和参考范围，不重新设计动作。实际生成以该 IMG 条目为来源。\n\n创作者可读说明跟随项目语言；可复制正文跟随 `short-drama.json#/format/prompt_language`。没有\n`short-drama.json` 时正文默认\n使用 `en`，并在同一任务中保持一致；不能从创作者说明语言推断提示词语言。\n\n## 工作流\n\n1. 锁定这一张图要固定的身份、状态、空间或比较变量。\n2. 只读所需资产事实、视觉方向、负面约束和已提供参考图。\n3. 按“主体与身份锚点 → 当前变体 → 构图/视角 → 光色/材质 → 背景边界 → 禁止项”写正文。\n4. 每张参考只控制身份、造型、地理、构图或风格中的明确部分，并在 `REF-...` 槽位里写出封闭词表中的 `用途`。\n5. 检查身份与变体、文字政策、视角和光线是否冲突。\n6. 用户要全部资产就完成全部，资产组只是内部批次。\n\n## 提示词要求\n\n- 开头先写对象和用途，不用风格词淹没身份。\n- 只包含当前图能同时满足的要求；多视图/状态对照写清版面关系。\n- 保留稳定识别锚点，变体只改允许变化的部分。\n- 被《视觉设定.md》连续性锁点名的条目，锁面原样出现在可复制正文里，让这张参考图本身就把跨镜事实定住。\n- 避免无验证作用的质量词堆砌。\n- 可见文字、logo、水印、界面和字幕明确允许或禁止。\n- 正文可直接复制，不含占位符、流程说明、文件路径或 QA 结论。\n\n## 按需知识\n\n默认只读本 SKILL 和当前视觉设定。遇到对应问题时只打开一份：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 普通单图的最小配方：[通用配方](references/common-recipe.md)\n- 人物身份板与造型一致性：[人物与造型](references/character-and-look.md)\n- 地点地理、视角和光线：[地点板](references/location-plate.md)\n- 功能道具、尺度、材质与文字：[道具板](references/prop-plate.md)\n- 造型和状态变体：[造型与状态变体](references/look-and-state-variant.md)\n- 多对象组合板：[Production Sheet 配方](references/production-sheet-recipes.md)\n- 比较视觉方向的代表帧：[Lookdev 风格帧](references/lookdev-frame.md)\n- 局部修改和 preserve set：[定点修改](references/edit-and-revision.md)\n- 完成前的可生成性检查：[审查与示例](references/review-and-fixtures.md)\n\n## 完成与投产\n\n每个点名对象都有明确用途、可复制正文、参考边界和禁止项，且相互不矛盾，即完成。本次请求同时\n修改图片提示词与分镜时，当轮刷新受影响镜头的「图片提示词项」，不另建对账产物。实际生成必须\n转 `$short-drama-produce`，展示精确任务并取得显式确认；本技能不调用外部服务。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","createdAt":"2026-09-25T11:52:14.341Z","updatedAt":"2026-09-25T11:52:14.341Z"},{"id":"cmugwi61p01t2qu067lmzh2vq","slug":"zenstory-ai-drama-skills-short-drama-novel-analyze","name":"short-drama-novel-analyze","description":"把长篇小说、连载网文或多集散稿拆成可追溯的原著分析：章节索引、改编价值快评、逐章功能提取、剧情单元与节奏聚合、人物与设定归并，最后给出改编价值判定与分集候选，交给 $short-drama-develop 立契约。用户说“导入这本小说”“拆这本书”“分析原著”“这本书能不能改短剧”“先看看值不值得拆”“把长篇拆成分集候选”，或直接给出小说文件路径时使用。只做只读的结构化分析，不写剧本、不建资产、不生成媒体，也不替创作者决定改编方案。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-novel-analyze","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"把长篇小说、连载网文或多集散稿拆成可追溯的原著分析：章节索引、改编价值快评、逐章功能提取、剧情单元与节奏聚合、人物与设定归并，最后给出改编价值判定与分集候选，交给 $short-drama-develop 立契约。用户说“导入这本小说”“拆这本书”“分析原著”“这本书能不能改短剧”“先看看值不值得拆”“把长篇拆成分集候选”，或直接给出小说文件路径时使用。只做只读的结构化分析，不写剧本、不建资产、不生成媒体，也不替创作者决定改编方案。","permissions":[],"systemPrompt":"# 长篇原著分析\n\n把一部长材料变成**能被引用、能被反驳、能被接着用**的分析层。目标不是复述剧情，而是找出\n每一段承担的戏剧功能，并说明它在竖屏短剧里值多少钱。\n\n分析永远是候选。哪条线保留、哪些人合并、从哪里开篇，是创作者的决定，由\n`$short-drama-develop` 立成改编契约。本技能不替它决定，也不批准自己的产物。\n\n## Quick Start\n\n离线验证章节索引、采样和源文件变更检测：\n\n```bash\npython3 {技能目录}/scripts/selftest.py\npython3 {技能目录}/scripts/novel_index.py index <原著.txt> --out <chapter-index.json>\n```\n\n## 开始前\n\n本技能可独立安装和执行。先读取用户明确提供的原著与本任务直接输入；若当前目录是\n`short-drama` 项目且项目工具可用，可以读取 `status` 并使用其发布生命周期，但缺少 core\n或任何其他技能都不是分析工作的阻断条件。完整边界与规则见\n[阶段契约](references/stage-contract.md)，无需读取其他技能的文件。\n\n## 材料前提\n\n只分析创作者**合法持有、拥有使用权**的作品。分析是只读的转化性工作：提取结构与功能，\n不复制原文成段落，不把原句搬进下游产物。\n\n通俗题材里的暴力、复仇、背叛、情爱张力与黑暗伦理是常规虚构叙事元素，照常做结构化提取。\n个别片段无法处理时跳过该段并记录，不要因此中止整章或整本——中止会让后续所有阶段拿到\n一份有洞却看不出洞在哪的分析。\n\n## 先判断入口\n\n1. **只有书名，没有原文**：请创作者提供文件路径或粘贴正文。不要凭书名回忆情节——\n   没有字节就没有 span，没有 span 的分析无法被引用，也无法被反驳。\n2. **有原文，未建项目**：直接建立一个本技能自己的工作区，至少包含只读输入目录\n   `输入/` 与输出目录 `项目开发/source-analysis/_work/`；把原文字节复制到 `输入/` 后记录\n   原始文件位置，再用本技能的 `novel_index.py` 建索引。若 `$short-drama` 可用，可选用它\n   初始化同样的目录和发布生命周期，但不得把 core 安装变成开始分析的前提。\n3. **有原文，项目已在**：直接进入管道。\n4. **已有部分分析**：读 `项目开发/source-analysis/_progress.md` 从断点续跑，\n   不重跑已完成阶段。\n\n## 管道\n\n`输入/` 是不可变的创作者输入，本阶段只读它。全部产出落在 `项目开发/source-analysis/`。\n独立工作区与完整项目使用同一套相对路径，因此后续安装 core 时无需迁移分析产物。\n\n| 阶段 | 做什么 | 产出 | 停靠 |\n|---|---|---|---|\n| S0 | 建章节索引（脚本） | `_index.json`、`_progress.md` | 索引有问题就停 |\n| S1 | 改编价值快评（抽样） | `triage.md` | **停靠问创作者** |\n| S2 | 逐章功能提取 | `chapters/ch-<N>-extract.md` | 覆盖率不足就停 |\n| S3 | 剧情单元与节奏聚合 | `story-units.md`、`rhythm-and-emotion.md` | 阈值不达标就复核 |\n| S4 | 人物归并与设定 | `characters.md`、`world.md` | — |\n| S5 | 改编价值与分集候选 | `adaptation-value.md`、`episode-candidates.jsonl` | 交接 develop |\n\n### S0 章节索引\n\n索引是**唯一切片真源**，由 [章节索引脚本](scripts/novel_index.py) 建立。每个阶段各跑\n一次正则，就会切出互相对不上的章节，第 47 章按一种边界分析、按另一种边界聚合，\n而且没有人会发现。\n\n```bash\npython3 {技能目录}/scripts/novel_index.py index 输入/{原文文件} \\\n  --out 项目开发/source-analysis/_work/_index.next.json\npython3 {技能目录}/scripts/novel_index.py verify \\\n  项目开发/source-analysis/_work/_index.next.json 输入/{原文文件}\n# 项目工具可用时可选：\npython3 {core 技能目录}/scripts/project_tool.py publish {项目根} \\\n  --owner short-drama-novel-analyze --artifact-id source-analysis:index \\\n  --output 项目开发/source-analysis/_index.json=项目开发/source-analysis/_work/_index.next.json \\\n  --input 输入/{原文文件}\n```\n\n脚本识别阿拉伯数字与中文数字章号（含 千 / 两，覆盖千章以上连载），**只认一种编号单位**\n（章/回/节里出现最多的那个，其余记进 `ignored_heading_units`），只把**短的独立行**当标题\n（以章号开头的正文段落记进 `long_heading_lines_skipped`），剔除开头的目录块，\n按卷分段校验编号。它**不做编辑判断**——哪章重要、\n讲了什么，是后面阶段的事。\n\n`problems` 非空就停下报告，不要带着错表进 S1。常见四种：章号跳号（缺章或抓错标题）、\n同卷内重号、正文极少的章（多半抓到了目录残留或卷首页）、无法解析的章号。\n另外确认三个计数：`chapter_unit` 与 `ignored_heading_units`——一本用 `第N章` 分章、\n用 `第N节` 分小节的书应当看到 `chapter_unit: 章` 且 `节` 被记入忽略计数，反过来说明分章单位\n判断错了；`long_heading_lines_skipped` 明显偏大时，多半是这本书的章节标题确实很长，\n需要与创作者确认后手写边界。\n\n原文本身没有章节标题时索引会返回空表，此时与创作者确认按什么切分，把边界写进\n`_work/_index.next.json`，通过 `verify` 后再按上面的公开生命周期发布——手写的行也要带齐\n`sequence` / `line_start` / `line_end`，`verify` 会逐行检查并报出缺字段的行。\n\n改了原文必须重建索引，不能沿用旧 span。`verify` 核对编号、顺序与行号覆盖，所以插行删行会被报出来；\n但同行数的原地改写不会——那一步靠改原文的人自己重建，套件不比对字节。\n\n```bash\npython3 {技能目录}/scripts/novel_index.py verify \\\n  项目开发/source-analysis/_index.json 输入/{原文文件}\n```\n\n### S1 改编价值快评\n\n回答**这本书值不值得花全量拆解的成本**。判据是全书的改编密度——`screen_ready` 单元占多少、\n`prose_only` 占多少、制作负担压在哪几段——所以快评横跨整本书，用脚本抽样：\n\n```bash\npython3 {技能目录}/scripts/novel_index.py sample \\\n  项目开发/source-analysis/_index.json --count 12\n```\n\n抽样确定、可复现、首尾必取，跑第二次引用的是同一批章。按\n[改编价值快评](references/adaptation-triage.md) 写 `triage.md`，覆盖六件事：\n故事框架、三类判定比例、开篇替换点、制作负担量级、最大的三处改编风险、分集候选量级。\n第一行写覆盖率（脚本返回的 `coverage_ratio`），所有结论限于抽样范围。\n\n**这里停靠问创作者**：给出快评与全量拆解的预计耗时（按章数粗估），问是否继续。\n创作者一开始就明确说「一次跑完」时仍写 `triage.md`，但不停下等待——它是 S5 要回填\n对照的第一版假设。\n\n停靠时把 `_progress.md` 的状态写成 `paused_after_triage`，断点写「下一步：S2 逐章提取」。\n\nS1–S5 的 Agent 创作产物同样先写到 `source-analysis/_work/`，完成本阶段机械检查后再发布到\n上表中的正式路径。项目工具可用时用 `project_tool.py publish` 和稳定 artifact-id；独立运行时\n原子替换正式文件。不要用半成品覆盖 `_index.json`、`_progress.md`、`chapters/*.md` 或聚合产物。\n`_work/` 是候选工作区，不是权威分析层，也不进入交付包。\n\n**并发子代理写 `_work/`，主线程发布到正式路径**。子代理只落\n`_work/chapters/ch-<N>-extract.md`，主线程跑完机械自检后再发布到 `chapters/`。\n覆盖率闸门按正式路径 `chapters/` 匹配文件名——发布之前跑，每一章都会进\n`unmatched_files`，那不是缺陷，只是跑早了。\n\n`_progress.md` 每个阶段都会重写，而发布要求一个路径只有一个 owner，所以它用一个固定\nartifact-id：`source-analysis:progress`，owner 是 `short-drama-novel-analyze`，\nS0–S5 每次停靠都用同一个 id 重新发布。\n\n### S2 逐章功能提取\n\n按 [章节提取](references/chapter-extraction.md) 处理每一章。能并发子代理就分批并发\n（每批 5–8 章，等一批落盘再发下一批），不支持就串行——两条路径的写法要求和自检是同一份，\n只是速度不同。\n\n每章提取完落到 `chapters/ch-<N>-extract.md`，`<N>` 是索引里的 `sequence`，不是原文章号\n（多卷书的原文章号会重复，sequence 不会）。全部落盘后跑覆盖率：\n\n```bash\npython3 {技能目录}/scripts/novel_index.py coverage \\\n  项目开发/source-analysis/_index.json 项目开发/source-analysis/chapters\n```\n\n`missing` 非空就补跑缺的章；`unmatched_files` 非空说明有文件名写歪了——它既不算覆盖，\n也不会被当成缺章，必须改名而不是重跑。**不要在覆盖率不足时进入 S3**——聚合会照样产出\n一份读起来完整的结果，而缺掉的章不会在任何地方留下痕迹。\n\n单章连续失败两次就标记跳过，写进 `_progress.md` 的失败记录，并在后续每一份聚合产物里\n注明该章缺失。失败可以接受，失败被藏起来不行。\n\n### S3 剧情单元与节奏\n\n从逐章提取聚合，不回头重读原文——原文已经在 S2 被读过一次，再读一次只会得到第二份互相\n矛盾的事实。按 [聚合与实体](references/aggregation-and-entities.md) 先识别故事框架\n（框架决定按什么切单元），再产出：\n\n- `story-units.md`：把情节点归成有始有终的单元，每个单元记录进入状态、冲突、代价与出去状态；\n- `rhythm-and-emotion.md`：关键信息如何逐章推进、情绪触动点的铺垫→释放→余波、\n  跨章伏笔与兑现。\n\n聚合完成后跑同一文件里的三条阈值自检（归属置信、覆盖率、重叠率）与散落情节兜底。\n阈值不是评分，是**边界模糊的信号**：重叠率过高说明两个单元其实是一个。\n\n### S4 人物与设定\n\n按 [聚合与实体](references/aggregation-and-entities.md) 归并人物（跨章去重、别名归一、\n分级），并从提及数据归纳世界规则、力量体系与势力。别名只有专名与有同指证据的绰号能合并，\n描述性称谓与头衔**永远不触发合并**。\n\n**人物归并是候选，不是资产**。 这里的人物条目带 `unresolved` 与来源引用，\n交给 `$short-drama-develop` 定改编决定、`$short-drama-write` 写进剧本之后，\n才由 `$short-drama-assets` 从已接受剧本建立真正的资产身份。绕过这条链直接建资产，\n等于让原著的人物表冒充剧本的出现证据。\n\n### S5 改编价值与分集候选\n\n这是本技能与通用拆书的分水岭。按 [改编价值](references/adaptation-value.md) 产出：\n\n- `adaptation-value.md`：哪些单元在竖屏短剧里能直接成立、哪些要换载体、哪些是纯文字快感\n  （内心戏、叙述性诡计、长铺垫）在画面上无法兑现；制作负担落在哪里。\n- `episode-candidates.jsonl`：按**局部戏剧结果与精确交接**切出的候选集，不按章号或字数\n  平均切。每条带来源 span、承担的功能、以及未决项。\n\n同时**回填快评**：S1 的哪几条判断被全量结果推翻了，写进 `adaptation-value.md` 的开头。\n一个抽样结论被证伪，比它被悄悄忘掉有用得多——下一本书的快评会因此更准。\n\n样例见 [分集候选样例](assets/episode-candidate.example.jsonl)。\n\n### 交接\n\nS5 完成后展示创作者可读的摘要，说明：拆了多少章、跳过哪些、分了多少个候选集、\n最大的三处改编风险、以及快评里被推翻的判断。然后交给 `$short-drama-develop`——\n由它把候选变成 `项目开发/adaptation-map.jsonl` 与改编契约。\n\n**本技能不写 `adaptation-map.jsonl`**，那是 develop 的产物。需要质量结论时交给独立的\n`$short-drama-review`（范围 `source_analysis`）。\n\n## 规则分级\n\n- **`structural_invariant`**：索引与 span 的可证明性、引用完整性、覆盖率。可由脚本阻断。\n- **`reviewed_invariant`**：功能提取是否忠于原文、归并是否保住戏剧作用等语义义务。\n- **`craft_default`**：通常有帮助的做法；创作者说明理由后可覆盖。\n- **`taste_option`**：从哪里开篇、保留哪条线等选择；不得单独阻断。\n\n不要用固定的章数配方、情节点数量或篇幅比例替代因果判断。\n\n## 产物与边界\n\n本技能只拥有 `项目开发/source-analysis/` 下的文件：`_index.json`、`_progress.md`、\n`chapters/*.md`、`triage.md`、`story-units.md`、`rhythm-and-emotion.md`、\n`characters.md`、`world.md`、`adaptation-value.md`、`episode-candidates.jsonl`。\n\n它不改写 `输入/`，不写 `项目开发/` 下其他技能的产物，不建资产、不写场景与台词、\n不写提示词、不生成媒体，也不签发终审结论。\n\n**不把原文成段复制进分析**。记录 locator、span 与去引用的功能摘要；需要证据时引用\n最短的必要片段。交付包不得把原始材料带出边界。\n\n## 语言\n\n分析产物是创作者读的：项目内跟随 `short-drama.json#/language`，独立运行时跟随用户使用的\n语言，不在本技能内硬编码语言。本技能不产生提示词正文，与\n`#/format/prompt_language` 无关。\n\n## 按需加载\n\n- **快评读哪些章、写哪六件事、怎么不冒充全量分析**：[改编价值快评](references/adaptation-triage.md)\n- **逐章提取写法、白描与叙事框架词的界线、机械自检、并发与串行**：[章节提取](references/chapter-extraction.md)\n- **故事框架、剧情单元、节奏情绪、人物归并、阈值与散落兜底**：[聚合与实体](references/aggregation-and-entities.md)\n- **改编价值评估、载体替换与分集候选切法**：[改编价值](references/adaptation-value.md)\n- **本阶段拥有什么、继承什么、不越权什么**：[阶段契约](references/stage-contract.md)","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-novel-analyze","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-novel-analyze/SKILL.md","defaultBranch":"main"},"readme":"# 长篇原著分析\n\n把一部长材料变成**能被引用、能被反驳、能被接着用**的分析层。目标不是复述剧情，而是找出\n每一段承担的戏剧功能，并说明它在竖屏短剧里值多少钱。\n\n分析永远是候选。哪条线保留、哪些人合并、从哪里开篇，是创作者的决定，由\n`$short-drama-develop` 立成改编契约。本技能不替它决定，也不批准自己的产物。\n\n## Quick Start\n\n离线验证章节索引、采样和源文件变更检测：\n\n```bash\npython3 {技能目录}/scripts/selftest.py\npython3 {技能目录}/scripts/novel_index.py index <原著.txt> --out <chapter-index.json>\n```\n\n## 开始前\n\n本技能可独立安装和执行。先读取用户明确提供的原著与本任务直接输入；若当前目录是\n`short-drama` 项目且项目工具可用，可以读取 `status` 并使用其发布生命周期，但缺少 core\n或任何其他技能都不是分析工作的阻断条件。完整边界与规则见\n[阶段契约](references/stage-contract.md)，无需读取其他技能的文件。\n\n## 材料前提\n\n只分析创作者**合法持有、拥有使用权**的作品。分析是只读的转化性工作：提取结构与功能，\n不复制原文成段落，不把原句搬进下游产物。\n\n通俗题材里的暴力、复仇、背叛、情爱张力与黑暗伦理是常规虚构叙事元素，照常做结构化提取。\n个别片段无法处理时跳过该段并记录，不要因此中止整章或整本——中止会让后续所有阶段拿到\n一份有洞却看不出洞在哪的分析。\n\n## 先判断入口\n\n1. **只有书名，没有原文**：请创作者提供文件路径或粘贴正文。不要凭书名回忆情节——\n   没有字节就没有 span，没有 span 的分析无法被引用，也无法被反驳。\n2. **有原文，未建项目**：直接建立一个本技能自己的工作区，至少包含只读输入目录\n   `输入/` 与输出目录 `项目开发/source-analysis/_work/`；把原文字节复制到 `输入/` 后记录\n   原始文件位置，再用本技能的 `novel_index.py` 建索引。若 `$short-drama` 可用，可选用它\n   初始化同样的目录和发布生命周期，但不得把 core 安装变成开始分析的前提。\n3. **有原文，项目已在**：直接进入管道。\n4. **已有部分分析**：读 `项目开发/source-analysis/_progress.md` 从断点续跑，\n   不重跑已完成阶段。\n\n## 管道\n\n`输入/` 是不可变的创作者输入，本阶段只读它。全部产出落在 `项目开发/source-analysis/`。\n独立工作区与完整项目使用同一套相对路径，因此后续安装 core 时无需迁移分析产物。\n\n| 阶段 | 做什么 | 产出 | 停靠 |\n|---|---|---|---|\n| S0 | 建章节索引（脚本） | `_index.json`、`_progress.md` | 索引有问题就停 |\n| S1 | 改编价值快评（抽样） | `triage.md` | **停靠问创作者** |\n| S2 | 逐章功能提取 | `chapters/ch-<N>-extract.md` | 覆盖率不足就停 |\n| S3 | 剧情单元与节奏聚合 | `story-units.md`、`rhythm-and-emotion.md` | 阈值不达标就复核 |\n| S4 | 人物归并与设定 | `characters.md`、`world.md` | — |\n| S5 | 改编价值与分集候选 | `adaptation-value.md`、`episode-candidates.jsonl` | 交接 develop |\n\n### S0 章节索引\n\n索引是**唯一切片真源**，由 [章节索引脚本](scripts/novel_index.py) 建立。每个阶段各跑\n一次正则，就会切出互相对不上的章节，第 47 章按一种边界分析、按另一种边界聚合，\n而且没有人会发现。\n\n```bash\npython3 {技能目录}/scripts/novel_index.py index 输入/{原文文件} \\\n  --out 项目开发/source-analysis/_work/_index.next.json\npython3 {技能目录}/scripts/novel_index.py verify \\\n  项目开发/source-analysis/_work/_index.next.json 输入/{原文文件}\n# 项目工具可用时可选：\npython3 {core 技能目录}/scripts/project_tool.py publish {项目根} \\\n  --owner short-drama-novel-analyze --artifact-id source-analysis:index \\\n  --output 项目开发/source-analysis/_index.json=项目开发/source-analysis/_work/_index.next.json \\\n  --input 输入/{原文文件}\n```\n\n脚本识别阿拉伯数字与中文数字章号（含 千 / 两，覆盖千章以上连载），**只认一种编号单位**\n（章/回/节里出现最多的那个，其余记进 `ignored_heading_units`），只把**短的独立行**当标题\n（以章号开头的正文段落记进 `long_heading_lines_skipped`），剔除开头的目录块，\n按卷分段校验编号。它**不做编辑判断**——哪章重要、\n讲了什么，是后面阶段的事。\n\n`problems` 非空就停下报告，不要带着错表进 S1。常见四种：章号跳号（缺章或抓错标题）、\n同卷内重号、正文极少的章（多半抓到了目录残留或卷首页）、无法解析的章号。\n另外确认三个计数：`chapter_unit` 与 `ignored_heading_units`——一本用 `第N章` 分章、\n用 `第N节` 分小节的书应当看到 `chapter_unit: 章` 且 `节` 被记入忽略计数，反过来说明分章单位\n判断错了；`long_heading_lines_skipped` 明显偏大时，多半是这本书的章节标题确实很长，\n需要与创作者确认后手写边界。\n\n原文本身没有章节标题时索引会返回空表，此时与创作者确认按什么切分，把边界写进\n`_work/_index.next.json`，通过 `verify` 后再按上面的公开生命周期发布——手写的行也要带齐\n`sequence` / `line_start` / `line_end`，`verify` 会逐行检查并报出缺字段的行。\n\n改了原文必须重建索引，不能沿用旧 span。`verify` 核对编号、顺序与行号覆盖，所以插行删行会被报出来；\n但同行数的原地改写不会——那一步靠改原文的人自己重建，套件不比对字节。\n\n```bash\npython3 {技能目录}/scripts/novel_index.py verify \\\n  项目开发/source-analysis/_index.json 输入/{原文文件}\n```\n\n### S1 改编价值快评\n\n回答**这本书值不值得花全量拆解的成本**。判据是全书的改编密度——`screen_ready` 单元占多少、\n`prose_only` 占多少、制作负担压在哪几段——所以快评横跨整本书，用脚本抽样：\n\n```bash\npython3 {技能目录}/scripts/novel_index.py sample \\\n  项目开发/source-analysis/_index.json --count 12\n```\n\n抽样确定、可复现、首尾必取，跑第二次引用的是同一批章。按\n[改编价值快评](references/adaptation-triage.md) 写 `triage.md`，覆盖六件事：\n故事框架、三类判定比例、开篇替换点、制作负担量级、最大的三处改编风险、分集候选量级。\n第一行写覆盖率（脚本返回的 `coverage_ratio`），所有结论限于抽样范围。\n\n**这里停靠问创作者**：给出快评与全量拆解的预计耗时（按章数粗估），问是否继续。\n创作者一开始就明确说「一次跑完」时仍写 `triage.md`，但不停下等待——它是 S5 要回填\n对照的第一版假设。\n\n停靠时把 `_progress.md` 的状态写成 `paused_after_triage`，断点写「下一步：S2 逐章提取」。\n\nS1–S5 的 Agent 创作产物同样先写到 `source-analysis/_work/`，完成本阶段机械检查后再发布到\n上表中的正式路径。项目工具可用时用 `project_tool.py publish` 和稳定 artifact-id；独立运行时\n原子替换正式文件。不要用半成品覆盖 `_index.json`、`_progress.md`、`chapters/*.md` 或聚合产物。\n`_work/` 是候选工作区，不是权威分析层，也不进入交付包。\n\n**并发子代理写 `_work/`，主线程发布到正式路径**。子代理只落\n`_work/chapters/ch-<N>-extract.md`，主线程跑完机械自检后再发布到 `chapters/`。\n覆盖率闸门按","createdAt":"2026-09-25T11:52:14.365Z","updatedAt":"2026-09-25T11:52:14.365Z"},{"id":"cmugwi62c01t5qu06i1i70gv1","slug":"zenstory-ai-drama-skills-short-drama-produce","name":"short-drama-produce","description":"在创作者明确确认后，执行短剧项目的图片、视频、TTS/配音或时间线音乐生产任务，并把结果与精简运行记录落回项目。用户说“生成这张图/这段视频/这句配音/这段配乐”“开始跑图/跑视频/合成语音/生成音乐”“把已确认提示词送去生产”，或要求批量执行已确认媒体任务时使用；不负责创作提示词、镜头、台词、歌词或声音身份，也绝不把预览、继续、预算说明或既有接受状态当作本次付费生产确认。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-produce","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"在创作者明确确认后，执行短剧项目的图片、视频、TTS/配音或时间线音乐生产任务，并把结果与精简运行记录落回项目。用户说“生成这张图/这段视频/这句配音/这段配乐”“开始跑图/跑视频/合成语音/生成音乐”“把已确认提示词送去生产”，或要求批量执行已确认媒体任务时使用；不负责创作提示词、镜头、台词、歌词或声音身份，也绝不把预览、继续、预算说明或既有接受状态当作本次付费生产确认。","permissions":[],"systemPrompt":"# 确认后生产\n\n本技能只负责把已经写好的生产规格安全送到运行环境配置的 adapter。图片提示词仍归\n`$short-drama-image-prompts`，视频提示词归 `$short-drama-video-prompts`，台词与录音表归\n`$short-drama-write`，声音身份归 `$short-drama-assets`。\n\n## Quick Start\n\n只在用户明确要求实际生成后，从当前 `图片提示词.md`、`分镜.md` 或 `视频提示词.md` 中\n取出本次提示词，建立一个有边界的运行 job。creator-first job 的 `source` 必须指向拥有这条提示词的\n当前 Markdown，`source_entry` 必须点名该文档允许的二级标题：`图片提示词.md` 用 `IMG-*`，\n`视频提示词.md` 用 `MOTION-*`，`分镜.md` 用 `SHOT-*`（modality 为 `image`，正文取该镜的\n`### 冻结关键帧提示词`）。此选择器只提取首帧；尾帧需先由图片提示词阶段建立独立 `IMG-*` 状态图条目，\n再从 `图片提示词.md` 准备 image job。创作者也可以提供已有起始帧——\n在自己的工具里出图再放进项目同样成立，图片始终不进项目时走分镜的 `PLAN-...`；\n产出落在 `剧集/<EP>/制作成果/images/` 后，分镜 owner 才能把它绑成 `用途：起始帧` 的 `REF-...`。存在真实参考图时，\n还必须逐张填写 `reference_bindings` 的槽位、顺序、路径、中文名、用途以及允许/禁止控制范围；\n内置视频 adapter 把这里的 `用途` 字段读成供应商自己的 role，只接受它公布的取值\n（MiniMax 为 `first_frame`/`last_frame`/`reference_image`/`reference_video`/`reference_audio`，\nSeedance 为三个 `reference_*`）；带参考图却没有绑定的 job 会直接失败，不替它猜一个 role。\n本地图片由内置 adapter 按 base64 data URI 直接送出，不需要自建上传服务。\n条目的「输入参考图」写成 `PLAN-...` 时，那些图片在创作者自己的工具里，项目内没有文件可送：\n`prepare` 直接失败并说明先把真实文件放进项目、改写成 `REF-...`，不拿计划当输入，也不静默丢掉参考。\n`references` 可以省略并由绑定顺序生成，也可以作为相同顺序的显式镜像。输出放在\n`剧集/<EP>/制作成果/`；这个 job 是生产工具的临时输入，不是第六份创作文档：\n\n```bash\npython3 {技能目录}/scripts/production_tool.py prepare <project> --job <临时-job.json>\n```\n\n先展示 `prepare` 的完整预览；此时不会调用供应商。\n\n## 硬闸门\n\n每次生产都必须经过以下四步，顺序不可合并：\n\n1. 建立一个有边界的 job：一种 modality、明确数量、完整 prompt/spec、参考文件、参数、输出路径和 adapter profile。\n2. 运行 `prepare`，把返回的完整预览展示给创作者，尤其是数量、prompt、source entry、\n   reference bindings、references、outputs、overwrite 与 adapter。creator-first job 会在这一步机械核对\n   所选标题里的可复制提示词，以及参考图槽位、顺序、路径、中文名和控制边界；任一漂移都 fail closed。\n3. 等创作者在**看到这份预览之后**明确确认。只有明确同意这项当前任务，才运行 `confirm`；\n   “继续”“都做完”“预算没问题”、上游内容已接受或之前确认过另一版，都不算本次生产确认。\n4. 运行 `run`。它会在启动 adapter 前消费一次确认；成功或失败后再次执行都必须重新确认，\n   防止失败重试意外产生第二笔费用。\n\njob、prompt、参数、输出路径或直接输入任一变化，旧确认立即失效。不得代替创作者填写确认。\n当前已确认 job 是本轮唯一工作单元；运行结束后回报结果并交还控制权，不自动准备下一批或启动审查。\n\n`分镜.md` 的「输入参考图」路径只是创作阶段的可读依据与使用意图，不是生产输入快照。进入生产时，\ncreator-first job 必须从 `图片提示词.md` 或 `视频提示词.md` 的对应条目建立绑定；`prepare` 展示的\n`reference_bindings`、`references` 与已确认 job 才是本次 adapter 实际读取哪些文件字节、各自允许\n影响什么的权威。非 creator 的结构化规格可不填 `source_entry`/`reference_bindings`，继续只使用显式\n`references`；但新的 image/video job 只要 `source` 指向 canonical `图片提示词.md` 或\n`视频提示词.md` 就强制使用对应 selector，不能靠省略字段降级绕过。升级前已经 prepare 并落盘的\n旧 job 仍可按原指纹读取。\n新生产结果不自动回填或刷新分镜；需要把它改为后续输入时，由分镜 owner 修订文档，再建立新 job\n并重新预览、确认。\n\n## 命令\n\n只在进入生产边界后把当前提示词和运行参数写成临时 JSON；视频与图片 job 的\n`parameters.prompt_language` 跟随当前可复制正文已经解析出的提示词语言，使 adapter 追加的参考约束\n使用同一种语言，而不是重新回退成固定英文。不要在创作阶段为每条提示词预建 job。\n格式和 adapter 契约见\n[adapter-contract.md](references/adapter-contract.md)。命令由\n[production_tool.py](scripts/production_tool.py) 提供，然后运行：\n\n```text\npython3 <本技能目录>/scripts/production_tool.py prepare <project> --job <job.json>\npython3 <本技能目录>/scripts/production_tool.py confirm <project> --job-id <id> --confirmation \"CONFIRM <id> <code>\"\npython3 <本技能目录>/scripts/production_tool.py run <project> --job-id <id> --adapter-config <outside-project-config.json>\npython3 <本技能目录>/scripts/production_tool.py status <project> --job-id <id>\npython3 <本技能目录>/scripts/production_tool.py collect <project> --job-id <id> --adapter-config <outside-project-config.json>\npython3 <本技能目录>/scripts/production_tool.py audit <project>\n```\n\n`prepare` 只验证并预览，不生产。`confirm` 只保存与当前 job 指纹绑定的一次性确认。\n`run` 才启动 adapter。`collect` 只取回**已经提交过、已经计费**的那次任务的结果，\n不重新提交、也不需要新的确认——见下面「中断不等于要重跑」。`audit` 只对账本地任务历史、失败后恢复、重复内容尝试和当前输出字节，\n不会调用供应商，也不把技术成功、文件存在或哈希一致写成媒体质量结论。同一 job 存在未决\n`running` attempt 时禁止重新 prepare、confirm 或 run；先等待完成或排查遗留 attempt。\n\n## 输入选择\n\n- **image**：读取 `图片提示词.md` 的当前 `IMG-*` 可复制正文，或 `分镜.md` 的当前 `SHOT-*`\n  冻结关键帧正文，加上必要参考图和明确的输出尺寸/数量；creator-first job 使用 `source_entry`\n  锁定这一条。资产板走 `IMG-*`，某一镜的起始画面走 `SHOT-*`；两者不互相替代。\n- **video**：读取 `视频提示词.md` 的当前 `MOTION-*` 可复制正文，并核对 `分镜.md` 中对应镜头、\n  冻结关键帧、时长与画幅；creator-first job 使用 `source_entry` 锁定这一条。连续段选择从上一段\n  生成结果续接时，下一段 job 同时绑定上一段实际视频和从该视频取得的实际尾帧，并保留\n  `continuity_video`、`actual_tail_frame` 的不同职责；供应商 role 由目标模型 adapter 翻译。H3 的这组\n  输入统一译为 `reference_video + reference_image`，不能混成 `reference_video + first_frame`；不以\n  计划尾帧或文字描述代替真实文件。\n- **tts**：从 `剧本.md` 读取原句与表演要求，声音参考由用户或现有媒体明确提供。不得在生产 job\n  中改词，也不为 TTS 新建第六份创作文档。\n- **music**：读取 `视频提示词.md` 中创作者已确认的时间线音乐章节；主题曲使用已确认歌词，纯配乐\n  不携带歌词。供应商不能精确承诺时长时，生成源音轨后仍由 `$short-drama-edit` 按文档里的混音意图完成落点、\n  循环、淡入淡出和对白 ducking。\n\n一个 job 不混合 modality。大批量工作拆成创作者能看清数量和成本边界的小 job；不为方便把整季\n隐式塞进一次确认。\n\n## Adapter 边界\n\nadapter 配置必须在项目外，只包含 argv 命令和超时；凭据由 adapter 自己从进程环境或系统凭据\n存储读取。项目 job、确认记录、运行记录和 Dashboard 都不得保存密钥。\n\n脚本以 JSON stdin 调用 argv 数组，不使用 shell，不拼接命令。adapter 返回本地临时文件；工具只\n接受与已确认 targets 完全一致的结果，并把完整文件原子复制到项目的 `剧集/<EP>/制作成果/`\n目录。项目和上游 Skill 不写死供应商、模型或即将变化的 API。\n\n内置图片/视频 compiler 会根据已确认的 `reference_bindings`，按顺序向供应商 prompt 附加一段确定性的\n引用语义说明（中文名、用途、允许控制与不得控制范围）；不会把槽位名误当成要渲染进画面的文字。\n外部 adapter 也必须保留这组语义或明确拒绝，不能只上传文件而静默丢失控制边界。\n\n本技能可选提供四个 stdlib adapter，均通过项目外 adapter config 选择，凭据只从运行环境读取：\n\n- [Seedance](references/providers/seedance.md)：模型/Endpoint ID 必须由账号显式配置；compiler 支持\n  官方图片、视频和音频参考 role，内置 runtime 未配置可信上传时仍拒绝本地参考文件。\n- [GPT Image 2](references/providers/gpt-image-2.md)：无参考图走 generation，有参考图走 edit；\n  固定高保真引用并校验尺寸、格式与透明背景限制。\n- [MiniMax Music](references/providers/minimax-music.md)：使用 `music-3.0` 与 hex 结果，区分主题曲\n  和纯配乐，不伪造时长请求字段。\n- [MiniMax 语音](references/providers/minimax-speech.md)：`tts` 模态；模型与 `voice_id` 都必须\n  由账号与文档显式给出，不内置音色清单。只从预置音色合成，不做声音克隆——克隆是授权问题，\n  创作者授权的参考录音按普通创作者输入走 `输入/`。\n- [MiniMax H3 视频](references/providers/minimax-h3-video.md)：模型 ID、分辨率集合与时长区间必须\n  由账号显式配置；提示词进 `content` 的 text 项，参考图按显式 role 绑定，本地参考在没有可信上传时\n  fail closed。该模型与画面同一次生成声音，写法影响见视频提示词技能的目标模型能力档案。\n\n这些 adapter 是已验证请求契约，不是账号可用性或生成质量保证；正式生产仍必须通过上面的本次\n确认闸门，并由审查 Skill 判断产物质量。\n\n仓库自带 `fixture_adapter.py` 只用于离线测试，不代表真实生成质量或默认生产 adapter。\n\n## 中断不等于要重跑\n\n视频任务在**提交那一刻**就已经计费，不是在拿到结果时。提交之后的一切——轮询几分钟、下载——\n都可能被进程被杀、断网、机器休眠打断。内置 adapter 因此在拿到供应商任务 ID 的第一时间就把它\n写进 `handle_path`（早于第一次轮询），这个路径不随本次尝试一起删除。\n\n于是中断之后有三条确定的动作，不必再花一次钱：\n\n1. `audit` 会把带着任务 ID 的未完成尝试报成 `orphaned_provider_job`，\n   `action` 是 `collect_before_retry`；\n2. `collect` 用那个 ID 取回结果并把这次尝试标成成功；\n3. 只有在 `collect` 也确认那边确实失败之后，才走重新确认与重投的老路。\n\n**不要在 `audit` 报出 `orphaned_provider_job` 时直接重投**——那是在为同一个镜头付第二次钱。\n`collect` 不走确认闸门是有意的：闸门防的是意外花钱，而 collect 不花钱；\n如果它也要求重新确认，那么中断之后最省事的路径就变成再付一次，正好是闸门要防的事。\n\n## 结果与复核\n\n成功后回报实际输出路径、媒体类型和运行状态；不要把“adapter 返回成功”写成质量结论。\n多任务或重试后先运行 `audit`：终态失败按 `retryable` 路由，重试仍须新的明确确认；输出缺失或\n文件的哈希或大小不再等于运行记录时，先复核当前字节或重新生产。`repeated_content` 只是成本与诊断信号，\n不能自动判定同文重试合理或不合理；`running_attempt` 是未决运营状态，audit 必须返回 attention。\n失败按三路走。超时、限流、服务端错误这类技术失败可做有上限重试。失败信息点名了被拒的是哪\n一项输入——提示词文本、参考图或音频——就先改那一项再投：文本被拒改写那一句，把「一拳砸在\n对方脸上，血顺着下巴滴」换成「一拳挥空，对方侧身避开，桌上的杯子被带倒」；参考图被拒换一张\n构图与角色一致、画面本身合规的图；音频被拒重录那句台词。改动写进新的 job 重新 prepare，让创\n作者在预览里看到改的是哪一项再确认；原样重投的那次确认不产生修复，只产生一笔费用。重复内容\n缺陷回到对应 prompt/spec owner。\n生产结束后不自动进入剪辑。素材要装配成成片时由用户点名 `$short-drama-edit`；它只取舍已有帧，\n不回头改本阶段的 job，也不生成新素材。\n如需质量复核，报告可把已有结果另行交给 `$short-drama-review`；不要在生产调用中自动启动复核。\nDashboard 只负责展示这些文件和运行摘要，不提供 adapter 设置或生产按钮。\n\n## 安装维护\n\n只有安装、升级或排障时运行离线自检；普通创作和生产准备不运行：\n\n```bash\npython3 scripts/selftest.py\npython3 scripts/provider_adapters.py --selftest\n```","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-produce","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-produce/SKILL.md","defaultBranch":"main"},"readme":"# 确认后生产\n\n本技能只负责把已经写好的生产规格安全送到运行环境配置的 adapter。图片提示词仍归\n`$short-drama-image-prompts`，视频提示词归 `$short-drama-video-prompts`，台词与录音表归\n`$short-drama-write`，声音身份归 `$short-drama-assets`。\n\n## Quick Start\n\n只在用户明确要求实际生成后，从当前 `图片提示词.md`、`分镜.md` 或 `视频提示词.md` 中\n取出本次提示词，建立一个有边界的运行 job。creator-first job 的 `source` 必须指向拥有这条提示词的\n当前 Markdown，`source_entry` 必须点名该文档允许的二级标题：`图片提示词.md` 用 `IMG-*`，\n`视频提示词.md` 用 `MOTION-*`，`分镜.md` 用 `SHOT-*`（modality 为 `image`，正文取该镜的\n`### 冻结关键帧提示词`）。此选择器只提取首帧；尾帧需先由图片提示词阶段建立独立 `IMG-*` 状态图条目，\n再从 `图片提示词.md` 准备 image job。创作者也可以提供已有起始帧——\n在自己的工具里出图再放进项目同样成立，图片始终不进项目时走分镜的 `PLAN-...`；\n产出落在 `剧集/<EP>/制作成果/images/` 后，分镜 owner 才能把它绑成 `用途：起始帧` 的 `REF-...`。存在真实参考图时，\n还必须逐张填写 `reference_bindings` 的槽位、顺序、路径、中文名、用途以及允许/禁止控制范围；\n内置视频 adapter 把这里的 `用途` 字段读成供应商自己的 role，只接受它公布的取值\n（MiniMax 为 `first_frame`/`last_frame`/`reference_image`/`reference_video`/`reference_audio`，\nSeedance 为三个 `reference_*`）；带参考图却没有绑定的 job 会直接失败，不替它猜一个 role。\n本地图片由内置 adapter 按 base64 data URI 直接送出，不需要自建上传服务。\n条目的「输入参考图」写成 `PLAN-...` 时，那些图片在创作者自己的工具里，项目内没有文件可送：\n`prepare` 直接失败并说明先把真实文件放进项目、改写成 `REF-...`，不拿计划当输入，也不静默丢掉参考。\n`references` 可以省略并由绑定顺序生成，也可以作为相同顺序的显式镜像。输出放在\n`剧集/<EP>/制作成果/`；这个 job 是生产工具的临时输入，不是第六份创作文档：\n\n```bash\npython3 {技能目录}/scripts/production_tool.py prepare <project> --job <临时-job.json>\n```\n\n先展示 `prepare` 的完整预览；此时不会调用供应商。\n\n## 硬闸门\n\n每次生产都必须经过以下四步，顺序不可合并：\n\n1. 建立一个有边界的 job：一种 modality、明确数量、完整 prompt/spec、参考文件、参数、输出路径和 adapter profile。\n2. 运行 `prepare`，把返回的完整预览展示给创作者，尤其是数量、prompt、source entry、\n   reference bindings、references、outputs、overwrite 与 adapter。creator-first job 会在这一步机械核对\n   所选标题里的可复制提示词，以及参考图槽位、顺序、路径、中文名和控制边界；任一漂移都 fail closed。\n3. 等创作者在**看到这份预览之后**明确确认。只有明确同意这项当前任务，才运行 `confirm`；\n   “继续”“都做完”“预算没问题”、上游内容已接受或之前确认过另一版，都不算本次生产确认。\n4. 运行 `run`。它会在启动 adapter 前消费一次确认；成功或失败后再次执行都必须重新确认，\n   防止失败重试意外产生第二笔费用。\n\njob、prompt、参数、输出路径或直接输入任一变化，旧确认立即失效。不得代替创作者填写确认。\n当前已确认 job 是本轮唯一工作单元；运行结束后回报结果并交还控制权，不自动准备下一批或启动审查。\n\n`分镜.md` 的「输入参考图」路径只是创作阶段的可读依据与使用意图，不是生产输入快照。进入生产时，\ncreator-first job 必须从 `图片提示词.md` 或 `视频提示词.md` 的对应条目建立绑定；`prepare` 展示的\n`reference_bindings`、`references` 与已确认 job 才是本次 adapter 实际读取哪些文件字节、各自允许\n影响什么的权威。非 creator 的结构化规格可不填 `source_entry`/`reference_bindings`，继续只使用显式\n`references`；但新的 image/video job 只要 `source` 指向 canonical `图片提示词.md` 或\n`视频提示词.md` 就强制使用对应 selector，不能靠省略字段降级绕过。升级前已经 prepare 并落盘的\n旧 job 仍可按原指纹读取。\n新生产结果不自动回填或刷新分镜；需要把它改为后续输入时，由分镜 owner 修订文档，再建立新 job\n并重新预览、确认。\n\n## 命令\n\n只在进入生产边界后把当前提示词和运行参数写成临时 JSON；视频与图片 job 的\n`parameters.prompt_language` 跟随当前可复制正文已经解析出的提示词语言，使 adapter 追加的参考约束\n使用同一种语言，而不是重新回退成固定英文。不要在创作阶段为每条提示词预建 job。\n格式和 adapter 契约见\n[adapter-contract.md](references/adapter-contract.md)。命令由\n[production_tool.py](scripts/production_tool.py) 提供，然后运行：\n\n```text\npython3 <本技能目录>/scripts/production_tool.py prepare <project> --job <job.json>\npython3 <本技能目录>/scripts/production_tool.py confirm <project> --job-id <id> --confirmation \"CONFIRM <id> <code>\"\npython3 <本技能目录>/scripts/production_tool.py run <project> --job-id <id> --adapter-config <outside-project-config.json>\npython3 <本技能目录>/scripts/production_tool.py status <project> --job-id <id>\npython3 <本技能目录>/scripts/production_tool.py collect <project> --job-id <id> --adapter-config <outside-project-config.json>\npython3 <本技能目录>/scripts/production_tool.py audit <project>\n```\n\n`prepare` 只验证并预览，不生产。`confirm` 只保存与当前 job 指纹绑定的一次性确认。\n`run` 才启动 adapter。`collect` 只取回**已经提交过、已经计费**的那次任务的结果，\n不重新提交、也不需要新的确认——见下面「中断不等于要重跑」。`audit` 只对账本地任务历史、失败后恢复、重复内容尝试和当前输出字节，\n不会调用供应商，也不把技术成功、文件存在或哈希一致写成媒体质量结论。同一 job 存在未决\n`running` attempt 时禁止重新 prepare、confirm 或 run；先等待完成或排查遗留 attempt。\n\n## 输入选择\n\n- **image**：读取 `图片提示词.md` 的当前 `IMG-*` 可复制正文，或 `分镜.md` 的当前 `SHOT-*`\n  冻结关键帧正文，加上必要参考图和明确的输出尺寸/数量；creator-first job 使用 `source_entry`\n  锁定这一条。资产板走 `IMG-*`，某一镜的起始画面走 `SHOT-*`；两者不互相替代。\n- **video**：读取 `视频提示词.md` 的当前 `MOTION-*` 可复制正文，并核对 `分镜.md` 中对应镜头、\n  冻结关键帧、时长与画幅；creator-first job 使用 `source_entry` 锁定这一条。连续段选择从上一段\n  生成结果续接时，下一段 job 同时绑定上一段实际视频和从该视频取得的实际尾帧，并保留\n  `continuity_video`、`actual_tail_frame` 的不同职责；供应商 role 由目标模型 adapter 翻译。H3 的这组\n  输入统一译为 `reference_v","createdAt":"2026-09-25T11:52:14.388Z","updatedAt":"2026-09-25T11:52:14.388Z"},{"id":"cmugwi62v01t8qu06ywo907gb","slug":"zenstory-ai-drama-skills-short-drama-review","name":"short-drama-review","description":"审查短剧项目中的原著分析、故事、剧本、视觉设定、图片提示词、分镜、冻结关键帧、视频提示词和已有媒体。用户提出“审稿/检查剧本”“检查资产或连续性”“检查图片/视频提示词”“检查原著分析”“审查模板感”“根据生产观察做项目校准”时使用；只写审查问题、结论和修订要求，不代替 owner 修改来源文件。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-review","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"审查短剧项目中的原著分析、故事、剧本、视觉设定、图片提示词、分镜、冻结关键帧、视频提示词和已有媒体。用户提出“审稿/检查剧本”“检查资产或连续性”“检查图片/视频提示词”“检查原著分析”“审查模板感”“根据生产观察做项目校准”时使用；只写审查问题、结论和修订要求，不代替 owner 修改来源文件。","permissions":[],"systemPrompt":"# 短剧审查\n\n优先由未参与当前版本创作的 reviewer 执行；条件不允许时可以自检并如实说明。审查与修改是两个工作\n单元：本技能只定位问题、影响和必须达到的修订结果，不在同一轮替 owner 改来源。\n\n## Quick Start\n\n直接读取用户点名的当前文件。单集审查需要落盘时写 `审查/EP001-审查.md`；独立文件审查使用\n`审查/<主题>-审查.md`。用户只要口头结论时直接回复，不为“完整”创建审查文件。\n\n审查 Markdown 建议结构：\n\n```markdown\n# EP001 审查\n\n- 范围：剧本、分镜、视频提示词\n- 结论：REVISE\n- 复核方式：独立 reviewer / 自检\n\n## Blocker · REV-001 · 画面文字未被镜头承载\n- 位置：剧本.md / EP001-SC002；分镜.md / SHOT-EP001-004\n- 证据：……\n- 影响：……\n- 修订结果：由 short-drama-storyboard 补入准确文字及可读条件。\n- 规则：SHT-01 · reviewed_invariant\n```\n\n引用只使用文件名、标题 ID、行号或短引文；不建立 sources 声明、哈希、record ID 或第二套状态。\n\n## 选择审查范围\n\n- `source_analysis`\n- `story_script`\n- `assets_continuity`\n- `image_prompts`\n- `storyboard_keyframes`\n- `video_prompts`\n- `production_outputs`\n- `full_episode`\n- `delivery_privacy`\n- `project_calibration`\n\n只读对应资料，不预加载整个项目：\n\n- 原著分析：[原著分析审查表](references/rubric-source-analysis.md)\n- 故事、场景、行动与对白：[故事剧本审查表](references/rubric-story-script.md)\n- 身份、变体、连续性与图片提示词：[资产提示词审查表](references/rubric-assets-prompts.md)\n- 原文落实、镜头、关键帧与视频运动：[视觉运动审查表](references/rubric-visual-motion.md)\n- 完整审查方法：[审查方法](references/review-method.md)\n- 制作端常见缺陷：[生产质量门](references/production-quality-gates.md)\n- 授权生产观察的项目内校准：[项目校准](references/project-calibration.md)\n- 模板感、重复手法或 AI 味：[反模板修订](references/anti-template-repair.md)\n- 阶段边界、参考媒体与规则表：[阶段契约](references/stage-contract.md)\n\n## 工作流\n\n### 1. 冻结范围\n\n写清当前要审哪些文件、章节、镜头或提示词，以及创作者已经明确的限制。目标在审查中发生变化时，\n重新读取再下结论。\n\n### 2. 先查可证明事实\n\n- 五文档的可见 ID、引用和时长是否一致；\n- 剧本对白、动作、声音、画面文字是否都有画面/声音承载；\n- 人物、地点、道具状态和镜头起止是否连续；\n- 提示词是否从准确起点到准确终点；\n- 目标模型画音同轨时，声音内容、时序和发声边界是否与来源一致；无对白镜是否交代底声或静默\n  （`VID-22`、`VID-23`，见 [视觉运动审查表](references/rubric-visual-motion.md)）；\n- 私有输入、凭据、绝对路径或内部流程文字是否泄漏。\n\n缺少必要输入时只停止依赖它的判断，其他问题可以继续汇总。\n\n### 3. 带证据审内容\n\n每个 finding 包含：位置、必要短引文或冲突事实、观众/制作影响、必须达到的修订结果、owner、严重\n程度和规则等级。不能只说“AI 味”“不够电影感”或给无证据分数。\n\n### 4. 跨文档综合\n\n```text\n剧本事实 -> 视觉设定 -> 镜头职责与边界 -> 冻结关键帧 -> 视频运动 -> 下一状态\n```\n\n优先守住原意、知情时机与连续性，不奖励脱离来源的华丽提示词。\n\n### 5. 结论与分派\n\n- `APPROVE`：没有阻断问题；\n- `APPROVE_WITH_NOTES`：只有不阻断的改进；\n- `REVISE`：存在结构、内容或限制冲突；\n- `PROVISIONAL`：关键输入不足，暂时无法完成判断。\n\n按 owner 分组修订要求。本轮完成后交还控制权；修改和复审只有用户明确请求时开始。\n\n## 严重程度\n\n- `blocker`：不安全、不可交付或会让流程走错；\n- `major`：明显破坏剧情理解、连续性或制作结果；\n- `minor`：有具体影响但不阻断；\n- `note`：创作选择或可选润色。\n\n## 边界\n\n- 不提交图片、视频、TTS 或音乐任务，不配置 adapter，不把 Dashboard 操作当生产授权。\n- 无法读取媒体时明确限制，不从文字或 adapter 状态推断脸部一致、表演、口型、混音或市场表现。\n- 生产观察必须绑定准确输入、提示词、参考、配置和结果版本；不能泛化成通用规则。\n- 审查文件只保留修订所需的最小证据，不复制完整私有输入。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-review","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-review/SKILL.md","defaultBranch":"main"},"readme":"# 短剧审查\n\n优先由未参与当前版本创作的 reviewer 执行；条件不允许时可以自检并如实说明。审查与修改是两个工作\n单元：本技能只定位问题、影响和必须达到的修订结果，不在同一轮替 owner 改来源。\n\n## Quick Start\n\n直接读取用户点名的当前文件。单集审查需要落盘时写 `审查/EP001-审查.md`；独立文件审查使用\n`审查/<主题>-审查.md`。用户只要口头结论时直接回复，不为“完整”创建审查文件。\n\n审查 Markdown 建议结构：\n\n```markdown\n# EP001 审查\n\n- 范围：剧本、分镜、视频提示词\n- 结论：REVISE\n- 复核方式：独立 reviewer / 自检\n\n## Blocker · REV-001 · 画面文字未被镜头承载\n- 位置：剧本.md / EP001-SC002；分镜.md / SHOT-EP001-004\n- 证据：……\n- 影响：……\n- 修订结果：由 short-drama-storyboard 补入准确文字及可读条件。\n- 规则：SHT-01 · reviewed_invariant\n```\n\n引用只使用文件名、标题 ID、行号或短引文；不建立 sources 声明、哈希、record ID 或第二套状态。\n\n## 选择审查范围\n\n- `source_analysis`\n- `story_script`\n- `assets_continuity`\n- `image_prompts`\n- `storyboard_keyframes`\n- `video_prompts`\n- `production_outputs`\n- `full_episode`\n- `delivery_privacy`\n- `project_calibration`\n\n只读对应资料，不预加载整个项目：\n\n- 原著分析：[原著分析审查表](references/rubric-source-analysis.md)\n- 故事、场景、行动与对白：[故事剧本审查表](references/rubric-story-script.md)\n- 身份、变体、连续性与图片提示词：[资产提示词审查表](references/rubric-assets-prompts.md)\n- 原文落实、镜头、关键帧与视频运动：[视觉运动审查表](references/rubric-visual-motion.md)\n- 完整审查方法：[审查方法](references/review-method.md)\n- 制作端常见缺陷：[生产质量门](references/production-quality-gates.md)\n- 授权生产观察的项目内校准：[项目校准](references/project-calibration.md)\n- 模板感、重复手法或 AI 味：[反模板修订](references/anti-template-repair.md)\n- 阶段边界、参考媒体与规则表：[阶段契约](references/stage-contract.md)\n\n## 工作流\n\n### 1. 冻结范围\n\n写清当前要审哪些文件、章节、镜头或提示词，以及创作者已经明确的限制。目标在审查中发生变化时，\n重新读取再下结论。\n\n### 2. 先查可证明事实\n\n- 五文档的可见 ID、引用和时长是否一致；\n- 剧本对白、动作、声音、画面文字是否都有画面/声音承载；\n- 人物、地点、道具状态和镜头起止是否连续；\n- 提示词是否从准确起点到准确终点；\n- 目标模型画音同轨时，声音内容、时序和发声边界是否与来源一致；无对白镜是否交代底声或静默\n  （`VID-22`、`VID-23`，见 [视觉运动审查表](references/rubric-visual-motion.md)）；\n- 私有输入、凭据、绝对路径或内部流程文字是否泄漏。\n\n缺少必要输入时只停止依赖它的判断，其他问题可以继续汇总。\n\n### 3. 带证据审内容\n\n每个 finding 包含：位置、必要短引文或冲突事实、观众/制作影响、必须达到的修订结果、owner、严重\n程度和规则等级。不能只说“AI 味”“不够电影感”或给无证据分数。\n\n### 4. 跨文档综合\n\n```text\n剧本事实 -> 视觉设定 -> 镜头职责与边界 -> 冻结关键帧 -> 视频运动 -> 下一状态\n```\n\n优先守住原意、知情时机与连续性，不奖励脱离来源的华丽提示词。\n\n### 5. 结论与分派\n\n- `APPROVE`：没有阻断问题；\n- `APPROVE_WITH_NOTES`：只有不阻断的改进；\n- `REVISE`：存在结构、内容或限制冲突；\n- `PROVISIONAL`：关键输入不足，暂时无法完成判断。\n\n按 owner 分组修订要求。本轮完成后交还控制权；修改和复审只有用户明确请求时开始。\n\n## 严重程度\n\n- `blocker`：不安全、不可交付或会让流程走错；\n- `major`：明显破坏剧情理解、连续性或制作结果；\n- `minor`：有具体影响但不阻断；\n- `note`：创作选择或可选润色。\n\n## 边界\n\n- 不提交图片、视频、TTS 或音乐任务，不配置 adapter，不把 Dashboard 操作当生产授权。\n- 无法读取媒体时明确限制，不从文字或 adapter 状态推断脸部一致、表演、口型、混音或市场表现。\n- 生产观察必须绑定准确输入、提示词、参考、配置和结果版本；不能泛化成通用规则。\n- 审查文件只保留修订所需的最小证据，不复制完整私有输入。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","createdAt":"2026-09-25T11:52:14.408Z","updatedAt":"2026-09-25T11:52:14.408Z"},{"id":"cmugwi63l01tbqu065c4jjzxn","slug":"zenstory-ai-drama-skills-short-drama-storyboard","name":"short-drama-storyboard","description":"把中文短剧剧本和视觉设定写成有戏剧职责、连续性边界与冻结关键帧提示词的分镜 Markdown。用户提出“拆分镜/设计镜头/做镜头表”“场次视觉计划/调度故事板”“比较导演方案”“写首帧/关键帧提示词”或检查轴线、站位、视线、持物连续性时使用；不生成媒体。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-storyboard","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"把中文短剧剧本和视觉设定写成有戏剧职责、连续性边界与冻结关键帧提示词的分镜 Markdown。用户提出“拆分镜/设计镜头/做镜头表”“场次视觉计划/调度故事板”“比较导演方案”“写首帧/关键帧提示词”或检查轴线、站位、视线、持物连续性时使用；不生成媒体。","permissions":[],"systemPrompt":"# 短剧分镜与冻结关键帧\n\n把剧本和视觉事实转成有镜头职责、空间连续性和可冻结起点的 `剧集/<EP>/分镜.md`。\n每镜使用二级标题 `## SHOT-...`，同镜下用 `### 冻结关键帧提示词` 写起始帧正文；\n需要时另加 `### 收尾关键帧提示词` 写终点正文。\n\n## Quick Start\n\n```text\n用 $short-drama-storyboard 完成 EP001 的正式分镜和每镜冻结关键帧\n```\n\n## 入口\n\n当前剧本加必要视觉事实即可直接进入。资产图片提示词与分镜是兄弟分支，不互相等待。只有关键场次\n真的存在多个成立导演方案时，才在上下文比较覆盖方案；普通场次直接设计。\n\n创作者可读说明跟随项目语言；冻结关键帧的可复制正文跟随\n`short-drama.json#/format/prompt_language`。没有 `short-drama.json` 时正文默认使用 `en`。\n分配镜头时长前读取\n`short-drama.json#/creator_authority/production_profile/choices/native_duration_seconds`。已声明目标模型但\n没有原生时长时先补这一个选择；目标模型也未声明时照常按叙事节奏设计，不猜供应商限制。\n\n冻结关键帧写完之前，谁会出现在这一格画面里还没有定下来。所以三条依据都在关键帧之后回填，\n读的是成稿画面，不是镜头意图。\n\n用户没有手工点名参考图，不等于选择文生视频。冻结关键帧后先根据本镜可见人物、地点、关键道具与\n起始构图判断一致性需求，再检查项目中已有的真实图片。只有当前可读、内容与用途可核对的图片才能自动绑定；\n文件名像某个角色但内容未核对时，仍视为未准备好。\n\n项目里一张都没有时，创作者有三条路，一次把三条都说清楚再让他选，不要只给「先生成参考图」和\n「改成文生视频」两个：把手上已有的图片放进项目再绑成 `REF-...`；在自己的工具里出图、本轮先用\n`PLAN-...` 写出挂图计划；或者明确改走文生视频。用本套件的生产技能出图只是第一条路的一种做法，\n需要项目外的 adapter 与凭据，不是唯一入口。\n\n开始分镜前读 `剧集/<EP>/剧本.md` 的当前内容。创作者说「剧本已确认采用」指的是那个文件，\n不是对话里更早的草稿；两者不一致时以文件为准，并把差异说出来。\n\n## 工作流\n\n1. 读取已接受的目标模型原生时长区间，再确认每个场景动作、对白、声音、画面文字和转折由哪些镜头承载。\n2. 确定观众何时知道什么、对齐谁、空间如何揭示、转折落在哪个可见动作。\n   剧本或 Brief 用“前半段 / 后半段 / 前三分之一 / 最后 N 秒”等相对时间限定首次出现、释放或禁止时，\n   先用已接受集长换成明确时间边界再分镜；例如 60 秒作品的“后半段首次出现”不得早于 30 秒。\n3. 每镜写清唯一职责、来源、时长、景别/机位、起点、唯一主要动作、终点和声音；用\n   `起点 → 唯一动作 → 终点` 直接说明人物、双手与持物怎样完成本镜状态转换。三条依据留到第 6 步。\n   有对白、VO 或 OS 时，先按原文和人物说话方式估算完整发声时间，再安排不能重叠的动作、停顿与\n   末尾反应；把估时依据简写在本镜「声音」里。具体做法见 [对白估时](references/shot-craft.md#对白估时)。\n4. 锁定人物朝向、位置、视线、持物、出入口、屏幕方向和必要状态；上游已有会限制动作空间的持续关系时，把关系投影进本镜起点与终点。\n5. 冻结关键帧只投影镜头起点；删除终点才出现的文字、动作、姿态或道具状态。\n   镜头的职责落在收尾那一下时，另写 `### 收尾关键帧提示词` 投影**终点**——同一格画面的\n   另一端，规则完全对称：删除起点才有、终点已经不在的东西。它是可选的，写法与取舍见\n   [首尾成对](references/shot-craft.md#首尾成对)。\n6. 关键帧成稿后，先从成稿正文读出这一格里需要保持身份、造型或地理的人物、地点和道具，\n   再用同一份清单一次填满三条依据：\n\n   - **视觉依据**：清单里每一项写成《视觉设定.md》的条目引用，这是必写字段；\n   - **图片提示词项**：清单里已有合适 `IMG-...` 条目的写上，没有的留「无」；\n   - **输入参考图**：按清单在用户提供的输入、`剧集/<EP>/制作成果/` 和文档已指向的其他可见媒体中查找匹配图片；\n     命中就写入 `REF-...`。一张都没命中时写「无（待补参考图：<本镜缺失的起始帧、人物、地点、道具>）」；\n     只命中一部分时，在已有 `REF-...` 后追加「；待补参考图：<仍缺的图片>」，缺口之间只用 `、` 分隔。\n     创作者说图片由他自己在别处准备时，把这份清单写成 `PLAN-...` 槽位，本镜即告就绪；\n     只有创作者明确表示不用图时，才写「无（创作者已明确选择文生视频）」。\n\n   三条依据读的是同一格画面，所以不能互相矛盾：关键帧里点名的人物或道具，一定出现在视觉依据里。\n7. 整集请求完成整集，末端一次报告覆盖、节奏和真实未决选择。\n\n## 镜头要求\n\n- 每镜有唯一职责、明确来源、可见起止状态和合理时长。「来源」以《剧本.md》里真实存在的场景 ID 开头，\n  ID 之后可以跟必要短引文，跨场次的镜头用 `、` 连写多条；`creator_markdown_check.py` 会核对每个 ID 都解析得到。\n- 「来源」短引文应对应本镜承担的动作或声音。正文提到画外人物时，可在视觉依据写\n  `；画外：<类别>「<名称>」`；这只声明其不在画面，不能代替必要动作的落实。\n  需要看见的动作应另有镜头承载，或说明为何省略。\n\n- 剧本里的每个场景都要有镜头承载。确实决定不拍某一场时，在《分镜.md》正文开头写一行\n  `- 未拍场次：<场景 ID>（理由：……）`，多项用 `；` 连接。SHT-01 一直允许带理由的省略，\n  但省略和漏拍在成稿文档里长得一模一样，所以理由要写下来，而不是留在对话里。\n- 已声明原生时长时，每个一镜一生成的镜头都落在其最短与最长秒数内。短于下限的叙事动作在合法\n  镜长内完成后保持终点；长于上限的动作按可见状态闭合点拆镜，拆出的每镜仍各有唯一职责与可信交界。\n- 「唯一动作」写从本镜起点到终点的那条可见状态链；涉及交接、换手、放置或取回时，把接触者、\n  接触方式和物件落点写在同一链里，不能让合法终点之间靠镜外瞬移衔接。\n- 切镜必须带来信息、权力、情绪、空间或节奏变化；同义重复镜头删掉。\n- 相对时间词约束的是事件首次可见或可听的时刻，不因前置动作已经完成就提前释放；分镜时间轴直接\n  写出该边界，不把“稍后”“交接后”等叙事顺序当成数值时间的替代。\n- 同一动作不跨镜重复发生；终点应能成为下一镜可信起点。\n- 关键信息的可读性优先于装饰性运镜，竖屏构图优先保证主体和反应可见。\n- 复杂群戏先锁空间锚点和屏幕方向，再决定景别变化。\n- 起终边界除了逐人姿态，还要写清本镜依赖的身体—物件—空间关系。关系在镜内不变时两端都保留；确需改变时，过程与终点必须有剧本依据。\n- 冻结关键帧只写该瞬间能看见的内容；文字、手指、反射和遮挡要可生成。\n- 《视觉设定.md》的连续性锁在生效镜头上原样写进冻结关键帧正文；锁面不因“参考图会交代”而省略。\n- 检查发现遗漏就直接修正文档，不生成覆盖表来证明自己检查过。镜头块里的「视觉依据」是本镜的依据字段，不是这里说的覆盖表。\n\n## 视觉依据与图片\n\n- `IMG-...` 是《图片提示词.md》里的**提示词条目 ID**，不代表图片已生成、已提供或可用。\n- 已有《图片提示词.md》且本镜需要其中条目时，写「图片提示词项」：ID 必须匹配该文档的可见二级标题，同时写中文名称和它控制的身份、造型、地理、构图或其他边界。ID 只用于查找，不让英文 slug 承担含义。\n- 没有《图片提示词.md》或没有合适条目时，写「图片提示词项：无」，再以中文指向《视觉设定.md》的人物、地点或道具项及控制范围。这是正常直接入口；不为继续分镜而编造 ID，也不补造另一个阶段。\n- 「视觉依据」是每镜必写字段：冻结关键帧成稿后按实际画面反查，需要保持身份、造型或地理的可见人物、地点和道具**必须**逐项写成\n  `《视觉设定.md》·<人物|造型|地点|道具>「<名称>」（控制：<范围>）`，多项用 `；` 连接，名称必须能在《视觉设定.md》里找到同名标题。\n  小比例或背景人物只要需要认出身份仍在范围内，画外人声和不可识别局部不算；本镜确实没有这类条目时写「视觉依据：无」。\n- 关键帧正文出现了某个条目的名字，但它本镜确实不在画面里（物主已离场、名字只出现在屏幕文字上、和某个词同形），\n  在「视觉依据」末尾追加 `；画外：<类别>「<名称>」`。这是如实记录，不是把不在场的人写成在场。\n- 某个条目的名字在正文里根本不可靠（`道具「手机」` 会撞上「手机店」，`人物「小雨」` 会撞上「下着小雨」），\n  在《视觉设定.md》该条目写 `画面代称：无`，机械核对就不再按名字找它；这一镜是否画到它仍由「视觉依据」如实回答。\n- 三条依据都描述同一格画面，不是本镜的资产花名册。「控制」只写这一格承担得起的范围：手背特写不写「本集造型」，\n  只出现屏幕和一根手指的镜头不写「体态」。上一镜的绑定不因为“角色还在这场戏里”就顺延到下一镜。\n- 关键帧正文点名的人物、地点或道具（《视觉设定.md》条目名称或它声明的「画面代称」），必须出现在本镜「视觉依据」里；\n  `creator_markdown_check.py` 会机械核对这一条。它只抓**被名字点到**的那一类：正文只描述不点名\n  （\"a boy in a hooded jacket\"）时机器不发声，画面里有谁仍然要靠这一步自己读出来，不能等报错。\n- 本镜需要保持一致、但《视觉设定.md》里还没有条目的可见物件（跨镜出现的道具尤其常见），不能因为\n  「写不进视觉依据」就当它不需要一致性。四镜都出现的一支笔和一件外套是同一类问题。做两件事：\n  正文里逐镜用完全相同的描述把它钉住，并在本轮末尾报告里点名它、建议 `$short-drama-assets` 补条目。\n  不自行新增《视觉设定.md》条目，也不把它塞进「视觉依据」冒充已有条目。\n- 「输入参考图」是独立的另一条轴：创作者已提供，或经确认生产且当前可读的实际图片，用不同于 `IMG-...` 的稳定 `REF-...` 槽位引用。每个槽位同时写显式顺序、仅用 `/` 分隔的项目相对路径、中文名称、「用途」、「控制」和「不得控制」范围；没有时必须区分「待补参考图」和「创作者已明确选择文生视频」，只准备了一部分时则保留已有 `REF-...` 并追加「；待补参考图：……」。不得把提示词条目、还没生成的图或对话中的描述写成 `REF-...`——`REF-...` 的意思是「文件此刻在项目里」。\n  创作者会在生成时自己挂载的图片走下面的 `PLAN-...`：它同样不声称文件存在，只是把这一镜要挂哪几张写清楚。\n- 每个 `REF-...` 必须逐字遵循唯一格式：`REF-<slot>（顺序：<n>）· <项目相对路径>《<中文名称>》（用途：<用途>；控制：<范围>；不得控制：<范围>）`。注意「顺序：」后的全角冒号和路径前的中点 `·`；不得用 `/` 代替字段分隔符。多图只用中文分号 `；` 连接，部分缺图则在最后一个完整槽位后接 `；待补参考图：<缺口>`，缺口之间用 `、` 分隔。写完后按此格式回读一次再交付。\n- `用途` 只能取 `身份`、`造型状态`、`地理`、`构图`、`尺度`、`效果`、`起始帧`、`结束帧`、`风格` 之一；逐条能控制什么见 `$short-drama` 的《参考角色》。\n  本镜的起始画面图写 `用途：起始帧`，人物图写 `用途：身份` 或 `造型状态`，场景图写 `用途：地理`，道具状态图按它决定的那一件写。\n  一张图承担两件事就拆成两个槽位；一镜最多一张 `起始帧` 和一张 `结束帧`，写 `结束帧` 时必须同时有 `起始帧`。\n  下游视频提示词靠 `用途` 说清「本镜送哪一张分镜起始帧、哪些人物/道具/场景图」，所以缺 `用途` 的槽位不算准备好。\n- 本镜还没有起始画面图时有两条路。创作者用本套件生产：`用途：起始帧` 那一张由 `$short-drama-produce`\n  用本镜的冻结关键帧正文生成，job 的 `source` 写 `剧集/<EP>/分镜.md`、`source_entry` 写本镜 `SHOT-...`，\n  产出落在 `剧集/<EP>/制作成果/images/`，拿到真实文件后再绑成 `REF-...`。创作者在自己的工具里生产：\n  把冻结关键帧正文复制过去出图，再把文件放进项目绑成 `REF-...`，或者本轮先写成\n  `PLAN-SHOT-START（顺序：<n>）· <本镜 SHOT-...>《本镜冻结关键帧》（用途：起始帧；……）`。\n  两条路都没走时，它仍然只是「待补参考图」里的一项。\n- 创作者在项目外出图、图片不进项目时，用 `PLAN-...` 槽位：语法与 `REF-...` 逐字相同，只把项目相对路径\n  换成 `IMG-...` 或 `SHOT-...` 条目 ID，`IMG-...` 的中文名称必须与《图片提示词.md》标题一致。\n  它声明的是「这张图由创作者在生成时按这个顺序挂载」，不声称项目里有文件，因此不是「待补」，\n  也不能拿来投产。真实文件进了项目就改写成 `REF-...`。两种槽位可以混用，`顺序` 统一连续编号。\n- 自动绑定不是把所有图都塞进一镜。只选本镜可见、且身份、造型、地理、关键道具状态或起始构图确实需要稳定的图；逐张写清它的用途、能控制什么、不得控制什么。\n- 两条轴可以独立组合：有合法的图片提示词项时，输入参考图仍可为「待补」或创作者明确选择的文生视频；创作者给了真实参考图时，图片提示词项也可为「无」。\n\n## 按需知识\n\n默认只读本 SKILL、当前剧本和必要视觉事实。遇到对应问题时只打开一份：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 镜头职责、切镜理由和边界：[镜头手艺](references/shot-craft.md)\n- 实际制作所需的镜头语法：[生产镜头语法](references/production-shot-grammar.md)\n- 关键场次比较导演方案：[场次视觉计划](references/scene-visual-plan.md)\n- 检查原文是否都有画面承载：[Coverage Audition](references/coverage-audition.md)\n- 多人、群体和复杂空间调度：[调度手册](references/blocking-playbooks.md)\n- 谁被照亮、怎么写才执行得出：[光的设计](references/lighting-craft.md)\n- 冻结瞬间、注意中心和可读性：[关键帧手艺](references/keyframe-craft.md)\n- 漫剧/二维漫画形态的共享画风词汇：[漫剧关键帧词表](references/comic-keyframe-lexicon.md)\n- 剧本事实到关键帧的完整示例：[剧本到关键帧](references/screenplay-to-keyframe-example.md)\n- 拆镜、并镜和稳定镜头 ID：[镜头修订身份](references/shot-revision-identity.md)\n- 完成前的连续性检查：[审查与示例](references/review-and-fixtures.md)\n\n## 修订\n\n保留未受影响的镜头 ID。拆镜、并镜或改变镜头职责时，说明哪些下游视频提示词需要刷新，但不自动\n重写用户没点名的文件。\n\n## 完成\n\n点名范围的原文都有镜头落实，每镜职责不重复、空间与状态连续、起止边界可制作、关键帧可冻结，\n每镜「来源」解析到《剧本.md》的真实场景、剧本里每个场景都有镜头承载或已记入「未拍场次」，\n且每镜关键帧里的可见人物、地点、道具都在本镜「视觉依据」里，即完成。画面需要、但《视觉设定.md》\n还没有条目的可见物件，在末尾报告里逐项点名。本次请求同时修改\n《图片提示词.md》与《分镜.md》时，当轮刷新受影响镜头的引用；不另建覆盖表。\n视频提示词、生产和审查只有用户点名时开始。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-storyboard","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-storyboard/SKILL.md","defaultBranch":"main"},"readme":"# 短剧分镜与冻结关键帧\n\n把剧本和视觉事实转成有镜头职责、空间连续性和可冻结起点的 `剧集/<EP>/分镜.md`。\n每镜使用二级标题 `## SHOT-...`，同镜下用 `### 冻结关键帧提示词` 写起始帧正文；\n需要时另加 `### 收尾关键帧提示词` 写终点正文。\n\n## Quick Start\n\n```text\n用 $short-drama-storyboard 完成 EP001 的正式分镜和每镜冻结关键帧\n```\n\n## 入口\n\n当前剧本加必要视觉事实即可直接进入。资产图片提示词与分镜是兄弟分支，不互相等待。只有关键场次\n真的存在多个成立导演方案时，才在上下文比较覆盖方案；普通场次直接设计。\n\n创作者可读说明跟随项目语言；冻结关键帧的可复制正文跟随\n`short-drama.json#/format/prompt_language`。没有 `short-drama.json` 时正文默认使用 `en`。\n分配镜头时长前读取\n`short-drama.json#/creator_authority/production_profile/choices/native_duration_seconds`。已声明目标模型但\n没有原生时长时先补这一个选择；目标模型也未声明时照常按叙事节奏设计，不猜供应商限制。\n\n冻结关键帧写完之前，谁会出现在这一格画面里还没有定下来。所以三条依据都在关键帧之后回填，\n读的是成稿画面，不是镜头意图。\n\n用户没有手工点名参考图，不等于选择文生视频。冻结关键帧后先根据本镜可见人物、地点、关键道具与\n起始构图判断一致性需求，再检查项目中已有的真实图片。只有当前可读、内容与用途可核对的图片才能自动绑定；\n文件名像某个角色但内容未核对时，仍视为未准备好。\n\n项目里一张都没有时，创作者有三条路，一次把三条都说清楚再让他选，不要只给「先生成参考图」和\n「改成文生视频」两个：把手上已有的图片放进项目再绑成 `REF-...`；在自己的工具里出图、本轮先用\n`PLAN-...` 写出挂图计划；或者明确改走文生视频。用本套件的生产技能出图只是第一条路的一种做法，\n需要项目外的 adapter 与凭据，不是唯一入口。\n\n开始分镜前读 `剧集/<EP>/剧本.md` 的当前内容。创作者说「剧本已确认采用」指的是那个文件，\n不是对话里更早的草稿；两者不一致时以文件为准，并把差异说出来。\n\n## 工作流\n\n1. 读取已接受的目标模型原生时长区间，再确认每个场景动作、对白、声音、画面文字和转折由哪些镜头承载。\n2. 确定观众何时知道什么、对齐谁、空间如何揭示、转折落在哪个可见动作。\n   剧本或 Brief 用“前半段 / 后半段 / 前三分之一 / 最后 N 秒”等相对时间限定首次出现、释放或禁止时，\n   先用已接受集长换成明确时间边界再分镜；例如 60 秒作品的“后半段首次出现”不得早于 30 秒。\n3. 每镜写清唯一职责、来源、时长、景别/机位、起点、唯一主要动作、终点和声音；用\n   `起点 → 唯一动作 → 终点` 直接说明人物、双手与持物怎样完成本镜状态转换。三条依据留到第 6 步。\n   有对白、VO 或 OS 时，先按原文和人物说话方式估算完整发声时间，再安排不能重叠的动作、停顿与\n   末尾反应；把估时依据简写在本镜「声音」里。具体做法见 [对白估时](references/shot-craft.md#对白估时)。\n4. 锁定人物朝向、位置、视线、持物、出入口、屏幕方向和必要状态；上游已有会限制动作空间的持续关系时，把关系投影进本镜起点与终点。\n5. 冻结关键帧只投影镜头起点；删除终点才出现的文字、动作、姿态或道具状态。\n   镜头的职责落在收尾那一下时，另写 `### 收尾关键帧提示词` 投影**终点**——同一格画面的\n   另一端，规则完全对称：删除起点才有、终点已经不在的东西。它是可选的，写法与取舍见\n   [首尾成对](references/shot-craft.md#首尾成对)。\n6. 关键帧成稿后，先从成稿正文读出这一格里需要保持身份、造型或地理的人物、地点和道具，\n   再用同一份清单一次填满三条依据：\n\n   - **视觉依据**：清单里每一项写成《视觉设定.md》的条目引用，这是必写字段；\n   - **图片提示词项**：清单里已有合适 `IMG-...` 条目的写上，没有的留「无」；\n   - **输入参考图**：按清单在用户提供的输入、`剧集/<EP>/制作成果/` 和文档已指向的其他可见媒体中查找匹配图片；\n     命中就写入 `REF-...`。一张都没命中时写「无（待补参考图：<本镜缺失的起始帧、人物、地点、道具>）」；\n     只命中一部分时，在已有 `REF-...` 后追加「；待补参考图：<仍缺的图片>」，缺口之间只用 `、` 分隔。\n     创作者说图片由他自己在别处准备时，把这份清单写成 `PLAN-...` 槽位，本镜即告就绪；\n     只有创作者明确表示不用图时，才写「无（创作者已明确选择文生视频）」。\n\n   三条依据读的是同一格画面，所以不能互相矛盾：关键帧里点名的人物或道具，一定出现在视觉依据里。\n7. 整集请求完成整集，末端一次报告覆盖、节奏和真实未决选择。\n\n## 镜头要求\n\n- 每镜有唯一职责、明确来源、可见起止状态和合理时长。「来源」以《剧本.md》里真实存在的场景 ID 开头，\n  ID 之后可以跟必要短引文，跨场次的镜头用 `、` 连写多条；`creator_markdown_check.py` 会核对每个 ID 都解析得到。\n- 「来源」短引文应对应本镜承担的动作或声音。正文提到画外人物时，可在视觉依据写\n  `；画外：<类别>「<名称>」`；这只声明其不在画面，不能代替必要动作的落实。\n  需要看见的动作应另有镜头承载，或说明为何省略。\n\n- 剧本里的每个场景都要有镜头承载。确实决定不拍某一场时，在《分镜.md》正文开头写一行\n  `- 未拍场次：<场景 ID>（理由：……）`，多项用 `；` 连接。SHT-01 一直允许带理由的省略，\n  但省略和漏拍在成稿文档里长得一模一样，所以理由要写下来，而不是留在对话里。\n- 已声明原生时长时，每个一镜一生成的镜头都落在其最短与最长秒数内。短于下限的叙事动作在合法\n  镜长内完成后保持终点；长于上限的动作按可见状态闭合点拆镜，拆出的每镜仍各有唯一职责与可信交界。\n- 「唯一动作」写从本镜起点到终点的那条可见状态链；涉及交接、换手、放置或取回时，把接触者、\n  接触方式和物件落点写在同一链里，不能让合法终点之间靠镜外瞬移衔接。\n- 切镜必须带来信息、权力、情绪、空间或节奏变化；同义重复镜头删掉。\n- 相对时间词约束的是事件首次可见或可听的时刻，不因前置动作已经完成就提前释放；分镜时间轴直接\n  写出该边界，不把“稍后”“交接后”等叙事顺序当成数值时间的替代。\n- 同一动作不跨镜重复发生；终点应能成为下一镜可信起点。\n- 关键信息的可读性优先于装饰性运镜，竖屏构图优先保证主体和反应可见。\n- 复杂群戏先锁空间锚点和屏幕方向，再决定景别变化。\n- 起终边界除了逐人姿态，还要写清本镜依赖的身体—物件—空间关系。关系在镜内不变时两端都保留；确需改变时，过程与终点必须有剧本依据。\n- 冻结关键帧只写该瞬间能看见的内容；文字、手指、反射和遮挡要可生成。\n- 《视觉设定.md》的连续性锁在生效镜头上原样写进冻结关键帧正文；锁面不因“参考图会交代”而省略。\n- 检查发现遗漏就直接修正文档，不生成覆盖表来证明自己检查过。镜头块里的「视觉依据」是本镜的依据字段，不是这里说的覆盖表。\n\n## 视觉依据与图片\n\n- `IMG-...` 是《图片提示词.md》里的**提示词条目 ID**，不代表图片已生成、已提供或可用。\n- 已有《图片提示词.md》且本镜需要其中条目时，写「图片提示词项」：ID 必须匹配该文档的可见二级标题，同时写中文名称和它控制的身份、造型、地理、构图或其他边界。ID 只用于查找，不让英文 slug 承担含义。\n- 没有《图片提示词.md》或没有合适条目时，写「图片提示词项：无」，再以中文指向《视觉设定.md》的人物、地点或道具项及控制范围。这是正常直接入口；不为继续分镜而编造 ID，也不补造另一个阶段。\n- 「视觉依据」是每镜必写字段：冻结关键帧成稿后按实际画面反查，需要保持身份、造型或地理的可见人物、地点和道具**必须**逐项写成\n  `《视觉设定.md》·<人物|造型|地点|道具>「<名称>」（控制：<范围>）`，多项用 `；` 连接，名称必须能在《视觉设定.md》里找到同名标题。\n  小比例或背景人物只要需要认出身份仍在范围内，画外人声和不可识别局部不算；本镜确实没有这类条目时写「视觉依据：无」。\n- 关键帧正文出现了某个条目的名字，但它本镜确实不在画面里（物主已离场、名字只出现在屏幕文字上、和某个词同形），\n  在「视觉依据」末尾追加 `；画外：<类别>「<名称>」`。这是如实记录，不是把不在场的人写成在场。\n- 某个条目的名字在正文里根本不可靠（`道具「手机」` 会撞上「手机店」，`人物「小雨」` 会撞上「下着小雨」），\n  在《视觉设定.md》该条目写 `画面代称：无`，机械核对就不再按名字找它；这一镜是否画到它仍由「视觉依据」如实回答。\n- 三条依据都描述同一格画面，不是本镜的资产花名册。「控制」只写这一格承担得起的范围：手背特写不写「本集造型」，\n  只出现屏幕和一根手指的镜头不写「体态」。上一","createdAt":"2026-09-25T11:52:14.433Z","updatedAt":"2026-09-25T11:52:14.433Z"},{"id":"cmugwi64f01tequ06m9g9mfle","slug":"zenstory-ai-drama-skills-short-drama-video-prompts","name":"short-drama-video-prompts","description":"把短剧分镜和冻结关键帧写成可直接复制的视频提示词 Markdown，也可按用户要求写时间线配乐/主题曲意图。用户提到文生/图生视频动作、人物表演、运镜、口型、环境运动、镜头时长、起止状态、把分镜转成视频提示词或写配乐提示词时使用；不生成媒体、不创作歌词、不改分镜边界。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-video-prompts","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"把短剧分镜和冻结关键帧写成可直接复制的视频提示词 Markdown，也可按用户要求写时间线配乐/主题曲意图。用户提到文生/图生视频动作、人物表演、运镜、口型、环境运动、镜头时长、起止状态、把分镜转成视频提示词或写配乐提示词时使用；不生成媒体、不创作歌词、不改分镜边界。","permissions":[],"systemPrompt":"# 短剧视频与时间线音乐提示词\n\n把已确认镜头和起始帧写成有边界、可生成、可直接复制的 `剧集/<EP>/视频提示词.md`。\n每镜使用 `MOTION-...` 标题并引用对应 `SHOT-...`。\n\n## Quick Start\n\n```text\n用 $short-drama-video-prompts 把 EP001 分镜逐镜写成可直接复制的视频提示词\n```\n\n## 入口与边界\n\n有当前分镜、冻结关键帧和必要视觉事实即可检查参考准备；图片提示词不是已有图片的证明。运动提示词拥有从已确认\n起点到终点的变化：表演动作、道具状态、运镜、节奏和声音提示。先按分镜的「输入参考图」选择路径：\n\n- 有可读的真实 `REF-...` 图片时是**图生视频**；原样携带分镜中的槽位、顺序、项目相对路径、\n  中文名称、用途、控制与不得控制范围，静态身份、造型、地点和构图可由参考帧与视觉设定共同拥有。\n  这一行就是本镜的素材清单：路径回答「送哪一张」，`用途` 回答「它在本镜负责什么」，`顺序` 回答\n  「在可复制正文里叫哪个标签」。回答不了这三问的槽位不算准备好。\n- 「输入参考图：无（创作者已明确选择文生视频）」时才是**文生视频**；视频文档必须写非空「静态视觉锚点」，且把它原样纳入\n  可复制正文，让提示词本身交代人物、造型、地点、构图和光线中本镜必要的事实。不得只写\n  `preserve/keep/保持已有外观`，因为执行端没有收到可供保持的图片。\n- 有 `PLAN-...` 槽位时同样是**图生视频**：图片由创作者在生成时自行挂载，本套件没有文件可送。\n  正文照常按图生视频写，`顺序` 就是创作者挂图的次序，`用途` 说明每一张在本镜负责什么。\n  这些镜头不能转 `$short-drama-produce`；要投产就先把真实文件放进项目、改写成 `REF-...`。\n- 「输入参考图：无（待补参考图：……）」、已有 `REF-...` 或 `PLAN-...` 后仍带「；待补参考图：……」，或普通的「无」都表示**未准备好**，不是文生视频授权。先自动查找可用真实图片并请分镜 owner\n  刷新绑定；仍有缺失时，列出镜头、缺失图片及对应 `IMG-...` 或冻结关键帧，不写最终《视频提示词.md》。\n\n创作者可读说明跟随项目语言。开始前读取目标模型档案里的版本、执行模式、提示词方言、原生时长和\n参考方式；这些选择同时约束上游分镜和下游 adapter，不能只在正文阶段临时猜。创作者在本次请求里点名\n目标模型（例如“按 MiniMax H3 写”）而项目档案还没有这一项时，先转 `$short-drama` 把这个选择写进\n`short-drama.json` 的 `production_profile`，再回到本阶段；一句会话里的点名如果没有落到档案上，\n下一轮就会退回通用路径，方言、原生时长和参考方式又要重猜。没有项目配置的独立任务把点名的模型\n和已解析的方言写在本文档开头一行，供下游核对。视频可复制正文优先跟随\n`short-drama.json#/creator_authority/production_profile/choices/video_prompt_language`；未声明时回退到\n`short-drama.json#/format/prompt_language`。没有 `short-drama.json` 时，根据用户点名的目标视频模型\n确认正文语言；目标模型也未声明时沿用用户当前语言，不固定为英文。对白、VO、OS 的口语语言仍由\n剧本和声音方向决定，不能从提示词正文语言推断。\n\n目标为 `seedance-2.0` 时按 [Seedance 2.0 方言](references/seedance-2.0.md) 写，目标为\n`seedance-2.5` 时按 [Seedance 2.5 方言](references/seedance-2.5.md) 写，目标为 `minimax-h3` 时按\n[MiniMax H3 方言](references/minimax-h3.md) 写。只读命中的一份。其他目标或版本不\n套用相近模型的语法，继续按 [目标模型能力档案](references/target-model-profile.md) 的通用路径写。\n\n沿用 creator-first 既有骨架：`## MOTION-... · 中文名`，字段名依次使用「分镜、时长、生成方式、\n输入参考图、静态视觉锚点、起始帧、状态链、终点」，正文标题使用 `### 可复制提示词`。静态视觉锚点\n跟随本镜已解析的视频提示词语言并原样进入正文；正文每个非空行都以 `>` 组成 Markdown 引用块。\n重写内容不能改名、另造替代字段或改成普通段落。\n\n## 工作流\n\n1. 先检查每镜「输入参考图」。用户未手工点名图片时，根据本镜冻结关键帧和可见人物、地点、关键道具的一致性需求，在用户输入、\n   「制作成果」和文档已指向媒体中查找真实图片。内容和用途核对后才自动绑定；不靠相似文件名猜图。\n2. 已有匹配图片时，在当前请求内先让分镜 owner 原地刷新受影响镜头的 `REF-...` 槽位，再回到本阶段；只绑本镜真正需要保持的图，不按资产数量凑槽位。\n   同一次刷新里，如果这些镜头还缺「视觉依据」这个必写字段（旧文档常常没有），一并按已成稿的冻结关键帧回填——\n   两者读的是同一格画面，分开两轮只会让绑了图的镜头仍然说不清画面里有谁。\n   新槽位必须逐字使用 `REF-<slot>（顺序：<n>）· <项目相对路径>《<中文名称>》（用途：<用途>；控制：<范围>；不得控制：<范围>）`；`用途` 取 `身份|造型状态|地理|构图|尺度|效果|起始帧|结束帧|风格` 之一，不得自创斜杠分隔写法。多图只用 `；` 连接，写完后先按格式回读，再复制到视频文档。\n3. 仍有必要图片缺失时，一张都没有就把分镜写成「无（待补参考图：……）」；只缺一部分则保留已核对的 `REF-...`，并在末尾追加「；待补参考图：……」。一次列出缺失镜头、图片用途和对应的 `IMG-...` /冻结关键帧，然后停在视频提示词之前。\n   不伪造路径，不把图片提示词当成图，不静默降级为文生视频。\n   报告缺口时把创作者真正有的三条路一起说清楚，不要只给「生成参考图」和「改成文生视频」：\n   把已有图片放进项目绑成 `REF-...`；由创作者在自己的工具里出图、本轮先写成 `PLAN-...` 挂图计划；\n   或者明确改走文生视频。缺口清单本身就是那份挂图计划的草稿，逐镜写清要哪几张、每张管什么。\n4. 只有创作者明确选择不用参考图时，才把分镜记为「无（创作者已明确选择文生视频）」。准备闭合后原样抄入分镜的「输入参考图」，据此标明\n   「生成方式：图生视频」或「生成方式：文生视频」。该字段只写这两个精确值，不追加模型名、方言或 full-reference 等说明；模型说明留在正文结构中。\n   具体走首帧、首尾帧还是多槽参考，由各槽位的 `用途` 组合读出：只有一张 `起始帧` 走首帧，`起始帧` 加 `结束帧` 走首尾帧，\n   `起始帧` 与人物/地点/道具图同时存在或只有这些图时走多槽参考。命中的模型方言负责把这个组合翻成它自己的素材 role 与正文结构；\n   多槽参考与首/尾帧在同一请求内互斥的模型，起始帧也随整组走多槽参考，不拆成两套输入。\n5. 核对本镜时长落在目标模型档案的原生区间内；不在区间内就回到分镜修订，不能写完提示词后留给\n   adapter 报错，也不能在正文里暗自改变时长。\n   有对白、VO 或 OS 时，同时核对分镜「声音」中的估时依据与实际可用发声窗口；缺少依据就按\n   [对白预算](references/performance-action-timing.md#对白预算) 补做判断。秒段加总正确不代表台词说得完。\n6. 写不能动的边框：图生视频以参考帧和视觉设定锁定；文生视频把必要静态事实写入「静态视觉锚点」和可复制正文。\n7. 原样读取分镜的「起点 → 唯一动作 → 终点」，确认人物、双手和持物的状态转换都发生在镜内。\n8. 写“静态锚点 → 起点 → 唯一动作（触发、接触、落点）→ 次级反应 → 运镜 → 声音 → 终点”，\n   必要时用秒数分段；下一镜从这个终点继续，不另造镜外转换。\n9. 只在真实参考帧已经说明静态外观时删除重复描述；《视觉设定.md》连续性锁的锁面不在可删之列。\n10. 把限制动作空间的已确认关系写成贯穿本镜的正向可见状态，只安排关系允许的动作通道；只有分镜明确改变关系时才写变化过程。优先用可见状态说明边界，必要时保留明确的排除条件。\n11. 逐镜读取文字义务。除非剧本或创作者明确要求，正文用本镜已解析的视频提示词语言直接写明任何时刻都不生成非画内字幕、caption 和对白文字叠加，不能只写抽象的“文字层为空”；这条默认与旗帜、标牌、屏幕等画内文字独立。画内 `exact_readable` 逐字写明字符、语言、承载面和位置，不能用全局 `no-text` 覆盖。\n12. 声音同轨时，把允许的发声按来源、说话人、口语语言和顺序写成完整时间线；每句从原文首字到末字，\n   且逐字对白在单镜可复制正文中只出现一次。视觉动作段只按时间和说话人引用该声音事件，不再抄一遍\n   台词。事件外回到已声明的环境声或静默。Brief、剧本或声音方向已经明确禁止外语前导、语气词、\n   额外人声或重复时，把这些**已确认的发声边界**在完整时间线末尾合并写一次；不靠“只包含”让执行端\n猜，也不自行扩充新的禁用类别。时间线总结只列本镜实际有的声音层。\n   无对白镜写清底声或静默及其覆盖区间；嘴部动作按剧本表演，不默认强制闭嘴。\n   非画内配乐按目标方言声明，有需要时明确写空。\n13. 成稿时检查动作、声音和限制条件是否清楚且相容。正面状态有助于表达目标，必要的否定条件\n   可以保留；不按否定句数量判错。确认不跨下一镜、不要求互斥动作、不让人物或道具瞬移变形。\n\n14. 用户要整集就完成整集，镜头组只是内部批次。\n15. 同一连续时空中相邻正式生成段、且目标档案支持续接时，默认选择“从上一段生成结果续接”；\n    一镜一生成只决定每次装一个镜头，不等于各镜独立文生。只有创作者明确要求独立重生成，或上游\n    已接受时间/地点跳变时才重新起链。选择续接后，这就是该链唯一正式执行路由。第二段起同时绑定上一段\n    **实际视频**和从该视频取得的\n    **实际尾帧**：视频负责动作、节奏和声音连续，尾帧负责下一段的可见起点。具体素材 role 和续写措辞\n    由命中的模型方言决定，不能把通用职责直接翻译成供应商字段。未取得真实产物时，后续段在\n    `视频提示词.md` 标为“待续接、不可提交”，写明缺少这两项真实输入并保留下一段内容草案；不得把它\n    降级成独立文生视频，也不用计划尾帧、关键帧提示词或文字描述冒充接力输入。逐镜 `MOTION-...`\n    仍是成员边界和内容依据，不是与正式容器路由并列的另一套提交方案。\n\n## 提示词要求\n\n- 从可见起点开始，以可验证终点结束。\n- 可复制正文完整实现分镜的「起点 → 唯一动作 → 终点」；交接、换手和道具落位不跨镜省略。\n- 主体、动作对象、方向、幅度、速度和先后关系明确。\n- 表演写动作与反应，不写无法执行的抽象结果。\n- 运镜与人物动作不争夺注意力；复杂运镜必须有叙事理由。\n- 声音只写该镜需要的对白、画外音、环境或转场职责，不擅自补歌词。\n- 非画内字幕、caption 和对白文字叠加默认不生成；正文直接声明全镜任何时刻都不生成这些内容，不用抽象工作流术语代替执行指令。只有剧本或创作者明确要求才开启。画内精确文字是独立允许集合，不因关闭字幕而消失，也不让未批准文字混入。\n- 同轨对白/VO/OS 同时写逐字文本、口语语言和发声边界；不添加来源没有的声源或重复限制。\n- 无对白镜同样说明底声或静默；时间线总结与实际声音层一致。H3 无非画内配乐时写 `non_diegetic_music: N/A`。\n- 正文里被引号或 `<d>` 包起来的中文必须逐字来自《剧本.md》，画内标牌文字可来自《视觉设定.md》；\n  分镜自己写下的画内文字与声音同样算数。`creator_markdown_check.py` 会核对四字以上的引文（VID-25）。\n  台词不在剧本里就回到写作技能改剧本，不在提示词里改。\n- 上游持续关系用贯穿状态和允许动作通道表达，避免重复限制或冲突动作。\n- 本镜命中的连续性锁，锁面原样出现在可复制正文里；颜色、材质、形制这类跨镜不变事实不靠模型记忆。\n- 正文可直接复制，不含占位符、流程说明、文件路径或 QA 结论。\n\n## 按需知识\n\n默认只读本 SKILL、当前分镜和必要视觉事实。遇到对应问题时只打开一份：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 单镜运动正文的最小配方：[运动配方](references/motion-recipe.md)\n- 外部执行需要的明确动作语法：[生产提示词语法](references/production-prompt-grammar.md)\n- 多人表演、口型和精确时序：[表演与动作时序](references/performance-action-timing.md)\n- 运镜、声音和相邻镜头连续性：[摄影与声音连续性](references/camera-audio-continuity.md)\n- 动作负载、形变和生成风险：[可生成性](references/generability.md)\n- 目标执行端的时长、参考、声音同轨等能力：[目标模型能力档案](references/target-model-profile.md)\n- Seedance 2.0 的中文分镜、素材与声音语法：[Seedance 2.0 方言](references/seedance-2.0.md)\n- Seedance 2.5 的长叙事、时间戳和任务类型语法：[Seedance 2.5 方言](references/seedance-2.5.md)\n- MiniMax H3 的结构化正文与参考模式：[MiniMax H3 方言](references/minimax-h3.md)\n- 多镜容器或静态漫剧的交付方式：[交付形态](references/delivery-profile.md)\n- 完成前的边界检查：[审查与示例](references/review-and-fixtures.md)\n\n用户明确要求时间线音乐时，在本文档增加独立章节，写使用区间、剧情功能、进入/退出、动态曲线和\n禁用项；歌词必须来自用户提供或明确接受的文本。静态漫剧只需要关键帧切换与配音时可以跳过逐镜\n视频运动提示词，直接进入生产预览。\n\n## 完成与投产\n\n每个点名镜头都有明确起点、主变化、时序、运镜/声音边界和可验证终点，且与相邻镜头连续，即完成。\n实际生成转 `$short-drama-produce`，先展示精确 job 并取得显式确认；本技能不调用外部服务。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-video-prompts","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-video-prompts/SKILL.md","defaultBranch":"main"},"readme":"# 短剧视频与时间线音乐提示词\n\n把已确认镜头和起始帧写成有边界、可生成、可直接复制的 `剧集/<EP>/视频提示词.md`。\n每镜使用 `MOTION-...` 标题并引用对应 `SHOT-...`。\n\n## Quick Start\n\n```text\n用 $short-drama-video-prompts 把 EP001 分镜逐镜写成可直接复制的视频提示词\n```\n\n## 入口与边界\n\n有当前分镜、冻结关键帧和必要视觉事实即可检查参考准备；图片提示词不是已有图片的证明。运动提示词拥有从已确认\n起点到终点的变化：表演动作、道具状态、运镜、节奏和声音提示。先按分镜的「输入参考图」选择路径：\n\n- 有可读的真实 `REF-...` 图片时是**图生视频**；原样携带分镜中的槽位、顺序、项目相对路径、\n  中文名称、用途、控制与不得控制范围，静态身份、造型、地点和构图可由参考帧与视觉设定共同拥有。\n  这一行就是本镜的素材清单：路径回答「送哪一张」，`用途` 回答「它在本镜负责什么」，`顺序` 回答\n  「在可复制正文里叫哪个标签」。回答不了这三问的槽位不算准备好。\n- 「输入参考图：无（创作者已明确选择文生视频）」时才是**文生视频**；视频文档必须写非空「静态视觉锚点」，且把它原样纳入\n  可复制正文，让提示词本身交代人物、造型、地点、构图和光线中本镜必要的事实。不得只写\n  `preserve/keep/保持已有外观`，因为执行端没有收到可供保持的图片。\n- 有 `PLAN-...` 槽位时同样是**图生视频**：图片由创作者在生成时自行挂载，本套件没有文件可送。\n  正文照常按图生视频写，`顺序` 就是创作者挂图的次序，`用途` 说明每一张在本镜负责什么。\n  这些镜头不能转 `$short-drama-produce`；要投产就先把真实文件放进项目、改写成 `REF-...`。\n- 「输入参考图：无（待补参考图：……）」、已有 `REF-...` 或 `PLAN-...` 后仍带「；待补参考图：……」，或普通的「无」都表示**未准备好**，不是文生视频授权。先自动查找可用真实图片并请分镜 owner\n  刷新绑定；仍有缺失时，列出镜头、缺失图片及对应 `IMG-...` 或冻结关键帧，不写最终《视频提示词.md》。\n\n创作者可读说明跟随项目语言。开始前读取目标模型档案里的版本、执行模式、提示词方言、原生时长和\n参考方式；这些选择同时约束上游分镜和下游 adapter，不能只在正文阶段临时猜。创作者在本次请求里点名\n目标模型（例如“按 MiniMax H3 写”）而项目档案还没有这一项时，先转 `$short-drama` 把这个选择写进\n`short-drama.json` 的 `production_profile`，再回到本阶段；一句会话里的点名如果没有落到档案上，\n下一轮就会退回通用路径，方言、原生时长和参考方式又要重猜。没有项目配置的独立任务把点名的模型\n和已解析的方言写在本文档开头一行，供下游核对。视频可复制正文优先跟随\n`short-drama.json#/creator_authority/production_profile/choices/video_prompt_language`；未声明时回退到\n`short-drama.json#/format/prompt_language`。没有 `short-drama.json` 时，根据用户点名的目标视频模型\n确认正文语言；目标模型也未声明时沿用用户当前语言，不固定为英文。对白、VO、OS 的口语语言仍由\n剧本和声音方向决定，不能从提示词正文语言推断。\n\n目标为 `seedance-2.0` 时按 [Seedance 2.0 方言](references/seedance-2.0.md) 写，目标为\n`seedance-2.5` 时按 [Seedance 2.5 方言](references/seedance-2.5.md) 写，目标为 `minimax-h3` 时按\n[MiniMax H3 方言](references/minimax-h3.md) 写。只读命中的一份。其他目标或版本不\n套用相近模型的语法，继续按 [目标模型能力档案](references/target-model-profile.md) 的通用路径写。\n\n沿用 creator-first 既有骨架：`## MOTION-... · 中文名`，字段名依次使用「分镜、时长、生成方式、\n输入参考图、静态视觉锚点、起始帧、状态链、终点」，正文标题使用 `### 可复制提示词`。静态视觉锚点\n跟随本镜已解析的视频提示词语言并原样进入正文；正文每个非空行都以 `>` 组成 Markdown 引用块。\n重写内容不能改名、另造替代字段或改成普通段落。\n\n## 工作流\n\n1. 先检查每镜「输入参考图」。用户未手工点名图片时，根据本镜冻结关键帧和可见人物、地点、关键道具的一致性需求，在用户输入、\n   「制作成果」和文档已指向媒体中查找真实图片。内容和用途核对后才自动绑定；不靠相似文件名猜图。\n2. 已有匹配图片时，在当前请求内先让分镜 owner 原地刷新受影响镜头的 `REF-...` 槽位，再回到本阶段；只绑本镜真正需要保持的图，不按资产数量凑槽位。\n   同一次刷新里，如果这些镜头还缺「视觉依据」这个必写字段（旧文档常常没有），一并按已成稿的冻结关键帧回填——\n   两者读的是同一格画面，分开两轮只会让绑了图的镜头仍然说不清画面里有谁。\n   新槽位必须逐字使用 `REF-<slot>（顺序：<n>）· <项目相对路径>《<中文名称>》（用途：<用途>；控制：<范围>；不得控制：<范围>）`；`用途` 取 `身份|造型状态|地理|构图|尺度|效果|起始帧|结束帧|风格` 之一，不得自创斜杠分隔写法。多图只用 `；` 连接，写完后先按格式回读，再复制到视频文档。\n3. 仍有必要图片缺失时，一张都没有就把分镜写成「无（待补参考图：……）」；只缺一部分则保留已核对的 `REF-...`，并在末尾追加「；待补参考图：……」。一次列出缺失镜头、图片用途和对应的 `IMG-...` /冻结关键帧，然后停在视频提示词之前。\n   不伪造路径，不把图片提示词当成图，不静默降级为文生视频。\n   报告缺口时把创作者真正有的三条路一起说清楚，不要只给「生成参考图」和「改成文生视频」：\n   把已有图片放进项目绑成 `REF-...`；由创作者在自己的工具里出图、本轮先写成 `PLAN-...` 挂图计划；\n   或者明确改走文生视频。缺口清单本身就是那份挂图计划的草稿，逐镜写清要哪几张、每张管什么。\n4. 只有创作者明确选择不用参考图时，才把分镜记为「无（创作者已明确选择文生视频）」。准备闭合后原样抄入分镜的「输入参考图」，据此标明\n   「生成方式：图生视频」或「生成方式：文生视频」。该字段只写这两个精确值，不追加模型名、方言或 full-reference 等说明；模型说明留在正文结构中。\n   具体走首帧、首尾帧还是多槽参考，由各槽位的 `用途` 组合读出：只有一张 `起始帧` 走首帧，`起始帧` 加 `结束帧` 走首尾帧，\n   `起始帧` 与人物/地点/道具图同时存在或只有这些图时走多槽参考。命中的模型方言负责把这个组合翻成它自己的素材 role 与正文结构；\n   多槽参考与首/尾帧在同一请求内互斥的模型，起始帧也随整组走多槽参考，不拆成两套输入。\n5. 核对本镜时长落在目标模型档案的原生区间内；不在区间内就回到分镜修订，不能写完提示词后留给\n   adapter 报错，也不能在正文里暗自改变时长。\n   有对白、VO 或 OS 时，同时核对分镜「声音」中的估时依据与实际可用发声窗口；缺少依据就按\n   [对白预算](references/performance-action-timing.md#对白预算) 补做判断。秒段加总正确不代表台词说得完。\n6. 写不能动的边框：图生视频以参考帧和视觉设定锁定；文生视频把必要静态事实写入「静态视觉锚点」和可复制正文。\n7. 原样读取分镜的「起点 → 唯一动作 → 终点」，确认人物、双手和持物的状态转换都发生在镜内。\n8. 写“静态锚点 → 起点 → 唯一动作（触发、接触、落点）→ 次级反应 → 运镜 → 声音 → 终点”，\n   必要时用秒数分段；下一镜从这个终点继续，不另造镜外转换。\n9. 只在真实参考帧已经说明静态外观时删除重复描述；《视觉设定.md》连续性锁的锁面不在可删之列。\n10. 把限制动作空间的已确认关系写成贯穿本镜的正向可见状态，只安排关系允许的动作通道；只有分镜明确改变关系时才写变化过程。优先用可见状态说明边界，必要时保留明确的排除条件。\n11. 逐镜读取文字义务。除非剧本或创作者明确要求，正文用本镜已解析的视频提示词语言直接写明任何时刻都不生成非画内字幕、caption 和对白文字叠加，不能只写抽象的“文字层为空”；这条默认与旗帜、标牌、屏幕等画内文字独立。画内 `exact_readable` 逐字写明字符、语言、承载面和位置，不能用全局 `no-text` 覆盖。\n12. 声音同轨时，把允许的发声按来源、说话人、口语语言和顺序写成完整时间线；每句从原文首字到末字，\n   且逐字对白在单镜可复制正文中只出现一次。视觉动作段只按时间和说话人引用该声音事件，不再抄一遍\n   台词。事件外回到已声明的环境声或静默。Brief、剧本或声音方向已经明确禁止外语前导、语气词","createdAt":"2026-09-25T11:52:14.463Z","updatedAt":"2026-09-25T11:52:14.463Z"},{"id":"cmugwi65201thqu061mvlpuq5","slug":"zenstory-ai-drama-skills-short-drama-write","name":"short-drama-write","description":"编写或修订可拍摄的中文短剧、漫剧单集 Markdown 剧本，也负责保留作者原文地规范化现成剧本。用户提出“写/改一集短剧”“把大纲写成剧本”“优化场景/对白”“去模板感”“去 AI 味润色”“续写下一集”或提供剧本要求进入后续制作时使用；不负责资产、分镜、媒体提示词或终审。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-write","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"编写或修订可拍摄的中文短剧、漫剧单集 Markdown 剧本，也负责保留作者原文地规范化现成剧本。用户提出“写/改一集短剧”“把大纲写成剧本”“优化场景/对白”“去模板感”“去 AI 味润色”“续写下一集”或提供剧本要求进入后续制作时使用；不负责资产、分镜、媒体提示词或终审。","permissions":[],"systemPrompt":"# 短剧写作\n\n把单集意图写成可表演、可拍摄、会改变故事状态的 `剧集/<EP>/剧本.md`。\n\n## Quick Start\n\n只维护一份剧本 Markdown，不另建 episode card、beats、block index、录音表、QA 或接受记录。\n一级标题使用 `# EP001 集名`，场景标题使用 `## EP001-SC001 内 · 地点 · 时间/天气`。\n对白写 `角色（可选表演提示）：台词`；生产标签使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、\n`[连续性]`、`[转场]`。不要把含冒号的动作叙述误写成对白。\n\n## 入口\n\n- 有分集规划：读取本集进入状态、目标、转折、回报和交接事实。\n- 只有想法/大纲：在上下文形成最小单集契约和因果节拍，再直接写剧本。\n- 已有剧本：保留作者语言，只做用户点名的定点修订。\n- 非规范文本要进入制作：保留原文，只做必要的场景、动作、对白和生产标签规范化。\n\n开发大纲和长篇分析都是可选上游；当前材料足够时直接写。\n\n## 工作流\n\n1. 锁定本集承诺的观看体验、谁现在要什么、阻力、当集兑现和退出状态。\n2. 只识别本集实际存在的发动机：若主打艰难选择，检查两边价值；若判断转折依赖争议证据，检查证明边界；若前景化精确死线，检查动作容量；若题面限定次数、轮次、呼吸或节拍，检查每个单位是否在边界内完成所需状态。没有时不强行补齐；输入已经以它为主发动机时，要让它真正改变行动、关系或结果，不只在台词中点名。\n3. 在上下文排“因为—行动—结果—下一股压力”，不落盘节拍表；让物件、对白、沉默、空间或声音按本集题材承担必要工作，不预设某一种载体。\n4. 逐场确定不可替代的功能、可见变化与场尾状态；由争取或冲突组织的场景再明确焦点议程与阻力。承担主要戏剧功能的配角要有自己的策略，事务性或环境性角色保持简洁即可。\n5. 把动作、对白、画外音、声音事实和画面文字写入同一份剧本。\n6. 用户要求整集就写完整集，场景批次自动续跑。\n7. 交稿前静默反查：只看剧本能否接收到本集承诺、人物行动是否有因果、题材语气是否一致；再对本集确实使用的选择、证据、有限单位或精确死线做专项检查。若自检让剧本长出输入没有要求的机关，撤掉机关而不是替它找理由。\n8. 局部修订保留无关段落；明确问题直接修正，只把真实剧情分叉交给用户。\n\n## 写作要求\n\n- 先服从输入已经给出的事实、`必须/禁止`、题材观看契约和退出状态；本技能的审查项与手艺默认只帮助实现这些要求，不能反过来补造题面没有的精确数字、记录、资源、程序、关系或机关。\n- 每场改变信息、权力、关系、情绪、物理状态或风险；无变化的场删掉或合并。核心阻力的转向要有可追溯的事实、筹码、权限、代价或人物行动，不能只靠对手停止反应。\n- 对白必须在争取、回避、试探、逼迫或重新定义关系；用可见、可听、可触的行为表现状态，不用解释替代行动，也不把已经演清的机制再说一遍。\n- 观众理解当前行动所必需的赌注要进入剧本，但载体服从题材；选择、证据、有限单位、精确死线等专项规则只在输入真正以它为发动机时启用，并按需读取[剧作手艺](references/script-craft.md)，普通决定、普通物件和模糊时间压力不升级成同一套机关。\n- 压缩过程时只保留会改变策略、关系、风险或结果的节点。资源与外部反应必须来自输入或前文建立，且不能替人物完成最难的戏剧行动。\n- 承担主要冲突的角色要保持相称的目标、判断或策略；事务性、环境性角色保持简洁，不为检查表硬加秘密、反转或人物弧。\n- 已建立的代价、不可逆后果、关键持物、空间和知识状态要进入可追溯的退出状态；结尾可推进、留白、反讽、安静收束或形成余韵，不强制追加外部事件。\n- `[连续性]` 只交接由前文动作已经建立、又容易在下游丢失的状态；不能用作者标签证明镜头外从未发生某事，也不复述正文已清楚呈现的结果。\n- 交稿前静默做一次经济性检查：是否增加了输入没有要求的精确数字或记录链；是否用标签/对白重复动作；是否在回报后堆了多个同方向后果。没有新作用的内容删掉，knowhow 本身不删。\n- 输入给出目标时长时按真实表演、动作和停顿通读压稿，先删重复验证、解释和同义收尾；不用统一字数、镜头数或节拍数填模板。\n- 用户原文优先；“去 AI 味”是定点修订，不抹平作者个性。\n\n## 按需知识\n\n默认只读本 SKILL 和直接输入。出现下列明确信号时，在写正文前读取对应知识；同一输入有多个不同问题\n可以分别读取，但不遍历无关引用：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 场景标题、对白和生产标签语法，或把创作者带来的现成剧本[规范化](references/screenplay-format.md#7-现有文本的规范化入口)：[剧本格式](references/screenplay-format.md)\n- 项目特有的制作稿方言：[制作格式方言](references/production-format-dialect.md)\n- 输入含[核心选择](references/script-craft.md#35-把一拍写成艰难选择时两个方向都要活着)、[有限次数/轮次/呼吸/节拍](references/script-craft.md#64-有限单位按完成状态计数)、[精确倒计时](references/script-craft.md#63-倒计时先算动作不要只写数字)或[会改变人物判断的关键物证](references/script-craft.md#53-证据先改变判断再改变关系)：[剧作手艺](references/script-craft.md)\n- 过去关系必须通过对白进入，或关键人物容易只剩说明功能：[对白手艺](references/dialogue-craft.md)\n- 声源、留白与 sound bridge：[场景声音戏剧](references/scene-sound-dramaturgy.md)\n- 同一故事义务的不同可拍实现：[可替代实现](references/substitutable-realization.md)\n- 长单集跨上下文时的最小交接：[场景交接胶囊](references/scene-handoff-capsule.md)，只留在上下文\n\n## 时长估算（按需）\n\n用户问时长时才把索引写入系统临时目录。先用 Python 查询跨平台临时目录，把第一条命令打印的完整\n路径原样替换进后两条命令的引号内。以下每条都是一行完整命令，不依赖 shell 变量或续行符；Windows\n没有 `python3` 命令时使用 `py -3`。`--speaker` 的示例值必须替换为本集实际说话者。\n`--project short-drama.json` **只加在第三条命令上**（`duration_estimate.py` 才接受它，\n`screenplay_index.py` 没有这个参数，加上去会直接报 `unrecognized arguments`），且只在项目\n配置确实存在时加：\n\n```text\npython3 -c \"from pathlib import Path; import tempfile, uuid; print(Path(tempfile.gettempdir()) / ('short-drama-' + uuid.uuid4().hex + '.jsonl'))\"\npython3 \"{技能目录}/scripts/screenplay_index.py\" \"剧集/EP001/剧本.md\" --output \"粘贴第一条命令输出的完整路径\" --speaker \"本集角色一\" --speaker \"本集角色二\"\npython3 \"{技能目录}/scripts/duration_estimate.py\" \"剧集/EP001/剧本.md\" --index \"粘贴第一条命令输出的完整路径\"\n```\n\n**改稿后重跑**：第二条命令写过一次的输出路径不能直接再写一次，会以 `already holds an index` 失败。\n要保留原有块 ID 就加 `--previous-index <同一路径>`，要从头重编号就加 `--no-previous`；\n或者干脆回到第一条命令另取一个临时路径。\n\n估时前区分计数口径：`dialogue_characters` 包含标点，视频提示词中的参考语速按可发声字数计算。\n按语速换算时排除标点，并按实际读法处理数字和缩写；不把两个计数混用。\n\n估算是参考，不是门禁；没有语速或动作段速率时只报告可数事实，不猜秒数。但任务已给目标时长时，\n写作者仍须用真实朗读和动作通读判断能否容纳，并直接压缩重复节拍；“不能精确估秒”不是忽略目标的理由。\n\n## 完成\n\n点名范围已写入、场景因果连贯、对白与行动可表演、承诺有兑现或有意延迟、结尾完成本集预定的戏剧或情绪功能，即完成。最后一拍可以推进，也可以安静收束、形成余韵或让既有动作变义；判断它是否有效，不用“是否又发生一件事”代替。\n资产、分镜、审查与生产只有用户点名时开始。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama-write","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama-write/SKILL.md","defaultBranch":"main"},"readme":"# 短剧写作\n\n把单集意图写成可表演、可拍摄、会改变故事状态的 `剧集/<EP>/剧本.md`。\n\n## Quick Start\n\n只维护一份剧本 Markdown，不另建 episode card、beats、block index、录音表、QA 或接受记录。\n一级标题使用 `# EP001 集名`，场景标题使用 `## EP001-SC001 内 · 地点 · 时间/天气`。\n对白写 `角色（可选表演提示）：台词`；生产标签使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、\n`[连续性]`、`[转场]`。不要把含冒号的动作叙述误写成对白。\n\n## 入口\n\n- 有分集规划：读取本集进入状态、目标、转折、回报和交接事实。\n- 只有想法/大纲：在上下文形成最小单集契约和因果节拍，再直接写剧本。\n- 已有剧本：保留作者语言，只做用户点名的定点修订。\n- 非规范文本要进入制作：保留原文，只做必要的场景、动作、对白和生产标签规范化。\n\n开发大纲和长篇分析都是可选上游；当前材料足够时直接写。\n\n## 工作流\n\n1. 锁定本集承诺的观看体验、谁现在要什么、阻力、当集兑现和退出状态。\n2. 只识别本集实际存在的发动机：若主打艰难选择，检查两边价值；若判断转折依赖争议证据，检查证明边界；若前景化精确死线，检查动作容量；若题面限定次数、轮次、呼吸或节拍，检查每个单位是否在边界内完成所需状态。没有时不强行补齐；输入已经以它为主发动机时，要让它真正改变行动、关系或结果，不只在台词中点名。\n3. 在上下文排“因为—行动—结果—下一股压力”，不落盘节拍表；让物件、对白、沉默、空间或声音按本集题材承担必要工作，不预设某一种载体。\n4. 逐场确定不可替代的功能、可见变化与场尾状态；由争取或冲突组织的场景再明确焦点议程与阻力。承担主要戏剧功能的配角要有自己的策略，事务性或环境性角色保持简洁即可。\n5. 把动作、对白、画外音、声音事实和画面文字写入同一份剧本。\n6. 用户要求整集就写完整集，场景批次自动续跑。\n7. 交稿前静默反查：只看剧本能否接收到本集承诺、人物行动是否有因果、题材语气是否一致；再对本集确实使用的选择、证据、有限单位或精确死线做专项检查。若自检让剧本长出输入没有要求的机关，撤掉机关而不是替它找理由。\n8. 局部修订保留无关段落；明确问题直接修正，只把真实剧情分叉交给用户。\n\n## 写作要求\n\n- 先服从输入已经给出的事实、`必须/禁止`、题材观看契约和退出状态；本技能的审查项与手艺默认只帮助实现这些要求，不能反过来补造题面没有的精确数字、记录、资源、程序、关系或机关。\n- 每场改变信息、权力、关系、情绪、物理状态或风险；无变化的场删掉或合并。核心阻力的转向要有可追溯的事实、筹码、权限、代价或人物行动，不能只靠对手停止反应。\n- 对白必须在争取、回避、试探、逼迫或重新定义关系；用可见、可听、可触的行为表现状态，不用解释替代行动，也不把已经演清的机制再说一遍。\n- 观众理解当前行动所必需的赌注要进入剧本，但载体服从题材；选择、证据、有限单位、精确死线等专项规则只在输入真正以它为发动机时启用，并按需读取[剧作手艺](references/script-craft.md)，普通决定、普通物件和模糊时间压力不升级成同一套机关。\n- 压缩过程时只保留会改变策略、关系、风险或结果的节点。资源与外部反应必须来自输入或前文建立，且不能替人物完成最难的戏剧行动。\n- 承担主要冲突的角色要保持相称的目标、判断或策略；事务性、环境性角色保持简洁，不为检查表硬加秘密、反转或人物弧。\n- 已建立的代价、不可逆后果、关键持物、空间和知识状态要进入可追溯的退出状态；结尾可推进、留白、反讽、安静收束或形成余韵，不强制追加外部事件。\n- `[连续性]` 只交接由前文动作已经建立、又容易在下游丢失的状态；不能用作者标签证明镜头外从未发生某事，也不复述正文已清楚呈现的结果。\n- 交稿前静默做一次经济性检查：是否增加了输入没有要求的精确数字或记录链；是否用标签/对白重复动作；是否在回报后堆了多个同方向后果。没有新作用的内容删掉，knowhow 本身不删。\n- 输入给出目标时长时按真实表演、动作和停顿通读压稿，先删重复验证、解释和同义收尾；不用统一字数、镜头数或节拍数填模板。\n- 用户原文优先；“去 AI 味”是定点修订，不抹平作者个性。\n\n## 按需知识\n\n默认只读本 SKILL 和直接输入。出现下列明确信号时，在写正文前读取对应知识；同一输入有多个不同问题\n可以分别读取，但不遍历无关引用：\n\n- 阶段边界与规则分级：[阶段契约](references/stage-contract.md)\n- 场景标题、对白和生产标签语法，或把创作者带来的现成剧本[规范化](references/screenplay-format.md#7-现有文本的规范化入口)：[剧本格式](references/screenplay-format.md)\n- 项目特有的制作稿方言：[制作格式方言](references/production-format-dialect.md)\n- 输入含[核心选择](references/script-craft.md#35-把一拍写成艰难选择时两个方向都要活着)、[有限次数/轮次/呼吸/节拍](references/script-craft.md#64-有限单位按完成状态计数)、[精确倒计时](references/script-craft.md#63-倒计时先算动作不要只写数字)或[会改变人物判断的关键物证](references/script-craft.md#53-证据先改变判断再改变关系)：[剧作手艺](references/script-craft.md)\n- 过去关系必须通过对白进入，或关键人物容易只剩说明功能：[对白手艺](references/dialogue-craft.md)\n- 声源、留白与 sound bridge：[场景声音戏剧](references/scene-sound-dramaturgy.md)\n- 同一故事义务的不同可拍实现：[可替代实现](references/substitutable-realization.md)\n- 长单集跨上下文时的最小交接：[场景交接胶囊](references/scene-handoff-capsule.md)，只留在上下文\n\n## 时长估算（按需）\n\n用户问时长时才把索引写入系统临时目录。先用 Python 查询跨平台临时目录，把第一条命令打印的完整\n路径原样替换进后两条命令的引号内。以下每条都是一行完整命令，不依赖 shell 变量或续行符；Windows\n没有 `python3` 命令时使用 `py -3`。`--speaker` 的示例值必须替换为本集实际说话者。\n`--project short-drama.json` **只加在第三条命令上**（`duration_estimate.py` 才接受它，\n`screenplay_index.py` 没有这个参数，加上去会直接报 `unrecognized arguments`），且只在项目\n配置确实存在时加：\n\n```text\npython3 -c \"from pathlib import Path; import tempfile, uuid; print(Path(tempfile.gettempdir()) / ('short-drama-' + uuid.uuid4().hex + '.jsonl'))\"\npython3 \"{技能目录}/scripts/screenplay_index.py\" \"剧集/EP001/剧本.md\" --output \"粘贴第一条命令输出的完整路径\" --speaker \"本集角色一\" --speaker \"本集角色二\"\npython3 \"{技能目录}/scripts/duration_estimate.py\" \"剧集/EP001/剧本.md\" --index \"粘贴第一条命令输出的完整路径\"\n```\n\n**改稿后重跑**：第二条命令写过一次的输出路径不能直接再写一次，会以 `already holds an index` 失败。\n要保留原有块 ID 就加 `--previous-index <同一路径>`，要从头重编号就加 `--no-previous`；\n或者干脆回到第一条命令另取一个临时路径。\n\n估时前区分计数口径：`dialogue_characters` 包含标点，视频提示词中的参考语速按可发声字数计算。\n按语速换算时排除标点，并按实际读法处理数字和缩写；不把两个计数混用。\n\n估算是参考，不是门禁；没有语速或动作段速率时只报告可数事实，不猜秒数。但任务已给目标时长时，\n写作者仍须用真实朗读和动作通读判断能否容纳，并直接压缩重复节拍；“不能精确估秒”不是忽略目标的理由。\n\n## 完成\n\n点名范围已写入、场景因果连贯、对白与行动可表演、承诺有兑现或有意延迟、结尾完成本集预定的戏剧或情绪功能，即完成。最后一拍可以推进，也可以安静收束、形成余韵或让既有动作变义；判断它是否有效，不用“是否又发生一件事”代替。\n资产、分镜、审查与生产只有用户点名时开始。\n五份创作文档齐备后，可转 `$short-drama` 对跨文档结构做一次机械核对；内容质量仍由创作者审查。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","createdAt":"2026-09-25T11:52:14.486Z","updatedAt":"2026-09-25T11:52:14.486Z"},{"id":"cmugwi65m01tkqu062pm5sb6r","slug":"zenstory-ai-drama-skills-short-drama","name":"short-drama","description":"基于文件系统初始化和继续短剧或漫剧项目，提供 creator-first 五文档路由、本地 Dashboard、制作形态与 Look Development 决策。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”，或任务跨多个创作阶段时使用；明确的写作、资产、提示词、分镜、剪辑或审查请求由对应子 skill 直接处理。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"基于文件系统初始化和继续短剧或漫剧项目，提供 creator-first 五文档路由、本地 Dashboard、制作形态与 Look Development 决策。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”，或任务跨多个创作阶段时使用；明确的写作、资产、提示词、分镜、剪辑或审查请求由对应子 skill 直接处理。","permissions":[],"systemPrompt":"# 短剧创作路由\n\n本技能负责项目初始化、跨阶段路由、制作形态与 Dashboard。各阶段正文由对应 owner 完成。\n\n## Quick Start\n\n所有项目统一使用 [creator-first 工作流](references/creator-workflow.md)：每集按需维护\n`剧本.md`、`视觉设定.md`、`分镜.md`、`图片提示词.md`、`视频提示词.md`，不建立并行的结构化创作真相。\n具体写法见 [五份创作文档](references/creator-documents.md)。\n\n## 路由\n\n| 用户要做什么 | owner / 行为 |\n|---|---|\n| 开发点子、系列承诺、改编和分集地图 | `$short-drama-develop`，仅在用户需要时 |\n| 已有多集完整剧本/散稿识别分集 | `$short-drama-develop` 按实际边界建立临时索引 |\n| 分析长篇原著 | `$short-drama-novel-analyze`，仅在用户需要时 |\n| 写或改单集剧本 | `$short-drama-write` → `剧本.md` |\n| 拆人物、造型、地点、道具 | `$short-drama-assets` → `视觉设定.md` |\n| 写资产图片提示词 | `$short-drama-image-prompts` → `图片提示词.md` |\n| 做镜头和冻结关键帧 | `$short-drama-storyboard` → `分镜.md` |\n| 写视频/时间线音乐提示词 | `$short-drama-video-prompts` → `视频提示词.md` |\n| 实际生成媒体 | `$short-drama-produce`，先预览，再显式确认，最后运行 |\n| 把已生产的素材剪成成片 | `$short-drama-edit` → `剪辑单.md` 与 `制作成果/成片/` |\n| 审稿或校验 | `$short-drama-review`，仅在用户点名时 |\n| 初始化、Dashboard、归档点名文档 | 本技能 |\n\n`项目开发/` 中的长材料分析与分集索引是可选分析工作区，不参与单集布局判定；写任何一集仍只维护\n该集的五份 creator-first Markdown。\n\n现成剧本可直接拆资产；已有视觉事实可直接写图片提示词或分镜；已有分镜可直接写视频提示词。\n不要为补齐名义流水线伪造上游。\n\n五份创作文档记录剧本、视觉与提示词；剪辑单在素材生产后记录取舍和后期处理。\n修改故事、镜头职责或上游时长声明时，回到负责该内容的文档。\n\n## 执行请求\n\n1. 找到用户给出的项目或资料，只读当前任务的直接输入。\n2. 把用户点名的完整范围交给相应 owner；批次只控制上下文，自动续跑。\n3. 只有真实创作分叉才询问；不要拿 schema、目录、事务或检查器询问创作者。\n4. 范围完成后一次回报完成内容、关键决定、真实未决项和可选下一步。\n5. 不自动开始用户没点名的审查、归档或生产。\n6. 请求横跨视觉设定、图片提示词、分镜或视频提示词时，结束前按当前五文档做一次视觉依赖对账；\n   不因图片提示词和分镜可并行，就把后完成的一支留在另一支的旧引用之外。\n7. 视频提示词请求遇到「输入参考图：无」或仍带「待补参考图」时，先路由分镜 owner 检查项目已有图片并刷新绑定。有匹配图就同请求续跑；有必要图缺失就列表停下。\n   停下时把三条路一起给出：把已有图片放进项目绑成 `REF-...`；由创作者在自己的工具里出图、本轮先用\n   `PLAN-...` 写出逐镜挂图计划并照常产出视频提示词；或者明确改走文生视频。用本套件生产参考图需要项目外的\n   adapter 与凭据，只是第一条路的一种做法，不要把它说成唯一入口，也不要只给「生成参考图 / 文生视频」两个选项。\n   不把“没有手工指定”当成明确选择文生视频。这一轮如果镜头还缺「视觉依据」，\n   同时按已成稿的冻结关键帧回填；两条依据描述同一格画面，不要只补一条。\n8. 用户在会话里点名目标视频模型（“按 MiniMax H3 写”“用 Seedance 2.5”）而 `short-drama.json` 的\n   `production_profile` 还是 `unset` 时，先把这个选择连同它带来的原生时长、参考方式和正文语言写进档案，\n   再继续下游阶段。会话里的一句点名不落到档案上，下一轮就会退回通用路径，方言和时长要重猜。\n\n## 初始化与 Dashboard\n\n需要项目配置时运行：\n\n```bash\npython3 {技能目录}/scripts/project_tool.py init ./my-drama --title \"示例短剧\"\n```\n\n直接输入已经确认创作者说明语言、提示词语言、画幅、集数或单集目标时长时，首次 `init` 就带上对应的\n`--language`、`--prompt-language`、`--aspect-ratio`、`--episode-count`、`--target-seconds`；只省略\n未确认项，不让 Brief 中的确定事实留成配置里的 `null`。写入已确认的生产档案时，状态统一为\n`accepted`；`unset` 只表示尚未决定，不另造中间状态。\n`init` 只建立配置和空目录；第一次创作时再把文档写入 `剧集/<EP>/`，不预建空文件。\n项目已经建好、用户之后才定下目标视频模型时，把选择写进档案，并同时展示它对时长区间、参考方式和\n正文语言的影响。档案只接受已发布并已接受的创作者决策，所以是三步，不是一步。先写一行决策记录\n（`accepted_value` 就是要落进 `choices` 的对象本身，不要再包一层 `choices`）：\n\n```jsonl\n{\"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\"}}\n```\n\n再发布、接受、写入：\n\n```bash\npython3 {技能目录}/scripts/project_tool.py publish <project> --owner short-drama \\\n  --artifact-id AR-PROFILE --output \"创作者决策/production-profile.jsonl=输入/profile.jsonl\"\npython3 {技能目录}/scripts/project_tool.py accept <project> --artifact-id AR-PROFILE --decision accepted\npython3 {技能目录}/scripts/project_tool.py set-authority <project> \\\n  --field /creator_authority/production_profile/choices \\\n  --decision-ref \"创作者决策/production-profile.jsonl#CD-H3\"\n```\n\n各字段取值由命中的模型方言给出：`$short-drama-video-prompts` 的 MiniMax H3 / Seedance 方言文件都写了\n推荐档案。写完用 `status` 复核 `video_model_profile` 是否已经出现。\n\n项目定位与安全写入见 [运行预检](references/runtime-preflight.md)。用户明确要求 Dashboard 时运行：\n\n```bash\npython3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --port 0 --detach --open\n```\n\n`--detach` 让服务进程脱离当前 shell 独立运行，会话结束、终端关闭或智能体退出都不会带走它；\n链接因此在整个创作期间保持有效。运行中的地址、端口和 pid 记录在\n`<workspace>/.short-drama/dashboard.json`（仅本人可读），日志在同目录 `dashboard.log`：\n\n```bash\npython3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --status   # 打印当前链接\npython3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --stop     # 停止\n```\n\n同一 workspace 已有在跑的 Dashboard 时，再次启动只会打印同一个链接，不再开第二个端口；确实要换\n端口或换令牌时加 `--restart`。不加 `--detach` 时行为不变：前台运行，Ctrl-C 结束。\n\nDashboard 展示和编辑创作文件，不负责工作流编排或媒体生产。\n\n## 项目级创作决定\n\n制作形态、视觉方向、播放面和集长目标确实约束多个阶段时，展示选择及影响后由用户决定。\nLook Development 是可选分支，不是进入图片提示词或分镜的固定门槛。\n\n按问题只读取一份相关知识：\n\n- 规则分级与 owner 路由：[规则与路由索引](references/knowhow-index.md)\n- 输出语言、稳定 ID、所有权与安全边界：[契约与所有权](references/contract-and-ownership.md)\n- 实拍、二维、三维、水墨、Q 版、国漫的形态差异：[制作形态](references/production-form-profiles.md)\n- 需要比较代表帧时：[Look Development](references/look-development.md)\n- 参考图能控制什么：[参考角色](references/reference-roles.md)\n- 遮挡、延迟揭示和观众知情时机：[观众揭示](references/audience-reveal.md)\n- 母版、补拍和替代版的职责：[补拍与替代](references/pickup-and-alternate.md)\n\n## 生产与交付边界\n\n外部生产永远保留 `preview -> explicit confirm -> run`。归档只复制用户点名的当前文档和成品，排除\n私有输入、凭据、绝对路径与隐藏运行状态；不为归档补造审批、哈希或第二套内容。\n\n用户问“做完了怎么导出/交付给我”时，用 `export` 打包当前状态：\n\n```bash\npython3 {技能目录}/scripts/project_tool.py export <project> --out <项目外目录>\n```\n\n它把每集现有的五份创作文档和 `剧集/<EP>/制作成果/` 复制到 `--out`，附 `manifest.json` 与\n`checksums.sha256`，并排除 `输入/`、`交付/` 和 `.short-drama/`。只要一部分时加\n`--episode EP001`（可重复）；只要文字时加 `--no-media`；覆盖旧目录加 `--overwrite`。\n`--out` 必须在项目之外。\n\n`export` 是**当前状态快照**，manifest 里 `asserts_approval` 恒为 `false`：它不声称任何审查或\n创作者接受。需要带审批证据的正式交付包仍然只有 `package`/`verify` 那条路径。\n\n## 安装维护\n\n只有安装、升级或排障时运行 `python3 scripts/selftest.py`。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/skills/short-drama","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"skills/short-drama/SKILL.md","defaultBranch":"main"},"readme":"# 短剧创作路由\n\n本技能负责项目初始化、跨阶段路由、制作形态与 Dashboard。各阶段正文由对应 owner 完成。\n\n## Quick Start\n\n所有项目统一使用 [creator-first 工作流](references/creator-workflow.md)：每集按需维护\n`剧本.md`、`视觉设定.md`、`分镜.md`、`图片提示词.md`、`视频提示词.md`，不建立并行的结构化创作真相。\n具体写法见 [五份创作文档](references/creator-documents.md)。\n\n## 路由\n\n| 用户要做什么 | owner / 行为 |\n|---|---|\n| 开发点子、系列承诺、改编和分集地图 | `$short-drama-develop`，仅在用户需要时 |\n| 已有多集完整剧本/散稿识别分集 | `$short-drama-develop` 按实际边界建立临时索引 |\n| 分析长篇原著 | `$short-drama-novel-analyze`，仅在用户需要时 |\n| 写或改单集剧本 | `$short-drama-write` → `剧本.md` |\n| 拆人物、造型、地点、道具 | `$short-drama-assets` → `视觉设定.md` |\n| 写资产图片提示词 | `$short-drama-image-prompts` → `图片提示词.md` |\n| 做镜头和冻结关键帧 | `$short-drama-storyboard` → `分镜.md` |\n| 写视频/时间线音乐提示词 | `$short-drama-video-prompts` → `视频提示词.md` |\n| 实际生成媒体 | `$short-drama-produce`，先预览，再显式确认，最后运行 |\n| 把已生产的素材剪成成片 | `$short-drama-edit` → `剪辑单.md` 与 `制作成果/成片/` |\n| 审稿或校验 | `$short-drama-review`，仅在用户点名时 |\n| 初始化、Dashboard、归档点名文档 | 本技能 |\n\n`项目开发/` 中的长材料分析与分集索引是可选分析工作区，不参与单集布局判定；写任何一集仍只维护\n该集的五份 creator-first Markdown。\n\n现成剧本可直接拆资产；已有视觉事实可直接写图片提示词或分镜；已有分镜可直接写视频提示词。\n不要为补齐名义流水线伪造上游。\n\n五份创作文档记录剧本、视觉与提示词；剪辑单在素材生产后记录取舍和后期处理。\n修改故事、镜头职责或上游时长声明时，回到负责该内容的文档。\n\n## 执行请求\n\n1. 找到用户给出的项目或资料，只读当前任务的直接输入。\n2. 把用户点名的完整范围交给相应 owner；批次只控制上下文，自动续跑。\n3. 只有真实创作分叉才询问；不要拿 schema、目录、事务或检查器询问创作者。\n4. 范围完成后一次回报完成内容、关键决定、真实未决项和可选下一步。\n5. 不自动开始用户没点名的审查、归档或生产。\n6. 请求横跨视觉设定、图片提示词、分镜或视频提示词时，结束前按当前五文档做一次视觉依赖对账；\n   不因图片提示词和分镜可并行，就把后完成的一支留在另一支的旧引用之外。\n7. 视频提示词请求遇到「输入参考图：无」或仍带「待补参考图」时，先路由分镜 owner 检查项目已有图片并刷新绑定。有匹配图就同请求续跑；有必要图缺失就列表停下。\n   停下时把三条路一起给出：把已有图片放进项目绑成 `REF-...`；由创作者在自己的工具里出图、本轮先用\n   `PLAN-...` 写出逐镜挂图计划并照常产出视频提示词；或者明确改走文生视频。用本套件生产参考图需要项目外的\n   adapter 与凭据，只是第一条路的一种做法，不要把它说成唯一入口，也不要只给「生成参考图 / 文生视频」两个选项。\n   不把“没有手工指定”当成明确选择文生视频。这一轮如果镜头还缺「视觉依据」，\n   同时按已成稿的冻结关键帧回填；两条依据描述同一格画面，不要只补一条。\n8. 用户在会话里点名目标视频模型（“按 MiniMax H3 写”“用 Seedance 2.5”）而 `short-drama.json` 的\n   `production_profile` 还是 `unset` 时，先把这个选择连同它带来的原生时长、参考方式和正文语言写进档案，\n   再继续下游阶段。会话里的一句点名不落到档案上，下一轮就会退回通用路径，方言和时长要重猜。\n\n## 初始化与 Dashboard\n\n需要项目配置时运行：\n\n```bash\npython3 {技能目录}/scripts/project_tool.py init ./my-drama --title \"示例短剧\"\n```\n\n直接输入已经确认创作者说明语言、提示词语言、画幅、集数或单集目标时长时，首次 `init` 就带上对应的\n`--language`、`--prompt-language`、`--aspect-ratio`、`--episode-count`、`--target-seconds`；只省略\n未确认项，不让 Brief 中的确定事实留成配置里的 `null`。写入已确认的生产档案时，状态统一为\n`accepted`；`unset` 只表示尚未决定，不另造中间状态。\n`init` 只建立配置和空目录；第一次创作时再把文档写入 `剧集/<EP>/`，不预建空文件。\n项目已经建好、用户之后才定下目标视频模型时，把选择写进档案，并同时展示它对时长区间、参考方式和\n正文语言的影响。档案只接受已发布并已接受的创作者决策，所以是三步，不是一步。先写一行决策记录\n（`accepted_value` 就是要落进 `choices` 的对象本身，不要再包一层 `choices`）：\n\n```jsonl\n{\"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\"}}\n```\n\n再发布、接受、写入：\n\n```bash\npython3 {技能目录}/scripts/project_tool.py publish <project> --owner short-drama \\\n  --artifact-id AR-PROFILE --output \"创作者决策/production-profile.jsonl=输入/profile.jsonl\"\npython3 {技能目录}/scripts/project_tool.py accept <project> --artifact-id AR-PROFILE --decision accepted\npython3 {技能目录}/scripts/project_tool.py set-authority <project> \\\n  --field /creator_authority/production_profile/choices \\\n  --decision-ref \"创作者决策/production-profile.jsonl#CD-H3\"\n```\n\n各字段取值由命中的模型方言给出：`$short-drama-video-prompts` 的 MiniMax H3 / Seedance 方言文件都写了\n推荐档案。写完用 `status` 复核 `video_model_profile` 是否已经出现。\n\n项目定位与安全写入见 [运行预检](references/runtime-preflight.md)。用户明确要求 Dashboard 时运行：\n\n```bash\npython3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --port 0 --detach --open\n```\n\n`--detach` 让服务进程脱离当前 shell 独立运行，会话结束、终端关闭或智能体退出都不会带走它；\n链接因此在整个创作期间保持有效。运行中的地址、端口和 pid 记录在\n`<workspace>/.short-drama/dashboard.json`（仅本人可读），日志在同目录 `dashboard.log`：\n\n```bash\npython3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --status   # 打印当前链接\npython3 {技能目录}/scripts/dashboard_server.py --workspace","createdAt":"2026-09-25T11:52:14.507Z","updatedAt":"2026-09-25T11:52:14.507Z"},{"id":"cmugwi66801tnqu0626p507yw","slug":"zenstory-ai-drama-skills-short-drama-knowhow","name":"short-drama-knowhow","description":"维护者专用的短剧 know-how 学习、验证与生命周期治理。仅在维护者明确要求从其当前会话提供的授权只读文本源学习完整短剧项目链，并把私有观察逐步转成去标识、去复刻、经盲测与独立审查的公共 reference、rubric 或 synthetic fixture 候选时使用；不用于普通创作、公开运行时取数、媒体生成或粗略数据分析。","authorId":"gh:zenstory-ai","authorName":"zenstory-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":2258,"pricePerCall":0,"manifest":{"name":"short-drama-knowhow","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"维护者专用的短剧 know-how 学习、验证与生命周期治理。仅在维护者明确要求从其当前会话提供的授权只读文本源学习完整短剧项目链，并把私有观察逐步转成去标识、去复刻、经盲测与独立审查的公共 reference、rubric 或 synthetic fixture 候选时使用；不用于普通创作、公开运行时取数、媒体生成或粗略数据分析。","permissions":[],"systemPrompt":"# 短剧 Know-how 学习\n\n把学习过程当作编剧、漫剧工作室与编导共同参与的定性研究，而不是词频挖掘。\n先理解完整项目如何把戏剧意图传递到可执行的文本制作规格，再决定哪些知识可迁移。\n\n## 开始前锁定边界\n\n只在维护者主动调用本 skill，且当前会话已经提供授权的只读访问时读取非公开来源。\n把连接细节、凭据、源名称和私有卡片留在维护者指定的隔离工作区；不得写入本 skill、\n公开技能树、公共候选或评测夹具。没有授权或无法确认只读时停止来源读取，只能用合成材料演练流程。\n\n本流程只研究文本及其版本关系。可读创意简报、故事结构、剧本、资产/连续性台账、图片提示词、\n分镜/关键帧文字、视频提示词、审查与修订记录；不生成、渲染、下载或检查图像、音频或视频。\n公开运行时永不连接非公开来源，也不承担任何媒体生成。\n\n## 核心原则\n\n- 让 agent 判断题材语境、人物欲望、因果、信息差、情绪推进、表演动作、镜头意图与制作取舍。\n- 只把校验格式、比较文件、查重与隐私扫描等确定性步骤交给现有工具；不要为创作语义写规则匹配脚本。\n- 统计只用于描绘可选样本、发现覆盖缺口、寻找异常与安排下一次阅读；不得从频次、排名或相关性直接推出创作规则。\n- 一条候选知识必须同时携带证据、反例或失败情形、冲突解释、适用边界和置信度；“常见”不等于“有效”。\n- 每次只提出可审查的最小公共改动；未经盲测与独立审查不得直接进入公共 skill。\n\n## 工作流\n\n### 1. 确立只读授权与隔离工作区\n\n记录本轮目的、允许读取的文本范围、禁止读取的内容、输出位置和销毁要求。测试一次只读行为，\n但不回显连接信息。建立私有研究目录与单独的去标识候选目录；公共目录起初保持不变。\n\n### 2. 以覆盖缺口选样\n\n先查看维护者允许的最小索引或目录信息。按题材、受众承诺、核心机制、篇幅阶段、制作形态、\n视觉语言、场景功能、提示词职责、完成度与修订状态寻找缺口、对照组和反常样本。统计只能帮助\n“下一部读什么”，不能回答“应该怎么写”。\n优先形成有差异的目的性样本，而不是只读最热门、最多见或最方便查询的项目。\n\n### 3. 定性通读完整项目链\n\n逐个项目从上游意图读到下游文本交付：创意/改编约束 → 故事引擎与分集设计 → 单集剧本 →\n角色、场景、道具与连续性 → 图片提示词 → 分镜与关键帧文字 → 视频提示词 → 审查、修订和交付说明。\n若某层不存在，明确记为缺失，不用别的项目或常识补齐。\n\n沿同一承诺追踪：怎样建立期待、怎样制造阻碍和信息差、人物用什么可表演行动推进、转折怎样被铺垫，\n以及镜头/提示词怎样保留而不是改写剧作意图。完整阅读后才写卡，不用批量关键词命中代替阅读。\n卡片字段与合成例子见 [cards-and-coverage.md](references/cards-and-coverage.md)。\n\n### 4. 写私有 observation / decision cards\n\n先写 observation card，严格区分直接观察、agent 解释与未知；再写 decision card，记录是否形成候选、\n为什么缩小适用范围、有哪些替代解释。每张卡用不泄漏内容的稳定内部引用绑定同一项目链，\n但私有卡片永不进入公共技能包。\n\n### 5. 构建题材 × 机制 coverage matrix\n\n用“题材/受众承诺”作为一轴，用“期待建立、冲突升级、信息释放、关系转向、反转兑现、集尾牵引、\n表演动作、镜头承接、连续性”等机制作为另一轴；提示词研究再叠加制作形态/视觉语言、场景功能、\n提示词职责与版本角色。每格记录支持卡、反例卡、边界、缺口和下一样本，\n不填出现次数或成功率。矩阵格式见 [cards-and-coverage.md](references/cards-and-coverage.md)。\n\n### 6. 用反例、冲突与适用边界压缩结论\n\n主动寻找同机制失败、同题材例外、同结果的替代解释，以及上游有效但下游不可制作的情形。\n冲突未解释时保持候选，不做多数表决。把“总是如此”改写成“在这些观众承诺、人物状态和制作约束下，\n这项机制可能解决这个问题；出现这些信号时应换法或不用”。详细判别见\n[synthesis-and-promotion.md](references/synthesis-and-promotion.md)。\n\n### 7. 去标识与 de-copy\n\n删除或抽象源名称、人物名、专有设定、原句、罕见组合、精确数值、路径、地址、标识符和连接信息。\n把表层桥段拆成“观众状态 → 戏剧问题 → 可选机制 → 可观察效果 → 失败边界”，再用全新的题材、人物关系、\n场景和措辞重建例子。若只有复述原内容才能表达，就不进入公共候选。\n\n### 8. 形成公共 reference / rubric / synthetic fixture proposal\n\n每个候选包同时提出：简洁 reference 改动、能定位证据与失败模式的 rubric、完全合成且与任何来源不近似的\nfixture，以及预期受益任务和潜在副作用。proposal 先留在维护者 staging 区，不直接改 public suite。\n公共候选不得要求运行时访问非公开来源，不得声称文本能证明真实媒体效果。\n\n### 9. 做 fresh-agent blind forward eval\n\n让没有读取私有卡片、原始项目和预期答案的 fresh agent，仅用公共基线或匿名候选之一完成同一组合成任务。\n盲评其剧作判断、题材适配、制作可执行性、变体能力和是否机械套模板。执行\n[blind-forward-eval.md](references/blind-forward-eval.md)；不要把候选作者的结论泄漏进 prompt。\n\n### 10. 交给 independent reviewer\n\n由未参与本轮摘取、合成或候选写作的 reviewer 复查证据充分性、反例、适用边界、去标识、de-copy、\n盲测设计与公共运行边界。候选作者不得自审放行；有未解决的泄漏、近似复刻、机械化或证据断层即退回。\n\n### 11. promotion / retire\n\n只有候选通过 fresh-agent blind forward eval 和 independent reviewer，且 reference、rubric、synthetic fixture\n彼此一致，才能由维护者把最小改动 promotion 到公共资料。保留不含私密内容的决策记录与回滚说明。\n后续反例证明候选过宽、盲测无增益或诱发模板化时，缩窄、替换或 retire；不要靠沉默删除掩盖知识变化。\n\n## 按需读取\n\n- 写私有卡、合成例子或 coverage matrix 时读\n  [cards-and-coverage.md](references/cards-and-coverage.md)。\n- 判断能否去标识、如何处理冲突或准备 promotion / retire 时读\n  [synthesis-and-promotion.md](references/synthesis-and-promotion.md)。\n- 设计 fresh-agent blind forward eval、盲评和 reviewer handoff 时读\n  [blind-forward-eval.md](references/blind-forward-eval.md)。\n- 准备 promotion / hold / retire，或需要让公共规则的评测与回滚证据可重放时读\n  [promotion-ledger.md](references/promotion-ledger.md)。\n- 学习不同题材、画风、场景与图片/视频提示词机制，或区分修订请求、输入参考观察和生成结果观察时读\n  [prompt-production-learning.md](references/prompt-production-learning.md)。\n\n不要预加载所有 reference；只读当前阶段需要的一份。","schemaVersion":1},"repoUrl":"https://github.com/zenstory-ai/drama-skills/tree/main/maintainers/skills/short-drama-knowhow","tags":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"drama-skills","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T11:52:14.275Z","lockfiles":[]},"forks":496,"owner":"zenstory-ai","stars":2258,"topics":["agent-skills","ai-short-drama","ai-video","aigc","claude-code","claude-code-skills","claude-skills","codex","comic-drama","micro-drama","prompt-engineering","screenwriting","script-generation","short-drama","storyboard","storyboarding","video-prompts","zenstory"],"license":"MIT","fullName":"zenstory-ai/drama-skills","homepage":"https://zenstory.ai/drama-skills","language":"Python","pushedAt":"2026-09-24T01:48:41Z","avatarUrl":"https://avatars.githubusercontent.com/u/311489559?v=4","crawledAt":"2026-09-25T11:52:11.400Z","openIssues":4,"manifestFile":"SKILL.md","manifestPath":"maintainers/skills/short-drama-knowhow/SKILL.md","defaultBranch":"main"},"readme":"# 短剧 Know-how 学习\n\n把学习过程当作编剧、漫剧工作室与编导共同参与的定性研究，而不是词频挖掘。\n先理解完整项目如何把戏剧意图传递到可执行的文本制作规格，再决定哪些知识可迁移。\n\n## 开始前锁定边界\n\n只在维护者主动调用本 skill，且当前会话已经提供授权的只读访问时读取非公开来源。\n把连接细节、凭据、源名称和私有卡片留在维护者指定的隔离工作区；不得写入本 skill、\n公开技能树、公共候选或评测夹具。没有授权或无法确认只读时停止来源读取，只能用合成材料演练流程。\n\n本流程只研究文本及其版本关系。可读创意简报、故事结构、剧本、资产/连续性台账、图片提示词、\n分镜/关键帧文字、视频提示词、审查与修订记录；不生成、渲染、下载或检查图像、音频或视频。\n公开运行时永不连接非公开来源，也不承担任何媒体生成。\n\n## 核心原则\n\n- 让 agent 判断题材语境、人物欲望、因果、信息差、情绪推进、表演动作、镜头意图与制作取舍。\n- 只把校验格式、比较文件、查重与隐私扫描等确定性步骤交给现有工具；不要为创作语义写规则匹配脚本。\n- 统计只用于描绘可选样本、发现覆盖缺口、寻找异常与安排下一次阅读；不得从频次、排名或相关性直接推出创作规则。\n- 一条候选知识必须同时携带证据、反例或失败情形、冲突解释、适用边界和置信度；“常见”不等于“有效”。\n- 每次只提出可审查的最小公共改动；未经盲测与独立审查不得直接进入公共 skill。\n\n## 工作流\n\n### 1. 确立只读授权与隔离工作区\n\n记录本轮目的、允许读取的文本范围、禁止读取的内容、输出位置和销毁要求。测试一次只读行为，\n但不回显连接信息。建立私有研究目录与单独的去标识候选目录；公共目录起初保持不变。\n\n### 2. 以覆盖缺口选样\n\n先查看维护者允许的最小索引或目录信息。按题材、受众承诺、核心机制、篇幅阶段、制作形态、\n视觉语言、场景功能、提示词职责、完成度与修订状态寻找缺口、对照组和反常样本。统计只能帮助\n“下一部读什么”，不能回答“应该怎么写”。\n优先形成有差异的目的性样本，而不是只读最热门、最多见或最方便查询的项目。\n\n### 3. 定性通读完整项目链\n\n逐个项目从上游意图读到下游文本交付：创意/改编约束 → 故事引擎与分集设计 → 单集剧本 →\n角色、场景、道具与连续性 → 图片提示词 → 分镜与关键帧文字 → 视频提示词 → 审查、修订和交付说明。\n若某层不存在，明确记为缺失，不用别的项目或常识补齐。\n\n沿同一承诺追踪：怎样建立期待、怎样制造阻碍和信息差、人物用什么可表演行动推进、转折怎样被铺垫，\n以及镜头/提示词怎样保留而不是改写剧作意图。完整阅读后才写卡，不用批量关键词命中代替阅读。\n卡片字段与合成例子见 [cards-and-coverage.md](references/cards-and-coverage.md)。\n\n### 4. 写私有 observation / decision cards\n\n先写 observation card，严格区分直接观察、agent 解释与未知；再写 decision card，记录是否形成候选、\n为什么缩小适用范围、有哪些替代解释。每张卡用不泄漏内容的稳定内部引用绑定同一项目链，\n但私有卡片永不进入公共技能包。\n\n### 5. 构建题材 × 机制 coverage matrix\n\n用“题材/受众承诺”作为一轴，用“期待建立、冲突升级、信息释放、关系转向、反转兑现、集尾牵引、\n表演动作、镜头承接、连续性”等机制作为另一轴；提示词研究再叠加制作形态/视觉语言、场景功能、\n提示词职责与版本角色。每格记录支持卡、反例卡、边界、缺口和下一样本，\n不填出现次数或成功率。矩阵格式见 [cards-and-coverage.md](references/cards-and-coverage.md)。\n\n### 6. 用反例、冲突与适用边界压缩结论\n\n主动寻找同机制失败、同题材例外、同结果的替代解释，以及上游有效但下游不可制作的情形。\n冲突未解释时保持候选，不做多数表决。把“总是如此”改写成“在这些观众承诺、人物状态和制作约束下，\n这项机制可能解决这个问题；出现这些信号时应换法或不用”。详细判别见\n[synthesis-and-promotion.md](references/synthesis-and-promotion.md)。\n\n### 7. 去标识与 de-copy\n\n删除或抽象源名称、人物名、专有设定、原句、罕见组合、精确数值、路径、地址、标识符和连接信息。\n把表层桥段拆成“观众状态 → 戏剧问题 → 可选机制 → 可观察效果 → 失败边界”，再用全新的题材、人物关系、\n场景和措辞重建例子。若只有复述原内容才能表达，就不进入公共候选。\n\n### 8. 形成公共 reference / rubric / synthetic fixture proposal\n\n每个候选包同时提出：简洁 reference 改动、能定位证据与失败模式的 rubric、完全合成且与任何来源不近似的\nfixture，以及预期受益任务和潜在副作用。proposal 先留在维护者 staging 区，不直接改 public suite。\n公共候选不得要求运行时访问非公开来源，不得声称文本能证明真实媒体效果。\n\n### 9. 做 fresh-agent blind forward eval\n\n让没有读取私有卡片、原始项目和预期答案的 fresh agent，仅用公共基线或匿名候选之一完成同一组合成任务。\n盲评其剧作判断、题材适配、制作可执行性、变体能力和是否机械套模板。执行\n[blind-forward-eval.md](references/blind-forward-eval.md)；不要把候选作者的结论泄漏进 prompt。\n\n### 10. 交给 independent reviewer\n\n由未参与本轮摘取、合成或候选写作的 reviewer 复查证据充分性、反例、适用边界、去标识、de-copy、\n盲测设计与公共运行边界。候选作者不得自审放行；有未解决的泄漏、近似复刻、机械化或证据断层即退回。\n\n### 11. promotion / retire\n\n只有候选通过 fresh-agent blind forward eval 和 independent reviewer，且 reference、rubric、synthetic fixture\n彼此一致，才能由维护者把最小改动 promotion 到公共资料。保留不含私密内容的决策记录与回滚说明。\n后续反例证明候选过宽、盲测无增益或诱发模板化时，缩窄、替换或 retire；不要靠沉默删除掩盖知识变化。\n\n## 按需读取\n\n- 写私有卡、合成例子或 coverage matrix 时读\n  [cards-and-coverage.md](references/cards-and-coverage.md)。\n- 判断能否去标识、如何处理冲突或准备 promotion / retire 时读\n  [synthesis-and-promotion.md](references/synthesis-and-promotion.md)。\n- 设计 fresh-agent blind forward eval、盲评和 reviewer handoff 时读\n  [blind-forward-eval.md](references/blind-forward-eval.md)。\n- 准备 promotion / hold / retire，或需要让公共规则的评测与回滚证据可重放时读\n  [promotion-ledger.md](references/promotion-ledger.md)。\n- 学习不同题材、画风、场景与图片/视频提示词机制，或区分修订请求、输入参考观察和生成结果观察时读\n  [prompt-production-learning.md](references/prompt-production-learning.md)。\n\n不要预加载所有 reference；只读当前阶段需要的一份。","createdAt":"2026-09-25T11:52:14.528Z","updatedAt":"2026-09-25T11:52:14.528Z"},{"id":"cmugymw0u02jpqu0618txqts1","slug":"shanyin-ai-shanyin-screenwriting-master","name":"shanyin-screenwriting-master","description":"山音超级编剧大师——由 @山音 设计的全格式影视编剧技能。 覆盖从1-3分钟概念超短片到90分钟电影长片、多集剧集的全格式剧本创作。 支持四种格式：概念超短片（how-to-tell/what-if）、5-10分钟叙事短片、90分钟长片（商业/文艺）、多集剧集。 覆盖从人物设计、结构大纲、场景拆解、到完整剧本写作的全流程。 ","authorId":"gh:shanyin-ai","authorName":"Shanyin-ai","version":"0.1.0","category":"Prompt","securityLevel":"Community","downloadsCount":0,"githubStars":1214,"pricePerCall":0,"manifest":{"name":"shanyin-screenwriting-master","tools":[],"category":"Prompt","entrypoint":{"type":"prompt"},"description":"山音超级编剧大师——由 @山音 设计的全格式影视编剧技能。 覆盖从1-3分钟概念超短片到90分钟电影长片、多集剧集的全格式剧本创作。 支持四种格式：概念超短片（how-to-tell/what-if）、5-10分钟叙事短片、90分钟长片（商业/文艺）、多集剧集。 覆盖从人物设计、结构大纲、场景拆解、到完整剧本写作的全流程。 ","permissions":[],"schemaVersion":1},"repoUrl":"https://github.com/Shanyin-ai/shanyin-screenwriting-master","tags":["ai-agent","claude-ai","claude-skills","screenwriting","skills","prompt"],"stats":{"installVelocity7d":0,"retentionRate":0,"executions":0,"rating":null},"origin":"github","source":{"repo":"shanyin-screenwriting-master","audit":{"files":[],"binaries":[],"findings":[],"packages":0,"auditedAt":"2026-09-25T12:51:53.878Z","lockfiles":[]},"forks":169,"owner":"Shanyin-ai","stars":1214,"topics":["ai-agent","claude-ai","claude-skills","screenwriting","skills"],"license":"MIT","fullName":"Shanyin-ai/shanyin-screenwriting-master","homepage":null,"language":null,"pushedAt":"2026-04-01T02:18:00Z","avatarUrl":"https://avatars.githubusercontent.com/u/272443085?v=4","crawledAt":"2026-09-25T12:51:53.678Z","openIssues":2,"manifestFile":"README.md","manifestPath":"README.md","defaultBranch":"main"},"readme":"山音超级编剧大师 - 全格式影视编剧 Skill\n由 @山音 设计的自然语言驱动编剧 Agent Skill\n覆盖 1-3 分钟概念超短片→90 分钟电影长片→多集剧集的全流程剧本创作，一站式搞定人物、大纲、场景、剧本全链路\n\n核心能力\n全格式覆盖（从短片到长片，无缝适配）\n概念超短片：支持 how-to-tell、what-if两大方向，1-3 分钟快速出片\n叙事短片：5-10 分钟精品短片，完整起承转合，适配短视频 / 短片竞赛\n90 分钟长片：商业片（强剧情、高爽点）& 文艺片（深情感、强质感）双轨创作\n多集剧集：支持季播 / 单元剧架构，完成全剧大纲 + 单集剧本 + 角色成长线设计\n全流程编剧服务\n人物设计：立体角色设定（性格、动机、成长弧光、反差特质）\n结构大纲：经典叙事模型（三幕式 / 英雄之旅）+ 类型化框架（悬疑 / 科幻 / 爱情 / 犯罪）\n场景拆解：分镜级场景规划（镜头语言暗示、情绪节点、转场设计）\n完整剧本：标准影视格式（场景编号、动作描述、对话、转场）精准输出\n\n文件说明\n山音超级编剧大师.skill：核心 Skill 文件（自然语言驱动，直接导入 Claude 即可使用）\nexamples/（可选）：包含不同格式、不同类型的编剧案例（如科幻概念短片、文艺长片大纲、都市剧集剧本）\n\n使用方法\n1. 导入 Skill\n①GPT和Claude等支持.skill或.zip的AI工具\n下载本仓库 .skill 文件到本地\n打开 Claude App / 网页版 → 进入「Skills」模块 → 点击「Import Skill」\n选择本地 .skill 文件，完成导入（启用该 Skill）\n②其他AI工具请下载集成版.md（如Gemini）\n直接拖入AI工具对话框中即可开始使用。\n\n2. 快速触发（直接复制指令）\n直接输入自然语言即可触发，任何内容均可交互。\n3. 进阶定制\n可主动向 Claude 补充细节（提升剧本精准度）：\n明确受众（如青少年 / 成年观众 / 海外市场）\n指定风格标签（如韦斯・安德森质感、诺兰悬疑风、宫崎骏治愈风）\n要求适配特定平台（如短视频平台节奏、院线电影时长、剧集周播逻辑）\n\n许可证\n本项目采用 MIT License 开源协议，遵循以下条款：\n自由使用：可自由下载、导入、使用本 Skill 进行个人 / 商业剧本创作\n自由修改：可根据自身需求调整 Skill 内的编剧逻辑与指令\n保留版权：使用时需保留原作者「@山音」标识，禁止删除原创作声明\n禁止商用 Skill 本身：本 Skill 文件禁止二次售卖、打包商用或作为付费产品核心组件\n\n关于作者\n@山音\nAIGC艺术家、独立导演、编剧、作家。\n中国头部AIGC创作者。2025年初心榜十大年度AIGC人物、瓦卡奖中国AI视觉创意头部作者、非凡大赏年度AI CREATOR 100创作者。深圳AIGC超创实验室首批入选者、首创郎园AI超创生态矩阵伙伴。PixLab创作者代表。可灵、Vidu、Pixverse、Tapnow、Seko等主流AI平台方超级创作者。\n导演或编剧作品获得2025 InspiringAsia最佳AI影片、2025HiShorts最佳AI短片、新片场“梦中潮汐时刻”AIGC大赛金奖、2025年VACAT瓦卡奖银奖、大学生电影节最佳跨界舞蹈影像、Chroma Awards最佳喜剧片、AI Internal Film Festival最佳实验电影、海南岛国际电影节音乐之选等影节斩获荣誉。入围北京国际电影节、First惊喜影展在内的数十个电影节展。\n导演快手短剧贺岁片《马上有戏》系列首发短片《马不停蹄》播放量逾2600万，导演独立短片《Ctrl Z》24小时播放破百万，《Kill Line》全平台播放量破百万。\n\n贡献与反馈\n若你有优化建议、创作案例或功能需求，可联系小红书@山音 或邮箱li-yinqian@outlook.com\n欢迎分享你的使用作品，一起打造更完善的编剧工具生态\n","createdAt":"2026-09-25T12:51:53.887Z","updatedAt":"2026-09-25T12:51:53.887Z"}],"total":13,"limit":24,"offset":0}