复制安装命令
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
项目页: · ZenStory AI 全部项目:
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
来源文件:README.md
中文 | English
项目页:https://zenstory.ai/drama-skills · ZenStory AI 全部项目:https://zenstory.ai/projects
面向编剧、漫剧工作室和编导的 AI 短剧创作工作流。十一个技能把一个点子或一部长篇材料, 一路做成分集剧本、资产设定、图片提示词、分镜关键帧和视频提示词, 用清晰的所有权与连续性衔接。适配 Claude Code、Codex 和其他 支持 Agent Skill 规范的运行环境。
新项目每集默认只维护五份 Markdown:剧本.md、视觉设定.md、分镜.md、
图片提示词.md 和 视频提示词.md。
这套技能来自我们自己的漫剧工作室产线:2025 年至今累计上千个 AI 短剧 / 漫剧项目, 中间换过几轮自建和开源工具。前后端加起来近 8 万行代码,在模型能力和需求的迭代速度 面前逐渐维护不动了。
后来干脆抛开自建的一体化图形工具,把历史项目工程和图片 / 视频提示词蒸馏成这套技能, 让制作人直接用 agent CLI 加文件维护工程、生成提示词,确认之后再送去生成——结果意外地顺手。 现在留在自建工具里的,只剩排队抽卡。
刻意把确认放在生产之前:提示词先落进文件,生产 skill 展示本次准确数量、内容、参考、 参数、输出和 adapter;用户看到预览并明确确认后才执行。供应商凭据不进入项目, 项目文件和其他 Skill 都不绑定供应商。
需要 Python 3.9 或更新版本(macOS 自带的即可)。直接告诉 Claude Code、 Codex 等支持导入 GitHub 仓库的智能体:
安装这些技能 https://github.com/zenstory-ai/drama-skills
git clone https://github.com/zenstory-ai/drama-skills.git && cd drama-skills
# Claude Code
mkdir -p "$HOME/.claude/skills"
for skill in skills/*; do
ln -s "$PWD/$skill" "$HOME/.claude/skills/$(basename "$skill")"
done
# Codex
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
for skill in skills/*; do
ln -s "$PWD/$skill" "${CODEX_HOME:-$HOME/.codex}/skills/$(basename "$skill")"
done
每个技能都是独立安装单元;只使用写作、审查或生产等单一能力时,可以只链接对应目录。
short-drama 提供项目初始化、路由与 Dashboard,但不是其他技能的安装门禁。
调用写法随运行环境而变:Claude Code 用 /short-drama,Codex 用 $short-drama,
也可以不写前缀、直接用自然语言说明要做什么。两种写法在下文示例中可以互换。
# 0. 有原著时(可选):先抽样快评,再决定要不要全量拆
用 $short-drama-novel-analyze 快评 输入/这本小说.txt,先告诉我值不值得拆
# 已有多集完整剧本时(可选):按文件实际结构索引,每次只读当前集,断点续做分集地图
用 $short-drama-develop 从 输入/剧本完整版.txt 生成分集地图;先识别这份文件的分集方式,不要整稿塞进上下文
# 1. 新建项目
用 $short-drama 初始化一个都市打脸题材的短剧项目,竖屏 9:16
# 2. 写第一集
用 $short-drama-write 写第 1 集:外卖员在高档餐厅被经理羞辱,亮出集团董事身份
# 3. 拆资产,写提示词与分镜(可在同一请求内连续完成)
用 $short-drama-assets 从第 1 集拆人物/场景/道具
需要统一视觉语言时,可选用 $short-drama 做 Look Development
用 $short-drama-image-prompts 为已接受的资产写参考图提示词
用 $short-drama-storyboard 给第 1 集做正式分镜与冻结关键帧
用 $short-drama-video-prompts 把分镜逐镜翻译成视频提示词
# 指定目标视频模型、并且要人物/场景/道具跨镜一致时,把参考图的事也说清楚:
用 $short-drama-video-prompts 按 MiniMax H3 写第 1 集视频提示词;先在项目里找已有的角色图、场景图、道具图和本镜起始帧绑成参考,缺哪张就列出来,不要改成文生视频
# 参考图在自己的界面里出、不进项目时,让技能写出逐镜挂图计划,视频提示词照常产出:
用 $short-drama-video-prompts 按 MiniMax H3 写第 1 集视频提示词;参考图我自己挂,逐镜告诉我挂哪几张、什么顺序、每张管什么
# 4. 明确确认后投产
用 $short-drama-produce 预览第 1 集已接受的图片、视频、TTS 或时间线音乐任务;等我确认后再执行
# 5. 把生产出来的素材剪成成片
用 $short-drama-edit 把第 1 集已生产的镜头剪成成片,逐段写清入出点理由
# 6. 需要时再审查
用 $short-drama-review 审查第 1 集的剧本与提示词
示例都在 examples/。creator-first 的公开完整样例是 《让你管账号》EP001;其余目录仅作为仓库维护和校验器回归夹具。 想把十一个技能按漫剧产线从头串一遍(每步命令、产物与卡点),看 漫剧创作全流程指引。
flowchart LR
classDef phase fill:#e8f4fd,color:#1a1a2e,stroke:#4a9be8,stroke-width:1px
classDef final fill:#fce4ec,color:#333,stroke:#e57373,stroke-width:1px
nva["原著分析<br/>$short-drama-novel-analyze"]:::phase
dev["故事开发<br/>$short-drama-develop"]:::phase
write["分集剧本<br/>$short-drama-write"]:::phase
assets["资产决策<br/>$short-drama-assets"]:::phase
img["图片提示词<br/>$short-drama-image-prompts"]:::phase
sb["分镜/关键帧<br/>$short-drama-storyboard"]:::phase
vid["视频提示词<br/>$short-drama-video-prompts"]:::phase
prod["确认后生产<br/>$short-drama-produce"]:::phase
cut["剪辑成片<br/>$short-drama-edit"]:::phase
rev["审查<br/>$short-drama-review"]:::final
pkg["文本交付包"]:::final
nva -.有原著时.-> dev
dev -.可选.-> write --> assets
assets --> img
assets --> sb --> vid
img --> prod
vid --> prod
prod --> cut --> rev --> pkg
| 技能 | 职责 |
|---|---|
short-drama | 初始化、路由、视觉方向/Look Development 与 Dashboard |
short-drama-novel-analyze | 长篇原著的抽样改编快评、章节索引、逐章功能提取、剧情单元与节奏、改编价值与分集候选 |
short-drama-develop | 小说/长材料的可追溯改编、多集整稿的 Agent 主导切片与续跑、故事引擎、分集地图、导演阐述、题材与钩子手册 |
short-drama-write | 单集目标、因果节拍、可拍剧本和项目选择的制作稿格式 |
short-drama-assets | 人物/造型、地点/视图、道具/状态、可选的角色声音方向与连续性决策 |
short-drama-image-prompts | Lookdev 风格帧、角色/场景/道具参考板提示词与定点修改说明 |
short-drama-storyboard | 可选场次视觉计划与 Coverage Audition、原文落实、镜头、边界和冻结关键帧 |
short-drama-video-prompts | 单镜动作、多人物表演与注意交接、摄影、声音、起止状态、补拍说明,以及跨镜时间线音乐规格 |
short-drama-produce | 展示有边界的图片/视频/TTS/音乐任务,取得本次明确确认后通过外部 adapter 执行并记录结果;可选支持 Seedance、GPT Image 2、MiniMax H3 视频与 MiniMax Music |
short-drama-edit | 逐镜素材的可用带、入出点取舍、镜序、台词完整性、字幕与响度,写成剪辑单并渲染成片 |
short-drama-review | 结构/内容审查、授权生产观察的项目级校准诊断与修订结论 |
下面这段 24 秒样片是一次完整实跑的末端产物:从一部 20 章的原著开始,经原著分析、剧本、 视觉设定、图片提示词、分镜(21 镜)、视频提示词,再逐镜生成 SC003 一场的八段素材, 按剪辑单剪成成片。
https://github.com/user-attachments/assets/0809876a-2a23-4723-a809-45c57988939f
在智能体里一句话启动(Codex 写作 $short-drama dashboard):
/short-drama dashboard
macOS、Linux、WSL 与 Windows 原生都可运行。创作台以 --detach 独立进程运行,链接在整个创作期间
保持有效;--status 打印当前链接,--stop 关闭。
全部跑完后导出交付:$short-drama 用 project_tool.py export <project> --out <项目外目录>
把每集现有的五份 Markdown 和 制作成果/ 复制成一份带清单和校验和的交付目录。
LINUX DO - The New Ideal Community — 社区支持
本项目由 ZenStory AI 维护——一组开源、面向 agent 的故事创作、改编与生产工具(GitHub 组织:zenstory-ai)。同组织项目:
| 项目 | 用途 |
|---|---|
| oh-story-claudecode | 网文写作 skill 包:扫榜、拆文、写作、去AI味、封面图 |
| drama-skills | AI 短剧 / 漫剧创作 skill 合集:剧本、资产、分镜、图片/视频提示词、独立审查(本仓库) |
| novel-to-game | 把小说改编成可玩游戏的 agent skills |
| video-recap-skills | 把任意视频剪成中文解说视频,支持剪映草稿导出 |
| oh-story-dsh | DeepSeek Harness 插件,封装 Oh Story 与 Drama Skills 工作流 |
| zenstory | 对话即创作的 AI 小说写作工作台(zenstory.ai) |
name: short-drama-produce
description: 在创作者明确确认后,执行短剧项目的图片、视频、TTS/配音或时间线音乐生产任务,并把结果与精简运行记录落回项目。用户说“生成这张图/这段视频/这句配音/这段配乐”“开始跑图/跑视频/合成语音/生成音乐”“把已确认提示词送去生产”,或要求批量执行已确认媒体任务时使用;不负责创作提示词、镜头、台词、歌词或声音身份,也绝不把预览、继续、预算说明或既有接受状态当作本次付费生产确认。
license: MIT本技能只负责把已经写好的生产规格安全送到运行环境配置的 adapter。图片提示词仍归
$short-drama-image-prompts,视频提示词归 $short-drama-video-prompts,台词与录音表归
$short-drama-write,声音身份归 $short-drama-assets。
只在用户明确要求实际生成后,从当前 图片提示词.md、分镜.md 或 视频提示词.md 中
取出本次提示词,建立一个有边界的运行 job。creator-first job 的 source 必须指向拥有这条提示词的
当前 Markdown,source_entry 必须点名该文档允许的二级标题:图片提示词.md 用 IMG-*,
视频提示词.md 用 MOTION-*,分镜.md 用 SHOT-*(modality 为 image,正文取该镜的
### 冻结关键帧提示词)。此选择器只提取首帧;尾帧需先由图片提示词阶段建立独立 IMG-* 状态图条目,
再从 图片提示词.md 准备 image job。创作者也可以提供已有起始帧——
在自己的工具里出图再放进项目同样成立,图片始终不进项目时走分镜的 PLAN-...;
产出落在 剧集/<EP>/制作成果/images/ 后,分镜 owner 才能把它绑成 用途:起始帧 的 REF-...。存在真实参考图时,
还必须逐张填写 reference_bindings 的槽位、顺序、路径、中文名、用途以及允许/禁止控制范围;
内置视频 adapter 把这里的 用途 字段读成供应商自己的 role,只接受它公布的取值
(MiniMax 为 first_frame/last_frame/reference_image/reference_video/reference_audio,
Seedance 为三个 reference_*);带参考图却没有绑定的 job 会直接失败,不替它猜一个 role。
本地图片由内置 adapter 按 base64 data URI 直接送出,不需要自建上传服务。
条目的「输入参考图」写成 PLAN-... 时,那些图片在创作者自己的工具里,项目内没有文件可送:
prepare 直接失败并说明先把真实文件放进项目、改写成 REF-...,不拿计划当输入,也不静默丢掉参考。
references 可以省略并由绑定顺序生成,也可以作为相同顺序的显式镜像。输出放在
剧集/<EP>/制作成果/;这个 job 是生产工具的临时输入,不是第六份创作文档:
python3 {技能目录}/scripts/production_tool.py prepare <project> --job <临时-job.json>
先展示 prepare 的完整预览;此时不会调用供应商。
每次生产都必须经过以下四步,顺序不可合并:
prepare,把返回的完整预览展示给创作者,尤其是数量、prompt、source entry、
reference bindings、references、outputs、overwrite 与 adapter。creator-first job 会在这一步机械核对
所选标题里的可复制提示词,以及参考图槽位、顺序、路径、中文名和控制边界;任一漂移都 fail closed。confirm;
“继续”“都做完”“预算没问题”、上游内容已接受或之前确认过另一版,都不算本次生产确认。run。它会在启动 adapter 前消费一次确认;成功或失败后再次执行都必须重新确认,
防止失败重试意外产生第二笔费用。job、prompt、参数、输出路径或直接输入任一变化,旧确认立即失效。不得代替创作者填写确认。 当前已确认 job 是本轮唯一工作单元;运行结束后回报结果并交还控制权,不自动准备下一批或启动审查。
分镜.md 的「输入参考图」路径只是创作阶段的可读依据与使用意图,不是生产输入快照。进入生产时,
creator-first job 必须从 图片提示词.md 或 视频提示词.md 的对应条目建立绑定;prepare 展示的
reference_bindings、references 与已确认 job 才是本次 adapter 实际读取哪些文件字节、各自允许
影响什么的权威。非 creator 的结构化规格可不填 source_entry/reference_bindings,继续只使用显式
references;但新的 image/video job 只要 source 指向 canonical 图片提示词.md 或
视频提示词.md 就强制使用对应 selector,不能靠省略字段降级绕过。升级前已经 prepare 并落盘的
旧 job 仍可按原指纹读取。
新生产结果不自动回填或刷新分镜;需要把它改为后续输入时,由分镜 owner 修订文档,再建立新 job
并重新预览、确认。
只在进入生产边界后把当前提示词和运行参数写成临时 JSON;视频与图片 job 的
parameters.prompt_language 跟随当前可复制正文已经解析出的提示词语言,使 adapter 追加的参考约束
使用同一种语言,而不是重新回退成固定英文。不要在创作阶段为每条提示词预建 job。
格式和 adapter 契约见
adapter-contract.md。命令由
production_tool.py 提供,然后运行:
python3 <本技能目录>/scripts/production_tool.py prepare <project> --job <job.json>
python3 <本技能目录>/scripts/production_tool.py confirm <project> --job-id <id> --confirmation "CONFIRM <id> <code>"
python3 <本技能目录>/scripts/production_tool.py run <project> --job-id <id> --adapter-config <outside-project-config.json>
python3 <本技能目录>/scripts/production_tool.py status <project> --job-id <id>
python3 <本技能目录>/scripts/production_tool.py collect <project> --job-id <id> --adapter-config <outside-project-config.json>
python3 <本技能目录>/scripts/production_tool.py audit <project>
prepare 只验证并预览,不生产。confirm 只保存与当前 job 指纹绑定的一次性确认。
run 才启动 adapter。collect 只取回已经提交过、已经计费的那次任务的结果,
不重新提交、也不需要新的确认——见下面「中断不等于要重跑」。audit 只对账本地任务历史、失败后恢复、重复内容尝试和当前输出字节,
不会调用供应商,也不把技术成功、文件存在或哈希一致写成媒体质量结论。同一 job 存在未决
running attempt 时禁止重新 prepare、confirm 或 run;先等待完成或排查遗留 attempt。
图片提示词.md 的当前 IMG-* 可复制正文,或 分镜.md 的当前 SHOT-*
冻结关键帧正文,加上必要参考图和明确的输出尺寸/数量;creator-first job 使用 source_entry
锁定这一条。资产板走 IMG-*,某一镜的起始画面走 SHOT-*;两者不互相替代。视频提示词.md 的当前 MOTION-* 可复制正文,并核对 分镜.md 中对应镜头、
冻结关键帧、时长与画幅;creator-first job 使用 source_entry 锁定这一条。连续段选择从上一段
生成结果续接时,下一段 job 同时绑定上一段实际视频和从该视频取得的实际尾帧,并保留
continuity_video、actual_tail_frame 的不同职责;供应商 role 由目标模型 adapter 翻译。H3 的这组
输入统一译为 reference_video + reference_image,不能混成 reference_video + first_frame;不以
计划尾帧或文字描述代替真实文件。剧本.md 读取原句与表演要求,声音参考由用户或现有媒体明确提供。不得在生产 job
中改词,也不为 TTS 新建第六份创作文档。视频提示词.md 中创作者已确认的时间线音乐章节;主题曲使用已确认歌词,纯配乐
不携带歌词。供应商不能精确承诺时长时,生成源音轨后仍由 $short-drama-edit 按文档里的混音意图完成落点、
循环、淡入淡出和对白 ducking。一个 job 不混合 modality。大批量工作拆成创作者能看清数量和成本边界的小 job;不为方便把整季 隐式塞进一次确认。
adapter 配置必须在项目外,只包含 argv 命令和超时;凭据由 adapter 自己从进程环境或系统凭据 存储读取。项目 job、确认记录、运行记录和 Dashboard 都不得保存密钥。
脚本以 JSON stdin 调用 argv 数组,不使用 shell,不拼接命令。adapter 返回本地临时文件;工具只
接受与已确认 targets 完全一致的结果,并把完整文件原子复制到项目的 剧集/<EP>/制作成果/
目录。项目和上游 Skill 不写死供应商、模型或即将变化的 API。
内置图片/视频 compiler 会根据已确认的 reference_bindings,按顺序向供应商 prompt 附加一段确定性的
引用语义说明(中文名、用途、允许控制与不得控制范围);不会把槽位名误当成要渲染进画面的文字。
外部 adapter 也必须保留这组语义或明确拒绝,不能只上传文件而静默丢失控制边界。
本技能可选提供四个 stdlib adapter,均通过项目外 adapter config 选择,凭据只从运行环境读取:
music-3.0 与 hex 结果,区分主题曲
和纯配乐,不伪造时长请求字段。tts 模态;模型与 voice_id 都必须
由账号与文档显式给出,不内置音色清单。只从预置音色合成,不做声音克隆——克隆是授权问题,
创作者授权的参考录音按普通创作者输入走 输入/。content 的 text 项,参考图按显式 role 绑定,本地参考在没有可信上传时
fail closed。该模型与画面同一次生成声音,写法影响见视频提示词技能的目标模型能力档案。这些 adapter 是已验证请求契约,不是账号可用性或生成质量保证;正式生产仍必须通过上面的本次 确认闸门,并由审查 Skill 判断产物质量。
仓库自带 fixture_adapter.py 只用于离线测试,不代表真实生成质量或默认生产 adapter。
视频任务在提交那一刻就已经计费,不是在拿到结果时。提交之后的一切——轮询几分钟、下载——
都可能被进程被杀、断网、机器休眠打断。内置 adapter 因此在拿到供应商任务 ID 的第一时间就把它
写进 handle_path(早于第一次轮询),这个路径不随本次尝试一起删除。
于是中断之后有三条确定的动作,不必再花一次钱:
audit 会把带着任务 ID 的未完成尝试报成 orphaned_provider_job,
action 是 collect_before_retry;collect 用那个 ID 取回结果并把这次尝试标成成功;collect 也确认那边确实失败之后,才走重新确认与重投的老路。不要在 audit 报出 orphaned_provider_job 时直接重投——那是在为同一个镜头付第二次钱。
collect 不走确认闸门是有意的:闸门防的是意外花钱,而 collect 不花钱;
如果它也要求重新确认,那么中断之后最省事的路径就变成再付一次,正好是闸门要防的事。
成功后回报实际输出路径、媒体类型和运行状态;不要把“adapter 返回成功”写成质量结论。
多任务或重试后先运行 audit:终态失败按 retryable 路由,重试仍须新的明确确认;输出缺失或
文件的哈希或大小不再等于运行记录时,先复核当前字节或重新生产。repeated_content 只是成本与诊断信号,
不能自动判定同文重试合理或不合理;running_attempt 是未决运营状态,audit 必须返回 attention。
失败按三路走。超时、限流、服务端错误这类技术失败可做有上限重试。失败信息点名了被拒的是哪
一项输入——提示词文本、参考图或音频——就先改那一项再投:文本被拒改写那一句,把「一拳砸在
对方脸上,血顺着下巴滴」换成「一拳挥空,对方侧身避开,桌上的杯子被带倒」;参考图被拒换一张
构图与角色一致、画面本身合规的图;音频被拒重录那句台词。改动写进新的 job 重新 prepare,让创
作者在预览里看到改的是哪一项再确认;原样重投的那次确认不产生修复,只产生一笔费用。重复内容
缺陷回到对应 prompt/spec owner。
生产结束后不自动进入剪辑。素材要装配成成片时由用户点名 $short-drama-edit;它只取舍已有帧,
不回头改本阶段的 job,也不生成新素材。
如需质量复核,报告可把已有结果另行交给 $short-drama-review;不要在生产调用中自动启动复核。
Dashboard 只负责展示这些文件和运行摘要,不提供 adapter 设置或生产按钮。
只有安装、升级或排障时运行离线自检;普通创作和生产准备不运行:
python3 scripts/selftest.py
python3 scripts/provider_adapters.py --selftest
评论 (0)
暂无评论,成为第一个评论者吧!