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 不只在二维画风之间挑。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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 再剪一版的地方,写在末尾报告里交给创作者判断。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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   或文生视频。

Compare on GitHub

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.

Compare on GitHub

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)

Compare on GitHub

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.

Compare on GitHub

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 步对待没有板子的人物那样在本轮报告里点名。

Compare on GitHub

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.

Compare on GitHub

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` 就按上文问创作者一次,已有就写明按哪种方式执行。

Compare on GitHub

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.

Compare on GitHub

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-漫剧靠声音往前推)。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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 状态、动作与结果;使用生成模型时,模型只解释输入和结果,规则器拥有提交权。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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)。

Compare on GitHub

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.

Compare on GitHub

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,不写回原作事实层。

Compare on GitHub

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.

Compare on GitHub

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`,锁定最大设计风险与最小可执行切片。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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` 同样只进技术备注行。

Compare on GitHub

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.

Compare on GitHub

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. 有「题材类型」(长篇)或梗概、套路(短篇)时,按内容选风格库中最接近的一节。

Compare on GitHub

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.

Compare on GitHub

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`。白名单登记按文风裁决文件执行,不因脚本报警自行放行。

Compare on GitHub

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.

Compare on GitHub

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` 同样只进技术备注行。

Compare on GitHub

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.

Compare on GitHub

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。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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) 的加载条件选用。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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`。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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) 的加载条件选用。

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
702GitHub stars
44stars in 7 days
40skills in this repository
19commits in 30 days

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

Oct 25, 2026Nov 6, 2026702

30-day change not yet available: not enough history.

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

3,893 tokens

When the skill is activated

Reference documents

26,121 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Quick Start
  2. 路由
  3. 执行请求
  4. 初始化与 Dashboard
  5. 项目级创作决定
  6. 生产与交付边界
  7. 安装维护

Scripts executed separately

  • scripts/creator_markdown_check.py
  • scripts/project_tool.py
  • scripts/selftest.py

