Not in the top 1,000 by GitHub stars
zenstory-ai/oh-story-dsh
DeepSeek Harness 故事创作插件:一站式集成网文连载、短剧漫剧、小说改游戏与视频解说四大工作台 | Community DeepSeek Harness plugin for web novels, short dramas, games & video recaps
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
packages/knowledge/drama/skills/short-drama/SKILL.md
Week of Nov 2, 2026 · +14 / −0 lines
Before Local scripts → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
+ 24 | 拆解对标剧、和标杆比差距、用自家成片对照 | `$short-drama-breakdown` → `项目开发/对标拆解.md` |
+ 103 创作者没有实测值时,动作段可以从 2.5 秒起提(大约一个镜头),第一集分镜写完后用分镜总长回校。
+ 107
+ 108 续接段怎么执行也记在生产档案 `choices` 里。内置生产路径绑定不了上一段的实际视频,本集有续接链时,
+ 109 `$short-drama-video-prompts` 或 `$short-drama-produce` 会问创作者一次;创作者回答后,用同一条决策写入记下
+ 110 `"continuation_route": "independent_starts"`(每段从自己的已接受起始帧独立生成,可以走内置路径)或
+ 111 `"continuation_route": "relay_external"`(保留续接,后续段由创作者在自己的工具里提交)。写入后
+ 112 `status` 的 `video_model_profile` 会显示这项选择,后续阶段读到就不再问。
+ 140 画幅跟着播放面定,不因为做的是短剧就默认竖屏:2026-11 拆解的 9 部 App 连播三维漫剧全是横屏 16:9,
+ 141 别的播放面要另拆同类对标再定。创作者没说画幅时,把播放面和画幅当作一个项目级决定问一次;`init` 的
+ 142 默认值只是占位,不能当成创作者已经选过。项目已经建好再定的画幅,按上文的决策写入落进
+ 143 `--field /format/aspect_ratio`,`accepted_value` 写 `"16:9"` 这样的宽:高。
+ 144 提出制作形态候选时同理:做过对标拆解的,把同一播放面对标里最常见的形态列为候选之一(那 9 部都是三维国漫风),
+ 145 不只在二维画风之间挑。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-assets/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-breakdown/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ed56e4a3946f
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-develop/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-edit/SKILL.md
Week of Nov 2, 2026 · +5 / −3 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
- 147 `verify` 只测量已经渲染出来的成片并回报数字,另列出画面文字、音效与配音在成片里的起止秒、切点亮度变化和疑似坏帧,
+ 147 `verify` 只测量已经渲染出来的成片并回报数字,另列出画面文字、音效与配音在成片里的起止秒、切点亮度变化、切点音量变化和疑似坏帧,
- 181 剪辑点没有可听的音床硬切,成片响度落在交付目标上,未采用镜头都写明理由并区分了缺文件与缺质量,
- 182 即完成。目标时长与实际时长的差、以及仍然值得再剪一版的地方,写在末尾报告里交给创作者判断。
+ 181 剪辑点没有可听的音床硬切,成片的实测响度与真峰写进末尾报告,且落在交付容差内,或超出容差的结果已报给
+ 182 创作者且获接受,未采用镜头都写明理由并区分了缺文件与缺质量,即完成。默认容差和创作者接受后的写法见
+ 183 [声音、字幕与音乐](references/sound-and-subtitles.md)的「响度」。目标时长与实际时长的差、以及仍然值得
+ 184 再剪一版的地方,写在末尾报告里交给创作者判断。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-image-prompts/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-produce/SKILL.md
Week of Nov 2, 2026 · +21 / −4 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
- 36 不能只在 job 中重编号。生产接口还要求参考路径唯一:创作上同一图片可有两个用途槽位,但同路径
- 37 双槽目前不能提交。由负责技能与创作者决定修订参考职责或等待接口支持,不在 job 中擅自合并或漏槽。
+ 36 不能只在 job 中重编号。生产接口还要求参考路径唯一,所以一张图承担两件事时在创作文档里只占一个槽位:
+ 37 `用途` 写主要的那件,另一件写进「控制」。旧文档里同一路径写了两个槽位时,交负责该文档的技能合并成
+ 38 一个槽位后再建 job,不在 job 中擅自合并或漏槽。
- 103 尚不能声明续接视频,因此这条内置生产路径不能提交续接段。报告接口缺口并保留已选路线,
- 104 不省略来源选择器、不拿计划尾帧冒充真实输入,也不擅自改为独立文生视频。
+ 104 尚不能声明续接视频,因此这条内置生产路径不能提交续接段。点名的 `MOTION-*` 标着“待续接、
+ 105 不可提交”时,先看生产档案(`short-drama.json` 的 `creator_authority.production_profile`)
+ 106 `choices` 里有没有 `continuation_route`:
+ 107 - 还没有:问创作者一次,二选一。一是**独立起点**:每段从自己的已接受起始帧生成,后一段不再继承
+ 108 上一段实际生成的动作、节奏和声音,切点处可能跳一下;切点两边构图相同时,让前一段的结束帧和后一段的
+ 109 起始帧用同一张已接受的图,可以减轻跳动。二是**外部提交**:保留续接,后续段由创作者在能绑定上一段
+ 110 实际视频和实际尾帧的工具里提交,本技能只生成每条链的第一段。创作者选定后由 `$short-drama` 写进档案。
+ 111 - `independent_starts`:每段要有已接受的起始帧才能建 job,续接链的后续段通常没有,按顺序补齐:
+ 112 1. 交 `$short-drama-storyboard` 补前后两段共用的切点图,或补这一段的起始帧槽位;
+ 113 2. 本技能生成这张图,预览并确认,再由创作者接受。上一段已经生成时,也可以从它的实际视频取尾帧,
+ 114 经创作者接受后同样交分镜写进下一段的起始帧槽位;
+ 115 3. 交 `$short-drama-video-prompts` 把这些段改写成从已接受起点出发的可提交正文;
+ 116 4. 从更新后的文档建 job,预览并确认。
+ 117 - `relay_external`:不为这些段建 job。向创作者报告这些段要在外部工具提交,并列出每段需要的上一段
+ 118 实际视频和实际尾帧路径。
+ 119
+ 120 任何情况下都不省略来源选择器,不拿计划尾帧冒充真实输入;创作者选择前,也不擅自把续接段改成独立生成
+ 121 或文生视频。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-review/SKILL.md
Week of Nov 2, 2026 · +1 / −0 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
+ 56 - 生成素材与剪好的成片(`production_outputs`,或审到成片的 `full_episode`),逐段判镜头职责、给瑕疵归类并给出交付结论:[生成素材审查](references/generated-media.md)
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-storyboard/SKILL.md
Week of Nov 2, 2026 · +2 / −1 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
- 141 一张图承担两件事就拆成两个槽位;一镜最多一张 `起始帧` 和一张 `结束帧`,写 `结束帧` 时必须同时有 `起始帧`。
+ 141 一张图只占一个槽位:它承担两件事时,`用途` 写主要的那件,另一件写进「控制」,例如起始画面图同时定住本集造型,就写 `用途:起始帧;控制:起始构图、本集造型`;两件事由两张不同的图承担时才写两个槽位。生产端每个文件只绑定一次,同一路径写成两个槽位时,机械核对报错,生产也无法提交。一镜最多一张 `起始帧` 和一张 `结束帧`,写 `结束帧` 时必须同时有 `起始帧`。
+ 142 近景或说话镜里脸占画面大块、本镜没有 `用途:起始帧` 锚住脸、身份只有一张全身身份板,且目标方言还放得下第二个身份槽时,可以给该角色再挂一张同一 Look 的面部识别板,作第二个 `身份` 槽(`craft_default`);这张板还没有时,照第 6 步对待没有板子的人物那样在本轮报告里点名。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-video-prompts/SKILL.md
Week of Nov 2, 2026 · +20 / −3 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
- 119 续接还要求执行端能绑定上述两项真实输入。当前 `$short-drama-produce` 的 creator-first 来源选择器只
- 120 解析图片与角色参考音频,不能绑定续接视频;使用这条内置生产路径时,续接段保持“不可提交”,
- 121 待执行接口支持双输入后再预览。不能省略来源选择器或改用文生视频绕过这个缺口。
+ 119 续接段要提交,执行端必须能绑定上述两项真实输入。`$short-drama-produce` 内置的 creator-first 来源选择器
+ 120 只解析图片与角色参考音频,绑定不了上一段视频,所以续接段走不了内置路径。项目用内置路径生产(创作者
+ 121 没说全部在外部工具提交)、本集有续接链、生产档案里还没有 `continuation_route` 时,在本轮交付报告里
+ 122 问创作者一次,二选一:
+ 123
+ 124 - **独立起点**(`independent_starts`):每段从自己的已接受起始帧走内置路径生成。代价是后一段不再
+ 125 继承上一段实际生成出来的动作速度、表演、运镜和声音空间,切点处可能跳一下姿态、光线或节奏。
+ 126 一条长镜拆成几段、切点两边构图相同时,可以按[摄影与声音连续性](references/camera-audio-continuity.md)
+ 127 「跨镜转场」的做法,用同一张已接受的图同时作前一段的结束帧和后一段的起始帧。这要求前一段还没生成、
+ 128 目标档案支持首尾帧;前一段已经生成时,改为从它的实际视频取尾帧,经创作者接受后作后一段的起始帧。
+ 129 - **保留续接、外部提交**(`relay_external`):续接链照原样写,后续段由创作者在能绑定实际视频和实际尾帧
+ 130 的工具里提交,内置路径只生成每条链的第一段。
+ 131
+ 132 创作者的选择由 `$short-drama` 写进生产档案,之后不再重复问。选独立起点,就是第 15 步所说的创作者
+ 133 明确要求独立重生成:这些链重新起链,各段从已接受起点写成可提交正文,不再标“待续接”。续接链的后续段
+ 134 通常没有自己的起始帧,这些段先交 `$short-drama-storyboard` 补前后两段共用的切点图或起始帧槽位,由
+ 135 `$short-drama-produce` 生成并经创作者接受,再回到本技能写正文。选外部提交,后续段保持“待续接、
+ 136 不可提交”,并注明在外部工具提交。任何情况下都不省略来源选择器;创作者选择前,也不自行把续接段改成
+ 137 独立生成或文生视频。
+ 183 本集有标为“待续接”的链时,交付报告列出这些链:生产档案还没有 `continuation_route` 就按上文问创作者一次,已有就写明按哪种方式执行。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/drama/skills/short-drama-write/SKILL.md
Week of Nov 2, 2026 · +6 / −3 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
- 51 - 输入给出目标时长时按真实表演、动作和停顿通读压稿,先删重复验证、解释和同义收尾;不用统一字数、镜头数或节拍数填模板。
+ 51 - 输入给出目标时长时按真实表演、动作和停顿通读压稿,先删重复验证、解释和同义收尾;峰值上有铺垫的爆发、紧跟其后的宣判句和收住这一拍的动作不算同义收尾,压稿前先读[经济性遍](references/script-craft.md#910-经济性遍)里的 `SCR-23`。不用统一字数、镜头数或节拍数填模板。
- 76 项目配置存在时,可在第三条命令末尾加 `--project short-drama.json`。只有
- 77 `duration_estimate.py` 接受这个参数,第二条索引命令不接受:
+ 76 项目配置存在时,可在第三条命令末尾加 `--project short-drama.json`;分集地图给这一集单独定了目标时长
+ 77 (例如首集加长)时,再加 `--target-seconds <秒数>`,按这一集的目标对照。只有 `duration_estimate.py`
+ 78 接受这两个参数,第二条索引命令不接受:
+ 97 所有台词都有语速可算时,输出另给 `speech_seconds` 与 `speech_share`:估算里有人说话的秒数和它占全集估算的比例。
+ 98 漫剧项目怎样读这个数,见 [漫剧靠声音往前推](references/script-craft.md#45-漫剧靠声音往前推)。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/novel-to-game/skills/game-art-direction/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/novel-to-game/skills/game-build/SKILL.md
Week of Nov 2, 2026 · +8 / −6 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
+ 22 正式生产需要新绘制位图且无合适现成资产时,使用当前环境的图像生成能力;在 Codex 中优先使用内置 ImageGen。已有图标体系与适合代码表达的简单图形继续复用。成品保存到项目并接入真实界面,不以文字徽章、emoji 或生成请求充当已完成美术;白盒占位按阶段标明。
- 29 当前会话能编码时直接实现;外部模型不可用时只交付构建说明,不声称游戏已生成。不要发送与原型
- 30 无关的完整受版权保护原文。
+ 30 当前会话具备实现能力时直接构建,否则使用其他可用实现方式。确无可用实现方式时,报告阻塞并
+ 31 交付构建说明,不声称候选已生成。不要发送与原型无关的完整受版权保护原文。
- 39 - 实际采用动态媒体时读取 [generative-media-pipeline.md](references/generative-media-pipeline.md)。
+ 40 - 实际采用动态媒体(影像短片、生成的音乐或音效)时读取 [generative-media-pipeline.md](references/generative-media-pipeline.md);
+ 41 要在选择之后播剧情过场(互动影游)时再读 [cutscene-production.md](references/cutscene-production.md)。
- 45 1. 先实现一个最小但完整的核心循环:启动、真实输入、状态变化、结果和重开。范围不足时修范围,
- 46 不先堆审计材料。
- 47 2. 实现 GAME_DESIGN 的状态、动作与结果;使用生成模型时,模型只解释输入和结果,规则器拥有提交权。
+ 47 1. 按阶段实现候选:`whitebox` 只实现验证最大风险所需的真实输入、状态变化与反馈;`production`
+ 48 先实现启动、核心动作、设计结果与重开的完整闭环。
+ 49 2. 实现该候选涉及的 GAME_DESIGN 状态、动作与结果;使用生成模型时,模型只解释输入和结果,规则器拥有提交权。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/novel-to-game/skills/game-concept/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/novel-to-game/skills/game-qa/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/novel-to-game/skills/game-world-design/SKILL.md
Week of Nov 2, 2026 · +2 / −1 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
- 14 不为所有项目强制写长篇对白。
+ 14 不为所有项目强制写长篇对白。选择之后要用一段剧情动画演出后果(互动影游,文游与短剧的结合)时,再读
+ 15 [interactive-film-method.md](references/interactive-film-method.md)。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/novel-to-game/skills/novel-game-analyze/SKILL.md
Week of Nov 2, 2026 · +9 / −10 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
- 29 建立边界 → 逐单元提取 → 覆盖门禁 → 分层聚合 → 回查原文 → 压缩交付,各步做法见
- 30 gameability-protocol.md。选定改编段落的核对在概念选定后二次进入时做,产出逐事实表(见「输出」)。
- 31 工作卡只服务覆盖、恢复和复核,不把过程日志包装成策划成果。
+ 29 按 gameability-protocol.md 完成来源界定、逐单元提取、覆盖核对、分层聚合、原文回查与压缩交付。
+ 30 工作卡只用于分批、恢复和复核。
- 55 供下游回查人物身份与次序。
+ 54 供设计与构建核对人物身份、次序和结局。
- 57 概念阶段选定改编段落后,二次进入本 skill 为该段落补一张逐事实表并追加进 SOURCE_BIBLE:
- 58 `事实 | 证据位置 | 边界类型`,含入镜角色的外观要点(服饰、兵器、体量及位置;原文无描写
- 59 写「原文未明确」)。此表供下游回查段落事实;下游发现出入时回上游修正此表,不各自改写。
- 60 概念选定后只补充或纠正有依据的原作事实——SOURCE_BIBLE 不得包含下游发明物,游戏状态键名、
- 61 回合或日程编号、scene_id、Hub/界面结构、QA 与范围计划只属于 GAME_DESIGN,不得把既有事实
- 62 改写成切片说辞。
+ 56 概念选定后,只为该方向依赖却缺少定位证据、相互冲突或未覆盖的关键因果、人物外观与时空事实
+ 57 回查原文,并更新 SOURCE_BIBLE 的相关事实与边界;已有充分证据直接引用。必要时用
+ 58 `事实 | 证据位置 | 边界类型` 列出补证结果;服饰、兵器、体量或位置没有原文依据时标为「原文未明确」。
+ 59
+ 60 SOURCE_BIBLE 只补充或纠正有依据的原作事实。其他阶段的决策由各自负责:产品范围归 PRODUCT_BRIEF,
+ 61 玩法、切片与界面结构归 GAME_DESIGN,运行时键名与文件结构归构建,验证计划归 QA,不写回原作事实层。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/novel-to-game/skills/novel-to-game/SKILL.md
Week of Nov 2, 2026 · +3 / −2 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
- 3 description: "Turn a novel into a fully playable game on the selected target platform. Orchestrates the whole adaptation pipeline — requirements intake, gameable deconstruction, concept selection, world and visual design, target-runtime build, and evidence-based QA — for a novel in any language. Use for novel to game, story to game, book to game, adapt this novel into a game, turn this book into a playable prototype, make an interactive story or text adventure from this novel. NovelToGame 总入口。把任意语言的原始小说、拆文库或 oh-story 写作工程转成有原著依据、可在目标平台完整游玩的游戏,编排游戏化拆解、概念选择、游戏与视觉设计、目标运行环境构建和证据化质量验证。用于小说转游戏、把这本书做成游戏、把小说改成互动小说 / 互动叙事 / 文字冒险游戏等需求。"
+ 3 description: "Turn a novel into a fully playable game on the selected target platform. Orchestrates the whole adaptation pipeline — requirements intake, gameable deconstruction, concept selection, world and visual design, target-runtime build, and evidence-based QA — for a novel in any language. Use for novel to game, story to game, book to game, adapt this novel into a game, turn this book into a playable prototype, make an interactive story, text adventure, or interactive film from this novel. NovelToGame 总入口。把任意语言的原始小说、拆文库或 oh-story 写作工程转成有原著依据、可在目标平台完整游玩的游戏,编排游戏化拆解、概念选择、游戏与视觉设计、目标运行环境构建和证据化质量验证。用于小说转游戏、把这本书做成游戏、把小说改成互动小说 / 互动叙事 / 文字冒险游戏 / 互动影游等需求。"
- 35 5. 调用 `game-world-design` 生成 `GAME_DESIGN.md`,其中锁定最大设计风险与最小可执行切片。
+ 35 5. 选定方向所需原作事实缺少证据或存在冲突时,先调用 `novel-game-analyze` 定向补证;再调用
+ 36 `game-world-design` 生成 `GAME_DESIGN.md`,锁定最大设计风险与最小可执行切片。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/browser-cdp/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
- 105 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 38` 不一致时(标记缺失、字段缺失/非整数、小于或大于 38)**照常按当前宿主角色来源检查并 spawn**;同时用一句白话提示作者「查资料助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 38)` 原文写进回答最末一行「技术备注:」;大于 38 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
+ 105 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)**照常按当前宿主角色来源检查并 spawn**;同时用一句白话提示作者「查资料助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 原文写进回答最末一行「技术备注:」;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-cover/SKILL.md
Week of Nov 2, 2026 · +2 / −2 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
- 27 - 短篇:`设定.md`「基本信息」的标题、目标平台、目标情绪,以及「一句话梗概」「题材招式」。
+ 27 - 短篇:`设定.md`「基本信息」的标题、目标平台、目标情绪,以及「一句话梗概」「这篇用的套路」(旧书叫「题材招式」)。
- 45 1. 有「题材类型」(长篇)或梗概、题材招式(短篇)时,按内容选风格库中最接近的一节。
+ 45 1. 有「题材类型」(长篇)或梗概、套路(短篇)时,按内容选风格库中最接近的一节。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-deslop/SKILL.md
Week of Nov 2, 2026 · +3 / −3 lines
Before Local scripts → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
- 32 从正文路径确定书目录和篇幅:单个 `正文.md` 一般是短篇,`正文/` 下逐章文件一般是长篇;优先采用作者与项目的明确说明。按开头的文风裁决读本书要求,通读本次正文,按需查相关前文和已定设计,不整读无关全书。资料缺失时继续有依据的部分,标明未知。本次涉及多章时,逐章完成 Phase 1–4 再进下一章,交给写手时每章派一次。
+ 32 从正文路径确定书目录和篇幅:单个 `正文.md` 一般是短篇,`正文/` 下逐章文件一般是长篇;优先采用作者与项目的明确说明;短篇另读 [references/short-deslop.md](references/short-deslop.md) 的卖点保护。按开头的文风裁决读本书要求,通读本次正文,按需查相关前文和已定设计,不整读无关全书。资料缺失时继续有依据的部分,标明未知。本次涉及多章时,逐章完成 Phase 1–4 再进下一章,交给写手时每章派一次。
- 78 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 38` 不一致时(标记缺失、字段缺失/非整数、小于或大于 38)**照常按当前宿主角色来源检查并 spawn**,同时用一句白话提示作者「写作助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 38)` 原文写进技术备注行;大于 38 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
+ 78 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)**照常按当前宿主角色来源检查并 spawn**,同时用一句白话提示作者「写作助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 原文写进技术备注行;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
- 109 标点脚本把白名单以外的省略号、破折号、双连字符换成逗号、句号、冒号或删去,并删除独立分隔线;不动问号和感叹号,默认不改引号。仅作者或项目明确要求时才加 `--quote-mode ascii` 或 `--quote-mode yan`。白名单登记按文风裁决文件执行,不因脚本报警自行放行。
+ 109 标点脚本保留引号里的省略号(统一成 `……`),把白名单以外的其余省略号、破折号、双连字符换成逗号、句号、冒号或删去,并删除独立分隔线;不动问号和感叹号,默认不改引号。仅作者或项目明确要求时才加 `--quote-mode ascii` 或 `--quote-mode yan`。白名单登记按文风裁决文件执行,不因脚本报警自行放行。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-import/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
- 13 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 38` 不一致时(标记缺失、字段缺失/非整数、小于或大于 38)**照常按当前宿主角色来源检查并 spawn**,同时用一句白话提示作者「分析助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 38)` 原文写进汇报最后一行「技术备注:」;大于 38 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: project custom agents unavailable -> solo` 同样只进技术备注行。
+ 13 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)**照常按当前宿主角色来源检查并 spawn**,同时用一句白话提示作者「分析助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 原文写进汇报最后一行「技术备注:」;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: project custom agents unavailable -> solo` 同样只进技术备注行。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-long-analyze/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
- 15 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 38` 不一致时(标记缺失、字段缺失/非整数、小于或大于 38)照常按当前宿主角色来源检查并 spawn,同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 38)` 并提示重新运行 `/story-setup` 后新开会话;大于 38 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct。
+ 15 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)照常按当前宿主角色来源检查并 spawn,同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 并提示重新运行 `/story-setup` 后新开会话;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-long-scan/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-long-write/SKILL.md
Week of Nov 2, 2026 · +45 / −47 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
- 13 任何创建或修改长篇故事文件的动作前,先判断场景并读完下列文件。**只读本 SKILL.md 不算完成;`rg` 检索或局部摘读也不算完整读取。**
+ 13 创建或修改长篇故事文件前,按下表读完当前时刻的文件(这张表是唯一的读取清单);只读本文件、`rg` 检索或摘读都不算。**按节读只允许两种**:任务包切好的节,或本表、文件内「什么时候读这份」点名的节;其余文件整份读到结尾。缺文件或没读完就停,报准确路径,**不得先写正文再补读**;每个任务、每个会话重新读。
- 15 必须分块读到 EOF:
+ 15 | 时刻 | 必读 | 条件满足才读 |
+ 16 |---|---|---|
+ 17 | 定方向 | `workflow-setup.md` | 没方向:`long-genre-catalog.md`(特殊题材只读对应一节);女频改读 `female-audience-writing.md`;平台、赛道、暂定书名:`genre-readers.md`;派子代理:`agent-calls.md` |
+ 18 | 定设定 | `workflow-setup.md`;自己做加 `character-basics.md`、`reader-contract-and-progression.md`、`long-genre-mechanics.md`「核心梗三层递进设计」「金手指」、`character-relations.md`「人物关系类型」 | 女频:`female-audience-writing.md`;有感情线:`character-relations.md`「感情线阶段」;对标登记 ≥2 本:`cross-book-recall.md` |
+ 19 | 出卷纲 | `workflow-volume.md`;自己排加 `artifact-protocols.md`、`outline-methods.md`「卷纲排法」、`reader-contract-and-progression.md` | 没有主对标:outline-methods「常见的八步结构」;有自创剧情段:「情绪模块公式」;换地图:「换地图」;有反转:`long-reversal.md`「反转类型」;感情线、对标同上 |
+ 20 | 出细纲、补纲 | `workflow-outline.md`;自己出加 `outline-template.md`、`plot-core-methods.md`、`character-basics.md`、`long-chapter-hooks.md`「章尾钩子 13 式」「章首钩子 7 式」 | 含前 3 章:`opening-design.md`「开篇规划」;感情线、对标同上 |
+ 21 | 写一章 | `workflow-chapter.md`;交写手加 `agent-calls.md`;自己写加 `long-format.md`、`writing-craft.md`、本章技法 | 新书第 1 章:`tracking-initialization.md`、`genre-prose-cards.md`「全书题材正文提示卡」与核对报告点名的卡;召回降档不成立:`benchmark-recall.md`;缺文件、找产物放哪:`project-files.md`;自己写第 1-3 章:`opening-design.md`「开篇落笔」;排查单章问题:`long-chapter-quality.md` |
+ 22 | 日更 | 先 `workflow-daily.md`,每章同「写一章」 | 同「写一章」 |
+ 23 | 大修 | `workflow-revision.md`;交写手加 `agent-calls.md`;自己改加 `long-format.md`、`writing-craft.md`,改情绪对抗戏加本章技法 | 只说读者反应:`revision-diagnosis.md`;追踪提交报错:`tracking-transaction.md` |
+ 24 | 管理作者习惯 | `author-memory.md`;完成即停,不建书、不写正文 | — |
- 17 1. 规划按时刻读:定方向、定设定读 `references/workflow-setup.md`,出卷纲读 `references/workflow-volume.md`,出细纲或补纲读 `references/workflow-outline.md`,只读当前时刻的;写指定章读取 `references/workflow-chapter.md`;日更先读取 `references/workflow-daily.md`,进入正文前再完整读取 `workflow-chapter.md`;大修先读 `references/workflow-revision.md`,改稿时还要读什么由它写明。
- 18 2. 主会话直接写正文时,首次落笔前完整读取 `references/long-format.md` 与 `references/writing-craft.md`,与写手用同一套技法;`references/long-chapter-quality.md` 只在排查具体问题时读,去味走检测器,不预读。交给 narrative-writer 时,由该 agent 按自己的 reference 表完成写前读取,主会话不得用未读 reference 的临时 prompt 替代。
- 19 3. 本章技法按下方「本章技法」一段选,至多一份;主会话自己写时按那段只读指定小节,这是本条唯一允许的按节读。
- 20 4. 正文写前,references 读完后立即重读当前用户请求、本章细纲和卷纲,先在上下文里**记下本轮约束**:原样记录用户明确字数范围、必发生、禁止发生、精确时间锚与本章停笔点、章尾新债。references 只提供技法,不得覆盖这些项目事实;作者给的字数范围写在细纲「字数范围」行(命令参数只作临时覆盖),有它就不用默认 ±15%。交付前逐项复核:字数带外按 `workflow-chapter.md` 的收口流程交用户处置,不自动补字;其余项越界不算完成。
+ 26 交给 story-architect 时主会话只读时刻文件和 `agent-calls.md`,方法随任务包;交给 narrative-writer 时它按自己的读取表读,不得用没读参考的临时 prompt 替代。去味走检测器,不预读。写正文、改稿前读本书 `设定/文风.md`(没有就按作者当前请求)。
- 22 任一必需路径不存在、不可读或未读完时立即停止,报告准确路径,**不得先写正文再补读**。写前必读按当前任务、当前会话重新执行;旧会话的“读过”不能沿用。
+ 28 **本章技法**(每章至多一份;类别只在这里定义,写手模板的读取表与它同步):按细纲主功能选。
+ 29
+ 30 | 类别(读者情绪) | 文件 |
+ 31 |---|---|
+ 32 | 打脸/逆袭(爽感释放) | `style-combat-face.md` |
+ 33 | 身份/认知/立场反转(震撼+痛快) | `long-reversal.md` |
+ 34 | 感情拉扯(意难平) | `emotional-methods.md` |
+ 35 | 悬疑/惊悚/异常线索(紧张+好奇) | `long-suspense.md` |
+ 36 | 日常装逼(期待感) | `style-combat-face.md`「爽点公式与日常装逼」 |
+ 37
+ 38 都不对应就不读。交给写手只在 prompt「本章技法」填类别;自己写只读该文件「什么时候读这份」和它指向的那一节,日更一批只读一份,按最需要的那章选。作者只说情绪时按括号反查题材。
+ 39
+ 40 **记下本轮约束**:正文写前,读完上面的文件后重读当前请求、本章细纲和卷纲,原样记下用户明确的字数范围、必发生、禁止发生、精确时间锚与本章停笔点、章尾新债。参考文件只提供技法,不覆盖这些事实;作者给的字数范围写在细纲「字数范围」行(命令参数只作临时覆盖),有它就不用默认长度带(见 tracking-transaction.md)。交付前逐项复核:字数出了范围按 workflow-chapter「检测收口」交作者处置,不自动补字;其余项越界不算完成。
- 26 > 专业 agent 只查当前宿主:Claude `.claude/agents`、OpenCode `.opencode/agents`、Codex `.codex/agents` TOML、Antigravity `.agents/agents`(`invoke_subagent` + 同名 `TypeName`);ZCode 查已启用插件注册的同名角色,用 `Agent` 工具按实际 schema 派发,不要求 `.zcode/agents`。仅角色或调用能力缺失、返回 unknown agent 时报告 fallback 并 solo/direct,不因宿主名或其他端目录存在而降级。
+ 44 > 专业 agent 只查当前宿主:Claude `.claude/agents`、OpenCode `.opencode/agents`、Codex `.codex/agents` TOML、Antigravity `.agents/agents`(`invoke_subagent` + 同名 `TypeName`);ZCode 查已启用插件注册的同名角色,用 `Agent` 工具按实际 schema 派发,不要求 `.zcode/agents`。返回 unknown agent 时按下面的降级处理,不因宿主名或其他端目录存在而降级。
- 28 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 38` 不一致时(标记缺失、字段缺失/非整数、小于或大于 38)**照常按当前宿主角色来源检查并 spawn**;同时用一句白话提示作者「写作助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 38)` 原文写进技术备注行;大于 38 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
- 29
- 30 **文风裁决**:正文写作、改写或审稿前先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风并形成 `style_resolution`;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
- 31
- 32 ## 作者记忆管理
- 33
- 34 管理习惯读 `references/author-memory.md`(整理、超编、迁移按其中指路)。仅管理习惯时完成即停,不建书、不写正文。
+ 46 > 版本:项目根 `.story-deployed` 的 `agents_version` 与本版 `agents_version: 39` 不一致(缺失、非整数、更小或更大)时照常按当前宿主角色来源检查并 spawn,只对作者说一句「写作助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」;大于 39 时额外提示先更新 oh-story-claudecode。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,对作者只说「这次我自己写」。
- 38 先明确每个场景的主导情绪,从对标中找有依据的剧情模式,把角色当功能位,用本书的角色和素材实现;写每章只读「不知道就会写错」的状态、伏笔与设定。契约与推进决策先过 `references/reader-contract-and-progression.md`「契约四问」。作者记忆:写正文时组装脚本已代查注入;其他任务直接跑 `{PYTHON} {skill 根}/scripts/author_memory_commit.py query --workspace {放 .active-book 的那层} --book-root {书目录} --kind …`(规划查 story_design、workflow、interaction,改稿查 prose_style,整章重写另加 story_design;无记忆返回空),执行者只拿输出的 `lines`,当前请求与本书文风优先。
- 39
- 40 **本章技法(每章至多读一份)**:按细纲主功能选——打脸/逆袭(爽感释放)`style-combat-face.md`;身份/认知/立场反转(震撼+痛快)`long-reversal.md`;感情拉扯(意难平)`emotional-methods.md`,自己写时加 `emotion-on-page.md`;悬疑/惊悚/异常线索(紧张+好奇)`long-suspense.md`;日常装逼(期待感)`long-chapter-hooks.md`。都不对应就不读,按 writing-craft 写。第 1-3 章另读 `opening-design.md`「开篇落笔」。交给写手时只在 prompt「本章技法」填类别,由写手整份读;主会话自己写正文时只读该文件的「决策路由」和它指向的那一节(先看标题定位,不整读),日更一批只读一份,按本批最需要的那章选,其余章按 writing-craft 写。作者先说情绪没说题材时按括号反查,再从 `long-genre-catalog.md` 找细分方向。
+ 50 先明确每个场景的主导情绪,从对标中找有依据的剧情模式,把角色当功能位,用本书素材实现;写每章只读「不知道就会写错」的状态、伏笔与设定。推进决策先过四个排纲问题。作者记忆:写正文时组装脚本已代查;其他任务按 author-memory.md「查询」查,当前请求与本书文风优先。
- 46 先确定操作对象、交付范围和停点,再看项目状态;空项目不等于授权完整开书。范围与转正文规则如下。
+ 56 先确定操作对象、交付范围和停点,再看项目状态;空项目不等于授权完整开书。
- 53 | **开书** | "帮我开书",未限定规划层级 | 按确认点逐个走:定方向→定设定→卷纲→首批 10 章细纲,每个确认点作者说继续才往下;**最远停在细纲交付,不自动写正文** |
- 54 | **定设定** | "定设定",或已有题材定位、还没有角色与关系 | 定设定时刻:`references/workflow-setup.md` Phase 2,交付设定后停 |
+ 63 | **开书** | "帮我开书",未限定规划层级 | 按确认点逐个走:定方向→定设定→卷纲→前 10 章细纲,每个确认点作者说继续才往下;**最远停在细纲交付,不自动写正文** |
+ 64 | **定设定** | "定设定",或已有题材定位、还没有角色与关系 | Phase 2,交付设定后停 |
- 56 | **日更续写** | 关键词("日更"/"续写"/"继续写")**且**项目已有正文+追踪 | 加载 `references/workflow-daily.md` |
- 57 | **大修** | "修改第X章" / "回炉" / "重写第X章",对象是已写正文 | 加载 `references/workflow-revision.md`;只改细纲不进此流程 |
+ 66 | **日更续写** | 关键词("日更"/"续写"/"继续写")**且**项目已有正文+追踪 | 按 workflow-daily 控制批次 |
+ 67 | **大修** | "修改第X章" / "回炉" / "重写第X章",对象是已写正文 | 按 workflow-revision;只改细纲不进此流程 |
- 63 **转入正文**:明确的正文请求只授权进入写作流程。落正文前重新完成本轮「写前必读」,按 workflow-chapter 处理缺 state、使 `tracking_commit.py check` 通过,任一未完成就停止;之后按原流程写作、质检、提交,不再问是否继续。
+ 73 **转入正文**:明确的正文请求只授权进入写作流程。落正文前重新完成本轮「写前必读」,按 workflow-chapter 开头修好缺文件,没修好就停;之后按原流程写作、质检、提交,不再问是否继续。
- 75 无法判断场景时,给 2-4 个白话选项(如「只聊结构」「写大纲」「写第N章正文」)让用户选,不贴场景表,也不开放式提问。
+ 85 无法判断场景时,给 2-4 个白话选项让用户选,不贴场景表,也不开放式提问。
- 79 所有给作者看的汇报、提问和停下说明只讲三件事:写了/改了什么(章名、发生了什么);要作者定的事(一句白话问题+白话选项+推荐默认);下一步。不写脚本、字段、参数名、状态码和内部清单名(如 排纲自查、供给自查、S1-S4、字数带);编号必带故事标签,如「伏笔 F057(那封信的去处)」。检查结果一句白话带过,如「自查过设定和前文,没发现冲突」。回执、Notice、Fallback 等机器行只放最末一行「技术备注:」,其前可有一句下一步建议(如新开对话)。汇报照各 workflow 的模板写,不带代码块围栏;子 agent 返回的术语由主会话翻译后再说。
+ 89 所有给作者看的汇报、提问和停下说明只讲故事:写了/改了什么(章名、发生了什么);要作者定的事(一句白话问题+白话选项+推荐默认);下一步。不写脚本、字段、参数名、状态码、版本号和内部清单名(如 排纲自查、写纲前查缺、字数带);编号必带故事标签,如「伏笔 F057(那封信的去处)」。检查结果一句白话带过,如「自查过设定和前文,没发现冲突」。不加技术备注行:版本提示、没请写作助手这类事各用一句白话说。汇报照各 workflow 的模板写,不带代码块围栏;子 agent 返回的术语由主会话翻译后再说。
- 85 > **对标书路径查找**:优先 `{项目}/对标/{书名}/`,不存在则回退 `拆文库/{书名}/`(`拆文库/` 是拆文原始产出,`对标/` 是本项目引用视图,首次引用的复制规则见 workflow-setup.md「对标发现」第 3 条)。
+ 95 > **对标资料**:路径查找、无对标的判定、缺资料怎么办,都只在 benchmark-recall.md 定义。
- 87 > **卷纲不整读**:一律走 `{PYTHON} {skill 根}/scripts/outline_view.py --unit {单元ID} {卷纲路径}`(只要契约用 `--contract`,看目录用 `--toc`);找不到单元就核对单元ID或先补卷纲,不改用整读。排纲底稿放 `大纲/排纲底稿_{单元ID}.md`,只在排纲/补纲时读;取段器的作用域、历史与校验选项见 artifact-protocols.md 卷纲模板。
+ 97 > **卷纲不整读**:一律走 `{PYTHON} {skill 根}/scripts/outline_view.py --chapter {章号} {卷纲路径}`(知道编号也可用 `--unit {编号}`;只要卷级部分用 `--contract`,看目录用 `--toc`);找不到就核对章节范围或先补卷纲,不改用整读。
- 89 > **新增物三级**(排纲、写正文、处置共用;只看下一章需不需要知道它存在过):
+ 99 > **新增物三级**(缺东西时三种处理;排纲、写正文、处置共用;只看下一章需不需要知道它存在过):
- 91 > - **写了要报**:具名配角、势力、复用地点属性、能力形态、规矩、刻度、新伏笔、新关系或承诺、给主角留下的东西;照写并逐条进申报表(类型/名目/落在哪/后续义务;无写 `0`;末行「本章没写成的」),主会话核对后才算续写事实。
- 92 > - **先问作者**:新主线事件或反转、金手指规则与力量档位、真相或伏笔结算、经济锚点、读者契约、提前写后续章、改变细纲已定结果或人物决定、卷纲新增编号、碰主推线或终局底牌、与既有裁定或承诺冲突;写正文时不写,排纲时挂起列候选,由主会话问作者。
- 93 > 拿不准:写时按写了要报,处置时按先问作者。
+ 101 > - **补上并记下**:具名配角、势力、复用地点属性、能力形态、规矩、刻度、新伏笔、新关系或承诺、给主角留下的东西;照写并逐条进申报表(类型/名目/落在哪/后续义务;无写 `0`;末行「本章没写成的」),主会话核对后才算续写事实。正文里新长出的伏笔由主会话登记时取本卷伏笔表的下一个编号、追加进伏笔表(只增不改,不算改卷纲)。
+ 102 > - **先问作者**:新主线事件或反转、金手指规则与力量档位、真相或伏笔结算、经济锚点、读者期待、提前写后续章、改变细纲已定结果或人物决定、卷纲新增主线或故事线、碰这卷主打的线或后面才揭开的东西、与既有规矩或承诺冲突;写正文时不写,排纲时挂起列候选,由主会话问作者。
+ 103 > 拿不准:写时按补上并记下,处置时按先问作者。
- 99 按作者确认点分时刻读(见首屏写前必读第 1 条);每个时刻文件开头写了本时刻的交接规则,出卷纲、出细纲时不必再读 workflow-setup.md。
+ 109 按作者确认点分时刻走,每个时刻文件开头写了交接规则。
- 105 #### 项目文件与产物
- 106
- 107 要找某类产物放哪、或修复缺失文件时,完整读取 [references/project-files.md](references/project-files.md) 照做;开书建文件按各时刻文件写明的路径直接落盘,写正文时缺文件按 workflow-chapter 开头停下修,都不必先读它。
- 108
- 109 #### 单章写作流程
- 110
- 111 **执行前先读 [references/workflow-chapter.md](references/workflow-chapter.md)**,按其步骤 1-13 执行。日更批量另加载 `references/workflow-daily.md`。
+ 115 每章按 workflow-chapter「单章写作流程」逐步执行。
- 115 所有追踪写入都走 `scripts/tracking_commit.py`:`追踪/_tracking-state.json` 是唯一权威,`上下文.md`、角色快照、`伏笔.md`、时间线都由它派生,禁止手改。体积上限由脚本检查、超限一次报全;字段与上限见 [tracking-transaction.md](references/tracking-transaction.md),出错时才读。
+ 119 所有追踪写入都走 `scripts/tracking_commit.py`:`追踪/_tracking-state.json` 是唯一权威,`上下文.md`、角色快照、`伏笔.md`、时间线都由它派生,禁止手改。体积上限由脚本检查;字段与上限见 [tracking-transaction.md](references/tracking-transaction.md)。
- 130
- 131 ---
- 132
- 133 ## 参考资料索引
- 134
- 135 阶段必读项按首屏「写前必读」执行;写正文不按索引加读;规划或作者点名问技法时按 [参考索引](references/reference-index.md) 的加载条件选用。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-publish/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-review/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Local scripts → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
- 9 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 38` 不一致时(标记缺失、字段缺失/非整数、小于或大于 38)**照常按当前宿主角色来源检查并 spawn**;同时在「这次怎么审的」里用一句白话提示作者「审稿助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 38)` 原文写进技术备注行;大于 38 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。版本提示本身不触发降级;文件缺失或异常、工具不可用、递归限制或调用失败按 Phase 0 处理,技术备注写 `Fallback: ... -> solo`。
+ 9 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)**照常按当前宿主角色来源检查并 spawn**;同时在「这次怎么审的」里用一句白话提示作者「审稿助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 原文写进技术备注行;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。版本提示本身不触发降级;文件缺失或异常、工具不可用、递归限制或调用失败按 Phase 0 处理,技术备注写 `Fallback: ... -> solo`。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-setup/SKILL.md
Week of Nov 2, 2026 · +6 / −6 lines
Before Instructions only → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
- 3 version: 1.3.6
+ 3 version: 1.3.7
- 29 - `agents_version` 缺失、非整数或小于 `38` → 标记为待更新,继续执行当前部署
- 30 - `agents_version: 38` → 使用 AskUserQuestion 确认是否重新部署;提示里写明重新部署只用**当前本地 skill 包**刷新项目文件,要拿 skill 本身的新版本得先更新 oh-story-claudecode(`npx skills add` 或 marketplace),再回来重跑
- 31 - `agents_version` 大于 `38` → 当前 story-setup 比项目部署旧;停止以避免降级覆盖,提示先更新 oh-story-claudecode,不写任何部署文件
+ 29 - `agents_version` 缺失、非整数或小于 `39` → 标记为待更新,继续执行当前部署
+ 30 - `agents_version: 39` → 使用 AskUserQuestion 确认是否重新部署;提示里写明重新部署只用**当前本地 skill 包**刷新项目文件,要拿 skill 本身的新版本得先更新 oh-story-claudecode(`npx skills add` 或 marketplace),再回来重跑
+ 31 - `agents_version` 大于 `39` → 当前 story-setup 比项目部署旧;停止以避免降级覆盖,提示先更新 oh-story-claudecode,不写任何部署文件
- 92 agents_version: 38
- 93 setup_skill_version: 1.3.6
+ 92 agents_version: 39
+ 93 setup_skill_version: 1.3.7
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-short-analyze/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-short-scan/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/oh-story/skills/story-short-write/SKILL.md
Week of Nov 2, 2026 · +22 / −28 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
- 15 短篇按作者当前要做的事分阶段加载,阶段之间靠落盘文件交接。创建或修改故事文件前,先判断当前时刻,再完整读取该时刻的必读项;分块读取直到 EOF,`rg` 检索或局部摘读不算读完。**只读本 SKILL.md 不算完成门禁。**
+ 15 短篇按作者当前要做的事分时刻读文件,时刻之间靠落盘文件交接。创建或修改故事文件前,先判断当前时刻,按下表读完(这张表是唯一的读取清单);只读本文件、`rg` 检索或摘读都不算。**按节读只允许两种**:本表点名的节,或文件内「什么时候读这份」点名的节;其余整份读到结尾。缺文件、没读完或题材还没对上唯一的题材包就停,报准确路径或待定项,**不得创建或修改故事产物**。每个时刻、每个会话重新读。
- 17 | 时刻 | 作者确认什么 | 读什么 | 落盘 |
- 18 |---|---|---|---|
- 19 | 定情绪(Phase 1) | 读者读完的感觉、题材方向 | 本文件 | 进构思时写入 `设定.md` |
- 20 | 构思(Phase 2) | 故事核、人物、反转、付费点 | ① `references/workflow-design.md`、`references/submission-craft.md`、`references/short-craft.md`、`references/short-reversal.md` ② 核心 10 题材读一个精确的 `references/genre-styles/{题材}.md`,冷门题材读 `references/genre-writing-formulas.md` ③ 有反派或真相揭露设计时读 `references/villain-and-reveal.md`,不适用时在设计校验区写明原因 | `设定.md`、`小节大纲.md` |
- 21 | 写正文(Phase 3–4) | 成稿 | Phase 3 写正文前完整读取 `references/workflow-draft.md`,按其「写前加载」读写作手法;Phase 4 精修前完整读取 `references/workflow-revision.md` | `正文.md` |
+ 17 | 时刻 | 作者确认什么 | 必读 | 条件满足才读 | 落盘 |
+ 18 |---|---|---|---|---|
+ 19 | 定情绪(Phase 1) | 读者读完的感觉、题材方向 | 本文件 | — | 进构思时写入 `设定.md` |
+ 20 | 构思(Phase 2) | 故事核、人物、反转、付费点 | `workflow-design.md`、`submission-craft.md`、`short-craft.md`、`short-reversal.md`、`emotional-methods.md`「情感拉扯节奏设计」;核心 10 题材读一个 `genre-styles/{题材}.md`,冷门读 `genre-writing-formulas.md` | 有反派或真相揭露:`villain-and-reveal.md`;有对标或参考小说:`benchmark-recall.md`;付费点断点拿不准:`hooks-chapter.md`「2. 节尾」 | `设定.md`、`小节大纲.md` |
+ 21 | 写正文(Phase 3) | 成稿 | `workflow-draft.md`、`short-format.md`、`short-craft.md`、`scene-craft.md`、设定.md 写的那个题材包(冷门不读) | 写羁绊或余韵:`emotional-methods.md`「情感虐心三板斧」;对白驱动的博弈、审判、打脸:`dialogue-mastery.md`「什么时候读这份」和它点名的一节;交给写手:`agent-calls.md` | `正文.md` |
+ 22 | 精修(Phase 4) | 交付 | `workflow-revision.md`、`short-format.md` | 主会话自己去味:`short-deslop.md`,拿不准某条信号时查 `banned-words.md` 对应一节;去味交给写手:`agent-calls.md` | `正文.md` |
+ 23 | 管理作者习惯 | 记、改、忘 | `author-memory.md`;完成即停,不建书、不写正文 | — | — |
- 23 构思必读项须在首次写入 `设定.md` / `小节大纲.md` 前读完。任一必需路径不存在、不可读,或题材尚未对应到唯一 reference 时,立即停止,报告准确路径或待定项,**不得创建或修改故事产物**。故事文件只记录选出的题材招式、反转计算等设计,不写“已读 references”的回执。进入每个时刻都按当前任务完整回读。
+ 25 故事文件只记录选出的套路、反转位置等设计,不写“已读 references”的回执。
- 25 **交接只靠落盘**:作者在对话里定下的字数、平台、人称、偏好、红线和否掉的方案,构思交付前写进 `设定.md`;写正文只读两份设计文件与本时刻的写作手法,不重读构思方法论,也不回翻对话。
- 26 **换上下文**:构思阶段加载最多,汇报末尾建议作者新开对话说「写正文」;作者选择在本对话接着写时照常执行。新对话中,两份设计文件通过构思完成门禁即可进入写正文。
+ 27 **交接只靠落盘**:作者在对话里定下的字数、平台、人称、偏好、红线和否掉的方案,构思交付前写进 `设定.md`;写正文只读两份设计文件与本时刻的写作手法,不重读构思方法,也不回翻对话。
+ 28 **换上下文**:构思时刻读得最多,汇报末尾建议作者新开对话说「写正文」;作者选择在本对话接着写时照常执行。新对话中,两份设计文件通过构思完成门禁即可进入写正文。
- 30 > Agent 只查当前宿主:Claude `.claude/agents`(`subagent_type`)、OpenCode `.opencode/agents`(`subagent` 的 `agent`)、Codex `.codex/agents` TOML(`agent_type`)、Antigravity `.agents/agents`(`invoke_subagent` + `TypeName`);ZCode 查插件注册的同名角色,用 `Agent` 按实际 schema 派发,不要求 `.zcode/agents`。主会话自己写正文、去味是常态,不报;作者明确要交给写作助手而角色/工具缺失或 unknown agent 时,由主会话接手并一句白话告诉作者,`Fallback: project custom agents unavailable -> solo` 原文只进汇报最后一行「技术备注:」。
+ 32 > 专业 agent 只查当前宿主:Claude `.claude/agents`(`subagent_type`)、OpenCode `.opencode/agents`(`subagent` 的 `agent`)、Codex `.codex/agents` TOML(`agent_type`)、Antigravity `.agents/agents`(`invoke_subagent` + `TypeName`);ZCode 查插件注册的同名角色,用 `Agent` 按实际 schema 派发,不要求 `.zcode/agents`。主会话自己写正文、去味是常态,不报;作者明确要交给写作助手而角色/工具缺失或返回 unknown agent 时,由主会话接手,对作者只说「这次我自己写」。
- 32 > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 38` 不一致时(标记缺失、字段缺失/非整数、小于或大于 38)**照常按当前宿主角色来源检查并 spawn**,同时用一句白话提示作者「写作助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 38)` 原文写进技术备注行;大于 38 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
- 33
- 34 **文风裁决**:正文写作、改写或审稿前先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风并形成 `style_resolution`;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
+ 34 > 版本:项目根 `.story-deployed` 的 `agents_version` 与本版 `agents_version: 39` 不一致(缺失、非整数、更小或更大)时照常按当前宿主角色来源检查并 spawn,只对作者说一句「写作助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,对作者只说「这次我自己写」。
- 41 4. **开头 3 句定生死,结尾定传播**。开头必须包含钩子,结尾必须有余韵。
+ 41 4. **开头抓人,结尾留余韵**。开头写法以 short-craft「开头事件密度」为准,题材包「开篇范式」覆盖它。
- 48 管理习惯读 `references/author-memory.md`(整理、超编、迁移按其中指路)。仅管理习惯时完成即停,不建书、不写正文。
+ 48 管理习惯按上表读 `references/author-memory.md`(整理、超编、迁移按其中指路)。
- 52 - **按题材选写法**:确定题材后,按文风裁决选用题材包的腔调、开篇、钩子、情绪烈度、金句、招式与收尾;追妻按时代变体及小三/死人文学分支选择。冷门题材用公式安排结构,腔调按 `short-craft.md`
+ 52 - **按题材选写法**:确定题材后选用[题材包](references/genre-styles/)的腔调、开篇、钩子、情绪烈度、金句、套路与收尾;追妻按时代变体及小三/死人文学分支选择。冷门题材用公式安排结构,腔调按 `short-craft.md`。写法冲突时的先后见 short-craft 开头。
- 69 | 情绪类型 | 适合场景 | 难度 | 常配题材包 |
+ 69 | 情绪类型 | 适合场景 | 难度 | 常见题材 |
- 84 存在本篇 `对标/`、项目根 `拆文库/` 或用户提供参考小说时,先完整读取 [references/benchmark-recall.md](references/benchmark-recall.md),执行对标发现、排除本书续写基线、题材匹配与召回。无外部对标时仍按原题材包执行。
+ 84 存在本篇 `对标/`、项目根 `拆文库/` 或用户提供参考小说时,先完整读取 [references/benchmark-recall.md](references/benchmark-recall.md),执行对标发现、排除本书已写部分、题材匹配与召回。无外部对标时仍按原题材包执行。
- 94 进入正文写作前,完整读取 [references/workflow-draft.md](references/workflow-draft.md),执行交付参数锁定、写前验收与逐场景写作;只做构思或精修时不加载。
+ 94 进入正文写作前,完整读取 [references/workflow-draft.md](references/workflow-draft.md),执行交付参数锁定、写前验收与逐场景写作;只做构思或精修时不加载。下面两段是写正文和精修共用的完成标准,只在这里写。
- 98 2. **写完后**:对照 `小节大纲.md` 检查批准内容是否落地、因果与下一步是否读得懂、感知/反应是否提供新信息、伏笔/物件是否按计划出现。
+ 98 2. **写完后**:对照 `小节大纲.md` 检查批准内容是否落地、因果与下一步是否读得懂、感知/反应是否提供新信息、埋下的东西后面有没有接上。
- 104 - [ ] 总字数进入锁定的用户范围;作者没给时进入 `设定.md` 的目标字数(构思时按所选平台的投稿区间定,未定平台用 8000-12000,见 submission-craft.md)
+ 104 - [ ] 总字数(交付检查报的非空白字数)进入锁定的用户范围;作者没给时进入 `设定.md` 的目标字数
- 106 - [ ] 节数 = 小节大纲规划节数(不得合并/省略)
+ 106 - [ ] 节数 = 小节大纲规划节数(不得合并/省略;某节确实不需要独立存在,回构思改大纲,不在写正文时偷减)
- 128
- 129 ---
- 130
- 131 ## 参考资料
- 132
- 133 阶段必读项按首屏「写前必读」执行;其他资料按 [参考索引](references/reference-index.md) 的加载条件选用。
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/video-recap/skills/video-assemble/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/video-recap/skills/video-cut/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/video-recap/skills/video-recap/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/video-recap/skills/video-reference/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/video-recap/skills/video-script/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/video-recap/skills/video-understanding/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
packages/knowledge/video-recap/skills/video-voiceover/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
bc836dc0d210 → ed56e4a3946f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → bc836dc0d210
No earlier version was observed for comparison.
Verified commit ed56e4a3946fe7e6713b07164787a23128f6a848
git clone --filter=blob:none --no-checkout https://github.com/zenstory-ai/oh-story-dsh.git .hotskills/zenstory-ai-oh-story-dsh && git -C .hotskills/zenstory-ai-oh-story-dsh checkout --detach ed56e4a3946fe7e6713b07164787a23128f6a848
# Copy each selected skill directory from .hotskills/zenstory-ai-oh-story-dsh into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/zenstory-ai/oh-story-dsh.git .hotskills/zenstory-ai-oh-story-dsh && git -C .hotskills/zenstory-ai-oh-story-dsh checkout --detach ed56e4a3946fe7e6713b07164787a23128f6a848
# Copy each selected skill directory from .hotskills/zenstory-ai-oh-story-dsh into .agents/skills/<skill-name>/Heat
7.5- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- short-drama
packages/knowledge/drama/skills/short-drama - short-drama-assets
packages/knowledge/drama/skills/short-drama-assets - short-drama-breakdown
packages/knowledge/drama/skills/short-drama-breakdown - short-drama-develop
packages/knowledge/drama/skills/short-drama-develop - short-drama-edit
packages/knowledge/drama/skills/short-drama-edit - short-drama-image-prompts
packages/knowledge/drama/skills/short-drama-image-prompts - short-drama-novel-analyze
packages/knowledge/drama/skills/short-drama-novel-analyze - short-drama-produce
packages/knowledge/drama/skills/short-drama-produce - short-drama-review
packages/knowledge/drama/skills/short-drama-review - short-drama-storyboard
packages/knowledge/drama/skills/short-drama-storyboard - short-drama-video-prompts
packages/knowledge/drama/skills/short-drama-video-prompts - short-drama-write
packages/knowledge/drama/skills/short-drama-write - game-art-direction
packages/knowledge/novel-to-game/skills/game-art-direction - game-build
packages/knowledge/novel-to-game/skills/game-build - game-concept
packages/knowledge/novel-to-game/skills/game-concept - game-qa
packages/knowledge/novel-to-game/skills/game-qa - game-world-design
packages/knowledge/novel-to-game/skills/game-world-design - novel-game-analyze
packages/knowledge/novel-to-game/skills/novel-game-analyze - novel-to-game
packages/knowledge/novel-to-game/skills/novel-to-game - browser-cdp
packages/knowledge/oh-story/skills/browser-cdp - story
packages/knowledge/oh-story/skills/story - story-cover
packages/knowledge/oh-story/skills/story-cover - story-deslop
packages/knowledge/oh-story/skills/story-deslop - story-import
packages/knowledge/oh-story/skills/story-import - story-long-analyze
packages/knowledge/oh-story/skills/story-long-analyze - story-long-scan
packages/knowledge/oh-story/skills/story-long-scan - story-long-write
packages/knowledge/oh-story/skills/story-long-write - story-publish
packages/knowledge/oh-story/skills/story-publish - story-review
packages/knowledge/oh-story/skills/story-review - story-setup
packages/knowledge/oh-story/skills/story-setup - story-short-analyze
packages/knowledge/oh-story/skills/story-short-analyze - story-short-scan
packages/knowledge/oh-story/skills/story-short-scan - story-short-write
packages/knowledge/oh-story/skills/story-short-write - video-assemble
packages/knowledge/video-recap/skills/video-assemble - video-cut
packages/knowledge/video-recap/skills/video-cut - video-recap
packages/knowledge/video-recap/skills/video-recap - video-reference
packages/knowledge/video-recap/skills/video-reference - video-script
packages/knowledge/video-recap/skills/video-script - video-understanding
packages/knowledge/video-recap/skills/video-understanding - video-voiceover
packages/knowledge/video-recap/skills/video-voiceover
How it works
short-drama
When your agent uses it
基于文件系统初始化和继续短剧或漫剧项目,提供 creator-first 五文档路由、本地 Dashboard、制作形态与 Look Development 决策。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”,或任务跨多个创作阶段时使用;明确的写作、资产、提示词、分镜、剪辑或审查请求由对应子 skill 直接处理。
What it loads into context
Frontmatter
119 tokensAlways available to the agent
SKILL.md
3,893 tokensWhen the skill is activated
Reference documents
26,121 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 路由
- 执行请求
- 初始化与 Dashboard
- 项目级创作决定
- 生产与交付边界
- 安装维护
Scripts executed separately
scripts/creator_markdown_check.pyscripts/project_tool.pyscripts/selftest.py
Files
SKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesSKILL.mdcore14,188 bytesagents/openai.yamlasset292 bytesassets/creator-decision.example.jsonlasset1,227 bytesassets/production-observation.example.jsonlasset1,621 bytesassets/project-template/short-drama.jsonasset864 bytesassets/reference-observation.example.jsonlasset1,140 bytesreferences/audience-reveal.mddoc1,272 bytesreferences/contract-and-ownership.mddoc2,881 bytesreferences/creator-documents.mddoc18,949 bytesreferences/creator-workflow.mddoc6,519 bytesreferences/form-cards/Q版表达.mddoc4,317 bytesreferences/form-cards/二维动态漫.mddoc4,451 bytesreferences/form-cards/国漫二次元.mddoc5,026 bytesreferences/form-cards/实拍.mddoc4,472 bytesreferences/form-cards/水墨笔触.mddoc4,276 bytesreferences/form-cards/风格化三维.mddoc4,506 bytesreferences/knowhow-index.mddoc13,172 bytesreferences/look-development.mddoc3,357 bytesreferences/pickup-and-alternate.mddoc1,577 bytesreferences/production-form-profiles.mddoc10,098 bytesreferences/reference-roles.mddoc4,813 bytesreferences/runtime-preflight.mddoc1,289 bytesscripts/creator_markdown_check.pyruns91,406 bytesscripts/project_tool.pyruns105,956 bytesscripts/selftest.pyruns9,907 bytes
Read SKILL.md
# 短剧创作路由
本技能负责项目初始化、跨阶段路由、制作形态与 Dashboard。各阶段正文由对应技能完成。
## Quick Start
当前创作统一使用 [creator-first 工作流](references/creator-workflow.md):每集按需维护
`剧本.md`、`视觉设定.md`、`分镜.md`、`图片提示词.md`、`视频提示词.md`,不建立并行的结构化创作真相。
具体写法见 [五份创作文档](references/creator-documents.md)。
## 路由
| 用户要做什么 | owner / 行为 |
|---|---|View the complete source on GitHubshort-drama-assets
When your agent uses it
从短剧剧本拆出人物/造型、地点/视图、道具/状态和跨场连续性,写成创作者可读的视觉设定。用户说“拆角色/场景/道具”“做资产设定”“判断复用还是新变体”“更新造型/道具状态”,或拿现成剧本直接做视觉资产准备时使用;不写图片提示词,不生成媒体。
What it loads into context
Frontmatter
106 tokensAlways available to the agent
SKILL.md
1,606 tokensWhen the skill is activated
Reference documents
20,768 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 入口与边界
- 工作流
- 内容要求
- 按需知识
- 完成
Files
SKILL.mdcore5,744 bytesagents/openai.yamlasset294 bytesreferences/asset-review-checklist.mddoc5,225 bytesreferences/character-and-look.mddoc11,899 bytesreferences/continuity-delta.mddoc7,410 bytesreferences/continuity-lock.mddoc7,780 bytesreferences/era-anchors.mddoc2,367 bytesreferences/identity-vs-variant.mddoc7,903 bytesreferences/location-and-view.mddoc4,436 bytesreferences/occurrence-extraction.mddoc6,145 bytesreferences/prop-and-state.mddoc6,744 bytesreferences/stage-contract.mddoc4,734 bytesreferences/voice-direction.mddoc10,208 bytes
Read SKILL.md
# 短剧资产拆解
从剧本提取可复用、可持续的视觉事实,统一写入 `剧集/<EP>/视觉设定.md`;每次出场先判断身份
与状态,剧本语义、镜头走位和生成提示词由各负责技能处理。
## Quick Start
```text
用 $short-drama-assets 从 EP001 剧本拆完人物、造型、地点、道具和本集状态
```
## 入口与边界
现成剧本可以直接拆资产。先区分:View the complete source on GitHubshort-drama-breakdown
When your agent uses it
拆解对标短剧或漫剧成片:测量集长、镜长、对白密度、开场与集尾、下一集怎么接,读出可迁移的机制,再和本项目的计划或自家成片放在同一把尺子下对照,把差距交给负责的技能补强,并用出片结果复核。用户提供对标剧的视频或字幕,说“拆解这部剧”“对标一下”“和标杆差在哪”“学学这几部爆款”,或要拿自家成片和对标比时使用;不复制对标的情节、台词与人物,不替创作者定节奏数值。
What it loads into context
Frontmatter
165 tokensAlways available to the agent
SKILL.md
1,372 tokensWhen the skill is activated
Reference documents
5,669 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 开始前锁定边界
- 工作流
- 按需读取
Scripts executed separately
scripts/breakdown_tool.pyscripts/selftest.py
Files
SKILL.mdcore4,874 bytesSKILL.mdcore4,874 bytesSKILL.mdcore4,874 bytesSKILL.mdcore4,874 bytesSKILL.mdcore4,874 bytesagents/openai.yamlasset348 bytesreferences/breakdown-dimensions.mddoc5,791 bytesreferences/gap-and-learning-loop.mddoc4,390 bytesreferences/measure-and-read.mddoc6,340 bytesreferences/stage-contract.mddoc2,650 bytesscripts/breakdown_tool.pyruns39,060 bytesscripts/selftest.pyruns2,861 bytes
Read SKILL.md
# 短剧拆解学习
把别人的成片拆成能复算的数字和能迁移的机制,再拿来和自己的剧比。
## Quick Start
测量用 [breakdown_tool.py](scripts/breakdown_tool.py),命令见[第 2 步](#2-测量)。安装、升级或排障时运行:
```bash
python3 {技能目录}/scripts/selftest.py
```
## 开始前锁定边界
View the complete source on GitHubshort-drama-develop
When your agent uses it
将中文小说、短剧或漫剧想法、梗概、改编材料、已有系列笔记或多集完整剧本发展成可追溯的改编方案、戏剧方向、创作简报、导演阐述、故事引擎与分集地图,并按题材与制作形态(画风)选择写法。用户提出“导入小说做短剧”“从多集整稿生成/补分集地图”“开发短剧/漫剧”“做故事设定/系列大纲/分集规划”“写导演阐述”“这个题材怎么写”“定画风/制作形态”“把这个点子变成短剧”或需要梳理人物冲突与集间交接时使用;已有单集剧本可直接进入写作、资产或审查流程,不强制补开发文件。
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
2,955 tokensWhen the skill is activated
Reference documents
74,223 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 开始前
- 先判断入口
- 每次执行
- 规则分级
- 产物与边界
- 按需加载
Scripts executed separately
scripts/episode_intake.pyscripts/selftest.py
Files
SKILL.mdcore10,805 bytesSKILL.mdcore10,805 bytesSKILL.mdcore10,805 bytesagents/openai.yamlasset316 bytesassets/adaptation-map.example.jsonlasset1,270 bytesassets/creative-brief.mddoc6,005 bytesassets/episode-map.jsonlasset1,658 bytesassets/story-engine.mddoc7,490 bytesreferences/adaptation-craft.mddoc17,894 bytesreferences/creative-reference-intake.mddoc3,644 bytesreferences/director-brief-craft.mddoc6,681 bytesreferences/episode-design.mddoc33,211 bytesreferences/genre-and-hook-playbook.mddoc18,834 bytesreferences/genre-cards.mddoc7,762 bytesreferences/genre-cards/亲子隐秘.mddoc6,818 bytesreferences/genre-cards/仙侠修真.mddoc4,456 bytesreferences/genre-cards/动作任务.mddoc4,621 bytesreferences/genre-cards/古装权谋.mddoc4,374 bytesreferences/genre-cards/复仇打脸.mddoc5,356 bytesreferences/genre-cards/家庭关系.mddoc4,199 bytesreferences/genre-cards/悬疑规则.mddoc4,387 bytesreferences/genre-cards/生活流.mddoc4,131 bytesreferences/genre-cards/破镜重圆.mddoc6,938 bytesreferences/genre-cards/系统流.mddoc4,686 bytesreferences/genre-cards/职场喜剧.mddoc4,046 bytesreferences/genre-cards/豪门婚恋.mddoc4,750 bytesreferences/genre-cards/身份错位.mddoc4,095 bytesreferences/genre-cards/逆袭.mddoc3,853 bytesreferences/genre-cards/重生穿越.mddoc4,158 bytesreferences/mechanism-loop.mddoc16,977 bytesreferences/multi-episode-intake.mddoc7,169 bytesreferences/premise-devices.mddoc14,731 bytesreferences/reveal-reversal-payoff.mddoc4,702 bytesreferences/serial-character-and-memory.mddoc15,384 bytesreferences/stage-contract.mddoc13,743 bytesreferences/story-craft.mddoc18,497 bytesscripts/episode_intake.pyruns28,046 bytesscripts/selftest.pyruns1,533 bytes
Read SKILL.md
# 短剧开发
把创作者的意图变成能持续制造**选择、代价与状态变化**的故事系统,保留创作者对题材、结局和尺度的选择。流行套路只能作为候选方法。
## Quick Start
离线验证多集整稿的精确索引、切片和源文件变更检测:
```bash
python3 {技能目录}/scripts/selftest.py
python3 {技能目录}/scripts/episode_intake.py index <多集整稿> --out <episode-intake-index.json>
```
## 开始前View the complete source on GitHubshort-drama-edit
When your agent uses it
将已生成的短剧镜头剪成成片,记录入出点、镜序、声音、字幕与交付规格。用于套剪、加字幕、统一响度、调整节奏或导出精修素材;需要补素材或修改故事时转回对应创作阶段。
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
4,656 tokensWhen the skill is activated
Reference documents
10,785 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 入口
- 工作流
- 剪辑单要求
- 边界
- 命令
- 按需知识
- 修订
- 完成
- 安装维护
Scripts executed separately
assets/remotion/package.jsonassets/remotion/remotion.config.tsassets/remotion/src/Overlay.tsxassets/remotion/src/Root.tsxassets/remotion/src/Subtitles.tsxassets/remotion/src/font.tsassets/remotion/src/index.tsassets/remotion/src/rules.mjsassets/remotion/src/schema.tsassets/remotion/src/screen/Card.tsxassets/remotion/src/screen/CornerChip.tsxassets/remotion/src/screen/ScreenText.tsxassets/remotion/src/screen/SystemPanel.tsxassets/remotion/src/screen/TaskPanel.tsxassets/remotion/src/screen/chrome.tsxassets/remotion/src/screen/tokens.tsscripts/edit_tool.pyscripts/selftest.py
Files
SKILL.mdcore15,256 bytesagents/openai.yamlasset254 bytesassets/remotion/README.mddoc5,355 bytesassets/remotion/package.jsonruns464 bytesassets/remotion/remotion.config.tsruns219 bytesassets/remotion/src/Overlay.tsxruns1,074 bytesassets/remotion/src/Root.tsxruns931 bytesassets/remotion/src/Subtitles.tsxruns3,223 bytesassets/remotion/src/font.tsruns2,295 bytesassets/remotion/src/index.tsruns109 bytesassets/remotion/src/rules.mjsruns7,741 bytesassets/remotion/src/schema.tsruns1,237 bytesassets/remotion/src/screen/Card.tsxruns2,833 bytesassets/remotion/src/screen/CornerChip.tsxruns1,617 bytesassets/remotion/src/screen/ScreenText.tsxruns1,261 bytesassets/remotion/src/screen/SystemPanel.tsxruns1,809 bytesassets/remotion/src/screen/TaskPanel.tsxruns4,112 bytesassets/remotion/src/screen/chrome.tsxruns5,846 bytesassets/remotion/src/screen/tokens.tsruns2,497 bytesassets/remotion/tsconfig.jsonasset276 bytesassets/剪辑单.mddoc2,171 bytesreferences/cut-craft.mddoc4,700 bytesreferences/delivery-verify.mddoc3,035 bytesreferences/generated-footage.mddoc3,570 bytesreferences/sound-and-subtitles.mddoc5,358 bytesreferences/stage-contract.mddoc8,091 bytesreferences/still-cuts.mddoc5,894 bytesscripts/edit_tool.pyruns136,897 bytesscripts/selftest.pyruns26,399 bytes
Read SKILL.md
# 短剧剪辑与成片
把 `剧集/<EP>/制作成果/` 里的逐镜素材装配成一条成片,取舍写进 `剧集/<EP>/剪辑单.md`。
每段使用二级标题 `## CUT-...`,各自绑定一个来源 ID 和一个真实媒体文件:视频段是 `MOTION-...`,
静态漫剧的关键帧段是 `SHOT-...` 或 `IMG-...`。
根据实际素材选择可用片段,按剧本与分镜核对叙事。素材与意图不一致时,记录取舍和缺口。
## Quick Start
```text
用 $short-drama-edit 把 EP001 已生产的镜头剪成成片
```
View the complete source on GitHubshort-drama-image-prompts
When your agent uses it
为短剧人物、造型、地点、道具和状态编写或修改可直接复制的图片提示词 Markdown。用户提到角色设定图、三视图、参考图、场景板、道具图、风格帧、Look Development、状态变体或局部编辑提示词时使用;不生成图片,也不调用供应商。
What it loads into context
Frontmatter
93 tokensAlways available to the agent
SKILL.md
1,363 tokensWhen the skill is activated
Reference documents
20,901 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 入口
- 工作流
- 提示词要求
- 按需知识
- 完成与投产
Files
SKILL.mdcore5,011 bytesagents/openai.yamlasset310 bytesreferences/character-and-look.mddoc8,780 bytesreferences/common-recipe.mddoc15,894 bytesreferences/edit-and-revision.mddoc5,474 bytesreferences/location-plate.mddoc8,892 bytesreferences/look-and-state-variant.mddoc5,450 bytesreferences/lookdev-frame.mddoc2,424 bytesreferences/production-sheet-recipes.mddoc11,694 bytesreferences/prop-plate.mddoc6,933 bytesreferences/review-and-fixtures.mddoc5,538 bytesreferences/stage-contract.mddoc3,712 bytes
Read SKILL.md
# 短剧资产图片提示词
把视觉事实写成可复用、可修改、可直接复制的角色板、场景板、道具板或状态图提示词,统一保存到
`剧集/<EP>/图片提示词.md`。每项用 `IMG-...` 标题,正文放在 `### 可复制提示词` 引用块。
`IMG-...` 是提示词条目的稳定 ID;实际图片须由创作者提供,或来自经确认的生产结果。
每项使用 `## IMG-... · 中文名`,写一行不加粗的 `- 参考:`。无外部参考时写 `- 参考:无外部参考`;
有真实图片时使用 `REF-<slot>(顺序:<n>)· <项目相对路径>《<中文名称>》(用途:<用途>;控制:<范围>;不得控制:<范围>)`。
多张用 `;` 连接,顺序从 1 连续编号;正文标题固定为 `### 可复制提示词`,每个非空正文行以 `>` 开头。
`REF-...` 指向当前项目中的真实图片;下游分镜的 `PLAN-...` 挂图计划不能证明本条图片提示词已有参考输入。
## Quick Start
```textView the complete source on GitHubshort-drama-novel-analyze
When your agent uses it
把长篇小说、连载网文或多集散稿拆成可追溯的原著分析:章节索引、改编价值快评、逐章功能提取、剧情单元与节奏聚合、人物与设定归并,最后给出改编价值判定与分集候选,交给 $short-drama-develop 立契约。用户说“导入这本小说”“拆这本书”“分析原著”“这本书能不能改短剧”“先看看值不值得拆”“把长篇拆成分集候选”,或直接给出小说文件路径时使用。只做只读的结构化分析,不写剧本、不建资产、不生成媒体,也不替创作者决定改编方案。
What it loads into context
Frontmatter
182 tokensAlways available to the agent
SKILL.md
4,066 tokensWhen the skill is activated
Reference documents
10,550 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 开始前
- 材料前提
- 先判断入口
- 管道
- 规则分级
- 产物与边界
- 语言
- 按需加载
Scripts executed separately
scripts/novel_index.pyscripts/selftest.py
Files
SKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesSKILL.mdcore14,460 bytesagents/openai.yamlasset283 bytesassets/episode-candidate.example.jsonlasset2,666 bytesreferences/adaptation-triage.mddoc5,073 bytesreferences/adaptation-value.mddoc6,996 bytesreferences/aggregation-and-entities.mddoc9,890 bytesreferences/chapter-extraction.mddoc8,196 bytesreferences/stage-contract.mddoc5,681 bytesscripts/novel_index.pyruns26,077 bytesscripts/selftest.pyruns1,769 bytes
Read SKILL.md
# 长篇原著分析
从长材料中提取可追溯的戏剧功能,说明各段如何改变角色选择、信息、权力或关系,以及这些功能怎样用于竖屏短剧改编。
分析结果供创作者取舍:保留哪条线、合并哪些人、从哪里开篇,由创作者决定,再交给
`$short-drama-develop` 写成改编契约。本技能不批准自己的产物。
## Quick Start
离线验证章节索引、采样和源文件变更检测:
```bash
python3 {技能目录}/scripts/selftest.py
python3 {技能目录}/scripts/novel_index.py index <原著.txt> --out <chapter-index.json>View the complete source on GitHubshort-drama-produce
When your agent uses it
在创作者明确确认后,执行短剧项目的图片、视频、TTS/配音或时间线音乐生产任务,并把结果与精简运行记录落回项目。用户说“生成这张图/这段视频/这句配音/这段配乐”“开始跑图/跑视频/合成语音/生成音乐”“把已确认提示词送去生产”,或要求批量执行已确认媒体任务时使用;不负责创作提示词、镜头、台词、歌词或声音身份,也绝不把预览、继续、预算说明或既有接受状态当作本次付费生产确认。
What it loads into context
Frontmatter
152 tokensAlways available to the agent
SKILL.md
4,594 tokensWhen the skill is activated
Reference documents
6,445 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 硬闸门
- 命令
- 输入选择
- Adapter 边界
- 中断不等于要重跑
- 结果与复核
- 安装维护
Scripts executed separately
scripts/fixture_adapter.pyscripts/production_tool.pyscripts/provider_adapters.pyscripts/selftest.py
Files
SKILL.mdcore17,389 bytesSKILL.mdcore17,389 bytesSKILL.mdcore17,389 bytesSKILL.mdcore17,389 bytesagents/openai.yamlasset288 bytesreferences/adapter-contract.mddoc13,459 bytesreferences/providers/gpt-image-2.mddoc1,333 bytesreferences/providers/minimax-h3-video.mddoc6,049 bytesreferences/providers/minimax-music.mddoc1,269 bytesreferences/providers/minimax-speech.mddoc2,375 bytesreferences/providers/seedance.mddoc4,330 bytesscripts/fixture_adapter.pyruns2,732 bytesscripts/production_tool.pyruns93,209 bytesscripts/provider_adapters.pyruns70,718 bytesscripts/selftest.pyruns4,122 bytes
Read SKILL.md
# 确认后生产
本技能把已经写好的生产规格送到运行环境配置的 adapter。图片提示词归
`$short-drama-image-prompts`,视频提示词归 `$short-drama-video-prompts`,台词归
`$short-drama-write`,声音身份归 `$short-drama-assets`。
## Quick Start
只在用户明确要求实际生成后,从当前 `图片提示词.md`、`分镜.md` 或 `视频提示词.md` 中
取出本次提示词,建立一个有边界的运行 job。creator-first job 的 `source` 必须指向拥有这条提示词的
当前 Markdown,`source_entry` 必须点名该文档允许的二级标题:`图片提示词.md` 用 `IMG-*`,
`视频提示词.md` 用 `MOTION-*`,`分镜.md` 用 `SHOT-*`(modality 为 `image`,正文取该镜的
`### 冻结关键帧提示词`)。此选择器只提取首帧;尾帧需先由图片提示词阶段建立独立 `IMG-*` 状态图条目,
再从 `图片提示词.md` 准备 image job。创作者也可以提供已有起始帧——View the complete source on GitHubshort-drama-review
When your agent uses it
审查短剧项目中的原著分析、故事、剧本、视觉设定、图片提示词、分镜、冻结关键帧、视频提示词和已有媒体。用户提出“审稿/检查剧本”“检查资产或连续性”“检查图片/视频提示词”“检查原著分析”“审查模板感”“根据生产观察做项目校准”时使用;只写审查问题、结论和修订要求,不代替负责人修改来源文件。
What it loads into context
Frontmatter
115 tokensAlways available to the agent
SKILL.md
1,511 tokensWhen the skill is activated
Reference documents
22,999 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 选择审查范围
- 工作流
- 严重程度
- 边界
Files
SKILL.mdcore5,526 bytesagents/openai.yamlasset319 bytesreferences/anti-template-repair.mddoc5,354 bytesreferences/generated-media.mddoc6,400 bytesreferences/production-quality-gates.mddoc19,790 bytesreferences/project-calibration.mddoc6,114 bytesreferences/review-method.mddoc4,512 bytesreferences/rubric-assets-prompts.mddoc6,345 bytesreferences/rubric-source-analysis.mddoc6,281 bytesreferences/rubric-story-script.mddoc21,851 bytesreferences/rubric-visual-motion.mddoc11,862 bytesreferences/stage-contract.mddoc5,816 bytes
Read SKILL.md
# 短剧审查
优先由未参与当前版本创作的 reviewer 执行;条件不允许时可以自检并如实说明。本技能定位问题、影响和
必须达到的修订结果,将修改交回负责技能;审查与修改分开执行。
## Quick Start
直接读取用户点名的当前文件。单集审查需要落盘时写 `审查/EP001-审查.md`;独立文件审查使用
`审查/<主题>-审查.md`。用户只要口头结论时直接回复,不为“完整”创建审查文件。
审查 Markdown 建议结构:
```markdown
# EP001 审查View the complete source on GitHubshort-drama-storyboard
When your agent uses it
把中文短剧剧本和视觉设定写成有戏剧职责、连续性边界与冻结关键帧提示词的分镜 Markdown。用户提出“拆分镜/设计镜头/做镜头表”“场次视觉计划/调度故事板”“比较导演方案”“写首帧/关键帧提示词”或检查轴线、站位、视线、持物连续性时使用;不生成媒体。
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
6,294 tokensWhen the skill is activated
Reference documents
35,344 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 入口
- 工作流
- 镜头要求
- 视觉依据与图片
- 按需知识
- 修订
- 完成
Files
SKILL.mdcore22,019 bytesagents/openai.yamlasset283 bytesreferences/blocking-playbooks.mddoc15,857 bytesreferences/comic-keyframe-lexicon.mddoc11,050 bytesreferences/coverage-audition.mddoc2,106 bytesreferences/fight-craft.mddoc8,606 bytesreferences/keyframe-craft.mddoc9,758 bytesreferences/lighting-craft.mddoc2,100 bytesreferences/production-shot-grammar.mddoc21,678 bytesreferences/review-and-fixtures.mddoc3,378 bytesreferences/scene-visual-plan.mddoc1,834 bytesreferences/screenplay-to-keyframe-example.mddoc7,960 bytesreferences/shot-craft.mddoc25,253 bytesreferences/shot-revision-identity.mddoc1,733 bytesreferences/stage-contract.mddoc15,193 bytes
Read SKILL.md
# 短剧分镜与冻结关键帧
把剧本和视觉事实转成有镜头职责、空间连续性和可冻结起点的 `剧集/<EP>/分镜.md`。
每镜使用二级标题 `## SHOT-...`,同镜下用 `### 冻结关键帧提示词` 写起始帧正文;
需要时另加 `### 收尾关键帧提示词` 写终点正文。
## Quick Start
```text
用 $short-drama-storyboard 完成 EP001 的正式分镜和每镜冻结关键帧
```
## 入口
View the complete source on GitHubshort-drama-video-prompts
When your agent uses it
把短剧分镜和冻结关键帧写成可直接复制的视频提示词 Markdown,也可按用户要求写时间线配乐/主题曲意图。用户提到文生/图生视频动作、人物表演、运镜、口型、环境运动、镜头时长、起止状态、把分镜转成视频提示词或写配乐提示词时使用;不生成媒体、不创作歌词、不改分镜边界。
What it loads into context
Frontmatter
114 tokensAlways available to the agent
SKILL.md
5,438 tokensWhen the skill is activated
Reference documents
52,765 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 入口与边界
- 工作流
- 提示词要求
- 按需知识
- 完成与投产
Files
SKILL.mdcore19,536 bytesagents/openai.yamlasset298 bytesreferences/camera-audio-continuity.mddoc17,052 bytesreferences/delivery-profile.mddoc21,563 bytesreferences/generability.mddoc8,011 bytesreferences/minimax-h3.mddoc22,673 bytesreferences/motion-recipe.mddoc21,270 bytesreferences/performance-action-timing.mddoc13,849 bytesreferences/production-prompt-grammar.mddoc23,582 bytesreferences/review-and-fixtures.mddoc9,238 bytesreferences/seedance-2.0.mddoc6,771 bytesreferences/seedance-2.5.mddoc11,932 bytesreferences/stage-contract.mddoc13,143 bytesreferences/target-model-profile.mddoc10,543 bytesreferences/wan-3.0.mddoc7,211 bytes
Read SKILL.md
# 短剧视频与时间线音乐提示词
把已确认镜头和起始帧写成有边界、可生成、可直接复制的 `剧集/<EP>/视频提示词.md`。
每镜使用 `MOTION-...` 标题并引用对应 `SHOT-...`。
## Quick Start
```text
用 $short-drama-video-prompts 把 EP001 分镜逐镜写成可直接复制的视频提示词
```
## 入口与边界
有当前分镜、冻结关键帧和必要视觉事实即可检查参考准备;图片提示词不是已有图片的证明。运动提示词拥有从已确认View the complete source on GitHubshort-drama-write
When your agent uses it
编写或修订可拍摄的中文短剧、漫剧单集 Markdown 剧本,也负责保留作者原文并规范化现成剧本。用户提出“写/改一集短剧”“把大纲写成剧本”“优化场景/对白”“去模板感”“去 AI 味润色”“续写下一集”或提供剧本要求进入后续制作时使用;不负责资产、分镜、媒体提示词或终审。
What it loads into context
Frontmatter
115 tokensAlways available to the agent
SKILL.md
3,402 tokensWhen the skill is activated
Reference documents
35,100 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- 入口
- 工作流
- 写作要求
- 按需知识
- 时长估算(按需)
- 完成
- 安装维护
Scripts executed separately
scripts/duration_estimate.pyscripts/screenplay_index.pyscripts/selftest.py
Files
SKILL.mdcore12,169 bytesSKILL.mdcore12,169 bytesSKILL.mdcore12,169 bytesagents/openai.yamlasset288 bytesassets/screenplay.mddoc1,702 bytesreferences/dialogue-craft.mddoc22,709 bytesreferences/production-format-dialect.mddoc18,698 bytesreferences/scene-handoff-capsule.mddoc1,530 bytesreferences/scene-sound-dramaturgy.mddoc2,777 bytesreferences/screenplay-format.mddoc11,618 bytesreferences/script-craft.mddoc50,763 bytesreferences/stage-contract.mddoc10,299 bytesreferences/substitutable-realization.mddoc5,965 bytesscripts/duration_estimate.pyruns23,244 bytesscripts/screenplay_index.pyruns44,166 bytesscripts/selftest.pyruns6,061 bytes
Read SKILL.md
# 短剧写作
把单集意图写成可表演、可拍摄、会改变故事状态的 `剧集/<EP>/剧本.md`。
## Quick Start
只维护一份剧本 Markdown,不另建 episode card、beats、block index、录音表、QA 或接受记录。
一级标题使用 `# EP001 集名`,场景标题使用 `## EP001-SC001 内 · 地点 · 时间/天气`。
对白写 `角色(可选表演提示):台词`;生产标签使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、
`[连续性]`、`[转场]`。不要把含冒号的动作叙述误写成对白。
## 入口
- 有分集规划:读取本集进入状态、目标、转折、回报和交接事实。View the complete source on GitHubgame-art-direction
When your agent uses it
Direct game art and creative vision. Turn GAME_DESIGN into ART_DIRECTION defining a recognizable visual identity, functional visual and audio feedback, and key in-game moments. Use for what should the game look like, set the art direction, define the visual style. 游戏美术与创意方向。把 GAME_DESIGN 转成 ART_DIRECTION,定义可辨识的视觉身份、服务玩法的视听反馈和关键游戏时刻。用于判断游戏应该长什么样、制定游戏美术方向等需求。
What it loads into context
Frontmatter
113 tokensAlways available to the agent
SKILL.md
816 tokensWhen the skill is activated
Reference documents
1,906 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计
- 输出
Files
SKILL.mdcore3,218 bytesagents/openai.yamlasset283 bytesreferences/art-direction-method.mddoc7,045 bytes
Read SKILL.md
# 游戏美术与创意方向
定义玩家最终看见、听见和读懂的体验;资产怎样生产、使用什么渲染库、模型或供应商由构建阶段决定。
读取 [art-direction-method.md](references/art-direction-method.md)。必须已有 `GAME_DESIGN.md` 与
`PRODUCT_BRIEF.md`;视觉服务玩法,不能用漂亮参考图重写游戏。
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
继承目标平台、视口/朝向、画风、内容尺度、`targetFinish` 与 `experienceProfile`。视觉参考只借
声明的构图、材质、色光或信息原则,不复制他作角色、地图、界面和资产。原作文化与目标市场分别
研究,不用流行刻板符号替代原作身份。
## 设计
View the complete source on GitHubgame-build
When your agent uses it
Build a risk-matched whitebox or the approved production game for its target runtime. Turn GAME_DESIGN, and ART_DIRECTION when production begins, into a minimal BUILD_BRIEF and a runnable candidate that can be iterated with replayable evidence. Use for prototype the riskiest design question, implement the approved game design, or turn this design into a running game. 游戏构建执行。先按最大风险做白盒,或在正式生产时把批准后的 GAME_DESIGN 与 ART_DIRECTION 压缩成最小 BUILD_BRIEF,在目标运行环境中实现可运行候选并用可回放证据迭代。用于验证高风险设计问题、构建游戏原型或实现批准方案。
What it loads into context
Frontmatter
156 tokensAlways available to the agent
SKILL.md
1,579 tokensWhen the skill is activated
Reference documents
4,568 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 目标与自由
- 按能力读取可选合同
- 共同构建循环
- 输出
Files
SKILL.mdcore6,212 bytesagents/openai.yamlasset272 bytesreferences/baked-sprite-workflow.mddoc1,490 bytesreferences/blender-asset-workflow.mddoc1,559 bytesreferences/build-brief-contract.mddoc4,375 bytesreferences/cutscene-production.mddoc3,004 bytesreferences/generative-media-pipeline.mddoc2,717 bytesreferences/playable-model-contract.mddoc2,556 bytesreferences/tts-production-contract.mddoc1,421 bytes
Read SKILL.md
# 游戏构建执行
保护已批准的体验边界;正式生产时再保护已批准的美术边界。驱动实现模型完成真实可玩的候选,不在
构建阶段重新做概念、关卡或美术方向。
读取 [build-brief-contract.md](references/build-brief-contract.md)。白盒阶段必须已有 `GAME_DESIGN.md`;
完整候选还必须已有 `ART_DIRECTION.md`。缺产品决定时回对应 owner,不在 BUILD_BRIEF 就地发明。
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
## 目标与自由
按 PRODUCT_BRIEF 锁定的平台、生产引擎、目标运行时、显示/输入、范围、分级和联网边界交付。
目标工具链不可用时不得自动改做网页;只有 brief 已批准替代运行时才可使用,并分开记录
`targetRuntime`、`testedRuntime` 与未覆盖项。View the complete source on GitHubgame-concept
When your agent uses it
Design game concepts from a novel. From SOURCE_BIBLE and PRODUCT_BRIEF, compare meaningful alternatives on the dimensions still unlocked, then select a playable direction using hard vetoes and explicit trade-offs. Use for what game should this novel become, compare game concepts, choose a game direction for this book, decide whether this novel should become an interactive story. 小说游戏概念设计。根据 SOURCE_BIBLE 与 PRODUCT_BRIEF 比较未锁定维度上的有效替代方案,用硬否决和关键取舍选择可玩方向。用于判断小说适合做成什么游戏、该不该做成互动叙事、比较游戏方案等需求。
What it loads into context
Frontmatter
144 tokensAlways available to the agent
SKILL.md
878 tokensWhen the skill is activated
Reference documents
979 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 决策边界
- 比较范围
- 选择
- 输出
Files
SKILL.mdcore3,403 bytesagents/openai.yamlasset256 bytesreferences/concept-method.mddoc3,725 bytes
Read SKILL.md
# 游戏概念设计
决定做成什么游戏,不写代码、数值表或逐场关卡脚本。
读取 [concept-method.md](references/concept-method.md)。输入必须包含 `SOURCE_BIBLE.md` 与
`PRODUCT_BRIEF.md`;缺任一项就停止并说明缺口,不代替上游补写。
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
## 决策边界
直接继承 brief 已锁的平台、输入、受众、分级、时长、目标市场和非目标;发现它们与原作明显冲突
时回总入口修订,不在概念阶段静默改值。原作语言、文化语境、目标市场和界面语言分别处理,不从
其中一个自动推出另一个。
View the complete source on GitHubgame-qa
When your agent uses it
Verify a game with evidence on its selected target runtime. Launch the actual build and prove real rendering, input, the core loop, at least one designed outcome, restart, and explicit limitations without dressing subjective fun up as a certain verdict. Use for test a generated game, QA a game build, check whether the game is fully playable, or verify the build. 游戏证据化质量验证。在选定的目标运行环境中启动实际构建,证明真实渲染、输入、核心循环、至少一个设计结果、重开和明确限制,不把主观趣味包装成确定性结论。用于测试生成游戏、检查游戏能否完整游玩或验证构建。
What it loads into context
Frontmatter
151 tokensAlways available to the agent
SKILL.md
631 tokensWhen the skill is activated
Reference documents
2,380 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 唯一必需合同
- 执行
- 输出
Files
SKILL.mdcore2,521 bytesagents/openai.yamlasset271 bytesreferences/qa-contract.mddoc3,039 bytesreferences/test-design-method.mddoc5,973 bytes
Read SKILL.md
# 游戏质量验证
验证当前候选能否完成最小可玩闭环,不把自动化结果包装成趣味、平衡、权利或发布质量结论。
读取 [qa-contract.md](references/qa-contract.md) 定判据,按
[test-design-method.md](references/test-design-method.md) 设计最少但有区分力的检查。
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
## 唯一必需合同
每个候选都必须用真实运行证据覆盖:`launch`、`render`、`input`、`coreLoop`、`outcome`、`restart`。
`targetFinish` 描述成色,不改变这组六项。
## 执行View the complete source on GitHubgame-world-design
When your agent uses it
Design game experience, systems, and levels. Converge the chosen concept into one GAME_DESIGN defining the player promise, core loop, how the world responds, the systems actually needed, level pacing, feedback, failure, and the specification for a complete playable slice. Use for design the game world, deepen the gameplay and levels, write the game design document, design the branching story structure, scenes, dialogue and consequences. 游戏体验、系统与关卡策划。把选定概念收束为一份 GAME_DESIGN,定义玩家承诺、核心循环、世界响应、必要系统、关卡节奏、反馈、失败及可供构建的完整切片设计。用于设计游戏世界、深化玩法和关卡、设计互动叙事的场景对白与分支因果等需求。
What it loads into context
Frontmatter
179 tokensAlways available to the agent
SKILL.md
1,042 tokensWhen the skill is activated
Reference documents
4,378 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计原则
- 输出合同
- 完成检查
Files
SKILL.mdcore4,089 bytesagents/openai.yamlasset336 bytesreferences/interactive-film-method.mddoc7,120 bytesreferences/narrative-design-method.mddoc2,996 bytesreferences/numeric-design-method.mddoc1,193 bytesreferences/world-design-method.mddoc4,670 bytes
Read SKILL.md
# 游戏体验与世界设计
把选定概念变成可实现的玩家体验,不写世界观百科、工程方案或美术方向。
输入必须包含 `SOURCE_BIBLE.md`、已选择的 `CONCEPT.md` 和 `PRODUCT_BRIEF.md`。读取
[world-design-method.md](references/world-design-method.md);确有资源、门槛或难度时再读
[numeric-design-method.md](references/numeric-design-method.md)。
叙事实际承载体验时读取 [narrative-design-method.md](references/narrative-design-method.md),
不为所有项目强制写长篇对白。选择之后要用一段剧情动画演出后果(互动影游,文游与短剧的结合)时,再读
[interactive-film-method.md](references/interactive-film-method.md)。
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
## 设计原则View the complete source on GitHubnovel-game-analyze
When your agent uses it
Deconstruct a novel for game adaptation. Compress a raw novel, deconstruction library, or writing project into a SOURCE_BIBLE with cited textual evidence, extracting world rules, player verbs, spaces, character will, systems, and visual anchors — without inventing a genre yet. Use for gameable book analysis, analyze a novel for game adaptation, extract game systems from a book. 游戏化拆书。把原始小说、拆文库或写作工程压缩成有必要原文证据的 SOURCE_BIBLE,提取世界规则、玩家动词、空间、角色意志、系统和视觉锚点,不提前发明游戏类型。用于游戏化拆书、分析小说的游戏改编基础等需求。
What it loads into context
Frontmatter
161 tokensAlways available to the agent
SKILL.md
1,242 tokensWhen the skill is activated
Reference documents
1,125 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 输入
- 全书管道
- 提取维度
- 输出
Files
SKILL.mdcore4,741 bytesagents/openai.yamlasset263 bytesreferences/gameability-protocol.mddoc4,087 bytes
Read SKILL.md
# 小说游戏化拆解
建立游戏设计所需的事实层,不评价文笔,也不在此阶段选择游戏类型。
读取 [gameability-protocol.md](references/gameability-protocol.md)。
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
原文可以是任意语言。引用保留原文;策划语言或界面语言与原文不同时附必要译文,并建立角色名、
地名、物件和规则的统一术语表;礼制、宗教和叙事惯例不替换成另一文化的近似类型标签。
## 输入
优先复用现有写作工程或**全量**拆文产物,只回原文补关键证据;只有原始小说时才执行
本 skill 的全书管道。已有分析若只覆盖黄金三章或快速预览,只能帮助判断开篇,不能View the complete source on GitHubnovel-to-game
When your agent uses it
Turn a novel into a fully playable game on the selected target platform. Orchestrates the whole adaptation pipeline — requirements intake, gameable deconstruction, concept selection, world and visual design, target-runtime build, and evidence-based QA — for a novel in any language. Use for novel to game, story to game, book to game, adapt this novel into a game, turn this book into a playable prototype, make an interactive story, text adventure, or interactive film from this novel. NovelToGame 总入口。把任意语言的原始小说、拆文库或 oh-story 写作工程转成有原著依据、可在目标平台完整游玩的游戏,编排游戏化拆解、概念选择、游戏与视觉设计、目标运行环境构建和证据化质量验证。用于小说转游戏、把这本书做成游戏、把小说改成互动小说 / 互动叙事 / 文字冒险游戏 / 互动影游等需求。
What it loads into context
Frontmatter
214 tokensAlways available to the agent
SKILL.md
1,227 tokensWhen the skill is activated
Reference documents
1,729 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 默认策略
- 模式
- 流程
- 语言与文化
- 改编判断
Files
SKILL.mdcore4,613 bytesagents/openai.yamlasset255 bytesreferences/intake-method.mddoc2,902 bytesreferences/pipeline-contract.mddoc3,396 bytes
Read SKILL.md
# NovelToGame 总入口
你是小说游戏化总导演:守住改编判断、阶段边界和完成证据,不把普通原型包装成趣味、平衡、权利或
发布质量结论。开始前读取 [pipeline-contract.md](references/pipeline-contract.md)。
## 默认策略
先速读来源并替用户起草 `PRODUCT_BRIEF.md`,再按
[intake-method.md](references/intake-method.md) 只处理会实质改变方向或带来权利、尺度、平台风险的
歧义。低风险空白集中列为未确认假设,不逐项拦停。
`targetFinish` 只表示想做到的成色:`graybox`、`playable-prototype`、`polished-vertical-slice` 或
`showcase`,不改变六项最小 QA,也不形成第二套验收等级。
`PRODUCT_BRIEF.md` 与 `SOURCE_BIBLE.md` 是上游事实,下游不得静默改写。View the complete source on GitHubbrowser-cdp
When your agent uses it
Use this skill when you need to control a Chrome browser via CDP (Chrome DevTools Protocol) to reuse existing login sessions. Covers: launching Chrome in debug mode, opening URLs, waiting for page load, evaluating JavaScript, taking snapshots, and extracting auth tokens. Trigger phrases: browser automation, CDP, agent-browser, 浏览器操作, 操作浏览器, Chrome CDP, 复用登录态, extract token from browser.
What it loads into context
Frontmatter
132 tokensAlways available to the agent
SKILL.md
2,372 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置条件
- 启动流程(每次都按这个顺序)
- 启动脚本选项
- 常用操作
- 停止 / 清理
- 长命令加超时
- 常见问题
Files
SKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytesSKILL.mdcore8,083 bytes
Read SKILL.md
# Browser CDP 操作工具
通过 CDP(Chrome DevTools Protocol)连接 Chrome,复用登录态并执行浏览器操作。
## 前置条件
- macOS / Linux / Windows(实验性),已安装并使用过 Google Chrome,来源 profile 已存在
- Node.js 20+
- `agent-browser` 已安装:`npm install -g agent-browser`
> 启动或重建时,若需结束 Chrome 进程,先按下方流程征得同意;未保存的标签页或草稿可能丢失。
---
## 启动流程(每次都按这个顺序)View the complete source on GitHubstory
When your agent uses it
网络小说工具箱主入口。根据用户需求自动路由到对应 skill,并可启动本地 Dashboard。触发方式:/story、$story、/story dashboard、/网文、「我想写小说」「记住我的写作习惯」「打开工作台」「检查更新」。
What it loads into context
Frontmatter
94 tokensAlways available to the agent
SKILL.md
3,969 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 路由表
- 书目录判定
- 作者习惯管理
- 查询
- 多书切换
- Dashboard 工作台
- 版本更新检查
Files
SKILL.mdcore14,125 bytesSKILL.mdcore14,125 bytesVERSIONasset7 bytes
Read SKILL.md
# story:网文工具箱路由
识别用户的写作需求,并路由到对应 skill。
## 路由表
各宿主的调用写法:Claude Code、OpenCode 用 `/story-*`(Claude 插件安装时为 `/oh-story:story-*`),也可 `Skill("story-*")`;Codex、ZCode 用 `$story-*`(Codex 也可 `/skills`);OpenClaw 用 `/skill story-*`;Antigravity、Reasonix 在 skill 入口选择或用自然语言点名。下表按 `/story-*` 写,其他宿主照此替换,本文件其余地方同理。
| 用户意图 | 关键词示例 | 路由到 |
|---|---|---|
| 长篇规划/写作 | 讨论长篇结构、规划剧情、开书、写大纲、补细纲、长篇、连载 | `/story-long-write` |
| 发布准备 | 发布资料、建书表单、平台书名简介标签、建书资料 | `/story-publish` |
| 写短篇 | 短篇、盐言、一万字 | `/story-short-write` |
| 长篇拆文 | 拆文、分析这本书、黄金三章、灵感库、跨书灵感聚合 | `/story-long-analyze` |
| 短篇拆文 | 拆短篇、分析这个故事 | `/story-short-analyze` |View the complete source on GitHubstory-cover
When your agent uses it
小说封面生成与提示词设计。根据书名、作者名和题材构建封面提示词;用户只要提示词时不生图,要求封面图时调用 GPT-Image-2,Codex CLI 优先使用内置 ImageGen。触发方式:/story-cover、/封面、「帮我做个封面」「生成封面图」「封面提示词」「封面设计」。
What it loads into context
Frontmatter
162 tokensAlways available to the agent
SKILL.md
3,082 tokensWhen the skill is activated
Reference documents
4,752 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 生成通路
- 生成流程
- 参考资料
Files
SKILL.mdcore10,418 bytesSKILL.mdcore10,418 bytesreferences/api-fallback.mddoc4,808 bytesreferences/cover-styles.mddoc11,168 bytes
Read SKILL.md
# story-cover:小说封面生成
根据书名和题材生成包含书名、笔名的完整封面,让读者一眼看出题材和氛围。
**仅提示词模式**:用户只要提示词,或 `story-publish` 选了仅提示词时,只做 Step 1-3,交付完整提示词,不需要生图工具、API Key 或输出目录;要封面图才继续 Step 4-6。由 `story-publish` 调用时,它传来的已确认书名、简介、笔名、平台和题材不再重问;结束时返回完整提示词原文,生图成功再附图片路径和质量检查结果,失败就说明原因。
---
## 生成通路
- **Codex 内置(优先)**:当前 Codex CLI 会话可调用 `$imagegen` / `image_gen` 时,直接调用工具生成并保存,无需 `OPENAI_API_KEY` 或 `GPT_IMAGE_API_KEY`,不运行 `curl`。
- **API 回退**:仅在会话没有内置工具或用户明确指定 API 时使用,需要 `GPT_IMAGE_API_KEY`;环境变量和命令在 [references/api-fallback.md](references/api-fallback.md),走这条通路时再读。工具缺失不等于 Codex 订阅不支持生图;内置调用失败时先报告错误,不静默切换到可能收费的 API。
## 生成流程
View the complete source on GitHubstory-deslop
When your agent uses it
网文去AI味。从表达、叙事用笔、故事因果三层诊断并修复文本,保留作者文风与已定剧情。触发方式:/story-deslop、/去AI味、「去AI味」「这篇太AI了」「网文去AI味」。
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
3,265 tokensWhen the skill is activated
Reference documents
12,308 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 执行边界
- 去味流程
- 流程衔接
Scripts executed separately
scripts/check-ai-patterns.jsscripts/check-degeneration.jsscripts/normalize-punctuation.jsscripts/style-whitelist.js
Files
SKILL.mdcore12,078 bytesSKILL.mdcore12,078 bytesSKILL.mdcore12,078 bytesSKILL.mdcore12,078 bytesreferences/agent-calls.mddoc1,258 bytesreferences/banned-words.mddoc11,297 bytesreferences/deslop-gates.mddoc2,533 bytesreferences/expression.mddoc9,713 bytesreferences/narrative-focus.mddoc6,862 bytesreferences/short-deslop.mddoc1,570 bytesreferences/story-logic.mddoc6,069 bytesreferences/style-resolution.mddoc3,790 bytesscripts/check-ai-patterns.jsruns75,274 bytesscripts/check-degeneration.jsruns15,389 bytesscripts/normalize-punctuation.jsruns15,411 bytesscripts/style-whitelist.jsruns1,168 bytes
Read SKILL.md
# story-deslop:网文去AI味
**文风裁决**:先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风,复用调用方的 `style_resolution` 与作者偏好;单独调用时按当前请求与本书文风裁决。同一裁决交给后续执行者。
**改写重点:表达自然、笔墨有重心、故事有依据;诊断与执行都按作者范围。**
---
## 执行边界
- 未限定范围的独立去味,完整检查表达、用笔、故事三层。三层是检查对象,不按词频分轻中重;每层可以没有问题。用户明确只查词句、某段或某类问题时,尊重范围。
- 普通去味可修表达、恢复已有承接、调整已定内容的详略;允许删除整段无功能内容,保护伏笔、因果、人物选择、情绪体验与揭露顺序。需要改变事件、动机、结果或新增成立条件时,按故事层区分设计提案和已授权重写。不能用新微动作、粗话、证据或冲突制造“真人感”。
- 文风裁决只影响表达,不改变事实与信息边界。准确直写、心理活动、带立场的叙述和有功能的停顿均可保留,不机械套 Show/Tell、句长或删减率。
- 用户只要检测或标注时,只出诊断,不修改正文。作者只说「去AI味」「这篇太AI了」时按改稿处理:表达与用笔直接改,故事层缺口给出方案,作者授权后再改。作者报告用白话、原文位置与阅读后果,不把检测类别名、脚本字段当评价。
- 长篇项目(书目录下有 `正文/` 与 `追踪/`)需要改变事件、关系、人物所知或结果时,即使作者已授权,也带着诊断和授权转 `/story-long-write`「修改第X章」执行,由那边备份原文并同步追踪;本流程只改表达、用笔和已有依据的承接。View the complete source on GitHubstory-import
When your agent uses it
逆向导入已有小说。将已写好的小说(半成品或完本)反向解析为标准项目目录结构,兼容 story-long-write / story-short-write 后续写作流程;内部复用 story-long-analyze / story-short-analyze 的拆解管道,按篇幅自动分流。触发方式:/story-import、「导入小说」「反向解析」「导入」「把我的书导进来」。
What it loads into context
Frontmatter
138 tokensAlways available to the agent
SKILL.md
3,427 tokensWhen the skill is activated
Reference documents
22,964 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 名词与目录边界(全流程硬约束)
- 时刻表与交接
- Phase 1:确认来源与范围
- Phase 2:深度分析
- Phase 3:结构迁移
- Phase 4:追踪初始化(仅长篇)
- Phase 5:汇报与激活
- 流程衔接
Scripts executed separately
scripts/build_outline_brief.pyscripts/check-outline-contract.jsscripts/outline_view.pyscripts/tracking_commit.pyscripts/wordcount_core.py
Files
SKILL.mdcore11,738 bytesreferences/benchmark-sync.mddoc4,103 bytesreferences/character-state-reverse.mddoc4,157 bytesreferences/deep-analysis.mddoc5,398 bytesreferences/import-report.mddoc4,482 bytesreferences/import-special-cases.mddoc2,607 bytesreferences/import-tracking.mddoc7,702 bytesreferences/length-routing.mddoc4,048 bytesreferences/outline-reverse-rules.mddoc6,156 bytesreferences/outline-reverse.mddoc2,845 bytesreferences/structure-mapping-long.mddoc21,931 bytesreferences/structure-mapping-short.mddoc10,333 bytesreferences/tracking-initialization.mddoc1,651 bytesscripts/build_outline_brief.pyruns16,109 bytesscripts/check-outline-contract.jsruns27,845 bytesscripts/outline_view.pyruns18,637 bytesscripts/tracking_commit.pyruns85,124 bytesscripts/wordcount_core.pyruns19,317 bytes
Read SKILL.md
# story-import:逆向导入已有小说
你是小说项目逆向工程师,把作者已有的书整理成**可续写的写作工程**,包含设定、大纲、正文及所需追踪。`拆文库/{导入书名}/` 保留为分析数据源;向作者汇报工程整理结果和续写入口。
> Agent 兼容性:只检查当前宿主:Claude `.claude/agents/{agent}.md`(`subagent_type`)、OpenCode `.opencode/agents/{agent}.md`(`subagent` 的 `agent`)、Codex `.codex/agents/{agent}.toml`(`agent_type`)、Antigravity `.agents/agents/agent-name/agent.md`(`invoke_subagent` + `TypeName`)。ZCode 查插件注册的同名角色,用 `Agent` 按实际 schema 派发,不要求 `.zcode/agents`。仅角色/工具不可用或返回未知 agent 时降级 solo/direct,不因其他端目录存在或宿主名固定串行。
>
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)**照常按当前宿主角色来源检查并 spawn**,同时用一句白话提示作者「分析助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 原文写进汇报最后一行「技术备注:」;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: project custom agents unavailable -> solo` 同样只进技术备注行。
## 名词与目录边界(全流程硬约束)
- `{导入书名}`:用户自己已经写到一半或已经完本、现在要重建为工程的小说;它的分析源固定为 `拆文库/{导入书名}/`。
- `{对标书名}`:用户另行选择的外部参考作品;它必须是独立拆解产物,来源固定为 `拆文库/{对标书名}/`,且不得指向本次导入源。
- `story-import` 可以复用拆解管道分析 `{导入书名}`,但**不得把 `{导入书名}` 登记为主/副对标,不得把 `拆文库/{导入书名}/` 或项目 `设定/` 复制进 `对标/`**。
- 用户没有明确选择外部对标时,不创建对标子目录、不写 `主对标书`;后续由 story-long-write / story-short-write 的对标发现流程单独处理。
View the complete source on GitHubstory-long-analyze
When your agent uses it
长篇网文拆文。保留黄金三章、逐章摘要、剧情、情绪、节奏、角色、设定和文风接口,以连续章节块完成因果、双时间线、关系与三维节奏分析;兼容旧成果直接使用、按需增强和断点续跑。含可选三层灵感库管道(灵感库、跨书灵感聚合、更新灵感库)。触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」「深度拆解」「完整拆解」或提供小说文本文件路径。
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
3,255 tokensWhen the skill is activated
Reference documents
29,965 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 分析边界
- 对作者说话
- 运行约定
- 按时刻读
- Phase 1:确认对象并检查目录
- Phase 2:按检查结果走哪条路
- 各阶段要点
- 状态与旧项目
Scripts executed separately
scripts/build_chapter_index.pyscripts/inspect_existing_assets.pyscripts/inspiration_index.pyscripts/manage_analysis_run.pyscripts/render_relation_chart.py
Files
SKILL.mdcore11,151 bytesreferences/author-facing.mddoc12,729 bytesreferences/final-checks.mddoc1,022 bytesreferences/index-rebuild.mddoc3,187 bytesreferences/inspiration-library.mddoc10,587 bytesreferences/pipeline-ops.mddoc11,357 bytesreferences/stage1-golden-chapters.mddoc6,819 bytesreferences/stage2-extraction.mddoc11,004 bytesreferences/stage3-plot-rhythm.mddoc20,790 bytesreferences/stage4-characters-settings.mddoc6,704 bytesreferences/stage5-report.mddoc2,756 bytesreferences/style-profile-generator.mddoc7,739 bytesreferences/synthesis-inputs.mddoc4,097 bytesscripts/build_chapter_index.pyruns20,937 bytesscripts/inspect_existing_assets.pyruns32,162 bytesscripts/inspiration_index.pyruns39,303 bytesscripts/manage_analysis_run.pyruns57,868 bytesscripts/render_relation_chart.pyruns19,423 bytes
Read SKILL.md
# story-long-analyze:长篇网文拆文
你是网络小说结构分析师。
**核心原则:机械索引建立后复用;正常提取时每个原文块只读一次,同次产生逐章事实和跨章观察;失败重试按计划回看,聚合阶段复用落盘结果。**
> Agent 兼容性:只检查当前宿主的 agent;ZCode 查插件注册的同名角色,用 `Agent` 按实际 schema 派发,不要求 `.zcode/agents`。仅角色/工具缺失或调用失败时降级 solo/direct,报告 `Fallback: project custom agents unavailable -> solo`,不扫描其他 CLI 的目录或按宿主名固定降级。
>
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)照常按当前宿主角色来源检查并 spawn,同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 并提示重新运行 `/story-setup` 后新开会话;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct。
## 分析边界
1. 只根据可读原文和已有资料下结论;缺失写“未知”或“文本未明确”。
2. 硬事实附章节、`source_locator` 或 5–15 字定位词;推断标证据等级。
3. 区分客观发生顺序、文本披露顺序、读者所知和角色所知。View the complete source on GitHubstory-long-scan
When your agent uses it
长篇网文扫榜。分析起点、番茄、晋江、七猫等平台排行榜与新书数据,提炼市场趋势与热门题材。触发方式:/story-long-scan、/长篇扫榜、「长篇什么火」「起点排行」「扫七猫新书」。
What it loads into context
Frontmatter
113 tokensAlways available to the agent
SKILL.md
2,631 tokensWhen the skill is activated
Reference documents
6,537 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 扫榜原则
- 扫榜流程
- 流程衔接
- 参考资料
Scripts executed separately
scripts/aggregate-rank.jsscripts/cdp-utils.jsscripts/ciweimao-rank-scraper.jsscripts/fanqie-rank-scraper.jsscripts/jjwxc-rank-scraper.jsscripts/qidian-rank-scraper.jsscripts/qimao-rank-scraper.js
Files
SKILL.mdcore8,841 bytesreferences/genre-trends.mddoc3,846 bytesreferences/platform-ciweimao.mddoc1,693 bytesreferences/platform-fanqie.mddoc2,867 bytesreferences/platform-jjwxc.mddoc1,898 bytesreferences/platform-qidian.mddoc3,300 bytesreferences/platform-qimao.mddoc2,558 bytesreferences/topic-decision.mddoc4,972 bytesscripts/aggregate-rank.jsruns31,682 bytesscripts/cdp-utils.jsruns8,564 bytesscripts/ciweimao-rank-scraper.jsruns9,554 bytesscripts/fanqie-rank-scraper.jsruns26,182 bytesscripts/jjwxc-rank-scraper.jsruns16,528 bytesscripts/qidian-rank-scraper.jsruns49,364 bytesscripts/qimao-rank-scraper.jsruns35,531 bytes
Read SKILL.md
# story-long-scan:长篇网文扫榜
你负责从长篇榜单的重复样本中识别题材候选,结合作者条件给出可行性、失败风险与验证动作。
**核心信念:单本排名提供线索,近期多榜单、多作品的重复模式才支持趋势判断。**
---
## 扫榜原则
### 原则 1:扫榜看模式,别只看排名
提取样本中重复的题材、设定、套路、书名词和简介卖点,判断能否支持趋势候选。
### 原则 2:各平台的热度口径不同View the complete source on GitHubstory-long-write
When your agent uses it
长篇网文规划与写作。支持只讨论结构、只写大纲或指定细纲,明确要求正文后再写章节。触发方式:/story-long-write、/写长篇、「帮我开书」「定设定」「出卷纲」「规划剧情」「写大纲」「补细纲」「日更」「续写」「继续写」「修改第X章」「回炉」「重写第X章」。
What it loads into context
Frontmatter
136 tokensAlways available to the agent
SKILL.md
3,975 tokensWhen the skill is activated
Reference documents
145,885 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 写前必读(强制,先读后写)
- 核心方法
- 写作流程
- 流程衔接
Scripts executed separately
scripts/author_memory_commit.pyscripts/build_architect_brief.pyscripts/build_writer_prompt.pyscripts/check-ai-patterns.jsscripts/check-degeneration.jsscripts/check-outline-contract.jsscripts/check-outline-copy.jsscripts/convert_outline_format.pyscripts/normalize-punctuation.jsscripts/outline_view.pyscripts/storyctl.pyscripts/style-whitelist.jsscripts/template_fence.pyscripts/tracking_commit.pyscripts/wordcount_core.py
Files
SKILL.mdcore13,672 bytesreferences/agent-calls.mddoc5,306 bytesreferences/artifact-protocols.mddoc11,577 bytesreferences/author-memory.mddoc9,892 bytesreferences/banned-words.mddoc11,297 bytesreferences/benchmark-recall.mddoc5,496 bytesreferences/character-basics.mddoc18,103 bytesreferences/character-relations.mddoc12,790 bytesreferences/cross-book-recall.mddoc4,047 bytesreferences/dialogue-mastery.mddoc11,680 bytesreferences/emotional-methods.mddoc8,320 bytesreferences/female-audience-writing.mddoc8,451 bytesreferences/genre-prose-cards.mddoc8,464 bytesreferences/genre-prose-cards/东方仙侠.mddoc2,797 bytesreferences/genre-prose-cards/传统玄幻.mddoc2,801 bytesreferences/genre-prose-cards/历史古代.mddoc2,656 bytesreferences/genre-prose-cards/历史脑洞.mddoc2,943 bytesreferences/genre-prose-cards/双男主.mddoc3,272 bytesreferences/genre-prose-cards/古言脑洞.mddoc2,694 bytesreferences/genre-prose-cards/古风世情.mddoc2,649 bytesreferences/genre-prose-cards/女频悬疑.mddoc2,640 bytesreferences/genre-prose-cards/女频种田.mddoc2,696 bytesreferences/genre-prose-cards/宫斗宅斗.mddoc2,543 bytesreferences/genre-prose-cards/年代.mddoc3,045 bytesreferences/genre-prose-cards/快穿.mddoc2,870 bytesreferences/genre-prose-cards/悬疑灵异.mddoc2,613 bytesreferences/genre-prose-cards/悬疑脑洞.mddoc2,806 bytesreferences/genre-prose-cards/战神赘婿.mddoc2,795 bytesreferences/genre-prose-cards/抗战谍战.mddoc2,731 bytesreferences/genre-prose-cards/星光璀璨.mddoc2,824 bytesreferences/genre-prose-cards/民国言情.mddoc2,808 bytesreferences/genre-prose-cards/流派兜底.mddoc13,421 bytesreferences/genre-prose-cards/游戏体育.mddoc2,908 bytesreferences/genre-prose-cards/玄幻脑洞.mddoc3,016 bytesreferences/genre-prose-cards/玄幻言情.mddoc2,620 bytesreferences/genre-prose-cards/现言脑洞.mddoc2,771 bytesreferences/genre-prose-cards/科幻末世.mddoc2,662 bytesreferences/genre-prose-cards/职场婚恋.mddoc2,608 bytesreferences/genre-prose-cards/西方奇幻.mddoc2,828 bytesreferences/genre-prose-cards/豪门总裁.mddoc3,340 bytesreferences/genre-prose-cards/都市修真.mddoc2,577 bytesreferences/genre-prose-cards/都市日常.mddoc3,754 bytesreferences/genre-prose-cards/都市种田.mddoc2,587 bytesreferences/genre-prose-cards/都市脑洞.mddoc3,479 bytesreferences/genre-prose-cards/都市高武.mddoc3,024 bytesreferences/genre-prose-cards/青春甜宠.mddoc2,805 bytesreferences/genre-readers.mddoc9,093 bytesreferences/long-chapter-hooks.mddoc7,058 bytesreferences/long-chapter-quality.mddoc3,417 bytesreferences/long-format.mddoc2,281 bytesreferences/long-genre-catalog.mddoc12,665 bytesreferences/long-genre-mechanics.mddoc12,348 bytesreferences/long-reversal.mddoc15,679 bytesreferences/long-suspense.mddoc15,459 bytesreferences/opening-design.mddoc4,378 bytesreferences/outline-methods.mddoc16,617 bytesreferences/outline-template.mddoc8,383 bytesreferences/plot-core-methods.mddoc6,586 bytesreferences/project-files.mddoc8,566 bytesreferences/reader-contract-and-progression.mddoc10,614 bytesreferences/revision-diagnosis.mddoc3,679 bytesreferences/style-combat-face.mddoc18,516 bytesreferences/tracking-initialization.mddoc1,651 bytesreferences/tracking-transaction.mddoc15,829 bytesreferences/workflow-chapter.mddoc14,905 bytesreferences/workflow-daily.mddoc7,408 bytesreferences/workflow-outline.mddoc14,419 bytesreferences/workflow-revision.mddoc6,685 bytesreferences/workflow-setup.mddoc13,812 bytesreferences/workflow-volume.mddoc7,964 bytesreferences/writing-craft.mddoc26,337 bytesscripts/author_memory_commit.pyruns76,766 bytesscripts/build_architect_brief.pyruns21,688 bytesscripts/build_writer_prompt.pyruns42,705 bytesscripts/check-ai-patterns.jsruns75,274 bytesscripts/check-degeneration.jsruns15,389 bytesscripts/check-outline-contract.jsruns27,845 bytesscripts/check-outline-copy.jsruns13,676 bytesscripts/convert_outline_format.pyruns20,267 bytesscripts/normalize-punctuation.jsruns15,411 bytesscripts/outline_view.pyruns18,637 bytesscripts/storyctl.pyruns33,969 bytesscripts/style-whitelist.jsruns1,168 bytesscripts/template_fence.pyruns2,655 bytesscripts/tracking_commit.pyruns85,124 bytesscripts/wordcount_core.pyruns19,317 bytes
Read SKILL.md
# story-long-write:长篇网文写作
你是网络小说创作教练,帮用户从选题、大纲到正文写完一本长篇网络小说。
## 写前必读(强制,先读后写)
创建或修改长篇故事文件前,按下表读完当前时刻的文件(这张表是唯一的读取清单);只读本文件、`rg` 检索或摘读都不算。**按节读只允许两种**:任务包切好的节,或本表、文件内「什么时候读这份」点名的节;其余文件整份读到结尾。缺文件或没读完就停,报准确路径,**不得先写正文再补读**;每个任务、每个会话重新读。
| 时刻 | 必读 | 条件满足才读 |
|---|---|---|
| 定方向 | `workflow-setup.md` | 没方向:`long-genre-catalog.md`(特殊题材只读对应一节);女频改读 `female-audience-writing.md`;平台、赛道、暂定书名:`genre-readers.md`;派子代理:`agent-calls.md` |
| 定设定 | `workflow-setup.md`;自己做加 `character-basics.md`、`reader-contract-and-progression.md`、`long-genre-mechanics.md`「核心梗三层递进设计」「金手指」、`character-relations.md`「人物关系类型」 | 女频:`female-audience-writing.md`;有感情线:`character-relations.md`「感情线阶段」;对标登记 ≥2 本:`cross-book-recall.md` |
| 出卷纲 | `workflow-volume.md`;自己排加 `artifact-protocols.md`、`outline-methods.md`「卷纲排法」、`reader-contract-and-progression.md` | 没有主对标:outline-methods「常见的八步结构」;有自创剧情段:「情绪模块公式」;换地图:「换地图」;有反转:`long-reversal.md`「反转类型」;感情线、对标同上 |
| 出细纲、补纲 | `workflow-outline.md`;自己出加 `outline-template.md`、`plot-core-methods.md`、`character-basics.md`、`long-chapter-hooks.md`「章尾钩子 13 式」「章首钩子 7 式」 | 含前 3 章:`opening-design.md`「开篇规划」;感情线、对标同上 |
| 写一章 | `workflow-chapter.md`;交写手加 `agent-calls.md`;自己写加 `long-format.md`、`writing-craft.md`、本章技法 | 新书第 1 章:`tracking-initialization.md`、`genre-prose-cards.md`「全书题材正文提示卡」与核对报告点名的卡;召回降档不成立:`benchmark-recall.md`;缺文件、找产物放哪:`project-files.md`;自己写第 1-3 章:`opening-design.md`「开篇落笔」;排查单章问题:`long-chapter-quality.md` |View the complete source on GitHubstory-publish
When your agent uses it
小说发布准备:为发布平台整理并核对书名、简介、主角名、分类和标签,定稿后保存发布资料。触发方式:/story-publish、/发布资料、「填写平台建书资料」「建书表单」「起书名/写简介/选标签用于发布」;正文累计约 2 万字、准备上架时也适用。当前仅适配番茄(长篇与短故事),不代替后台填表或实际发布。
What it loads into context
Frontmatter
143 tokensAlways available to the agent
SKILL.md
2,147 tokensWhen the skill is activated
Reference documents
5,029 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 原则
- 读取作品材料
- 平台
- 工作流程
- 封面
- 发布资料文件
- 格式检查
Scripts executed separately
scripts/check-publish-format.py
Files
SKILL.mdcore7,769 bytesreferences/fanqie-content-tags.mddoc4,565 bytesreferences/fanqie-reading-female.mddoc2,583 bytesreferences/fanqie-reading-male.mddoc2,246 bytesreferences/fanqie-short.mddoc3,145 bytesreferences/fanqie.mddoc3,432 bytesscripts/check-publish-format.pyruns10,385 bytes
Read SKILL.md
# story-publish:发布资料准备
把作品已有的设定、大纲和作者的决定,整理成发布平台建书表单要填的资料,按平台规则核对后存成 `发布资料-<平台>.md`。剧情规划和正文写作归 `story-long-write` 等写作 skill,作者只说“开书”时也走那边;本 skill 也不替作者登录后台、填表或发布。
## 原则
- **只有作者确认的才是定稿。** 每个字段标一种状态:`已确认`(作者明确指定或接受)、`建议`(从作品材料推导或新拟)、`待确认`(缺失、含糊、矛盾)、`待平台核实`(平台规则不明或与界面不符)。沉默不算确认;作者接受整套候选方案,算确认其中列出的每一项。作者给的故事简介、大纲是素材,不自动当成平台“作品简介”。
- **作者已定的值不擅自改。** 书名、简介、笔名有问题时指出并给建议,保留原值。
- **平台候选只取自本 skill 的平台参考文件。** 不凭记忆,不从扫榜、拆文、选题材料里挪用,平台之间不共享。没有故事事实时先问,不编人物、情节或卖点。
- **准备完成不等于已发布。** 资料齐了只说“发布资料准备完成”,不说“已提交”“审核中”“已发布”。
## 读取作品材料
书目录:作者指定的优先,其次 `.active-book`;指向不明或多本书分不清时问作者,不从目录名猜。只读,不改设定、不启动写作阶段。View the complete source on GitHubstory-review
When your agent uses it
多视角对抗式审查。full/lean 模式在已部署 reviewer agents 时并行 spawn;缺失/异常 agents 或 spawn 失败时自动降级 solo,参考文件不可读时使用内置 rubric fallback。触发方式:/story-review、/审查、「审查一下」「帮我审一下」。
What it loads into context
Frontmatter
114 tokensAlways available to the agent
SKILL.md
5,924 tokensWhen the skill is activated
Reference documents
24,796 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 作者偏好边界
- Review Mode 选择
- Phase 0:预检与降级(必须先执行)
- 审查基准与参考资料规则(必须遵守)
- Phase 1:收集待审查内容
- 统一 Findings Schema(所有模式必须使用)
- Phase 2:并行 Spawn Agent(full/lean 模式)
- Phase 3:综合裁决(full / lean 模式)
- Phase 4:输出报告(full / lean 模式)
- solo 模式
- 追踪文件维护
- 流程衔接
Scripts executed separately
scripts/check-ai-patterns.jsscripts/check-degeneration.jsscripts/normalize-punctuation.jsscripts/style-whitelist.jsscripts/tracking_commit.pyscripts/wordcount_core.py
Files
SKILL.mdcore21,128 bytesSKILL.mdcore21,128 bytesreferences/agent-prompts.mddoc14,249 bytesreferences/banned-words.mddoc11,297 bytesreferences/batch-review.mddoc2,325 bytesreferences/expression.mddoc9,713 bytesreferences/narrative-focus.mddoc6,862 bytesreferences/quality-rubric.mddoc4,847 bytesreferences/review-tracking.mddoc2,590 bytesreferences/rubrics/fanqie.mddoc1,140 bytesreferences/rubrics/qidian.mddoc1,133 bytesreferences/rubrics/zhihu.mddoc1,571 bytesreferences/solo.mddoc3,471 bytesreferences/story-logic.mddoc6,069 bytesreferences/style-resolution.mddoc3,790 bytesreferences/tracking-initialization.mddoc1,651 bytesreferences/tracking-transaction.mddoc15,829 bytesscripts/check-ai-patterns.jsruns75,274 bytesscripts/check-degeneration.jsruns15,389 bytesscripts/normalize-punctuation.jsruns15,411 bytesscripts/style-whitelist.jsruns1,168 bytesscripts/tracking_commit.pyruns85,124 bytesscripts/wordcount_core.pyruns19,317 bytes
Read SKILL.md
# story-review:多视角对抗式审查
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 39` 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)**照常按当前宿主角色来源检查并 spawn**;同时在「这次怎么审的」里用一句白话提示作者「审稿助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 39)` 原文写进技术备注行;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。版本提示本身不触发降级;文件缺失或异常、工具不可用、递归限制或调用失败按 Phase 0 处理,技术备注写 `Fallback: ... -> solo`。
你负责协调审查,找出小说的结构、角色、文字与设定问题,给出有原文依据的修改建议。
**执行铁律:审查是找问题,不是验证正确性。**
**文风裁决**:先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风,复用调用方的 `style_resolution` 与作者偏好;单独调用时按当前请求与本书文风裁决。同一裁决交给后续执行者。
## 作者偏好边界
只接收调用方已有的作者偏好,不查询或记录作者记忆;独立调用时不加载记忆文件。偏好只能帮助解释意图和组织报告,不能降低 rubric 严重度、把事实冲突判为无问题或跳过平台门禁;当前请求仍优先。
---View the complete source on GitHubstory-setup
When your agent uses it
网文写作工具集基础设施部署与检查。为 Claude Code / OpenCode / Codex / Google Antigravity / ZCode / OpenClaw / Reasonix 提供内置适配;Web AI / 通用 Agent 可走 skills + AGENTS.md 文件模式。触发方式:/story-setup、$story-setup、「准备写书」「帮我搭一下环境」「配置写作项目」「检查写作环境」。
What it loads into context
Frontmatter
137 tokensAlways available to the agent
SKILL.md
5,064 tokensWhen the skill is activated
Reference documents
136,523 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 选择模式
- Phase 1:判断宿主与项目
- Phase 2:部署基础设施
- Phase 3:验证安装
- 模板占位符
- 项目指令合并(CLAUDE.md / AGENTS.md)
- 参考资料
- 流程衔接
Files
SKILL.mdcore17,843 bytesSKILL.mdcore17,843 bytesreferences/agent-references/agent-quality.mddoc3,614 bytesreferences/agent-references/agent-reference-profiles.mddoc4,163 bytesreferences/agent-references/banned-words.mddoc11,297 bytesreferences/agent-references/benchmark-style-load.mddoc10,306 bytesreferences/agent-references/character-basics.mddoc18,103 bytesreferences/agent-references/character-relations.mddoc12,790 bytesreferences/agent-references/deslop-gates.mddoc2,533 bytesreferences/agent-references/dialogue-mastery.mddoc11,680 bytesreferences/agent-references/expression.mddoc9,713 bytesreferences/agent-references/female-audience-writing.mddoc8,451 bytesreferences/agent-references/format-and-structure.mddoc10,665 bytesreferences/agent-references/genre-prose-cards.mddoc8,464 bytesreferences/agent-references/genre-prose-cards/东方仙侠.mddoc2,797 bytesreferences/agent-references/genre-prose-cards/传统玄幻.mddoc2,801 bytesreferences/agent-references/genre-prose-cards/历史古代.mddoc2,656 bytesreferences/agent-references/genre-prose-cards/历史脑洞.mddoc2,943 bytesreferences/agent-references/genre-prose-cards/双男主.mddoc3,272 bytesreferences/agent-references/genre-prose-cards/古言脑洞.mddoc2,694 bytesreferences/agent-references/genre-prose-cards/古风世情.mddoc2,649 bytesreferences/agent-references/genre-prose-cards/女频悬疑.mddoc2,640 bytesreferences/agent-references/genre-prose-cards/女频种田.mddoc2,696 bytesreferences/agent-references/genre-prose-cards/宫斗宅斗.mddoc2,543 bytesreferences/agent-references/genre-prose-cards/年代.mddoc3,045 bytesreferences/agent-references/genre-prose-cards/快穿.mddoc2,870 bytesreferences/agent-references/genre-prose-cards/悬疑灵异.mddoc2,613 bytesreferences/agent-references/genre-prose-cards/悬疑脑洞.mddoc2,806 bytesreferences/agent-references/genre-prose-cards/战神赘婿.mddoc2,795 bytesreferences/agent-references/genre-prose-cards/抗战谍战.mddoc2,731 bytesreferences/agent-references/genre-prose-cards/星光璀璨.mddoc2,824 bytesreferences/agent-references/genre-prose-cards/民国言情.mddoc2,808 bytesreferences/agent-references/genre-prose-cards/流派兜底.mddoc13,421 bytesreferences/agent-references/genre-prose-cards/游戏体育.mddoc2,908 bytesreferences/agent-references/genre-prose-cards/玄幻脑洞.mddoc3,016 bytesreferences/agent-references/genre-prose-cards/玄幻言情.mddoc2,620 bytesreferences/agent-references/genre-prose-cards/现言脑洞.mddoc2,771 bytesreferences/agent-references/genre-prose-cards/科幻末世.mddoc2,662 bytesreferences/agent-references/genre-prose-cards/职场婚恋.mddoc2,608 bytesreferences/agent-references/genre-prose-cards/西方奇幻.mddoc2,828 bytesreferences/agent-references/genre-prose-cards/豪门总裁.mddoc3,340 bytesreferences/agent-references/genre-prose-cards/都市修真.mddoc2,577 bytesreferences/agent-references/genre-prose-cards/都市日常.mddoc3,754 bytesreferences/agent-references/genre-prose-cards/都市种田.mddoc2,587 bytesreferences/agent-references/genre-prose-cards/都市脑洞.mddoc3,479 bytesreferences/agent-references/genre-prose-cards/都市高武.mddoc3,024 bytesreferences/agent-references/genre-prose-cards/青春甜宠.mddoc2,805 bytesreferences/agent-references/genre-readers.mddoc9,347 bytesreferences/agent-references/long-chapter-hooks.mddoc7,058 bytesreferences/agent-references/long-emotional-methods.mddoc8,320 bytesreferences/agent-references/long-genre-catalog.mddoc12,665 bytesreferences/agent-references/long-genre-mechanics.mddoc12,348 bytesreferences/agent-references/long-quality.mddoc3,142 bytesreferences/agent-references/long-reversal.mddoc15,679 bytesreferences/agent-references/long-suspense.mddoc15,459 bytesreferences/agent-references/narrative-focus.mddoc6,862 bytesreferences/agent-references/opening-design.mddoc4,378 bytesreferences/agent-references/outline-methods.mddoc16,617 bytesreferences/agent-references/plot-core-methods.mddoc6,586 bytesreferences/agent-references/short-chapter-hooks.mddoc9,050 bytesreferences/agent-references/short-emotional-methods.mddoc6,469 bytesreferences/agent-references/short-genre-formulas.mddoc20,285 bytesreferences/agent-references/short-quality.mddoc2,782 bytesreferences/agent-references/short-reversal.mddoc15,903 bytesreferences/agent-references/story-logic.mddoc6,069 bytesreferences/agent-references/style-combat-face.mddoc18,516 bytesreferences/agent-references/style-resolution.mddoc3,790 bytesreferences/agent-references/writing-craft.mddoc26,337 bytesreferences/diagnostics.mddoc4,422 bytes
Read SKILL.md
# story-setup:网文写作工具集基础设施部署
你负责把网文写作工具集部署到用户项目目录:已适配的 CLI 使用专用 hooks/agents/config;NarraFork、Web AI、自定义 Agent 等使用通用文件模式。
**保留用户配置;受管文件按清单更新,共同维护的文件按管理块合并。**
作者第一次部署的顺序:判断当前宿主 → 确认项目根 → 按宿主部署 → 验收 → 告诉作者下一步。本文件写公共流程;各宿主的部署清单、算法、校验和报告提示见 Phase 2 对应文件,**只读本次目标宿主的那一份**。
## 选择模式
- 参数为 `check`,或用户只要求检查部署、诊断环境、排查 agent 不可用时:完整读取 [references/diagnostics.md](references/diagnostics.md),按其中流程仅检查并报告;不进入下面的部署流程。
- 用户要求安装、更新或修复时:执行下面的部署流程。检查后已明确授权的修复沿用本文件与宿主部署文件的部署与合并规则。
---
View the complete source on GitHubstory-short-analyze
When your agent uses it
短篇网文拆文。拆解爆款短篇小说(番茄短篇 / 故事会 / 知乎盐言 / 追妻 / 世情 / 重生 / 虐渣等通俗题材)的故事核、结构、情感线、反转设计、写作手法、共鸣层次。单一全量拆解管道:跑完 Stage 2-6 产出完整拆文报告,落盘到 拆文库/{书名}/,下游 story-short-write 同时读拆文报告 + 情节节点 + 写作手法 + 原文 + _meta.json 写下一篇。触发方式:/story-short-analyze、/短篇拆文、「拆短篇」「拆这篇短文」「短篇拆文」「精细拆解短篇」「8000 字短篇拆解」「番茄短篇拆文」「故事会拆解」「盐言故事拆解」「分析这篇短篇」——均进入同一管道。
What it loads into context
Frontmatter
266 tokensAlways available to the agent
SKILL.md
3,373 tokensWhen the skill is activated
Reference documents
29,082 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 拆解边界声明
- Phase 1:确认拆解对象 + 字数路由 + 续跑检查
- 输出目录
- Stage 2-6:拆文流程
- 验收(Stage 6 内容写完后、将 6 加入 stages_completed 前)
- 流程衔接
Files
SKILL.mdcore11,480 bytesreferences/analysis-characters.mddoc3,458 bytesreferences/analysis-method.mddoc2,664 bytesreferences/analysis-report-style.mddoc2,451 bytesreferences/analysis-short-genres.mddoc5,166 bytesreferences/analysis-short-hooks.mddoc3,969 bytesreferences/analysis-short-mechanics.mddoc4,476 bytesreferences/analysis-short-patterns.mddoc4,255 bytesreferences/analysis-short-suspense.mddoc4,298 bytesreferences/analysis-submission.mddoc3,047 bytesreferences/optional-modules.mddoc2,559 bytesreferences/output-contract.mddoc7,104 bytesreferences/quality-checklist.mddoc3,994 bytesreferences/source-story-quality.mddoc4,574 bytesreferences/stage2-3-structure-emotion.mddoc14,448 bytesreferences/stage4-6-reversal-summary.mddoc29,382 bytes
Read SKILL.md
# story-short-analyze:短篇网文拆文
你是短篇小说结构分析师。
**围绕故事核,分析源文如何铺垫、释放情绪并引发共鸣。分析写进 `拆文报告.md`,结构计数写进 `_meta.json`,供下一篇短篇参考。**
---
## 拆解边界声明
短篇拆解的 Stage 2-6 全程由你(主会话)完成。分析对象是用户**合法持有、拥有使用权**的虚构作品,包括已出版、连载或自有作品;只做编辑、评论和写作教学视角的**只读转化性文学批评**,不复制、传播或指导现实行为。番茄短篇、故事会、知乎盐言、追妻、虐渣、世情等通俗题材里的家暴、出轨、复仇、暴力、情爱张力、黑暗伦理属于常规虚构叙事元素,须照常做结构化拆解,**不得以「敏感」「不适」为由拒绝整篇或某个片段**,以免中断拆文流水线;确实无法处理的片段可跳过,其余部分照常拆完。
---
## Phase 1:确认拆解对象 + 字数路由 + 续跑检查View the complete source on GitHubstory-short-scan
When your agent uses it
短篇网文扫榜。分析知乎盐言、七猫、黑岩、点众等平台热门短篇数据,捕捉风口题材。触发方式:/story-short-scan、/短篇扫榜、「短篇什么火」「知乎故事排行」。
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
2,654 tokensWhen the skill is activated
Reference documents
3,510 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 核心哲学
- 扫榜流程
- 流程衔接
- 参考资料
Scripts executed separately
scripts/aggregate-rank.jsscripts/cdp-utils.jsscripts/dz-browse-scraper.jsscripts/heiyan-booklist-scraper.js
Files
SKILL.mdcore8,983 bytesreferences/manual-rank-input.mddoc1,895 bytesreferences/platform-dianzhong.mddoc1,275 bytesreferences/platform-heiyan.mddoc1,690 bytesreferences/real-market-data.mddoc3,678 bytesreferences/topic-match.mddoc2,779 bytesscripts/aggregate-rank.jsruns31,682 bytesscripts/cdp-utils.jsruns8,564 bytesscripts/dz-browse-scraper.jsruns8,578 bytesscripts/heiyan-booklist-scraper.jsruns13,114 bytes
Read SKILL.md
# story-short-scan:短篇网文扫榜
基于真实榜单样本分析短篇市场,给作者可写的情绪方向、题材候选和验证办法。
---
## 核心哲学
### 原则 1:短篇市场是情绪市场
扫榜从题材和简介中判断读者读完的感受、触发场景与情绪爆发点,说明这些内容如何吸引读者。仅凭题材名无法判断具体情绪体验。
### 原则 2:热度只按各平台自己的口径比
榜单给的收藏、赞同、在读、评分各有口径,只在同一口径内比较。排名和互动量只说明样本受到的关注,不能据此断定故事质量或情绪拉扯效果。View the complete source on GitHubstory-short-write
When your agent uses it
短篇网文写作。辅助短篇小说创作,从构思到成稿,聚焦情绪拉扯与节奏把控。触发方式:/story-short-write、/写短篇、「帮我写一篇短篇」「写个盐言故事」。
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
3,194 tokensWhen the skill is activated
Reference documents
94,843 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 写前必读(强制,先读后写)
- 执行规则
- 作者记忆管理
- 核心方法
- 写作流程
- 流程衔接
Scripts executed separately
scripts/author_memory_commit.pyscripts/check-ai-patterns.jsscripts/check-degeneration.jsscripts/check-delivery-contract.jsscripts/check-outline-copy.jsscripts/check-phase2-contract.jsscripts/normalize-punctuation.jsscripts/style-whitelist.js
Files
SKILL.mdcore10,764 bytesreferences/agent-calls.mddoc2,532 bytesreferences/author-memory.mddoc9,892 bytesreferences/banned-words.mddoc11,297 bytesreferences/benchmark-recall.mddoc3,915 bytesreferences/dialogue-mastery.mddoc11,680 bytesreferences/emotional-methods.mddoc6,469 bytesreferences/genre-styles/世情打脸.mddoc16,195 bytesreferences/genre-styles/双男主.mddoc12,256 bytesreferences/genre-styles/复仇打脸.mddoc14,539 bytesreferences/genre-styles/宅斗宫斗.mddoc15,372 bytesreferences/genre-styles/总裁豪门.mddoc16,970 bytesreferences/genre-styles/悬疑.mddoc13,528 bytesreferences/genre-styles/民俗怪谈.mddoc12,859 bytesreferences/genre-styles/沙雕脑洞.mddoc14,387 bytesreferences/genre-styles/甜宠.mddoc11,815 bytesreferences/genre-styles/追妻火葬场.mddoc15,715 bytesreferences/genre-writing-formulas.mddoc20,285 bytesreferences/hooks-chapter.mddoc9,050 bytesreferences/scene-craft.mddoc2,948 bytesreferences/short-craft.mddoc10,197 bytesreferences/short-deslop.mddoc1,570 bytesreferences/short-format.mddoc9,551 bytesreferences/short-reversal.mddoc15,903 bytesreferences/submission-craft.mddoc5,852 bytesreferences/villain-and-reveal.mddoc5,799 bytesreferences/workflow-design.mddoc10,440 bytesreferences/workflow-draft.mddoc11,251 bytesreferences/workflow-revision.mddoc8,073 bytesscripts/author_memory_commit.pyruns76,766 bytesscripts/check-ai-patterns.jsruns75,274 bytesscripts/check-degeneration.jsruns15,389 bytesscripts/check-delivery-contract.jsruns9,055 bytesscripts/check-outline-copy.jsruns13,676 bytesscripts/check-phase2-contract.jsruns19,908 bytesscripts/normalize-punctuation.jsruns15,411 bytesscripts/style-whitelist.jsruns1,168 bytes
Read SKILL.md
# story-short-write:短篇网文写作
你负责从构思到成稿,完成一篇完整的短篇小说。
**执行规则:短篇以情绪为目标,所有内容为情绪服务。**
## 写前必读(强制,先读后写)
短篇按作者当前要做的事分时刻读文件,时刻之间靠落盘文件交接。创建或修改故事文件前,先判断当前时刻,按下表读完(这张表是唯一的读取清单);只读本文件、`rg` 检索或摘读都不算。**按节读只允许两种**:本表点名的节,或文件内「什么时候读这份」点名的节;其余整份读到结尾。缺文件、没读完或题材还没对上唯一的题材包就停,报准确路径或待定项,**不得创建或修改故事产物**。每个时刻、每个会话重新读。
| 时刻 | 作者确认什么 | 必读 | 条件满足才读 | 落盘 |
|---|---|---|---|---|
| 定情绪(Phase 1) | 读者读完的感觉、题材方向 | 本文件 | — | 进构思时写入 `设定.md` |
| 构思(Phase 2) | 故事核、人物、反转、付费点 | `workflow-design.md`、`submission-craft.md`、`short-craft.md`、`short-reversal.md`、`emotional-methods.md`「情感拉扯节奏设计」;核心 10 题材读一个 `genre-styles/{题材}.md`,冷门读 `genre-writing-formulas.md` | 有反派或真相揭露:`villain-and-reveal.md`;有对标或参考小说:`benchmark-recall.md`;付费点断点拿不准:`hooks-chapter.md`「2. 节尾」 | `设定.md`、`小节大纲.md` |
| 写正文(Phase 3) | 成稿 | `workflow-draft.md`、`short-format.md`、`short-craft.md`、`scene-craft.md`、设定.md 写的那个题材包(冷门不读) | 写羁绊或余韵:`emotional-methods.md`「情感虐心三板斧」;对白驱动的博弈、审判、打脸:`dialogue-mastery.md`「什么时候读这份」和它点名的一节;交给写手:`agent-calls.md` | `正文.md` |View the complete source on GitHubvideo-assemble
When your agent uses it
合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录, 最后做响度标准化。作为最终合成阶段使用。输入源视频、tts_meta.json 与旁白位置; 输出 recap 成片和字幕。触发词:视频合成、混音、字幕、压字幕、assemble video、mux、ducking、subtitles、成片。
What it loads into context
Frontmatter
120 tokensAlways available to the agent
SKILL.md
3,680 tokensWhen the skill is activated
Reference documents
7,444 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 定位
- 2. 声音收尾契约
- 3. 输入契约
- 4. 运行命令
- 5. 输出契约
- 6. 合成规则
- 7. 字幕与可选包装
- 8. 能力边界
Scripts executed separately
scripts/adoption/__init__.pyscripts/adoption/audio_mix_binding.pyscripts/adoption/av_clock.pyscripts/adoption/frozen_audio.pyscripts/adoption/narration_binding.pyscripts/adoption/strict_inputs.pyscripts/adoption/strict_publish.pyscripts/artifacts.pyscripts/assemble.pyscripts/assemble_constants.pyscripts/assembly_contract.pyscripts/assembly_settings.pyscripts/audio_automation.pyscripts/audio_mix.pyscripts/codec_peak.pyscripts/export_jianying.pyscripts/jianying/__init__.pyscripts/jianying/builders.pyscripts/jianying/model.pyscripts/jianying/optional.pyscripts/jianying/schema.pyscripts/jianying/templates.pyscripts/jianying/timeline_contract.pyscripts/jianying/tracks.pyscripts/jianying/writer.pyscripts/lib.pyscripts/loudness.pyscripts/media.pyscripts/narration_audio.pyscripts/packaging.pyscripts/render_preflight.pyscripts/source_score.pyscripts/source_subtitles.pyscripts/subtitles/__init__.pyscripts/subtitles/core.pyscripts/subtitles/render.pyscripts/subtitles/track.pyscripts/subtitles/track_binding.pyscripts/timeline.pyscripts/timeline_emit.pyscripts/visual_render.py
Files
SKILL.mdcore12,364 bytesSKILL.mdcore12,364 bytesreferences/audio-modes.mddoc3,509 bytesreferences/explicit-audio-mix.mddoc3,951 bytesreferences/jianying/LICENSE.duo-videoasset1,062 bytesreferences/jianying/SOURCE.mddoc703 bytesreferences/jianying/empty_draft_meta_info.jsonasset1,768 bytesreferences/jianying/empty_jy_material_video.jsonasset1,811 bytesreferences/jianying/empty_jy_meta_material_value.jsonasset358 bytesreferences/jianying/empty_jy_project_info.jsonasset3,718 bytesreferences/jianying/empty_jy_segment.jsonasset1,370 bytesreferences/jianying/empty_jy_text_styles.jsonasset440 bytesreferences/jianying/empty_yj_material_audio.jsonasset865 bytesreferences/jianying/empty_yj_material_text.jsonasset2,447 bytesreferences/narration-adoption.mddoc4,767 bytesreferences/packaging.mddoc2,801 bytesreferences/source-score.mddoc6,869 bytesreferences/subtitle-track.mddoc8,659 bytesscripts/adoption/__init__.pyruns94 bytesscripts/adoption/audio_mix_binding.pyruns14,208 bytesscripts/adoption/av_clock.pyruns5,933 bytesscripts/adoption/frozen_audio.pyruns7,750 bytesscripts/adoption/narration_binding.pyruns14,877 bytesscripts/adoption/strict_inputs.pyruns4,200 bytesscripts/adoption/strict_publish.pyruns6,299 bytesscripts/artifacts.pyruns1,177 bytesscripts/assemble.pyruns36,598 bytesscripts/assemble_constants.pyruns1,991 bytesscripts/assembly_contract.pyruns12,501 bytesscripts/assembly_settings.pyruns6,228 bytesscripts/audio_automation.pyruns6,859 bytesscripts/audio_mix.pyruns21,812 bytesscripts/codec_peak.pyruns5,199 bytesscripts/export_jianying.pyruns5,740 bytesscripts/jianying/__init__.pyruns49 bytesscripts/jianying/builders.pyruns11,062 bytesscripts/jianying/model.pyruns2,796 bytesscripts/jianying/optional.pyruns1,012 bytesscripts/jianying/schema.pyruns2,600 bytesscripts/jianying/templates.pyruns1,064 bytesscripts/jianying/timeline_contract.pyruns5,914 bytesscripts/jianying/tracks.pyruns2,068 bytesscripts/jianying/writer.pyruns7,973 bytesscripts/lib.pyruns13,254 bytesscripts/loudness.pyruns15,008 bytesscripts/media.pyruns13,897 bytesscripts/narration_audio.pyruns20,387 bytesscripts/packaging.pyruns5,586 bytesscripts/render_preflight.pyruns3,481 bytesscripts/source_score.pyruns24,274 bytesscripts/source_subtitles.pyruns21,111 bytesscripts/subtitles/__init__.pyruns56 bytesscripts/subtitles/core.pyruns15,097 bytesscripts/subtitles/render.pyruns3,577 bytesscripts/subtitles/track.pyruns12,677 bytesscripts/subtitles/track_binding.pyruns10,175 bytesscripts/timeline.pyruns8,371 bytesscripts/timeline_emit.pyruns7,774 bytesscripts/visual_render.pyruns18,372 bytes
Read SKILL.md
## 1. 定位
本技能负责最终合成:
1. 把各段旁白音频放到视频时间线上。
2. 在旁白窗口内用固定包络压低原声(盖住原声对白时与落在安静段时各用一档音量),间隙恢复原声。
3. 根据旁白位置生成 `subtitles.srt`;默认同时生成并烧录 `subtitles.ass`,`--no-burn-subtitles` 可关闭。不烧录时(关闭或降级),`subtitles.srt` 复制到成片旁,名为 `recap_<stem>.srt`;烧录时删掉旧的同名外挂字幕。
4. 可选把最终响度标准化到目标 LUFS:两遍 loudnorm,只用一个恒定增益,不做动态压缩;混音的真峰值放不下这么大的增益时,先过 4 倍过采样的真峰值限幅器(最多削 `LOUDNESS_LIMITER_MAX_DB`,默认 6 dB),超出部分才下调目标响度。真峰值目标针对交付的 AAC 文件:AAC 编码会让真峰值比 PCM 混音高 0.3–1.4 dB,所以首次渲染瞄准 TP 下 0.5 dB,渲染后解码成片实测;仍超过 -1 dBTP 时按超出量再降 0.1 dB 只重编码音频(画面流复制),最多两次,仍超出则以 `delivered_true_peak_over_target` 阻断。ffmpeg 实际用的模式、限幅量与成片实测值记在 `assembly_qc.json` 的 `loudness_mode` 与 `loudnorm_final_pass`(`delivered`)。
5. 成片不带原片的容器元数据(`title`、`comment` 等标签与章节)。
## 2. 声音收尾契约
合成阶段只实现创作决定,不凭空制造决定。Agent 在写旁白位置前,已在 `visual_audio_board.json` 为每个 beat 指定 `audio_owner`:
View the complete source on GitHubvideo-cut
When your agent uses it
把长视频按 Agent 选择的原片区间剪成短片。作为两阶段创作流程中的剪辑环节,读取 clip_plan.json 与源视频, 输出 edited_source.mp4;随后 Agent 按输出时间线写 narration.json。支持单视频与多视频(sources manifest)拼剪, 本工具不读取、不映射旁白。 触发词:视频剪辑、剪辑式解说、video cut、clip plan、拼剪。
What it loads into context
Frontmatter
116 tokensAlways available to the agent
SKILL.md
3,513 tokensWhen the skill is activated
Reference documents
1,566 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 定位
- 2. 输入契约
- 3. 剪辑意图契约
- 4. 运行命令
- 5. 输出契约
- 6. 边界与时间线规则
- 7. 能力边界
Scripts executed separately
scripts/cut.pyscripts/cut_cli.pyscripts/cut_contract.pyscripts/cut_qc.pyscripts/cut_render.pyscripts/frame_grid.pyscripts/lib.pyscripts/media_geometry.pyscripts/narrative_selection.pyscripts/sentence_boundaries.pyscripts/sentence_gate.pyscripts/shot_review.py
Files
SKILL.mdcore11,734 bytesSKILL.mdcore11,734 bytesSKILL.mdcore11,734 bytesSKILL.mdcore11,734 bytesSKILL.mdcore11,734 bytesreferences/shot-review.mddoc5,570 bytesscripts/cut.pyruns169 bytesscripts/cut_cli.pyruns11,648 bytesscripts/cut_contract.pyruns12,842 bytesscripts/cut_qc.pyruns2,674 bytesscripts/cut_render.pyruns13,582 bytesscripts/frame_grid.pyruns10,854 bytesscripts/lib.pyruns4,556 bytesscripts/media_geometry.pyruns16,360 bytesscripts/narrative_selection.pyruns8,972 bytesscripts/sentence_boundaries.pyruns27,827 bytesscripts/sentence_gate.pyruns8,766 bytesscripts/shot_review.pyruns17,087 bytes
Read SKILL.md
## 1. 定位
本技能只执行 Agent 已经做出的剪辑决定:
1. 校验并补全 `clip_plan.json`,写出带 `clip_id`、原片/输出时间与时长的 `clip_plan_validated.json`。
2. 先避开原片硬切附近的闪帧风险,再把边界吸附到可靠句末/自然停顿;声音完整性拥有最终优先级。
3. 把每个入点对齐到源视频帧网格、每段时长对齐到整数个输出帧(不足一帧的移动,优先选句界门禁仍判为安全、仍在停顿内的一侧;两侧同样安全时选不跨过原片硬切的一侧,避免闪一帧),句界门禁检查的是对齐后的边界。
4. 拼接选定区间,输出恒定帧率的 `edited_source.mp4`,帧数与 `clip_plan_validated.json` 记录的一致。
5. 到此停止,由 Agent 按真实输出时间线写 `narration.json`;本工具不读取旁白,也不做原片→输出映射。
渲染缓存按输入与设置复用。`edited_source.mp4.meta.json` 记录标准化 clips、渲染设置和每个源文件的 `size`/`mtime_ns`;三者与当前一致且 `edited_source.mp4` 存在非空才复用,任一不同即重渲染。只有 sidecar 而没有媒体文件不复用。
## 2. 输入契约
View the complete source on GitHubvideo-recap
When your agent uses it
从输入视频生成中文解说成片或原声剧情短片。用户提供 .mp4 / .mov / .mkv / .webm,并要求剪辑、添加旁白、 配音、总结、短剧/电视剧/电影/纪录片/科普解说时使用。负责编排 video-* 技能链:视频理解 → Agent 制定故事与视听方案 → 剪辑 → 配音 → 合成。触发词:视频解说、视频旁白、生成解说、 视频 recap、video recap、voiceover、narration、auto-dub、recap。
What it loads into context
Frontmatter
138 tokensAlways available to the agent
SKILL.md
4,878 tokensWhen the skill is activated
Reference documents
19,077 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 定位与流程
- 2. 创作职责
- 3. 环境与脚本路径
- 4. 标准解说流程(audio-mode narration)
- 5. 英译中原声复刻模式
- 6. 自检与只读 dashboard
- 7. 输出与参数
- 8. 能力边界
Scripts executed separately
scripts/doctor.pyscripts/final_qc.pyscripts/lib.pyscripts/library.pyscripts/materials.pyscripts/recap.pyscripts/recap_cli.pyscripts/recap_inspect.pyscripts/recap_review.pyscripts/recap_runner.pyscripts/recap_runtime.pyscripts/recap_source.pyscripts/recap_stage_qc.pyscripts/recap_timeline.pyscripts/resources/__init__.pyscripts/resources/lock.pyscripts/resources/project_binding.py
Files
SKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesSKILL.mdcore17,221 bytesreferences/audio-routing.mddoc7,245 bytesreferences/config-playbook.mddoc13,079 bytesreferences/data-schema.mddoc36,172 bytesreferences/resource-library.mddoc10,146 bytesscripts/doctor.pyruns13,727 bytesscripts/final_qc.pyruns15,918 bytesscripts/lib.pyruns10,357 bytesscripts/library.pyruns27,579 bytesscripts/materials.pyruns14,006 bytesscripts/recap.pyruns183 bytesscripts/recap_cli.pyruns9,088 bytesscripts/recap_inspect.pyruns18,630 bytesscripts/recap_review.pyruns2,894 bytesscripts/recap_runner.pyruns28,906 bytesscripts/recap_runtime.pyruns12,639 bytesscripts/recap_source.pyruns9,263 bytesscripts/recap_stage_qc.pyruns2,828 bytesscripts/recap_timeline.pyruns29,321 bytesscripts/resources/__init__.pyruns200 bytesscripts/resources/lock.pyruns7,157 bytesscripts/resources/project_binding.pyruns15,025 bytes
Read SKILL.md
## 1. 定位与流程
本技能是五个独立技能的轻量编排器。各技能只通过 `work_dir` 中的 JSON / MP4 产物通信,不共享代码:
```text
video-understanding ─▶ Agent 按 video-script 制定方案并写稿 ─▶ [video-cut] ─▶ video-voiceover ─▶ video-assemble
```
把成片拆成制作参考不是生产路径。用户要求时:对成片跑 video-understanding(建议 `ASR_SEGMENT_SECONDS=5`),
再用 video-reference 做 measure、标注、check、export,把导出的 `production_reference.json` 复制进下一次运行的
`work_dir`,或登记成资源库的 `production_reference` 模板、采纳后经 `--project` 绑定。recap 不会自动运行它,也不拿新成片与参考做比对。
流程支持断点续跑:写好 `narration.json` 后重复同一条命令即可继续。第二阶段会比对
`recap_run_manifest.json` 记录的源视频路径、文件大小/修改时间与运行参数,拒绝复用来自其他源视频或其他参数的旧工作目录;视频理解产物也只在来源一致时复用。View the complete source on GitHubvideo-reference
When your agent uses it
按需把一部成片拆成可复用的制作参考:测镜头节奏与响度,标注段落与音轨分工,把原片事实与可迁移方法分开, 导出不含原片人名台词的 production_reference.json 供下次制作参考。不在默认生产路径上。 触发词:拆片、拆解成片、制作参考、参考模板、production reference。
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
2,936 tokensWhen the skill is activated
Reference documents
2,965 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 定位
- 2. 输入
- 3. 流程
- 4. 分离规则
- 5. 交付与使用
- 6. 能力边界
Scripts executed separately
scripts/lib.pyscripts/reference.pyscripts/reference_check.pyscripts/reference_frames.pyscripts/reference_measure.pyscripts/reference_profile.py
Files
SKILL.mdcore9,672 bytesSKILL.mdcore9,672 bytesreferences/reference-schema.mddoc9,258 bytesscripts/lib.pyruns3,049 bytesscripts/reference.pyruns5,286 bytesscripts/reference_check.pyruns29,054 bytesscripts/reference_frames.pyruns5,715 bytesscripts/reference_measure.pyruns12,090 bytesscripts/reference_profile.pyruns11,485 bytes
Read SKILL.md
## 1. 定位
本技能把一部**已完成的成片**拆成下一次制作可参考的方法与数值,按需在本地运行。它只写自己的测量、标注与导出物,不调用 MiMo,也不对生产流程评分或拦截。
Agent 的角色是**拆片编辑**:先如实记录"这部片子怎么做的"(事实),再提炼"换一部素材还能怎么用"(方法)。
两者必须分开:事实只留在本地工作目录,导出物只含方法和测得的数值。
## 2. 输入
- 成片文件(`.mp4 / .mov / .mkv / .webm`)。
- 对**这部成片**跑出的视频理解产物目录 `U`(建议 `ASR_SEGMENT_SECONDS=5`,窗口越短,旁白语速越准)。
本技能读取其中可选的 `asr_result.json`、`asr_timing_evidence.json`、`background_research.json`、`understanding_index.json`
(其 `characters` 的名字、别名与 ASR 提及都进入人名泄漏扫描);
标注时 Agent 还应看故事板 / contact sheet 与 `vlm_analysis.json`。View the complete source on GitHubvideo-script
When your agent uses it
对已完成分析的视频进行导演与剪辑策划,再写带时间戳的中文解说并校验;也处理已有短片的 宣发标题、花字修订和外部文案回填。普通策划输入 work_dir 的 agent_narration_brief.md 与 vlm_analysis.json;文案返修输入当前成片的工程与内容证据。策划输出 recap_story_plan.json、visual_audio_board.json、 可选 style_card.json、cut 模式需要的 clip_plan.json,以及通过校验的 narration.json;仅宣发文案任务交付提案或回填既有包装计划。 外发说明:只有建议型评审 review.py 联网,它把旁白稿全文与理解证据、策划文件的文字摘录发到 MiMo chat 接口 (MIMO_API_KEY / MIMO_API_URL,不发视频、图片或音频);单独使用时只在显式执行时运行,端到端编排默认在 TTS 前运行一次, 可用 --no-review-narration / REVIEW_NARRATION=0 关闭(严格评审开启时除外);validate.py 与 lint 仅在本地运行。 触发词:解说词、写解说、视频旁白、宣发标题、花字修订、文案回填、 narration script、写稿、解说文案、剪辑思路、导演思路。
What it loads into context
Frontmatter
313 tokensAlways available to the agent
SKILL.md
5,303 tokensWhen the skill is activated
Reference documents
6,251 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 定位
- 2. 远程调用与数据外发
- 3. 读取素材并确认状态
- 4. 制定创作方案
- 5. 撰写旁白
- 6. 创作自审
- 7. 评审与校验
- 8. 能力边界
Scripts executed separately
scripts/agent_text.pyscripts/deslop_qc.pyscripts/entry_suggestion.pyscripts/evidence_bundle.pyscripts/lib.pyscripts/lint_summary.pyscripts/narration_lint.pyscripts/review.pyscripts/review_grounding.pyscripts/review_response.pyscripts/review_runner.pyscripts/speech_ownership.pyscripts/validate.py
Files
SKILL.mdcore18,362 bytesSKILL.mdcore18,362 bytesSKILL.mdcore18,362 bytesreferences/creative-editing-playbook.mddoc13,952 bytesreferences/promotional-copy.mddoc5,170 bytesreferences/research-guide.mddoc3,189 bytesscripts/agent_text.pyruns2,010 bytesscripts/deslop_qc.pyruns9,527 bytesscripts/entry_suggestion.pyruns5,015 bytesscripts/evidence_bundle.pyruns13,759 bytesscripts/lib.pyruns12,063 bytesscripts/lint_summary.pyruns8,331 bytesscripts/narration_lint.pyruns30,199 bytesscripts/review.pyruns157 bytesscripts/review_grounding.pyruns8,349 bytesscripts/review_response.pyruns25,350 bytesscripts/review_runner.pyruns7,307 bytesscripts/speech_ownership.pyruns8,897 bytesscripts/validate.pyruns6,431 bytes
Read SKILL.md
## 1. 定位
只改宣发标题、封面、花字或回填外部文案时,直接读 `references/promotional-copy.md`,
按当前短片的观看理由和兑现位置处理指定文字层,不重做下述策划/旁白链。
普通解说写作不因此增加平台调研或包装任务。
本技能负责创作方向、画面与声音计划、旁白写作及校验。Agent 依次从以下五个角度作出决定:
1. 导演
2. 故事编辑
3. 画面剪辑师
4. 声音/旁白编辑
5. 第一次观看的观众
View the complete source on GitHubvideo-understanding
When your agent uses it
把视频分析为结构化理解索引:场景检测、ASR 转写、逐场景 VLM 观察、静音窗口、融合时间线和写作 brief。 用于理解、索引或总结视频,也作为后续创作前的分析阶段。输入视频文件;输出 scenes.json、 asr_result.json、vlm_analysis.json、silence_periods.json、timeline_fusion.json、agent_narration_brief.md。 触发词:视频理解、视频分析、视频索引、video understanding、analyze video、看懂视频。
What it loads into context
Frontmatter
138 tokensAlways available to the agent
SKILL.md
2,455 tokensWhen the skill is activated
Reference documents
3,273 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 定位
- 2. 处理阶段
- 3. 环境要求
- 4. 运行命令
- 5. 输出契约
- 6. 参考资料
- 7. 能力边界
Scripts executed separately
scripts/agent_text.pyscripts/asr.pyscripts/asr_timing_evidence.pyscripts/briefing/__init__.pyscripts/briefing/builder.pyscripts/briefing/context.pyscripts/briefing/inputs.pyscripts/briefing/timeline.pyscripts/consolidate.pyscripts/detect.pyscripts/extract.pyscripts/index_normalize.pyscripts/lib.pyscripts/storyboard.pyscripts/timeline_fusion.pyscripts/understand.pyscripts/understanding_brief.pyscripts/understanding_cache.pyscripts/understanding_runner.pyscripts/understanding_storyboard.pyscripts/vlm.py
Files
SKILL.mdcore8,117 bytesSKILL.mdcore8,117 bytesSKILL.mdcore8,117 bytesreferences/data-schema.mddoc6,218 bytesreferences/prompt-templates.mddoc1,708 bytesreferences/research-guide.mddoc2,880 bytesscripts/agent_text.pyruns7,379 bytesscripts/asr.pyruns11,581 bytesscripts/asr_timing_evidence.pyruns9,958 bytesscripts/briefing/__init__.pyruns101 bytesscripts/briefing/builder.pyruns28,763 bytesscripts/briefing/context.pyruns13,844 bytesscripts/briefing/inputs.pyruns9,105 bytesscripts/briefing/timeline.pyruns18,812 bytesscripts/consolidate.pyruns27,417 bytesscripts/detect.pyruns25,952 bytesscripts/extract.pyruns2,559 bytesscripts/index_normalize.pyruns14,305 bytesscripts/lib.pyruns23,644 bytesscripts/storyboard.pyruns24,654 bytesscripts/timeline_fusion.pyruns3,102 bytesscripts/understand.pyruns192 bytesscripts/understanding_brief.pyruns8,770 bytesscripts/understanding_cache.pyruns12,607 bytesscripts/understanding_runner.pyruns14,528 bytesscripts/understanding_storyboard.pyruns13,614 bytesscripts/vlm.pyruns29,109 bytes
Read SKILL.md
## 1. 定位
本技能把源视频转成 Agent 与下游阶段可读取的理解索引,以**素材观察员 / 场记**的角色记录证据:
- 先观察,再解释;事实与推断分开。
- 除了“发生了什么”,还要让下游看见知识、权力、目标、关系或情绪在哪一刻变化。
- 标出由谁的 POV 承载变化、哪个反应或表演不可替代,以及哪里存在完整台词/动作的自然剪辑边界。
- 证据不足时保留不确定性,不制造戏剧结论。
## 2. 处理阶段
1. **场景检测**:写 `scenes.json`,包含切点、时长和废片段过滤结果。
2. **抽帧**:为视觉分析提取代表帧。
3. **ASR**:通过 `mimo-v2.5-asr` 写粗分段对白 `asr_result.json`,并写View the complete source on GitHubvideo-voiceover
When your agent uses it
把带时间戳的 narration.json 合成为中文解说音频。使用 MiMo TTS(mimo-v2.5-tts)或 Fish Audio(s2.1-pro-free)或显式配置的通用 IndexTTS HTTP 服务逐段生成语音, 按时间窗动态适配语速并处理响度;输入输出时间线上的旁白,产出 tts_segments 与 tts_meta.json。 外发说明:每段旁白文字会发给所选 TTS 服务(MiMo / Fish Audio / 用户自托管的 IndexTTS),--voice-ref 的参考音频会发给 MiMo。 另含实验性的英译中 dub 路径:只在显式选择 dub 模式并传 --confirm-voice-rights 时运行,会把源视频音频发到 MiMo ASR, 并以原说话人的声音为参考经 MiMo voiceclone 克隆配音;只可用于用户有权使用、且说话人同意被克隆声音的内容。 触发词:配音、语音合成、TTS、解说配音、 voiceover、text to speech、旁白配音。
What it loads into context
Frontmatter
274 tokensAlways available to the agent
SKILL.md
3,452 tokensWhen the skill is activated
Reference documents
432 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 定位
- 2. 远程服务与数据外发
- 3. 环境要求
- 4. 输入契约
- 5. 运行命令
- 6. 输出契约
- 7. 运行规则
- 8. 实验性 dub 配音(英译中、克隆原声)
- 9. 能力边界
Scripts executed separately
scripts/approved_text_policy.pyscripts/dub.pyscripts/lib.pyscripts/providers/__init__.pyscripts/providers/fish_audio.pyscripts/providers/index_tts.pyscripts/tts_audio.pyscripts/tts_cache.pyscripts/voiceover.py
Files
SKILL.mdcore11,341 bytesSKILL.mdcore11,341 bytesSKILL.mdcore11,341 bytesreferences/index-tts.mddoc1,553 bytesscripts/approved_text_policy.pyruns4,486 bytesscripts/dub.pyruns26,601 bytesscripts/lib.pyruns14,617 bytesscripts/providers/__init__.pyruns85 bytesscripts/providers/fish_audio.pyruns3,234 bytesscripts/providers/index_tts.pyruns7,490 bytesscripts/tts_audio.pyruns6,896 bytesscripts/tts_cache.pyruns4,093 bytesscripts/voiceover.pyruns33,172 bytes
Read SKILL.md
## 1. 定位
本技能读取带时间戳的旁白稿,为每一段生成独立音频,并把语音适配到对应时间窗,随后记录下游合成所需的放置元数据。
默认引擎是 MiMo TTS(`mimo-v2.5-tts`);也可显式选择 Fish Audio(默认模型 `s2.1-pro-free`)。
## 2. 远程服务与数据外发
本技能按所选 TTS 或 dub 路径联网。表中的实读文本指 `narration.json` 段落去掉格式与舞台提示后的文字。
| 路径 | 服务与凭据 | 发送内容 |
|------|------------|----------|
| 默认解说 TTS(`--tts-provider auto\|mimo-tts`) | MiMo chat 接口 `<MIMO_TTS_API_URL 或 MIMO_API_URL>/chat/completions`,`MIMO_TTS_API_KEY` 或 `MIMO_API_KEY`,模型 `mimo-v2.5-tts` | 每段实读文本、一句自然语言语气/语速指令(由段的 `emotion` 与时间窗算出)、内置音色名(默认 `冰糖`);`auto` 下 MiMo key 缺失且设置了 `FISH_API_KEY` 时改走 Fish Audio 行 |
| 解说声音克隆(`--voice-ref <audio>` / `VOICE_REF`) | 同上,模型 `mimo-v2.5-tts-voiceclone` | 上述内容,外加参考音频(转成 24 kHz 单声道 WAV,最长 30 秒)的 base64,每段请求都带 |
| Fish Audio(`--tts-provider fish-audio`) | `FISH_TTS_API_URL`(默认 `https://api.fish.audio/v1/tts`),`FISH_API_KEY` | 每段实读文本、数值语速、音色 ID `FISH_TTS_REFERENCE_ID`;不发送本地音频 |View the complete source on GitHubSkills included
- short-drama
- short-drama-assets
- short-drama-breakdown
- short-drama-develop
- short-drama-edit
- short-drama-image-prompts
- short-drama-novel-analyze
- short-drama-produce
- short-drama-review
- short-drama-storyboard
- short-drama-video-prompts
- short-drama-write
- game-art-direction
- game-build
- game-concept
- game-qa
- game-world-design
- novel-game-analyze
- novel-to-game
- browser-cdp
- story
- story-cover
- story-deslop
- story-import
- story-long-analyze
- story-long-scan
- story-long-write
- story-publish
- story-review
- story-setup
- story-short-analyze
- story-short-scan
- story-short-write
- video-assemble
- video-cut
- video-recap
- video-reference
- video-script
- video-understanding
- video-voiceover
Repository facts
- License
- MIT
- Created
- Aug 19, 2026
- Last pushed
- Nov 6, 2026
- Forks
- 104
- Open issues
- 3
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 67 notes
packages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-develop/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-develop/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 6 dangerous shell commandsin 2 files: browser-cdp/SKILL.md:95 story-cover/references/api-fallback.md:35
- 259 network referencesin 48 files: short-drama-produce/scripts/provider_adapters.py:30 story-long-scan/scripts/fanqie-rank-scraper.js:342 story-cover/references/api-fallback.md:8 and 45 more
- 18 obfuscation signalsin 16 files: short-drama-produce/scripts/fixture_adapter.py:22 story-import/scripts/build_outline_brief.py:202 short-drama-produce/scripts/provider_adapters.py:1425 and 13 more
- No instruction overrides
- 208 executable scriptsin 208 files: short-drama-breakdown/scripts/breakdown_tool.py:1 short-drama-breakdown/scripts/selftest.py:1 short-drama-develop/scripts/episode_intake.py:1 and 205 more
- 270 references to secretsin 42 files: video-recap/scripts/lib.py:37 video-understanding/scripts/lib.py:37 video-voiceover/scripts/lib.py:38 and 39 more
- No requests to vote in Hot
Show all 761 signals by file
packages/knowledge/drama/skills/short-drama-breakdown/scripts/breakdown_tool.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-breakdown/scripts/selftest.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-develop/scripts/episode_intake.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-develop/scripts/selftest.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/README.md
- Network accessline 69
使用 Remotion 前,按其[官方许可证](https://github.com/remotion-dev/remotion/blob/main/LICENSE.md)
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/package.json
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/remotion.config.ts
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/font.ts
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/index.ts
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/schema.ts
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts
- Executable scriptline 1
Executable file
packages/knowledge/drama/skills/short-drama-edit/scripts/edit_tool.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-edit/scripts/selftest.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-novel-analyze/scripts/novel_index.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-novel-analyze/scripts/selftest.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-produce/references/providers/gpt-image-2.md
- Network accessline 9
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 10
`https://api.openai.com/v1` and must remain HTTPS. - Network accessline 22
Protocol references: [GPT Image 2 model](https://developers.openai.com/api/docs/models/gpt-image-2), - Network accessline 23
[image generation](https://developers.openai.com/api/reference/resources/images/methods/generate), and - Network accessline 24
[image edits](https://developers.openai.com/api/reference/resources/images/methods/edit).
packages/knowledge/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md
packages/knowledge/drama/skills/short-drama-produce/references/providers/minimax-music.md
- Network accessline 9
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 10
`https://api.minimax.io/v1` and must remain HTTPS. - Network accessline 25
Protocol reference: [MiniMax Music Generation](https://platform.minimax.io/docs/api-reference/music-generation).
packages/knowledge/drama/skills/short-drama-produce/references/providers/minimax-speech.md
- Network accessline 9
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 10
`https://api.minimax.io/v1` and must remain HTTPS. - Network accessline 43
Protocol reference: [MiniMax Text to Speech](https://platform.minimax.io/docs/api-reference/speech-t2a-http).
packages/knowledge/drama/skills/short-drama-produce/references/providers/seedance.md
packages/knowledge/drama/skills/short-drama-produce/scripts/fixture_adapter.py
packages/knowledge/drama/skills/short-drama-produce/scripts/production_tool.py
packages/knowledge/drama/skills/short-drama-produce/scripts/provider_adapters.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 30
OPENAI_MODEL = "gpt-image-2" MINIMAX_MUSIC_MODEL = "music-3.0" OPENAI_BASE_URL = "https://api.openai.com/v1" - Network accessline 31
MINIMAX_MUSIC_MODEL = "music-3.0" OPENAI_BASE_URL = "https://api.openai.com/v1" SEEDANCE_BASE_URL = "https://ark.cn-beijing.volces.com/api/v3" - Network accessline 32
OPENAI_BASE_URL = "https://api.openai.com/v1" - Network accessline 33
SEEDANCE_BASE_URL = "https://ark.cn-beijing.volces.com/api/v3" - Network accessline 34
MINIMAX_BASE_URL = "https://api.minimax.io/v1" - Network accessline 35
MINIMAX_VIDEO_BASE_URL = "https://api.minimax.io/v2" - Access to secretsline 460
[Credential-related source omitted] - Access to secretsline 466
[Credential-related source omitted] - Access to secretsline 467
[Credential-related source omitted] - Access to secretsline 636
[Credential-related source omitted] - Access to secretsline 650
[Credential-related source omitted] - Access to secretsline 651
[Credential-related source omitted] - Access to secretsline 890
[Credential-related source omitted] - Access to secretsline 902
[Credential-related source omitted] - Network accessline 919
) -> tuple[dict[str, Any], Mapping[str, str]]: data = None if body is None else json.dumps(body, ensure_ascii=False).encode("utf-8") request = urllib.request.Request(url, data=data, method=method) - Network accessline 920
data = None if body is None else json.dumps(body, ensure_ascii=False).encode("utf-8") request = urllib.request.Request(url, data=data, method=method) request.add_header("Authorization", f"Bearer {token}") - Network accessline 921
request = urllib.request.Request(url, data=data, method=method) - Network accessline 924
request.add_header("Content-Type", "application/json") try: with urllib.request.urlopen(request, timeout=180) as response: - Network accessline 925
try: with urllib.request.urlopen(request, timeout=180) as response: raw = response.read(MAX_JSON_RESPONSE + 1) - Network accessline 926
with urllib.request.urlopen(request, timeout=180) as response: - Network accessline 1198
size = 0 try: with urllib.request.urlopen(url, timeout=180) as response, path.open("xb") as handle: - Network accessline 1199
try: with urllib.request.urlopen(url, timeout=180) as response, path.open("xb") as handle: while chunk := response.read(1024 * 1024): - Network accessline 1200
with urllib.request.urlopen(url, timeout=180) as response, path.open("xb") as handle: - Access to secretsline 1269
[Credential-related source omitted] - Access to secretsline 1274
[Credential-related source omitted] - Access to secretsline 1313
[Credential-related source omitted] - Access to secretsline 1314
[Credential-related source omitted] - Access to secretsline 1365
[Credential-related source omitted] - Network accessline 1369
if references: encoded, content_type = _multipart(body, references) request = urllib.request.Request(f"{base}/images/edits", data=encoded, method="POST") - Network accessline 1370
encoded, content_type = _multipart(body, references) request = urllib.request.Request(f"{base}/images/edits", data=encoded, method="POST") request.add_header("Authorization", f"Bearer {token}") - Network accessline 1371
request = urllib.request.Request(f"{base}/images/edits", data=encoded, method="POST") - Network accessline 1373
request.add_header("Content-Type", content_type) try: with urllib.request.urlopen(request, timeout=300) as response: - Network accessline 1374
try: with urllib.request.urlopen(request, timeout=300) as response: raw = response.read(MAX_JSON_RESPONSE + 1) - Network accessline 1375
with urllib.request.urlopen(request, timeout=300) as response: - Possible obfuscationline 1425
content = base64.b64decode(image, validate=True) - Access to secretsline 1436
[Credential-related source omitted] - Access to secretsline 1474
[Credential-related source omitted] - Access to secretsline 1512
[Credential-related source omitted] - Access to secretsline 1517
[Credential-related source omitted] - Access to secretsline 1558
[Credential-related source omitted] - Access to secretsline 1560
[Credential-related source omitted]
packages/knowledge/drama/skills/short-drama-produce/scripts/selftest.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-video-prompts/references/minimax-h3.md
- Network accessline 296
- [Base 提示词指南](https://github.com/MiniMax-AI/MiniMax-H3/blob/main/skills/h3-prompt-writing/references/base-en.txt):对白位置、说话人、语速描述、切镜时间戳与跨镜发声。 - Network accessline 297
- [Full-reference 指南](https://github.com/MiniMax-AI/MiniMax-H3/blob/main/skills/h3-prompt-writing/references/ref-en.txt):六段结构、音频引用与复用语义。 - Network accessline 298
- [视频生成 API](https://platform.minimax.io/docs/api-reference/video-generation-v2-create):必填时长、型号差异和输入模式互斥。 - Network accessline 299
- [官方 CLI 的 H3 指南](https://github.com/MiniMax-AI/cli/blob/main/skill/h3-video/references/h3-video.md):音频配合视觉参考,声音对齐与生成后检查。 - Network accessline 300
- [Context-IR API](https://platform.minimax.io/docs/api-reference/video-generation-v2-h3-context-ir):提示词增强和独立的时长输入。
packages/knowledge/drama/skills/short-drama-video-prompts/references/seedance-2.0.md
packages/knowledge/drama/skills/short-drama-video-prompts/references/seedance-2.5.md
packages/knowledge/drama/skills/short-drama-video-prompts/references/wan-3.0.md
- Network accessline 104
依据(2026-09-26 核对):[Wan 3.0 视频生成 API](https://help.aliyun.com/zh/model-studio/wan3-video-generation-api-reference): - Network accessline 105
输入模式与互斥、素材上限、时长、`prompt_extend`、编辑与延长; [Wan 3.0 视频生成指南](https://platform.qianwenai.com/docs/developer-guides/video-generation/wan30-video): 时间段写法、`说道` 对白、素材编号、编辑与延长关键词。 - Network accessline 106
[Wan 3.0 视频生成指南](https://platform.qianwenai.com/docs/developer-guides/video-generation/wan30-video):
packages/knowledge/drama/skills/short-drama-write/scripts/duration_estimate.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama-write/scripts/screenplay_index.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 725
if combined != old_text: continue requests.append( - Network accessline 726
continue requests.append( { - Network accessline 727
requests.append( - Network accessline 760
if combined != new_text: continue requests.append( - Network accessline 761
continue requests.append( { - Network accessline 762
requests.append(
packages/knowledge/drama/skills/short-drama-write/scripts/selftest.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama/scripts/creator_markdown_check.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama/scripts/project_tool.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/drama/skills/short-drama/scripts/selftest.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/browser-cdp/SKILL.md
- Network accessline 2
name: browser-cdp description: "Use this skill when you need to control a Chrome browser via CDP (Chrome DevTools Protocol) to reuse existing login sessions. Covers: launching Chrome in debug mode, opening URLs, waiting for page load, evalu - Network accessline 3
description: "Use this skill when you need to control a Chrome browser via CDP (Chrome DevTools Protocol) to reuse existing login sessions. Covers: launching Chrome in debug mode, opening URLs, waiting for page load, evaluating JavaScript, - Network accessline 4
metadata: {"openclaw":{"requires":{"bins":["agent-browser"]},"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} - Network accessline 33
CDP_STATUS=ready # 已就绪,可直接复用 CDP_URL=http://127.0.0.1:9222/json/version - Network accessline 34
CDP_URL=http://127.0.0.1:9222/json/version - Dangerous shell operationline 95
agent-browser --cdp 9222 eval 'document.body.innerText.substring(0, 8000)' - Dangerous shell operationline 103
agent-browser --cdp 9222 eval 'localStorage.getItem("token") || document.cookie' - Dangerous shell operationline 150
$job = Start-Job { agent-browser --cdp 9222 eval "window.location.replace('https://www.qidian.com/rank/')" } - Network accessline 150
$job = Start-Job { agent-browser --cdp 9222 eval "window.location.replace('https://www.qidian.com/rank/')" } - Dangerous shell operationline 160
timeout 30 agent-browser --cdp 9222 eval "window.location.replace('https://www.qidian.com/rank/')" || echo "⏱ CDP 操作超时(30s),请重试或手动打断" - Network accessline 160
timeout 30 agent-browser --cdp 9222 eval "window.location.replace('https://www.qidian.com/rank/')" || echo "⏱ CDP 操作超时(30s),请重试或手动打断"
packages/knowledge/oh-story/skills/story-cover/SKILL.md
- Network accessline 3
version: 1.0.0 description: "小说封面生成与提示词设计。根据书名、作者名和题材构建封面提示词;用户只要提示词时不生图,要求封面图时调用 GPT-Image-2,Codex CLI 优先使用内置 ImageGen。触发方式:/story-cover、/封面、「帮我做个封面」「生成封面图」「封面提示词」「封面设计」。" metadata: {"openclaw":{"requires":{"env":["GPT_IMAGE_API_KEY"],"bin - Network accessline 4
description: "小说封面生成与提示词设计。根据书名、作者名和题材构建封面提示词;用户只要提示词时不生图,要求封面图时调用 GPT-Image-2,Codex CLI 优先使用内置 ImageGen。触发方式:/story-cover、/封面、「帮我做个封面」「生成封面图」「封面提示词」「封面设计」。" metadata: {"openclaw":{"requires":{"env":["GPT_IMAGE_API_KEY"],"bins":["curl","jq" - Network accessline 5
[Credential-related source omitted] - Access to secretsline 5
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted]
packages/knowledge/oh-story/skills/story-cover/references/api-fallback.md
- Network accessline 8
|:-----|:----:|:-----|:-----| | `GPT_IMAGE_API_KEY` | 是 | — | OpenAI 或兼容代理的 API Key | | `GPT_IMAGE_BASE_URL` | | `https://api.openai.com/v1` | 用兼容代理时改这个 | - Network accessline 9
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 10
| `GPT_IMAGE_BASE_URL` | | `https://api.openai.com/v1` | 用兼容代理时改这个 | - Network accessline 21
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Network accessline 22
: "${PROMPT:?请先 export PROMPT=构建提示词步骤拼好的完整提示词}" BASE_URL="${GPT_IMAGE_BASE_URL:-https://api.openai.com/v1}" MODEL="${GPT_IMAGE_MODEL:-gpt-image-2}" - Network accessline 23
BASE_URL="${GPT_IMAGE_BASE_URL:-https://api.openai.com/v1}" - Dangerous shell operationline 35
trap 'rm -f "$RESP"' EXIT - Network accessline 44
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Network accessline 74
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Network accessline 75
: "${PROMPT:?请先 export PROMPT=构建提示词步骤拼好的完整提示词}" BASE_URL="${GPT_IMAGE_BASE_URL:-https://api.openai.com/v1}" MODEL="${GPT_IMAGE_MODEL:-gpt-image-2}" - Network accessline 76
BASE_URL="${GPT_IMAGE_BASE_URL:-https://api.openai.com/v1}" - Dangerous shell operationline 90
trap '[ -n "$REF_TMP" ] && rm -f "$REF_TMP"; rm -f "$RESP"' EXIT - Network accessline 92
# URL 先下载到临时文件,本地路径直接用。用裸 mktemp 以保证 macOS/Linux 行为一致。 case "$REF_IMAGE" in http://*|https://*) - Network accessline 93
case "$REF_IMAGE" in http://*|https://*) REF_TMP=$(mktemp) - Network accessline 94
http://*|https://*) REF_TMP=$(mktemp) curl -fsSL --max-time 60 -o "$REF_TMP" "$REF_IMAGE" - Network accessline 95
REF_TMP=$(mktemp) curl -fsSL --max-time 60 -o "$REF_TMP" "$REF_IMAGE" REF_LOCAL="$REF_TMP" - Network accessline 96
curl -fsSL --max-time 60 -o "$REF_TMP" "$REF_IMAGE" - Network accessline 105
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted]
packages/knowledge/oh-story/skills/story-deslop/SKILL.md
- Network accessline 3
version: 1.0.0 description: "网文去AI味。从表达、叙事用笔、故事因果三层诊断并修复文本,保留作者文风与已定剧情。触发方式:/story-deslop、/去AI味、「去AI味」「这篇太AI了」「网文去AI味」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} - Network accessline 4
description: "网文去AI味。从表达、叙事用笔、故事因果三层诊断并修复文本,保留作者文风与已定剧情。触发方式:/story-deslop、/去AI味、「去AI味」「这篇太AI了」「网文去AI味」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} --- - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-deslop/scripts/check-ai-patterns.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-deslop/scripts/check-degeneration.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-deslop/scripts/normalize-punctuation.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-deslop/scripts/style-whitelist.js
- Executable scriptline 1
Executable file
packages/knowledge/oh-story/skills/story-import/SKILL.md
- Network accessline 3
version: 1.0.0 description: "逆向导入已有小说。将已写好的小说(半成品或完本)反向解析为标准项目目录结构,兼容 story-long-write / story-short-write 后续写作流程;内部复用 story-long-analyze / story-short-analyze 的拆解管道,按篇幅自动分流。触发方式:/story-import、「导入小说」「反向解析」「导入」「把我的书导进来」。" metadata: {"opencla - Network accessline 4
description: "逆向导入已有小说。将已写好的小说(半成品或完本)反向解析为标准项目目录结构,兼容 story-long-write / story-short-write 后续写作流程;内部复用 story-long-analyze / story-short-analyze 的拆解管道,按篇幅自动分流。触发方式:/story-import、「导入小说」「反向解析」「导入」「把我的书导进来」。" metadata: {"openclaw":{"source":"h - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-import/scripts/build_outline_brief.py
- Executable scriptline 1
#!/usr/bin/env python3 - Possible obfuscationline 202
" " + line for line in summary_lines(summary.read_text(encoding="utf-8").lstrip("<U+FEFF>"))] - Possible obfuscationline 246
"\n---\n\n<!-- 资料:outline-reverse-rules.md -->\n\n" + RULES.read_text(encoding="utf-8").lstrip("<U+FEFF>").strip()]
packages/knowledge/oh-story/skills/story-import/scripts/check-outline-contract.js
packages/knowledge/oh-story/skills/story-import/scripts/outline_view.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-import/scripts/tracking_commit.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-import/scripts/wordcount_core.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-analyze/SKILL.md
- Network accessline 3
version: 1.0.0 description: "长篇网文拆文。保留黄金三章、逐章摘要、剧情、情绪、节奏、角色、设定和文风接口,以连续章节块完成因果、双时间线、关系与三维节奏分析;兼容旧成果直接使用、按需增强和断点续跑。含可选三层灵感库管道(灵感库、跨书灵感聚合、更新灵感库)。触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」「深度拆解」「完整拆解」或提供小说文本文件路径。" metadata: {"opencl - Network accessline 4
description: "长篇网文拆文。保留黄金三章、逐章摘要、剧情、情绪、节奏、角色、设定和文风接口,以连续章节块完成因果、双时间线、关系与三维节奏分析;兼容旧成果直接使用、按需增强和断点续跑。含可选三层灵感库管道(灵感库、跨书灵感聚合、更新灵感库)。触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」「深度拆解」「完整拆解」或提供小说文本文件路径。" metadata: {"openclaw":{"source":" - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-analyze/scripts/inspiration_index.py
packages/knowledge/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py
packages/knowledge/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py
packages/knowledge/oh-story/skills/story-long-scan/SKILL.md
- Network accessline 3
version: 1.0.0 description: "长篇网文扫榜。分析起点、番茄、晋江、七猫等平台排行榜与新书数据,提炼市场趋势与热门题材。触发方式:/story-long-scan、/长篇扫榜、「长篇什么火」「起点排行」「扫七猫新书」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} - Network accessline 4
description: "长篇网文扫榜。分析起点、番茄、晋江、七猫等平台排行榜与新书数据,提炼市场趋势与热门题材。触发方式:/story-long-scan、/长篇扫榜、「长篇什么火」「起点排行」「扫七猫新书」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} --- - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-long-scan/references/platform-ciweimao.md
- Network accessline 24
终端提示「未解析到榜单」或文件头「数据质量」标了问题:在 Chrome 里打开 `https://www.ciweimao.com/rank-index`,确认页面正常、没有跳到登录或验证页,再重采。
packages/knowledge/oh-story/skills/story-long-scan/references/platform-fanqie.md
- Network accessline 33
文件头「数据质量」标 `[标题解析异常]`(书名多为 `(标题待解析)`):多半是被登录或验证页拦住,或页面改版。在已登录的 Chrome 里手动打开任一 `https://fanqienovel.com/page/{bookId}`,确认页面正常、不是验证页;报 `CDP 无响应` 就按 browser-cdp 重新启动 Chrome。确认正常后重采。
packages/knowledge/oh-story/skills/story-long-scan/scripts/aggregate-rank.js
packages/knowledge/oh-story/skills/story-long-scan/scripts/cdp-utils.js
- Executable scriptline 1
Executable file
packages/knowledge/oh-story/skills/story-long-scan/scripts/ciweimao-rank-scraper.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 22
const RANK_URL = "https://www.ciweimao.com/rank-index"; - Network accessline 109
if(t&&t.length>byId[id].length)byId[id]=t; }); return order.map(function(id){return {bookId:id,title:byId[id],url:'https://www.ciweimao.com/book/'+id};}); - Network accessline 110
}); return order.map(function(id){return {bookId:id,title:byId[id],url:'https://www.ciweimao.com/book/'+id};}); })())`; - Network accessline 111
return order.map(function(id){return {bookId:id,title:byId[id],url:'https://www.ciweimao.com/book/'+id};});
packages/knowledge/oh-story/skills/story-long-scan/scripts/fanqie-rank-scraper.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 342
const initCatId = ch === "1" ? "1141" : "1139"; // 男频:西方奇幻 / 女频:古风世情 const initUrl = `https://fanqienovel.com/rank/${ch}_${type}_${initCatId}`; - Network accessline 343
const initUrl = `https://fanqienovel.com/rank/${ch}_${type}_${initCatId}`; - Network accessline 394
try { ab(PORT, "open", `https://fanqienovel.com${cat.href}`); - Network accessline 395
ab(PORT, "open", `https://fanqienovel.com${cat.href}`); - Network accessline 429
bodyLines.push(`**最新更新:** ${b.lastChapterTitle || "未知"}`); bodyLines.push(`**bookId:** ${b.bookId}`); bodyLines.push(`[作品页](https://fanqienovel.com/page/${b.bookId})`); - Network accessline 430
bodyLines.push(`**bookId:** ${b.bookId}`); bodyLines.push(`[作品页](https://fanqienovel.com/page/${b.bookId})`); const desc = cleanDesc(info.desc); - Network accessline 431
bodyLines.push(`[作品页](https://fanqienovel.com/page/${b.bookId})`); - Network accessline 465
console.error( ` ✗ ${chLabel}${tyLabel}:${totalBooks} 本全部标题解析失败。多为详情页结构变动或登录/验证拦截,` + `请在 Chrome 内手动打开任一 https://fanqienovel.com/page/{bookId} 确认页面正常。` - Network accessline 466
` ✗ ${chLabel}${tyLabel}:${totalBooks} 本全部标题解析失败。多为详情页结构变动或登录/验证拦截,` + `请在 Chrome 内手动打开任一 https://fanqienovel.com/page/{bookId} 确认页面正常。` ); - Network accessline 467
`请在 Chrome 内手动打开任一 https://fanqienovel.com/page/{bookId} 确认页面正常。` - Network accessline 517
const ids = []; for (let page = 1; page <= PAGES; page++) { const url = `https://fanqienovel.com/library/${seg}/page_${page}?sort=hottes`; - Network accessline 518
for (let page = 1; page <= PAGES; page++) { const url = `https://fanqienovel.com/library/${seg}/page_${page}?sort=hottes`; ab(PORT, "open", url); - Network accessline 519
const url = `https://fanqienovel.com/library/${seg}/page_${page}?sort=hottes`; - Network accessline 561
body.push(`**最新更新:** ${info.lastChapterTitle || "未知"}`); body.push(`**bookId:** ${id}`); body.push(`[作品页](https://fanqienovel.com/page/${id})`); - Network accessline 562
body.push(`**bookId:** ${id}`); body.push(`[作品页](https://fanqienovel.com/page/${id})`); const desc = cleanDesc(info.desc); - Network accessline 563
body.push(`[作品页](https://fanqienovel.com/page/${id})`); - Network accessline 575
`# 番茄 · ${listName}`, "", `- 来源:https://fanqienovel.com/library/${seg}/page_1?sort=hottes`, - Network accessline 576
"", `- 来源:https://fanqienovel.com/library/${seg}/page_1?sort=hottes`, `- 筛选:${filters || "不限"};按「最热」排序,取前 ${PAGES} 页`, - Network accessline 577
`- 来源:https://fanqienovel.com/library/${seg}/page_1?sort=hottes`,
packages/knowledge/oh-story/skills/story-long-scan/scripts/jjwxc-rank-scraper.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 29
const BASE_URL = "https://www.jjwxc.net/topten.php"; - Network accessline 114
function buildDetailJS(ids) { return `Promise.all(${JSON.stringify(ids)}.map(function(id){ return fetch('/onebook.php?novelid='+id) - Network accessline 115
return `Promise.all(${JSON.stringify(ids)}.map(function(id){ return fetch('/onebook.php?novelid='+id) .then(function(r){return r.arrayBuffer()}) - Network accessline 116
return fetch('/onebook.php?novelid='+id) - Network accessline 314
const meta = seg.filter(Boolean).join(" · "); if (meta) lines.push(`*${meta}*`); if (b.novelid) lines.push(`[作品页](https://www.jjwxc.net/onebook.php?novelid=${b.novelid})`); - Network accessline 315
if (meta) lines.push(`*${meta}*`); if (b.novelid) lines.push(`[作品页](https://www.jjwxc.net/onebook.php?novelid=${b.novelid})`); lines.push(""); - Network accessline 316
if (b.novelid) lines.push(`[作品页](https://www.jjwxc.net/onebook.php?novelid=${b.novelid})`);
packages/knowledge/oh-story/skills/story-long-scan/scripts/qidian-rank-scraper.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 40
const PC_BASE_URL = "https://www.qidian.com/rank"; - Network accessline 41
const MOBILE_BASE_URL = "https://m.qidian.com"; - Network accessline 90
id: "sanjiang", label: "三江推荐", baseUrl: "https://www.qidian.com/sanjiang/", - Network accessline 91
label: "三江推荐", baseUrl: "https://www.qidian.com/sanjiang/", mobilePath: "/sanjiang/", - Network accessline 92
baseUrl: "https://www.qidian.com/sanjiang/", - Network accessline 98
id: "library", label: "男频书库人气新书", baseUrl: "https://www.qidian.com/all/action0-size1-update1/", - Network accessline 99
label: "男频书库人气新书", baseUrl: "https://www.qidian.com/all/action0-size1-update1/", library: true, - Network accessline 100
baseUrl: "https://www.qidian.com/all/action0-size1-update1/", - Network accessline 507
Accept: "*/*", "Accept-Encoding": "identity", Referer: "https://www.qidian.com/", - Network accessline 508
"Accept-Encoding": "identity", Referer: "https://www.qidian.com/", }; - Network accessline 509
Referer: "https://www.qidian.com/", - Network accessline 899
bookId, title, url: `https://www.qidian.com/book/${bookId}/`, - Network accessline 900
title, url: `https://www.qidian.com/book/${bookId}/`, author, - Network accessline 901
url: `https://www.qidian.com/book/${bookId}/`,
packages/knowledge/oh-story/skills/story-long-scan/scripts/qimao-rank-scraper.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 27
const RANK_URL = "https://www.qimao.com/paihang"; - Network accessline 109
} }); return order.map(function(id){return {bookId:id,title:byId[id],url:'https://www.qimao.com/shuku/'+id+'/'};}); - Network accessline 110
}); return order.map(function(id){return {bookId:id,title:byId[id],url:'https://www.qimao.com/shuku/'+id+'/'};}); })())`; - Network accessline 111
return order.map(function(id){return {bookId:id,title:byId[id],url:'https://www.qimao.com/shuku/'+id+'/'};}); - Network accessline 301
function libraryPageUrl(page) { return `https://${LIBRARY_HOST}/shuku/a-a-a-1-1-a-0-click-${page}/`; - Network accessline 302
return `https://${LIBRARY_HOST}/shuku/a-a-a-1-1-a-0-click-${page}/`; - Network accessline 306
function categoryUrl(mainId) { return `https://${LIBRARY_HOST}/shuku/a-${mainId}-a-a-a-a-a-click-1/`; - Network accessline 307
return `https://${LIBRARY_HOST}/shuku/a-${mainId}-a-a-a-a-a-click-1/`; - Network accessline 478
bookId, title: anchor ? htmlText(anchor[2]) : "", url: bookId ? `https://${LIBRARY_HOST}/shuku/${bookId}/` : "", - Network accessline 479
title: anchor ? htmlText(anchor[2]) : "", url: bookId ? `https://${LIBRARY_HOST}/shuku/${bookId}/` : "", author: text("s-author"), - Network accessline 480
url: bookId ? `https://${LIBRARY_HOST}/shuku/${bookId}/` : "",
packages/knowledge/oh-story/skills/story-long-write/SKILL.md
- Network accessline 3
version: 1.0.0 description: "长篇网文规划与写作。支持只讨论结构、只写大纲或指定细纲,明确要求正文后再写章节。触发方式:/story-long-write、/写长篇、「帮我开书」「定设定」「出卷纲」「规划剧情」「写大纲」「补细纲」「日更」「续写」「继续写」「修改第X章」「回炉」「重写第X章」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-clau - Network accessline 4
description: "长篇网文规划与写作。支持只讨论结构、只写大纲或指定细纲,明确要求正文后再写章节。触发方式:/story-long-write、/写长篇、「帮我开书」「定设定」「出卷纲」「规划剧情」「写大纲」「补细纲」「日更」「续写」「继续写」「修改第X章」「回炉」「重写第X章」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} --- - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-long-write/scripts/author_memory_commit.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-write/scripts/build_architect_brief.py
packages/knowledge/oh-story/skills/story-long-write/scripts/build_writer_prompt.py
packages/knowledge/oh-story/skills/story-long-write/scripts/check-ai-patterns.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-long-write/scripts/check-degeneration.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-long-write/scripts/check-outline-contract.js
packages/knowledge/oh-story/skills/story-long-write/scripts/check-outline-copy.js
packages/knowledge/oh-story/skills/story-long-write/scripts/convert_outline_format.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-write/scripts/normalize-punctuation.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-long-write/scripts/outline_view.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-write/scripts/storyctl.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-write/scripts/style-whitelist.js
- Executable scriptline 1
Executable file
packages/knowledge/oh-story/skills/story-long-write/scripts/template_fence.py
packages/knowledge/oh-story/skills/story-long-write/scripts/tracking_commit.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-long-write/scripts/wordcount_core.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-publish/SKILL.md
- Network accessline 2
name: story-publish description: "小说发布准备:为发布平台整理并核对书名、简介、主角名、分类和标签,定稿后保存发布资料。触发方式:/story-publish、/发布资料、「填写平台建书资料」「建书表单」「起书名/写简介/选标签用于发布」;正文累计约 2 万字、准备上架时也适用。当前仅适配番茄(长篇与短故事),不代替后台填表或实际发布。" metadata: {"openclaw":{"source":"https://github.com/ - Network accessline 3
description: "小说发布准备:为发布平台整理并核对书名、简介、主角名、分类和标签,定稿后保存发布资料。触发方式:/story-publish、/发布资料、「填写平台建书资料」「建书表单」「起书名/写简介/选标签用于发布」;正文累计约 2 万字、准备上架时也适用。当前仅适配番茄(长篇与短故事),不代替后台填表或实际发布。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story - Network accessline 4
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-publish/scripts/check-publish-format.py
packages/knowledge/oh-story/skills/story-review/SKILL.md
- Network accessline 3
version: 1.1.1 description: "多视角对抗式审查。full/lean 模式在已部署 reviewer agents 时并行 spawn;缺失/异常 agents 或 spawn 失败时自动降级 solo,参考文件不可读时使用内置 rubric fallback。触发方式:/story-review、/审查、「审查一下」「帮我审一下」。" metadata: {"openclaw":{"source":"https://github.com/zenst - Network accessline 4
description: "多视角对抗式审查。full/lean 模式在已部署 reviewer agents 时并行 spawn;缺失/异常 agents 或 spawn 失败时自动降级 solo,参考文件不可读时使用内置 rubric fallback。触发方式:/story-review、/审查、「审查一下」「帮我审一下」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-review/scripts/check-ai-patterns.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-review/scripts/check-degeneration.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-review/scripts/normalize-punctuation.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-review/scripts/style-whitelist.js
- Executable scriptline 1
Executable file
packages/knowledge/oh-story/skills/story-review/scripts/tracking_commit.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-review/scripts/wordcount_core.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-setup/SKILL.md
- Network accessline 3
version: 1.3.7 description: "网文写作工具集基础设施部署与检查。为 Claude Code / OpenCode / Codex / Google Antigravity / ZCode / OpenClaw / Reasonix 提供内置适配;Web AI / 通用 Agent 可走 skills + AGENTS.md 文件模式。触发方式:/story-setup、$story-setup、「准备写书」「帮我搭一下环境」「配置写作项目」「检查写 - Network accessline 4
description: "网文写作工具集基础设施部署与检查。为 Claude Code / OpenCode / Codex / Google Antigravity / ZCode / OpenClaw / Reasonix 提供内置适配;Web AI / 通用 Agent 可走 skills + AGENTS.md 文件模式。触发方式:/story-setup、$story-setup、「准备写书」「帮我搭一下环境」「配置写作项目」「检查写作环境」。" metadata - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-short-analyze/SKILL.md
- Network accessline 3
version: 3.1.0 description: "短篇网文拆文。拆解爆款短篇小说(番茄短篇 / 故事会 / 知乎盐言 / 追妻 / 世情 / 重生 / 虐渣等通俗题材)的故事核、结构、情感线、反转设计、写作手法、共鸣层次。单一全量拆解管道:跑完 Stage 2-6 产出完整拆文报告,落盘到 拆文库/{书名}/,下游 story-short-write 同时读拆文报告 + 情节节点 + 写作手法 + 原文 + _meta.json 写下一篇。触发方式:/story-sh - Network accessline 4
description: "短篇网文拆文。拆解爆款短篇小说(番茄短篇 / 故事会 / 知乎盐言 / 追妻 / 世情 / 重生 / 虐渣等通俗题材)的故事核、结构、情感线、反转设计、写作手法、共鸣层次。单一全量拆解管道:跑完 Stage 2-6 产出完整拆文报告,落盘到 拆文库/{书名}/,下游 story-short-write 同时读拆文报告 + 情节节点 + 写作手法 + 原文 + _meta.json 写下一篇。触发方式:/story-short-analyze、/短篇 - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-short-scan/SKILL.md
- Network accessline 3
version: 1.0.0 description: "短篇网文扫榜。分析知乎盐言、七猫、黑岩、点众等平台热门短篇数据,捕捉风口题材。触发方式:/story-short-scan、/短篇扫榜、「短篇什么火」「知乎故事排行」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} - Network accessline 4
description: "短篇网文扫榜。分析知乎盐言、七猫、黑岩、点众等平台热门短篇数据,捕捉风口题材。触发方式:/story-short-scan、/短篇扫榜、「短篇什么火」「知乎故事排行」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} --- - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-short-scan/scripts/aggregate-rank.js
packages/knowledge/oh-story/skills/story-short-scan/scripts/cdp-utils.js
- Executable scriptline 1
Executable file
packages/knowledge/oh-story/skills/story-short-scan/scripts/dz-browse-scraper.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 25
const CHANNELS = [ { id: "male", label: "男频", tab: "男频", url: "https://www.ishugui.com/browse" }, - Network accessline 26
{ id: "male", label: "男频", tab: "男频", url: "https://www.ishugui.com/browse" }, - Network accessline 27
{ id: "female", label: "女频", tab: "女频", url: "https://www.ishugui.com/browse/on3" }, - Network accessline 95
var um=card.match(/最新章节[::\\s]*([^·]{1,40})/); var update=um?um[1].trim():''; out.push({rank:out.length+1,bookId:id,title:title,score:score,author:author,tag:tag,status:status,words:words,update:update,desc:desc.slice(0,200),url - Network accessline 96
var update=um?um[1].trim():''; out.push({rank:out.length+1,bookId:id,title:title,score:score,author:author,tag:tag,status:status,words:words,update:update,desc:desc.slice(0,200),url:'https://www.ishugui.com/book/'+id}); }); - Network accessline 97
out.push({rank:out.length+1,bookId:id,title:title,score:score,author:author,tag:tag,status:status,words:words,update:update,desc:desc.slice(0,200),url:'https://www.ishugui.com/book/'+id});
packages/knowledge/oh-story/skills/story-short-scan/scripts/heiyan-booklist-scraper.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 5
* ⚠<U+FE0F> 前置条件(必须): * 1. 启动 Chrome CDP 环境 * 2. 在 Chrome 中手动登录 https://manage.zhangwenpindu.cn - Network accessline 6
* 1. 启动 Chrome CDP 环境 * 2. 在 Chrome 中手动登录 https://manage.zhangwenpindu.cn * 登录后会生成 Admin-Token cookie,脚本需要它调用后端 API - Network accessline 7
* 2. 在 Chrome 中手动登录 https://manage.zhangwenpindu.cn - Network accessline 24
const BOOKLIST_URL = "https://manage.zhangwenpindu.cn/books/booklist"; - Network accessline 25
const API_BASE = "https://ms.zhangwenpindu.cn"; - Network accessline 49
const t = safeStr(token); const js = "fetch(" + safeStr(API_BASE + "/manage/book/list") + "," + - Network accessline 50
const js = "fetch(" + safeStr(API_BASE + "/manage/book/list") + "," + "{method:'POST'," + - Network accessline 51
"fetch(" + safeStr(API_BASE + "/manage/book/list") + "," + - Network accessline 64
const t = safeStr(token); const js = "fetch(" + safeStr(API_BASE + "/manage/book/" + encodeURIComponent(bookId)) + "," + - Network accessline 65
[Credential-related source omitted] - Network accessline 66
"fetch(" + safeStr(API_BASE + "/manage/book/" + encodeURIComponent(bookId)) + "," + - Network accessline 221
if (!token) { console.log(" ✗ 未检测到 Admin-Token(CDP 已连,但当前未登录)"); console.log(" → 请先在 Chrome 中打开 https://manage.zhangwenpindu.cn 并登录"); - Network accessline 222
console.log(" ✗ 未检测到 Admin-Token(CDP 已连,但当前未登录)"); console.log(" → 请先在 Chrome 中打开 https://manage.zhangwenpindu.cn 并登录"); console.log(" → 登录后重新运行本脚本"); - Network accessline 223
console.log(" → 请先在 Chrome 中打开 https://manage.zhangwenpindu.cn 并登录");
packages/knowledge/oh-story/skills/story-short-write/SKILL.md
- Network accessline 3
version: 1.0.0 description: "短篇网文写作。辅助短篇小说创作,从构思到成稿,聚焦情绪拉扯与节奏把控。触发方式:/story-short-write、/写短篇、「帮我写一篇短篇」「写个盐言故事」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} - Network accessline 4
description: "短篇网文写作。辅助短篇小说创作,从构思到成稿,聚焦情绪拉扯与节奏把控。触发方式:/story-short-write、/写短篇、「帮我写一篇短篇」「写个盐言故事」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} --- - Network accessline 5
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
packages/knowledge/oh-story/skills/story-short-write/scripts/author_memory_commit.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/oh-story/skills/story-short-write/scripts/check-ai-patterns.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-short-write/scripts/check-degeneration.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-short-write/scripts/check-delivery-contract.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-short-write/scripts/check-outline-copy.js
packages/knowledge/oh-story/skills/story-short-write/scripts/check-phase2-contract.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-short-write/scripts/normalize-punctuation.js
- Executable scriptline 1
#!/usr/bin/env node
packages/knowledge/oh-story/skills/story-short-write/scripts/style-whitelist.js
- Executable scriptline 1
Executable file
packages/knowledge/oh-story/skills/story/SKILL.md
- Network accessline 2
name: story description: "网络小说工具箱主入口。根据用户需求自动路由到对应 skill,并可启动本地 Dashboard。触发方式:/story、$story、/story dashboard、/网文、「我想写小说」「记住我的写作习惯」「打开工作台」「检查更新」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} - Network accessline 3
description: "网络小说工具箱主入口。根据用户需求自动路由到对应 skill,并可启动本地 Dashboard。触发方式:/story、$story、/story dashboard、/网文、「我想写小说」「记住我的写作习惯」「打开工作台」「检查更新」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} --- - Network accessline 4
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}} - Network accessline 155
1. **当前版本**:读本 skill 同目录的 `VERSION` 文件;缺失则视为未知。本 skill 在写作项目里(如项目下的 `skills/`、`.agents/skills/`、`.zcode/skills/`)时,读到的是项目副本的版本。 2. **最新版本**:优先 `gh release view --json tagName,name,url -R zenstory-ai/oh-story-claudecode` 取 `tagName`;无 gh 用 ` - Network accessline 156
2. **最新版本**:优先 `gh release view --json tagName,name,url -R zenstory-ai/oh-story-claudecode` 取 `tagName`;无 gh 用 `curl -fsS --max-time 5 https://api.github.com/repos/zenstory-ai/oh-story-claudecode/releases/latest` 取 `.tag_name`(jq 或 grep)。查不 - Network accessline 158
4. **告知**: - 已最新 → 「已是最新版 vX.Y.Z」。 - 有新版或当前版本未知 → 展示已知版本与 [Releases](https://github.com/zenstory-ai/oh-story-claudecode/releases)/[CHANGELOG](https://github.com/zenstory-ai/oh-story-claudecode/blob/main/CHANGELOG.md),有 release notes 时 - Network accessline 159
- 已最新 → 「已是最新版 vX.Y.Z」。 - 有新版或当前版本未知 → 展示已知版本与 [Releases](https://github.com/zenstory-ai/oh-story-claudecode/releases)/[CHANGELOG](https://github.com/zenstory-ai/oh-story-claudecode/blob/main/CHANGELOG.md),有 release notes 时附更新要点,再用宿主可用的提 - Network accessline 160
- 有新版或当前版本未知 → 展示已知版本与 [Releases](https://github.com/zenstory-ai/oh-story-claudecode/releases)/[CHANGELOG](https://github.com/zenstory-ai/oh-story-claudecode/blob/main/CHANGELOG.md),有 release notes 时附更新要点,再用宿主可用的提问方式问「现在更新吗?」。选先不 → 不动,告知随时可
packages/knowledge/video-recap/skills/video-assemble/references/jianying/SOURCE.md
packages/knowledge/video-recap/skills/video-assemble/scripts/adoption/__init__.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/adoption/av_clock.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/artifacts.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/assemble.py
packages/knowledge/video-recap/skills/video-assemble/scripts/assemble_constants.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/assembly_contract.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/assembly_settings.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/audio_automation.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/audio_mix.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/codec_peak.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/export_jianying.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/__init__.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/builders.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/model.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/optional.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/schema.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/templates.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/timeline_contract.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/tracks.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/jianying/writer.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/lib.py
- Executable scriptline 1
Executable file - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 111
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 116
[Credential-related source omitted]
packages/knowledge/video-recap/skills/video-assemble/scripts/loudness.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/media.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/narration_audio.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/packaging.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/render_preflight.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/source_score.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-assemble/scripts/source_subtitles.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/subtitles/__init__.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/subtitles/core.py
packages/knowledge/video-recap/skills/video-assemble/scripts/subtitles/render.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/subtitles/track.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/timeline.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/timeline_emit.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-assemble/scripts/visual_render.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/cut.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-cut/scripts/cut_cli.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/cut_contract.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/cut_qc.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/cut_render.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/frame_grid.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/lib.py
packages/knowledge/video-recap/skills/video-cut/scripts/media_geometry.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/narrative_selection.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/sentence_boundaries.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/sentence_gate.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-cut/scripts/shot_review.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-recap/SKILL.md
- Access to secretsline 73
[Credential-related source omitted]
packages/knowledge/video-recap/skills/video-recap/references/config-playbook.md
- Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Network accessline 22
| Fish Audio model | `FISH_TTS_MODEL` | `s2.1-pro-free` | free model under Fair Use, no SLA; check Fish Audio's current policy | | Fish Audio voice | `FISH_TTS_REFERENCE_ID` | `5653cea4ac83480aaf2bf45406556185`(娱乐扒妹) | optional override for - Network accessline 23
| Fish Audio voice | `FISH_TTS_REFERENCE_ID` | `5653cea4ac83480aaf2bf45406556185`(娱乐扒妹) | optional override for the built-in narration voice; part of the per-segment cache settings | | Fish Audio endpoint | `FISH_TTS_API_URL` | `https://api - Network accessline 24
| Fish Audio endpoint | `FISH_TTS_API_URL` | `https://api.fish.audio/v1/tts` | returns WAV directly to the existing voiceover pipeline |
packages/knowledge/video-recap/skills/video-recap/scripts/doctor.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 84
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted] - Access to secretsline 153
[Credential-related source omitted] - Access to secretsline 205
[Credential-related source omitted] - Access to secretsline 208
[Credential-related source omitted] - Access to secretsline 216
[Credential-related source omitted]
packages/knowledge/video-recap/skills/video-recap/scripts/final_qc.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-recap/scripts/lib.py
- Executable scriptline 1
Executable file - Network accessline 12
DEFAULT_MIMO_API_URL = "https://api.xiaomimimo.com/v1" - Network accessline 13
DEFAULT_MIMO_TOKEN_PLAN_CLUSTER = "cn" MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 14
MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", "sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 15
"cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 16
"sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 17
"ams": "https://token-plan-ams.xiaomimimo.com/v1", - Network accessline 20
DEFAULT_MIMO_ASR_MODEL = "mimo-v2.5-asr" # speech-to-text DEFAULT_MIMO_TTS_MODEL = "mimo-v2.5-tts" # text-to-speech DEFAULT_FISH_TTS_API_URL = "https://api.fish.audio/v1/tts" - Network accessline 21
DEFAULT_MIMO_TTS_MODEL = "mimo-v2.5-tts" # text-to-speech DEFAULT_FISH_TTS_API_URL = "https://api.fish.audio/v1/tts" DEFAULT_FISH_TTS_MODEL = "s2.1-pro-free" - Network accessline 22
DEFAULT_FISH_TTS_API_URL = "https://api.fish.audio/v1/tts" - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 164
[Credential-related source omitted] - Access to secretsline 165
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 168
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted] - Access to secretsline 170
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Access to secretsline 173
[Credential-related source omitted] - Access to secretsline 174
[Credential-related source omitted] - Access to secretsline 178
[Credential-related source omitted] - Access to secretsline 179
[Credential-related source omitted] - Access to secretsline 183
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Access to secretsline 191
[Credential-related source omitted] - Access to secretsline 192
[Credential-related source omitted] - Access to secretsline 193
[Credential-related source omitted] - Access to secretsline 194
[Credential-related source omitted] - Access to secretsline 196
[Credential-related source omitted] - Access to secretsline 199
[Credential-related source omitted] - Access to secretsline 201
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted] - Access to secretsline 206
[Credential-related source omitted] - Access to secretsline 207
[Credential-related source omitted] - Access to secretsline 208
[Credential-related source omitted] - Access to secretsline 210
[Credential-related source omitted] - Access to secretsline 212
[Credential-related source omitted] - Access to secretsline 213
[Credential-related source omitted] - Access to secretsline 214
[Credential-related source omitted] - Access to secretsline 215
[Credential-related source omitted] - Access to secretsline 216
[Credential-related source omitted] - Access to secretsline 217
[Credential-related source omitted] - Access to secretsline 218
[Credential-related source omitted] - Access to secretsline 219
[Credential-related source omitted] - Access to secretsline 220
[Credential-related source omitted] - Access to secretsline 221
[Credential-related source omitted] - Access to secretsline 222
[Credential-related source omitted] - Access to secretsline 223
[Credential-related source omitted] - Access to secretsline 224
[Credential-related source omitted] - Access to secretsline 228
[Credential-related source omitted]
packages/knowledge/video-recap/skills/video-recap/scripts/library.py
packages/knowledge/video-recap/skills/video-recap/scripts/materials.py
packages/knowledge/video-recap/skills/video-recap/scripts/recap.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-recap/scripts/recap_cli.py
packages/knowledge/video-recap/skills/video-recap/scripts/recap_inspect.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-recap/scripts/recap_review.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-recap/scripts/recap_runner.py
packages/knowledge/video-recap/skills/video-recap/scripts/recap_runtime.py
packages/knowledge/video-recap/skills/video-recap/scripts/recap_source.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-recap/scripts/recap_stage_qc.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-recap/scripts/recap_timeline.py
packages/knowledge/video-recap/skills/video-recap/scripts/resources/__init__.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-recap/scripts/resources/lock.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-recap/scripts/resources/project_binding.py
packages/knowledge/video-recap/skills/video-reference/scripts/lib.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-reference/scripts/reference.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-reference/scripts/reference_check.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-reference/scripts/reference_frames.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-reference/scripts/reference_measure.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-reference/scripts/reference_profile.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/SKILL.md
packages/knowledge/video-recap/skills/video-script/scripts/agent_text.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/deslop_qc.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/entry_suggestion.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/evidence_bundle.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/lib.py
- Executable scriptline 1
Executable file - Network accessline 16
DEFAULT_MIMO_API_URL = "https://api.xiaomimimo.com/v1" - Network accessline 17
DEFAULT_MIMO_TOKEN_PLAN_CLUSTER = "cn" MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 18
MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", "sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 19
"cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 20
"sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 21
"ams": "https://token-plan-ams.xiaomimimo.com/v1", - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 91
[Credential-related source omitted] - Access to secretsline 93
[Credential-related source omitted] - Access to secretsline 94
[Credential-related source omitted] - Access to secretsline 98
[Credential-related source omitted] - Access to secretsline 99
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 160
[Credential-related source omitted] - Access to secretsline 162
[Credential-related source omitted] - Access to secretsline 185
[Credential-related source omitted] - Access to secretsline 192
[Credential-related source omitted] - Network accessline 195
for attempt in range(max_retries): try: req = urllib.request.Request(endpoint, data=data, headers=headers) - Network accessline 196
try: req = urllib.request.Request(endpoint, data=data, headers=headers) with urllib.request.urlopen(req, timeout=300) as resp: - Network accessline 197
req = urllib.request.Request(endpoint, data=data, headers=headers) - Network accessline 198
with urllib.request.urlopen(req, timeout=300) as resp:
packages/knowledge/video-recap/skills/video-script/scripts/lint_summary.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/narration_lint.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/review.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-script/scripts/review_grounding.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/review_response.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/review_runner.py
packages/knowledge/video-recap/skills/video-script/scripts/speech_ownership.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-script/scripts/validate.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-understanding/SKILL.md
packages/knowledge/video-recap/skills/video-understanding/scripts/agent_text.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/asr.py
packages/knowledge/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/briefing/__init__.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/briefing/builder.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/briefing/context.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/briefing/inputs.py
packages/knowledge/video-recap/skills/video-understanding/scripts/briefing/timeline.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/consolidate.py
packages/knowledge/video-recap/skills/video-understanding/scripts/detect.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/extract.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/index_normalize.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/lib.py
- Executable scriptline 1
Executable file - Network accessline 18
DEFAULT_MIMO_API_URL = "https://api.xiaomimimo.com/v1" - Network accessline 19
DEFAULT_MIMO_TOKEN_PLAN_CLUSTER = "cn" MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 20
MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", "sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 21
"cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 22
"sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 23
"ams": "https://token-plan-ams.xiaomimimo.com/v1", - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 65
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 98
[Credential-related source omitted] - Access to secretsline 99
[Credential-related source omitted] - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 102
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Access to secretsline 104
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted] - Access to secretsline 111
[Credential-related source omitted] - Access to secretsline 112
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted] - Access to secretsline 119
[Credential-related source omitted] - Access to secretsline 121
[Credential-related source omitted] - Access to secretsline 123
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted] - Access to secretsline 127
[Credential-related source omitted] - Access to secretsline 128
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 130
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 139
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Access to secretsline 180
[Credential-related source omitted] - Access to secretsline 196
[Credential-related source omitted] - Access to secretsline 197
[Credential-related source omitted] - Access to secretsline 279
[Credential-related source omitted] - Access to secretsline 286
[Credential-related source omitted] - Access to secretsline 334
[Credential-related source omitted] - Access to secretsline 336
[Credential-related source omitted] - Access to secretsline 362
[Credential-related source omitted] - Access to secretsline 363
[Credential-related source omitted] - Access to secretsline 370
[Credential-related source omitted] - Access to secretsline 380
[Credential-related source omitted] - Access to secretsline 392
[Credential-related source omitted] - Access to secretsline 400
[Credential-related source omitted] - Network accessline 403
for attempt in range(max_retries): try: req = urllib.request.Request(endpoint, data=data, headers=headers) - Network accessline 404
try: req = urllib.request.Request(endpoint, data=data, headers=headers) with urllib.request.urlopen(req, timeout=300) as resp: - Network accessline 405
req = urllib.request.Request(endpoint, data=data, headers=headers) - Network accessline 406
with urllib.request.urlopen(req, timeout=300) as resp:
packages/knowledge/video-recap/skills/video-understanding/scripts/storyboard.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-understanding/scripts/timeline_fusion.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/understand.py
- Executable scriptline 1
#!/usr/bin/env python3
packages/knowledge/video-recap/skills/video-understanding/scripts/understanding_brief.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/understanding_cache.py
packages/knowledge/video-recap/skills/video-understanding/scripts/understanding_runner.py
- Executable scriptline 1
Executable file - Access to secretsline 55
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 187
[Credential-related source omitted] - Access to secretsline 191
[Credential-related source omitted] - Access to secretsline 254
[Credential-related source omitted] - Access to secretsline 257
[Credential-related source omitted] - Access to secretsline 259
[Credential-related source omitted] - Access to secretsline 261
[Credential-related source omitted] - Access to secretsline 262
[Credential-related source omitted] - Access to secretsline 267
[Credential-related source omitted]
packages/knowledge/video-recap/skills/video-understanding/scripts/understanding_storyboard.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-understanding/scripts/vlm.py
packages/knowledge/video-recap/skills/video-voiceover/SKILL.md
- Network accessline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 19
| 解说声音克隆(`--voice-ref <audio>` / `VOICE_REF`) | 同上,模型 `mimo-v2.5-tts-voiceclone` | 上述内容,外加参考音频(转成 24 kHz 单声道 WAV,最长 30 秒)的 base64,每段请求都带 | | Fish Audio(`--tts-provider fish-audio`) | `FISH_TTS_API_URL`(默认 `https://api.fish.audio/v1/tts`),`F - Network accessline 20
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted]
packages/knowledge/video-recap/skills/video-voiceover/references/index-tts.md
packages/knowledge/video-recap/skills/video-voiceover/scripts/approved_text_policy.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-voiceover/scripts/dub.py
packages/knowledge/video-recap/skills/video-voiceover/scripts/lib.py
- Executable scriptline 1
Executable file - Network accessline 16
DEFAULT_MIMO_API_URL = "https://api.xiaomimimo.com/v1" - Network accessline 17
DEFAULT_MIMO_TOKEN_PLAN_CLUSTER = "cn" MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 18
MIMO_TOKEN_PLAN_API_URLS = { "cn": "https://token-plan-cn.xiaomimimo.com/v1", "sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 19
"cn": "https://token-plan-cn.xiaomimimo.com/v1", - Network accessline 20
"sgp": "https://token-plan-sgp.xiaomimimo.com/v1", - Network accessline 21
"ams": "https://token-plan-ams.xiaomimimo.com/v1", - Network accessline 23
DEFAULT_MIMO_ASR_MODEL = "mimo-v2.5-asr" # speech-to-text DEFAULT_MIMO_TTS_MODEL = "mimo-v2.5-tts" # text-to-speech DEFAULT_FISH_TTS_API_URL = "https://api.fish.audio/v1/tts" - Network accessline 24
DEFAULT_MIMO_TTS_MODEL = "mimo-v2.5-tts" # text-to-speech DEFAULT_FISH_TTS_API_URL = "https://api.fish.audio/v1/tts" DEFAULT_FISH_TTS_MODEL = "s2.1-pro-free" - Network accessline 25
DEFAULT_FISH_TTS_API_URL = "https://api.fish.audio/v1/tts" - Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 55
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 102
[Credential-related source omitted] - Access to secretsline 104
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 108
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 117
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted] - Access to secretsline 119
[Credential-related source omitted] - Access to secretsline 120
[Credential-related source omitted] - Access to secretsline 121
[Credential-related source omitted] - Access to secretsline 122
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted] - Access to secretsline 127
[Credential-related source omitted] - Access to secretsline 128
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 252
[Credential-related source omitted] - Access to secretsline 263
[Credential-related source omitted] - Access to secretsline 264
[Credential-related source omitted] - Access to secretsline 268
[Credential-related source omitted] - Access to secretsline 278
[Credential-related source omitted] - Network accessline 282
for attempt in range(max_retries): try: req = urllib.request.Request(endpoint, data=data, headers=headers) - Network accessline 283
try: req = urllib.request.Request(endpoint, data=data, headers=headers) with urllib.request.urlopen(req, timeout=300) as resp: - Network accessline 284
req = urllib.request.Request(endpoint, data=data, headers=headers) - Network accessline 285
with urllib.request.urlopen(req, timeout=300) as resp:
packages/knowledge/video-recap/skills/video-voiceover/scripts/providers/__init__.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-voiceover/scripts/providers/fish_audio.py
- Executable scriptline 1
Executable file - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Network accessline 44
body = json.dumps(_fish_payload(text, rate), ensure_ascii=False).encode("utf-8") request = urllib.request.Request( - Network accessline 45
request = urllib.request.Request( - Access to secretsline 49
[Credential-related source omitted] - Network accessline 58
try: with urllib.request.urlopen(request, timeout=CONFIG["tts_timeout"]) as response: - Network accessline 59
with urllib.request.urlopen(request, timeout=CONFIG["tts_timeout"]) as response: - Access to secretsline 65
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted]
packages/knowledge/video-recap/skills/video-voiceover/scripts/providers/index_tts.py
packages/knowledge/video-recap/skills/video-voiceover/scripts/tts_audio.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-voiceover/scripts/tts_cache.py
- Executable scriptline 1
Executable file
packages/knowledge/video-recap/skills/video-voiceover/scripts/voiceover.py
- Executable scriptline 1
Executable file - Access to secretsline 545
[Credential-related source omitted] - Access to secretsline 561
[Credential-related source omitted] - Access to secretsline 563
[Credential-related source omitted] - Access to secretsline 564
[Credential-related source omitted] - Possible obfuscationline 682
output_path.write_bytes(base64.b64decode(audio_data)) - Access to secretsline 696
[Credential-related source omitted] - Access to secretsline 712
[Credential-related source omitted] - Access to secretsline 715
[Credential-related source omitted]
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 10 facts
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionshort-drama-produce/scripts/provider_adapters.py:32High confidence
- Contacts ark.cn-beijing.volces.com, which SKILL.md, the README and the plugin manifest do not mentionshort-drama-produce/scripts/provider_adapters.py:33High confidence
- Contacts api.minimax.io, which SKILL.md, the README and the plugin manifest do not mentionshort-drama-produce/scripts/provider_adapters.py:34High confidence
- Contacts www.ciweimao.com, which SKILL.md, the README and the plugin manifest do not mentionstory-long-scan/scripts/ciweimao-rank-scraper.js:22High confidence
- Contacts fanqienovel.com, which SKILL.md, the README and the plugin manifest do not mentionstory-long-scan/scripts/fanqie-rank-scraper.js:343High confidence
- Contacts www.jjwxc.net, which SKILL.md, the README and the plugin manifest do not mentionstory-long-scan/scripts/jjwxc-rank-scraper.js:29High confidence
- Contacts www.qimao.com, which SKILL.md, the README and the plugin manifest do not mentionstory-long-scan/scripts/qimao-rank-scraper.js:27High confidence
- Contacts www.ishugui.com, which SKILL.md, the README and the plugin manifest do not mentionstory-short-scan/scripts/dz-browse-scraper.js:26High confidence
- Contacts manage.zhangwenpindu.cn, which SKILL.md, the README and the plugin manifest do not mentionstory-short-scan/scripts/heiyan-booklist-scraper.js:24High confidence
- Contacts ms.zhangwenpindu.cn, which SKILL.md, the README and the plugin manifest do not mentionstory-short-scan/scripts/heiyan-booklist-scraper.js:25High confidence
Signal confidence: 490 facts
- Executable script in code of a file that runsshort-drama-breakdown/scripts/breakdown_tool.py:1High confidence
- Executable script in code of a file that runsshort-drama-breakdown/scripts/selftest.py:1High confidence
- Executable script in code of a file that runsshort-drama-develop/scripts/episode_intake.py:1High confidence
- Executable script in code of a file that runsshort-drama-develop/scripts/selftest.py:1High confidence
- Network access in prose of documentationshort-drama-edit/assets/remotion/README.md:69Low confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/package.json:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/remotion.config.ts:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/Overlay.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/Root.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/Subtitles.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/font.ts:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/index.ts:1High confidence
- Executable script in a comment of a file that runsshort-drama-edit/assets/remotion/src/rules.mjs:1Low confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/schema.ts:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/screen/Card.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/screen/CornerChip.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/screen/ScreenText.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/screen/SystemPanel.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/screen/TaskPanel.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/screen/chrome.tsx:1High confidence
- Executable script in code of a file that runsshort-drama-edit/assets/remotion/src/screen/tokens.ts:1High confidence
- Executable script in code of a file that runsshort-drama-edit/scripts/edit_tool.py:1High confidence
- Executable script in code of a file that runsshort-drama-edit/scripts/selftest.py:1High confidence
- Executable script in code of a file that runsshort-drama-novel-analyze/scripts/novel_index.py:1High confidence
- Executable script in code of a file that runsshort-drama-novel-analyze/scripts/selftest.py:1High confidence
- Network access in prose of documentationshort-drama-produce/references/providers/gpt-image-2.md:9Low confidence
- Access to secrets in prose of documentationshort-drama-produce/references/providers/gpt-image-2.md:9Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/gpt-image-2.md:10Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/gpt-image-2.md:22Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/gpt-image-2.md:23Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/gpt-image-2.md:24Low confidence
- Access to secrets in prose of documentationshort-drama-produce/references/providers/minimax-h3-video.md:11Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-h3-video.md:23Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-h3-video.md:91Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-music.md:9Low confidence
- Access to secrets in prose of documentationshort-drama-produce/references/providers/minimax-music.md:9Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-music.md:10Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-music.md:25Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-speech.md:9Low confidence
- Access to secrets in prose of documentationshort-drama-produce/references/providers/minimax-speech.md:9Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-speech.md:10Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/minimax-speech.md:43Low confidence
- Access to secrets in prose of documentationshort-drama-produce/references/providers/seedance.md:11Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/seedance.md:17Low confidence
- Network access in prose of documentationshort-drama-produce/references/providers/seedance.md:70Low confidence
- Executable script in code of a file that runsshort-drama-produce/scripts/fixture_adapter.py:1High confidence
- Possible obfuscation in code of a file that runsshort-drama-produce/scripts/fixture_adapter.py:22High confidence
- Possible obfuscation in code of a file that runsshort-drama-produce/scripts/fixture_adapter.py:61High confidence
- Executable script in code of a file that runsshort-drama-produce/scripts/production_tool.py:1High confidence
- Access to secrets in code of a file that runsshort-drama-produce/scripts/production_tool.py:90High confidence
and 440 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path CLAUDE.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md packages/knowledge/drama/skills/short-drama/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md packages/knowledge/drama/skills/short-drama/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md packages/knowledge/drama/skills/short-drama/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md packages/knowledge/drama/skills/short-drama/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.