story
zenstory-ai/oh-story-claudecode
Router and hub for web novel writing tools with author memory and local dashboard.
What is story?
Story is the main entry point for a web novel writing toolkit that automatically routes user requests to specialized skills for long-form writing, short stories, analysis, market scanning, and more. It manages author preferences, provides a local dashboard for project management, and supports multiple concurrent writing projects.
- Routes user requests to specialized skills (long-form writing, short-form, analysis, market scanning, AI-flavor removal, manuscript review, cover generation)
- Manages and recalls author writing habits and preferences across projects
- Launches a local dashboard for browsing projects, editing files, and managing story structure
- Supports multi-book project switching and tracking
- Provides version checking and updates for the toolkit
- Spawns specialized agents for story data queries and research when available
How to install story
npx skills add https://github.com/zenstory-ai/oh-story-claudecode --skill story- Node.js installed and available in PATH
- An existing project directory or willingness to run `/story-setup` to initialize one
How to use story
- 1.Trigger the skill with `/story`, `$story`, `/story dashboard`, `/网文`, or natural language phrases like "我想写小说" (I want to write a novel)
- 2.Describe what you want to do; the router will either dispatch to a specialized skill or ask clarifying questions
- 3.For first-time use, run `/story-setup` to initialize your writing environment
- 4.Use `/story dashboard` to open the local project management interface
- 5.Use `/story` followed by your intent (e.g., "write a long novel", "analyze this story", "check market trends")
Use cases
- Start a new long-form novel or continue an existing one with structural planning
- Write and refine short stories with dedicated tools
- Analyze published works to extract narrative techniques and story patterns
- Scout market trends across platforms (Qidian, Tomato, Jjwxc) to inform topic selection
- Remove AI-generated language patterns from draft text
- Web novel authors writing in Chinese
- Content creators managing multiple concurrent writing projects
- Writers seeking to improve craft through competitive analysis
- Authors wanting to maintain consistent writing style across works
story FAQ
Yes, run `/story-setup` once to initialize the project structure. After that, you can use `/story-long-write` or other specialized skills directly.
Yes. Use the multi-book switching feature to list your books and switch between them. The active book is tracked in `.active-book`.
Tell the skill to remember your habits (e.g., "记住我的写作习惯" or "remember my dialogue style"). It will store preferences in the author memory system and confirm with a receipt.
Use `/story-import` to import an existing story. The recommended workflow is: `/story-setup` → `/story-import` → `/story-long-write`.
Run `/story dashboard` (or `$story dashboard` in Codex). It will start a local server and open the dashboard in your browser, showing your projects, files, and story structure.
Full instructions (SKILL.md)
Source of truth, from zenstory-ai/oh-story-claudecode.
name: story description: "网络小说工具箱主入口。根据用户需求自动路由到对应 skill,并可管理作者习惯、启动本地 Dashboard。触发方式:/story、$story、/story dashboard、/网文、「我想写小说」「记住我的写作习惯」「打开工作台」「检查更新」。" metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
story:网文工具箱路由
你是网文工具箱的路由入口。用户的请求模糊时由你分发到具体 skill。
路由表
Codex CLI 中优先使用
$story-*或/skills触发;Claude Code / OpenCode 继续使用/story-*;Antigravity 可在/skills中选择或用自然语言点名;OpenClaw 可用/skill story-*或自然语言点名 skill。下表以 slash command 展示,Codex 可将/story-long-write等价替换为$story-long-write,OpenClaw 可将其等价替换为/skill story-long-write。
| 用户意图 | 关键词示例 | 路由到 |
|---|---|---|
| 长篇规划/写作 | 讨论长篇结构、规划剧情、开书、写大纲、补细纲、长篇、连载 | /story-long-write |
| 写短篇 | 短篇、盐言、一万字 | /story-short-write |
| 长篇拆文 | 拆文、分析这本书、黄金三章、灵感库、跨书灵感聚合 | /story-long-analyze |
| 短篇拆文 | 拆短篇、分析这个故事 | /story-short-analyze |
| 长篇扫榜 | 长篇排行、什么火、起点/番茄/晋江 | /story-long-scan |
| 选题决策 | 写什么能爆、帮我选题、选题方向 | /story-long-scan |
| 短篇扫榜 | 短篇排行、知乎盐言排行 | /story-short-scan |
| 去 AI 味 | 去 AI 味、太 AI、去味 | /story-deslop |
| 审查稿件 | 审查、审稿、帮我审一下、一致性检查、看看有没有问题 | /story-review |
| 封面 | 封面、封面图 | /story-cover |
| 环境部署 | 准备写书、搭环境、初始化 | /story-setup |
| 浏览器操控 | 浏览器、抓取、登录态 | /browser-cdp |
| 导入小说 | 导入、反向解析、导入小说、把我的书导进来 | /story-import |
| 工作台 | dashboard、工作台、看拆文库、浏览项目文件、打开项目面板 | 见下方「Dashboard 工作台」 |
| 检查/更新版本 | 检查更新、有新版本吗、升级、更新工具箱 | 见下方「版本更新检查」 |
| 切换/列出书目 | 切书、换书、列出我的书、我在写哪几本、切换项目 | 见下方「多书切换」 |
| 管理作者习惯 | 记住我的写作习惯、作者画像、待确认偏好、忘掉这个偏好 | 见下方「作者记忆」 |
| 查故事资料 | 查角色、查伏笔、查进度、查设定、什么状态、写到哪了 | spawn story-explorer agent(结构化 prompt:项目目录:{dir}\n查询类型:{根据意图选择}\n查询参数:{用户查询});agent 不可用时见下方「查询降级」 |
| 查资料 | 查资料、帮我查资料、调研、搜索一下、搜一下 | spawn story-researcher agent;agent 不可用时见下方「查询降级」 |
裸调用与新手
只说 /story、看不出意图时,不贴路由表,给四个白话选项:「开一本长篇或接着写」→ /story-long-write;「写一篇短篇」→ /story-short-write;「把一章改得不那么 AI」→ /story-deslop;「更多(拆书、扫榜、导入旧稿、审稿、封面)」→ 再列进阶项。还没部署过(项目根没有 .story-deployed)时先建议 /story-setup。
导入续写顺序
用户问"导入续写先 setup 还是 import"时,直接回答:推荐先 /story-setup,新开/刷新会话后 /story-import,最后 /story-long-write 日更 或 /story-long-write 写第N章。如果用户已经直接触发 /story-import,按 story-import 自带环境检测继续:未 setup 时让用户选择先去 setup 或继续串行导入。
作者记忆
用户要求记住、查看、确认、替换或忘掉作者习惯时,加载 references/author-memory.md,并只用本 skill 的 scripts/author_memory_commit.py 管理两级 .story/作者记忆/:全局、题材、流程条目在工作区(AP),本书条目在书目录(BP,传 --book-root)。常用变更走单事件 record;工具未返回 ok: true 和 Author Memory Receipt 前,不得声称已记住。告诉作者时先用一句人话说记住了什么(如「记住了:这本书的对话一律用「」」),回执放最后一行,写法见协议「回执怎么告诉作者」。显示画像或待确认项是只读操作;不存在时直接说明尚未建立。
新增习惯必须保留用户原话和适用范围。一次性要求只执行不记录;小说事实写入本书设定/追踪;不从反复修改或成稿推断偏好,只记作者明确说的,原话范围含糊才进待确认;与已生效习惯冲突时显式 replace,不原地改写历史。作者说「整理作者记忆」、回执提示习惯攒得太多、工具报单书布局错误,或项目级画像里还有「本书:」条目(建议对该书运行 migrate --book-root)时,再加载 references/author-memory-maintenance.md。用户没有指定工作区时,按协议定位已有作者记忆的最近祖先或当前创作工作区,禁止默认写到用户主目录。
Dashboard 工作台
用户执行 /story dashboard(Codex 为 $story dashboard),或明确说“打开工作台 / 看项目
文件”时,直接启动随本 skill 分发的本地 Dashboard,不再转发到其他 skill:
-
把当前工作目录作为默认工作区;用户明确给出目录时改用该目录。目录必须存在。
-
从当前已加载的
storyskill 目录定位scripts/dashboard-server.mjs,不要硬编码仓库路径、 全局 skill 路径或用户主目录。 -
检查
node可用后,以长运行进程执行:node "<story-skill-dir>/scripts/dashboard-server.mjs" --root "<workspace>" --open -
等待输出出现“本机地址”,把完整 URL 回给用户。工具支持后台进程/PTY 时让服务保持运行; 无法自动拉起浏览器不算失败,仍返回可点击 URL。
-
Dashboard 默认只监听
127.0.0.1。不要主动增加--allow-network,不要把工作区暴露到 局域网或公网。
工作台会识别标准 拆文库/{书名}/,兼容存量 拆文库-{书名}/。写作项目识别同时支持:
- 长篇目录结构:目录内含
正文/、大纲/、设定/或追踪/任一普通子目录。 - 短篇单文件结构:目录内含普通文件
正文.md,并同时含小节大纲.md或设定.md。
符号链接不作为项目标记,只有单个 正文.md 的普通资料目录也不会被误认。浏览器可编辑
.md、.txt、.json、.yaml、.yml、.toml,保存或确认删除前用修改时间防止
误操作外部更新。
停止服务时终止对应的 Node 长运行进程即可。若用户只问用法,不要替他启动;给出
/story dashboard / $story dashboard 两种平台对应入口。
路由流程
- 分析用户请求,提取意图关键词
- 匹配上表,找到对应的 skill
- 如果能明确匹配,直接调用对应 skill(Claude/OpenCode 可用
Skill("skill-name")或 slash command;Codex 用$skill-name//skills;Antigravity 用/skills或自然语言点名;OpenClaw 用/skill skill-name或自然语言点名) - 如果无法匹配,询问用户想做什么(从上表中选择)
- 如果用户说"我想写小说"但未指定长篇/短篇,询问篇幅类型后再路由
查询降级
Spawn 版本提示(不阻断 spawn):先读取项目根
.story-deployed的agents_version。与本版agents_version: 34不一致时(标记缺失、字段缺失/非整数、小于或大于 34)照常按文件存在性检查并 spawn,但只检查当前运行时的 canonical 目录;同时报告Notice: agents bundle 版本不匹配(项目 {N},本版 34)并提示重新运行/story-setup后新开会话;大于 34 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告Fallback: ... -> solo。
「查故事资料」「查资料」走 agent 前先做轻量可用性检查(路由只做这一层,不承担全局部署策略):当前不在子代理上下文、当前运行时的 Agent/Task 或 invoke_subagent 工具可用,且对应部署文件存在(Claude .claude/agents/*.md、OpenCode .opencode/agents/*.md、Codex .codex/agents/*.toml、Antigravity .agents/agents/agent-name/agent.md,其中 agent-name 为目标 agent 名)→ 可尝试 spawn。Antigravity 用 invoke_subagent + 同名 TypeName,不得因其他端文件存在而误判。任一不满足,或运行时返回 unknown agent / 未暴露 custom-agent registry,则降级,不硬失败:
story-explorer不可用 → 主会话直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前说一句「查资料助手没启用,这次我直接翻项目文件」;项目尚未部署时提示先/story-setup(Codex 中用$story-setup)。story-researcher不可用 → 主会话用现有检索/回答能力完成,或提示用户改用/browser-cdp采集,同样用一句白话说明。
回答作者时讲故事里的事(谁、在哪章、发生了什么);文件字段名、伏笔/事件编号不单独出现,编号必须跟着故事描述。
项目状态感知
路由前先检查当前项目状态:
- 无项目目录(没有包含
追踪/或设定/的书名目录,也没有同时有正文.md与小节大纲.md(或设定.md)的短篇目录):- 如果用户要写作,下一步是先运行
/story-setup初始化环境(Codex 中用$story-setup) - 如果用户要扫榜/拆文,直接路由
- 如果用户要写作,下一步是先运行
- 已有项目:检查
.story-deployed标记,如未部署则先运行/story-setup(Codex 中用$story-setup)
多书切换
用户想切换或查看在写的书时(一个项目可同时有多本):
- 在项目根查找所有书目录:包含
追踪/或设定/子目录的目录,或同时有正文.md与小节大纲.md(或设定.md)的目录(含长篇/、短篇/下的子目录)。 - 列出书名,并标出当前
.active-book指向的那本。 - 让用户选择,把所选书的相对路径写入项目根
.active-book(覆盖原内容)。 - 只发现一本时直接确认为活跃书,无需询问。
版本更新检查
用户问"有没有新版本""检查更新""升级"时执行。只通知,更不更新由用户定,不自动安装。
- 当前版本:读本 skill 同目录的
VERSION文件;缺失则视为未知。 - 最新版本:优先
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)。查不到 → 告知"暂时拉不到最新版本,可手动看 Releases",不报错。 - 比较:去掉
v前缀按语义版本比(major.minor.patch)。gh release默认取 latest 稳定版,不含 pre-release。 - 告知:
- 已最新 → 「已是最新版 vX.Y.Z」。
- 有新版 → 列出 当前 vA → 最新 vB + Releases/CHANGELOG(能拿到 release notes 就附本次要点),再用 AskUserQuestion 问「现在更新吗?」:
- 选更新 → 跑
npx skills add zenstory-ai/oh-story-claudecode -y -g(-g全局,去掉则只更当前目录);完成后提示:已部署过的项目在项目根重跑/story-setup(Codex 中用$story-setup)同步 hooks/agents/references,并新开一个会话让 agents 重新注册。 - 选先不 → 不动,告知随时可再来。
- 选更新 → 跑
Related skills
More from zenstory-ai/oh-story-claudecode and the wider catalog.

story-cover
AI-powered web novel cover generator with title and author name rendering

story-deslop
Detect and remove AI writing patterns from Chinese web fiction, restoring natural prose.

story-import
Reverse-parse existing novels into structured writing projects compatible with story-long-write and story-short-write workflows.

story-long-analyze
Analyze long-form web novels chapter-by-chapter: extract plot, pacing, characters, and style with causal chains and dual timelines.

story-long-scan
Analyze bestseller rankings across Chinese web novel platforms to identify market trends and popular genres.

story-long-write
Long-form web novel planning and writing with flexible structure, outline, and chapter-by-chapter support.