oh-story-claudecode
zenstory-ai · zenstory-ai/oh-story-claudecode
Một gói kỹ năng cho Claude Code và các tác nhân khác, cung cấp 13 kỹ năng hướng dẫn toàn bộ quy trình viết tiểu thuyết web Trung Quốc, từ lên ý tưởng đến tạo bìa.
Các kỹ năng tác nhân Claude Code / Codex / OpenCode để viết tiểu thuyết mạng tiếng Trung (网文): quét bảng xếp hạng, phân tích văn bản, viết, loại bỏ "mùi AI", quy trình tạo bìa hoàn chỉnh, hỗ trợ cả tiểu thuyết dài và ngắn | 13 kỹ năng viết tiểu thuyết và truyện dài với theo dõi tính liên tục dựa trên tệp. MIT.
Xem kết quả thực tế
Ảnh từ README của tác giả zenstory-ai ·Nguồn
Bạn có thể làm gì với nó
- Tạo dàn ý chương và bản nháp cho tiểu thuyết web Trung Quốc, đảm bảo tính liên tục với bộ nhớ dựa trên tệp.
- Phân tích các tiểu thuyết đang thịnh hành và phân tích cấu trúc phổ biến để định hình ý tưởng câu chuyện mới.
- Loại bỏ cảm giác AI trong văn bản và tạo ảnh bìa cho tiểu thuyết web của bạn với sự hỗ trợ của tác nhân.
Kiểm tra an toàn
Không thấy dấu hiệu rủi ro trong các file đã quét.
Quét tự động các file trong repo. Luôn xem lại code trước khi chạy.
Trích từ README
Oh Story
网文写作 skill 包:扫榜、拆文、写作、去AI味、封面图一套流程,装进你正在用的编程 Agent。
项目主页 · 安装 · 常见问题 · English
这是什么
Oh Story 覆盖长篇与短篇网络小说的全流程:扫榜选材 → 拆解爆款 → 搭大纲写正文 → 去AI味 → 生成封面图。 它以 13 个 skill 的形式装进你已经在用的编程 Agent,写作用的模型就是该 Agent 的模型,不需要 GPU,也不需要另外配模型。
- 用文件系统当记忆 — 设定、大纲、正文、追踪各自独立维护。几百章的长篇不靠对话记忆硬撑,压缩上下文也不会丢伏笔。
- 确定性检查与门禁 — 写正文前没有细纲会被拦下;写完自动扫截断、工程词和常见 AI 句式。7 个专业 Agent、8 个自动化 hook、100+ 份写作方法论按需加载。
- 装进 8 款编程 Agent — Claude Code · Codex CLI · Google Antigravity · OpenCode · ZCode · OpenClaw · Reasonix,以及能读取项目文件的通用 Web AI / Agent 环境。
- 面向的平台 — 起点、番茄、晋江、七猫、知乎盐言等长短篇平台。
套路 = 确定性的情绪满足
专业作者的方法论三步走:扫榜(洞察题材、人设、切入点)→ 拆文(拆解节奏与剧情素材,建立个人模块库)→ 商业化写作(运用钩子、爽感、期待感)。 围绕四条线展开:爆款逆向 · 剧情模块化重组 · 上下文状态分层管理 · 人机协同。
安装
ClawHub
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
续写第 21 章:从门禁到回写,一条链走完
上面的视频录的就是这一段。/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/拆文库/曾将爱意私藏/
去 AI 味:逐条匹配已知句式
/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 生成的封面 |
|---|---|
安装后的第一条请求
复制、改一改就能用:按当前任务