Files

  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • SKILL.mdcore14,188 bytes
  • agents/openai.yamlasset292 bytes
  • assets/creator-decision.example.jsonlasset1,227 bytes
  • assets/production-observation.example.jsonlasset1,621 bytes
  • assets/project-template/short-drama.jsonasset864 bytes
  • assets/reference-observation.example.jsonlasset1,140 bytes
  • references/audience-reveal.mddoc1,272 bytes
  • references/contract-and-ownership.mddoc2,881 bytes
  • references/creator-documents.mddoc18,949 bytes
  • references/creator-workflow.mddoc6,519 bytes
  • references/form-cards/Q版表达.mddoc4,317 bytes
  • references/form-cards/二维动态漫.mddoc4,451 bytes
  • references/form-cards/国漫二次元.mddoc5,026 bytes
  • references/form-cards/实拍.mddoc4,472 bytes
  • references/form-cards/水墨笔触.mddoc4,276 bytes
  • references/form-cards/风格化三维.mddoc4,506 bytes
  • references/knowhow-index.mddoc13,172 bytes
  • references/look-development.mddoc3,357 bytes
  • references/pickup-and-alternate.mddoc1,577 bytes
  • references/production-form-profiles.mddoc10,098 bytes
  • references/reference-roles.mddoc4,813 bytes
  • references/runtime-preflight.mddoc1,289 bytes
  • scripts/creator_markdown_check.pyruns91,406 bytes
  • scripts/project_tool.pyruns105,956 bytes
  • scripts/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 GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-breakdown/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-develop/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-develop/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • packages/knowledge/drama/skills/short-drama-novel-analyze/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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

  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 23
    - `MINIMAX_VIDEO_BASE_URL` (default `https://api.minimax.io/v2`)
  • Network accessline 91
    Protocol reference: [MiniMax video generation API](https://platform.minimax.io/docs/api-reference/video-generation-v2-create).

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

  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 17
    - `SEEDANCE_BASE_URL` (default `https://ark.cn-beijing.volces.com/api/v3`)
  • Network accessline 70
    Protocol reference: [Volcengine video generation API](https://www.volcengine.com/docs/82379/1520757).

packages/knowledge/drama/skills/short-drama-produce/scripts/fixture_adapter.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 22
    PNG = base64.b64decode(
  • Possible obfuscationline 61
    path.write_bytes(b"\x00\x00\x00\x18ftypisom" + b"\x00" * 24)

packages/knowledge/drama/skills/short-drama-produce/scripts/production_tool.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]

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

  • Network accessline 88
    依据(2026-09-07 核对;三种起点互斥、素材上限与正文长度建议 2026-10-20 核对):[视频生成 API](https://docs.volcengine.com/docs/82379/1520757)、
  • Network accessline 89
    [Seedance 2.5 指南中的 2.0/2.5 时间控制差异](https://docs.volcengine.com/docs/82379/2607689)。

packages/knowledge/drama/skills/short-drama-video-prompts/references/seedance-2.5.md

  • Network accessline 157
    依据(2026-09-07 核对):[视频生成 API](https://docs.volcengine.com/docs/82379/1520757)、
  • Network accessline 158
    [Seedance 2.5 提示词指南](https://docs.volcengine.com/docs/82379/2607689)。

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

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 121
    const text = fs.readFileSync(file, 'utf8').replace(/^<U+FEFF>/, '')

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 80
    return "<U+FEFF>" + buffer.getvalue()

packages/knowledge/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 759
    [Credential-related source omitted]
  • Access to secretsline 806
    [Credential-related source omitted]

packages/knowledge/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 260
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 162
    const text = fs.readFileSync(filePath, "utf8").replace(/^<U+FEFF>/, "");

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 79
    return path.read_text(encoding="utf-8").lstrip("<U+FEFF>")

packages/knowledge/oh-story/skills/story-long-write/scripts/build_writer_prompt.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 74
    return io.open(path, encoding="utf-8").read().lstrip("<U+FEFF>")

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

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 121
    const text = fs.readFileSync(file, 'utf8').replace(/^<U+FEFF>/, '')

packages/knowledge/oh-story/skills/story-long-write/scripts/check-outline-copy.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 50
    return { ok: true, text: fs.readFileSync(p, 'utf8').replace(/^<U+FEFF>/, '') }

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 34
    lines = text.lstrip("<U+FEFF>").split("\n")

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

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 122
    lines = text.lstrip("<U+FEFF>").splitlines()

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

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 162
    const text = fs.readFileSync(filePath, "utf8").replace(/^<U+FEFF>/, "");

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

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 50
    return { ok: true, text: fs.readFileSync(p, 'utf8').replace(/^<U+FEFF>/, '') }

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

  • Network accessline 3
    These JSON protocol templates are pinned to [`duoec/duo-video`](https://github.com/duoec/duo-video) commit
  • Network accessline 4
    [`duoec/duo-video`](https://github.com/duoec/duo-video) commit

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 602
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 75
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 475
    [Credential-related source omitted]

packages/knowledge/video-recap/skills/video-recap/scripts/materials.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 63
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 92
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 127
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 466
    [Credential-related source omitted]
  • Access to secretsline 481
    [Credential-related source omitted]

packages/knowledge/video-recap/skills/video-recap/scripts/recap_runtime.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 290
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 586
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 127
    [Credential-related source omitted]
  • Access to secretsline 240
    [Credential-related source omitted]

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

  • Access to secretsline 3
    [Credential-related source omitted]
  • Network accessline 40
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 4
    [Credential-related source omitted]
  • Access to secretsline 150
    [Credential-related source omitted]
  • Access to secretsline 167
    [Credential-related source omitted]
  • Access to secretsline 170
    [Credential-related source omitted]

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

  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 43
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 94
    [Credential-related source omitted]
  • Access to secretsline 257
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 141
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 52
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 244
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 531
    [Credential-related source omitted]
  • Access to secretsline 591
    [Credential-related source omitted]
  • Access to secretsline 592
    [Credential-related source omitted]

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

  • Network accessline 9
    export TTS_PROVIDER=index-tts export INDEX_TTS_ENDPOINT=http://127.0.0.1:<port>/tts
  • Network accessline 10
    export INDEX_TTS_ENDPOINT=http://127.0.0.1:<port>/tts

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 5
    [Credential-related source omitted]
  • Possible obfuscationline 299
    Path(out_wav).write_bytes(base64.b64decode(data))

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

  • Executable scriptline 1
    Executable file
  • Network accessline 136
    body = json.dumps({"voice": voice, "text": text}, ensure_ascii=False).encode("utf-8")     request = urllib.request.Request(
  • Network accessline 137
    request = urllib.request.Request(

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
Signal confidence: 490 facts

and 440 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativePath CLAUDE.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md packages/knowledge/drama/skills/short-drama/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md packages/knowledge/drama/skills/short-drama/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md packages/knowledge/drama/skills/short-drama/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.