by zenstory-ai
Claude Code / Codex / OpenCode agent skills for writing Chinese web novels (网文): 扫榜、拆文、写作、去AI味、封面全流程,长篇短篇都支持 | 13 skills for novel writing and long-form fiction with file-based continuity tracking. MIT.
# Add to your Claude Code skills
git clone https://github.com/zenstory-ai/oh-story-claudecodeGuides for using ai agents skills like oh-story-claudecode.
Last scanned: 8/25/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-25T04:37:03.023Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how oh-story-claudecode compares with popular alternatives.
oh-story-claudecode is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by zenstory-ai. Claude Code / Codex / OpenCode agent skills for writing Chinese web novels (网文): 扫榜、拆文、写作、去AI味、封面全流程,长篇短篇都支持 | 13 skills for novel writing and long-form fiction with file-based continuity tracking. MIT. It has 7,360 GitHub stars.
Yes. oh-story-claudecode passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/zenstory-ai/oh-story-claudecode" and add it to your Claude Code skills directory (see the Installation section above).
oh-story-claudecode is primarily written in Python. It is open-source under zenstory-ai on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh oh-story-claudecode against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
oh-story-claudecode vs everything claude code
See comparison
Oh Story 覆盖长篇与短篇网络小说的全流程:扫榜选材 → 拆解爆款 → 搭大纲写正文 → 去AI味 → 生成封面图。 它以 13 个 skill 的形式装进你已经在用的编程 Agent,写作用的模型就是该 Agent 的模型,不需要 GPU,也不需要另外配模型。
套路 = 确定性的情绪满足
专业作者的方法论三步走:扫榜(洞察题材、人设、切入点)→ 拆文(拆解节奏与剧情素材,建立个人模块库)→ 商业化写作(运用钩子、爽感、期待感)。 围绕四条线展开:爆款逆向 · 剧情模块化重组 · 上下文状态分层管理 · 人机协同。
ClawHub 分发由仓库中的 显式发布清单 管理,并通过 ClawHub 提供发现入口。具体 skill 链接只有在发布者、版本和匿名访问均验证后才会写入本文档,避免把尚不存在的条目当成已上架。
npx skills add zenstory-ai/oh-story-claudecode -y -g
-g 全局安装,所有目录可用;去掉 -g 则只装到当前目录。更新时重新执行同一条命令即可。
也可以直接对 Agent 说一句话(支持导入 GitHub 仓库 / skill 的平台都适用):
安装这个 skill https://github.com/zenstory-ai/oh-story-claudecode
装好后,在写作项目根运行 /story-setup(Codex 用 $story-setup)部署 hooks / agents / references,然后新开会话。升级后同样重跑一次 /story-setup。
各 Agent 的部署差异、已知限制与安装排查(Windows
ENOENT、Antigravityagy -p、目录残留等)见 各编程 Agent 的部署与安装排查。 最新版本 v0.8.1(2026-09-26);变更见 CHANGELOG.md 与 Releases。
下面每一份都是 skill 跑出来的文件,完整样例在 demo/。
下面这本是项目作者自己的长篇,用 /story-import 把已发布的前 20 章反向重建成可续写工程。
下面是写第 21 章之前的状态卡。/story-long-write 不靠对话记忆,它把连续性写进
追踪/上下文.md,下一章只读这一份——固定 7 栏、硬上限 12KB,不进正文 prompt:
## 当前位置
- 当前章:第20章 卷:第一卷·军宣整顿 故事时间:《如愿》点击破亿后的第二天
## 长期约束
- 军宣爽点必须通过作品效果、传播数据和围观反应链兑现,不能只靠系统播报。
- 钟嘉嘉未公开的军方培养安排属于作者真相,正文揭示前不能当成读者已知。
## 活跃伏笔
- F016|钟嘉嘉并非普通军报实习生,她的军方家庭背景仍未完全公开|埋第7章|回收章未定|高
- F049|吴伟收到寻衅滋事公诉通知,最终法律结果尚未落地|埋第18章|回收章未定|高
- F054|一位老兵邀请江晨上门听当年的故事,为后续创作提供入口|埋第20章|回收章未定|高
## 下一章承诺
- 先补第21章细纲,再承接老兵邀请、新歌伴奏和钢琴能力。
「作者真相」和「读者已知」是分开记的——这是角色提前知道答案、伏笔写飞的主要来源。
完整文件:demo/长篇/.../追踪/上下文.md
上面的视频录的就是这一段。/story-long-write 写第21章 在一次真实会话里的产出与每一道检查:
细纲 细纲_第021章.md 追踪里写着「第21章尚无细纲」,skill 先补纲:单元 L1-03、目标情绪、本章标价、闭环状态、10 个情节点四列表格(外加可选的分辨率列)
章级检查 storyctl.py chapter check ready · 字数 2068 / 目标 2300
├ check-ai-patterns.js 0 命中
├ check-degeneration.js 0 命中
└ normalize-punctuation 0 命中
追踪提交 storyctl.py chapter commit tracking_committed=true · state_revision 0 → 1
派生视图 tracking_commit.py check 上下文.md / 伏笔.md / 角色状态/ / 时间线/ / 逐章记录/ 全部由 state 重生成,逐字一致
写正文前 guard-outline-before-prose.sh 会拦住缺细纲的章节;细纲过结构验收后,才由 narrative-writer 分两批写正文,
再由 consistency-checker 查事实与伏笔、去味审查改读感,最后跑确定性收尾脚本与 chapter check。
提交之后,追踪状态是工具从 _tracking-state.json 整份重新渲染的,手改派生文件会被 check 拒绝。
对照上面的状态卡,回写实际改了什么(节选,省略了同批滚动的近三章速记与角色状态):
## 当前位置
-- 当前章:第20章 场景:火箭军文工团,钟嘉嘉送来老兵书法礼后
+- 当前章:第21章 场景:火箭军文工团办公室,江晨收到谭守义地址回信后
## 活跃伏笔
-- F054|一位老兵邀请江晨上门听当年的故事,为后续创作提供入口|埋第20章|回收章未定|高
+- F054|谭守义已给邻市地址,江晨定次日上门听故事|埋第20章|第22章|高
+- F057|谭守义有个讲了五十年没人听全过的故事,内容未揭示|埋第21章|第22章|高
+- F058|任务三:离别主题作品、开放日当天热度1000万+、限时14天|埋第21章|第27章|高
## 下一章承诺
-- 先补第21章细纲,再承接老兵邀请、新歌伴奏和钢琴能力。
+- 江晨向周薄森请假出营,赴邻市听谭守义讲完整故事并录音,揭示F057。
## 连贯性风险
-- 第21章尚无细纲,不能直接写正文。
+- 谭守义故事的作者真相为候选(E015),作者可在第22章细纲前改;揭示前不当读者已知。
新角色谭守义有了自己的设定卡和角色状态文件;他那个「讲了五十年没人听全过」的故事,真相候选(E015)记在
时间线/作者真相.md 并标为未揭示,读者已知.md 那一栏只有江晨看到的那句话。被退役的那条风险写进了
逐章记录/第021章.md 的「本章退役登记」——状态不会静默消失。
成品:正文/第021章_离别怎么会开花.md
· 大纲/细纲_第021章.md
· 设定/角色/谭守义.md
· 追踪/逐章记录/第021章.md
/story-long-analyze 拆《盘龙》开篇 23 章(约 6.2 万字,起点经典,仅作拆解素材),按番茄男频升级流读者口味打分:
| 维度 | 评分 | 说明(节选) |
|---|---|---|
| 开篇钩子 | 2 | 前 500 字纯地理定位 + 晨练群像,无悬念 / 冲突 / 反差,靠「平民努力出头」慢渗。代入扎实但即时拉力弱。 |
| 主角塑造 | 4 | 延迟点名(第 60 段才点名)+ 他人惊叹引出,「衰败贵族 + 六岁神童」反差立人设。三章里最强项。 |
| 爽点设计 | 1 | 三章零传统爽点,爽感被刻意延迟到第 18 章金手指登场,赌代入复利。 |
综合:三章是「立人设强、给爽点零」的极端结构。直接照搬会劝退番茄读者, 但拆出来的局部技法(导师代言设定、延迟点名、身体反应外化)高度可复用。
完整报告:demo/拆文库/盘龙/拆文报告.md
/story-short-analyze 拆《曾将爱意私藏》(作者自己的短篇,约 8,500 字,追妻火葬场 · 死遁),
产出 54 个情节节点、11 项写作手法。每个节点都锚定原文,并标注情绪类型与强度(−9~+9):
| 原文 | 抽出的结构 |
|---|---|
| 「霍总还不打算让沈暮月母子进门吗?」「没必要,私生子而已。」我正准备推门而入,听到这话,手停在了半空。 | N1 门口偷听到「私生子而已」类型{信息} · 情绪{震惊}{−7}手法{开篇即冲突+信息差} |
| 霍庭煜对我没有爱。我默然抽回了手。该放弃自己的执念了。 | N2 认清对方无爱,决意放弃执念类型{情绪} · 情绪{心酸}{−5} |
同一份产出里,写作手法.md 直接点出原作的代价:
POV 代价:男主的转变缺乏过程展示,N47 的内心独白集中倒出「早就原谅、夜不能寐、深爱」, 略显直白说明(tell 多于 show)——这是第一人称追妻文的通病。
下游 /story-short-write 直接读这些手法写同题材新篇。
完整产出:demo/拆文库/曾将爱意私藏/
/story-deslop 的本地检查是写作 lint:逐条匹配已知句式模板,
给出行号、命中片段和改写方向。拿一段人工构造的 AI 腔样例扫描,8 处命中(7 blocking):
改前.md:7:20 [blocking] em-dash (么叫做命运的安排——不是巧合,而是一)
改前.md:7:22 [blocking] not-is-comparison (不是巧合,而是一种冥冥之中的注定)
改前.md:11:1 [blocking] negation-parade (没有犹豫,没有生涩,)
改前.md:19:3 [blocking] voice-contrast (声音不大,却)
改前.md:21:2 [blocking] not-is-comparison (不是一次简单的弹奏,而是一场蓄谋已久的惊艳亮相)
改前.md:3:1 [advisory] cliche-density-tic (仿佛 一丝 深吸一口气 缓缓 微微)
同一场戏在第 21 章正文里的原样跑同一个扫描:零命中,exit 0。 两段字数几乎一样,差别在于改前用抽象判词替读者定性,改后把同一件事交给可见的动作和物件。
完整对照与全部 9 条命中:demo/去AI味对照/
/story dashboard 在本机 127.0.0.1 打开写作工作台,浏览拆文库与项目文件树,小说内容不上传。
| 工作台 | /story-cover 生成的封面 |
|---|---|
复制、改一改就能用:按当前任务选一条,把〈占位内容〉换成自己的信息。
我想开一部〈类型/题材〉新书。先从我提供的材料中分开已确定事实与待决问题;只规划一个有边界的开篇,交付核心冲突、视角/信息释放限制、前三章变化和待决项。不要自动写正文;题材取舍、角色动机和长期方向留给我确认。
请把这份书稿整理成可续写项目。第 1–〈N〉章完整,〈文件名〉是第〈N+1〉章残稿;保留原文,不覆盖完整章节,不把残稿算作完整章,推断出的设定单列待确认。先交付识别范围、重建事实、冲突/歧义和待我确认的决定,供我审阅;暂不续写。
这段读起来〈空泛/重复/过度解释〉。先指出具体读感问题,保留故事事实、角色已知和未揭示边界;只交付这一段的修订建议、前后对照与理由,不全书改写。哪些建议采用由我决定。
flowchart LR
classDef entry fill:#f0f0f0,color:#333,stroke:#999,stroke-width:1px
classDef phase fill:#e8f4fd,color:#1a1a2e,stroke:#4a9be8,stroke-width:1px
classDef final fill:#fce4ec,color:#333,stroke:#e57373,stroke-width:1px
entry_l{{"长篇作者"}}:::entry
entry_s{{"短篇作者"}}:::entry
entry_r{{"已有方向"}}:::entry
entry_i{{"已有小说"}}:::entry
subgraph S0 [" 环境部署"]
setup["/story-setup"]:::phase
end
subgraph S1 [" 扫榜选材"]
direction TB
scan_l["长篇扫榜"]:::phase
scan_s["短篇扫榜"]:::phase
end
subgraph S2 [" 拆文学习"]
direction TB
analyze_l["长篇拆文"]:::phase
analyze_s["短篇拆文"]:::phase
import_l["已有小说导入"]:::phase
end
subgraph S3 [" 落笔创作"]
direction TB
write_l["长篇写作"]:::phase
write_s["短篇写作"]:::phase
end
subgraph S4 [" 精修定稿"]
deslop["去 AI 味"]:::final
end
entry_l --> setup
entry_s --> setup
setup --> scan_l
setup --> scan_s
scan_l --> analyze_l
scan_s --> analyze_s
analyze_l --> write_l
analyze_s --> write_s
entry_r -.->|跳过准备| write_l
entry_r -.->|跳过准备| write_s
entry_i -.->|推荐先部署| setup
setup -.->|逆向导入| import_l
import_l -.->|续写| write_l
write_l --> deslop
write_s --> deslop
先用这几个就够写书:装一次 story-setup,之后长篇用 story-long-write、短篇用 story-short-write,写完用 story-deslop 去 AI 味;拿不准叫哪个就说 /story 加一句话。
| Skill | 触发 | 说明 |
|---|---|---|
story-setup |
/story-setup $story-setup /准备写书 |
环境部署 · Claude/Antigravity/OpenCode/Codex/ZCode/OpenClaw/Reasonix + generic(已有配置安全合并) |
story |
/story $story /story dashboard |
工具箱路由 · 模糊意图分发 + 作者习惯管理 + 本地拆文/项目 Dashboard |
story-long-write |
/story-long-write /写长篇 |
长篇写作 · 大纲搭建、人物设定、正文输出 |
story-short-write |
/story-short-write /写短篇 |
短篇写作 · 情绪设计、反转构思、精修出稿 |
story-deslop |
/story-deslop /去AI味 |
去AI味 · 检测并清除 AI 写作痕迹 |
进阶:拆对标书、扫榜、导入旧稿、多视角审稿、封面,需要时再用。
| Skill | 触发 | 说明 |
|---|---|---|
| `story-long- |