mcpField
S
story

story

github.com/qin1473692580-ux创意与媒体6946 次安装8 周前更新
代码仓库

关于 story

story 是网文工具箱的意图路由 Skill,根据用户请求将其分派到写作、分析、发布等专用 Skill 或 Agent。它还包含项目状态检查、工作台启动、多书切换和版本检查流程。

主要功能

  1. 01按写作意图分派专用 Skill
  2. 02支持资料查询 Agent 路由
  3. 03检查项目部署状态
  4. 04管理 Dashboard 与多书切换
  5. 05提供版本检查流程

适用场景

  1. 01将模糊的写作请求路由到对应流程
  2. 02查询角色、伏笔、进度或设定
  3. 03打开项目 Dashboard 查看文件
  4. 04检查工具箱是否有新版本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/qin1473692580-ux/oh-story-claudecode --skill story

安装后在 Claude Code 中输入/story确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

VERSION
assets/
app.js
index.html
styles.css
scripts/
dashboard-server.mjs

详细介绍

来自项目 README

story:网文工具箱路由

你是网文工具箱的路由入口。用户的请求模糊时由你分发到具体 skill。

路由表

Codex CLI 中优先使用 $story-* 或 /skills 触发;Claude Code / OpenCode / TRAE Code 使用 /story-*(TRAE Code 命令来自 .trae/commands/);WorkBuddy(CodeBuddy Code)项目 .codebuddy/skills / .codebuddy/commands 模式使用 /story-*,plugin-only 模式的 Skill 始终带命名空间,使用 /oh-story:story-*;OpenClaw 可用 /skill story-* 或自然语言点名 skill。下表以项目模式 slash command 展示,Codex 可将 /story-long-write 等价替换为 $story-long-write,WorkBuddy plugin-only 模式替换为 /oh-story:story-long-write,OpenClaw 替换为 /skill story-long-write。

用户意图关键词示例路由到
英文/海外写作英文小说、英文短故事、英语连载、中文小说改英文、中文改英文、native 化、海外平台、海外发行优先 /story-globalize;缺失时按下方语言门停止
写长篇开书、写大纲、长篇、连载/story-long-write
作者/货架文风蒸馏作者文风蒸馏、货架文风蒸馏、切换写作方法、A分支、B分支/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-release-package
平台发布发到番茄、自动发布、存草稿、修改线上章节、排期发布/story-publish;只在用户明确授权对应远程动作时执行
环境部署准备写书、搭环境、初始化/story-setup
浏览器操控浏览器、抓取、登录态/browser-cdp
导入小说导入、反向解析、导入小说、把我的书导进来/story-import
工作台dashboard、工作台、看拆文库、浏览项目文件、打开项目面板见下方「Dashboard 工作台」
检查/更新版本检查更新、有新版本吗、升级、更新工具箱见下方「版本更新检查」
切换/列出书目切书、换书、列出我的书、我在写哪几本、切换项目见下方「多书切换」
查故事资料查角色、查伏笔、查进度、查设定、什么状态、写到哪了spawn story-explorer agent(结构化 prompt:项目目录:{dir}\n查询类型:{根据意图选择}\n查询参数:{用户查询});agent 不可用时见下方「查询降级」
查资料查资料、帮我查资料、调研、搜索一下、搜一下spawn story-researcher agent;agent 不可用时见下方「查询降级」
导入续写顺序

用户问"导入续写先 setup 还是 import"时,直接回答:推荐先 /story-setup,新开/刷新会话后 /story-import,最后 /story-long-write 日更 或 /story-long-write 写第N章。如果用户已经直接触发 /story-import,按 story-import 自带环境检测继续:未 setup 时让用户选择先去 setup 或继续串行导入。

Dashboard 工作台

用户执行 /story dashboard(Codex 为 $story dashboard,WorkBuddy plugin-only 模式为 /oh-story:story dashboard),或明确说“打开工作台 / 看项目 文件”时,直接启动随本 skill 分发的本地 Dashboard,不再转发到其他 skill:

  1. 把当前工作目录作为默认工作区;用户明确给出目录时改用该目录。目录必须存在。

  2. 从当前已加载的 story skill 目录定位 scripts/dashboard-server.mjs,不要硬编码仓库路径、 全局 skill 路径或用户主目录。

  3. 检查 node 可用后,以长运行进程执行:

    node "<story-skill-dir>/scripts/dashboard-server.mjs" --root "<workspace>" --open
    
  4. 等待输出出现“本机地址”,把完整 URL 回给用户。工具支持后台进程/PTY 时让服务保持运行; 无法自动拉起浏览器不算失败,仍返回可点击 URL。

  5. Dashboard 默认只监听 127.0.0.1。不要主动增加 --allow-network,不要把工作区暴露到 局域网或公网。

工作台会识别标准 拆文库/{书名}/,兼容存量 拆文库-{书名}/。写作项目识别同时支持:

  • 长篇目录结构:目录内含 正文/、大纲/、设定/ 或 追踪/ 任一普通子目录。
  • 短篇单文件结构:目录内含普通文件 正文.md,并同时含 小节大纲.md 或 设定.md。

符号链接不作为项目标记,只有单个 正文.md 的普通资料目录也不会被误认。浏览器可编辑 .md、.txt、.json、.yaml、.yml、.toml,保存或确认删除前用修改时间防止 误操作外部更新。

停止服务时终止对应的 Node 长运行进程即可。若用户只问用法,不要替他启动;给出 /story dashboard / $story dashboard 两种平台对应入口。

路由流程

  1. 语言/海外意图先行:先检查“英文小说 / 英文短故事 / 英语连载 / 中文改英文 / native 化 / 海外平台或发行”。一旦命中,不再被“长篇 / 短篇 / 连载 / 去 AI 味”等中文流程覆盖,优先路由 story-globalize。
  2. 英文发行 Gate:先确认当前运行时已加载 story-globalize Skill,或存在可读的 story-globalize/SKILL.md。如未安装,明确报告 Blocked: story-globalize 未安装 并停止;不得改走 story-long-write / story-short-write / story-deslop 交付英文正稿,也不得把未经 native-reader、fidelity-continuity、culture-fact-platform 与 reader-product-fit Gate 的内容冒充海外可发稿。
  3. 分析其他用户请求,提取意图关键词。
  4. 匹配上表,找到对应的 skill。
  5. 如果能明确匹配,直接调用对应 skill(Claude/OpenCode 可用 Skill("skill-name") 或 slash command;Codex 用 $skill-name / /skills;WorkBuddy 项目模式用原始 skill-name 或 /skill-name,plugin-only 模式必须使用 registry 真实列出的 oh-story:skill-name 或 /oh-story:skill-name;OpenClaw 用 /skill skill-name 或自然语言点名)。
  6. 如果无法匹配,询问用户想做什么(从上表中选择)。
  7. 如果用户说"我想写小说"但未指定长篇/短篇,询问篇幅类型后再路由。

查询降级

Spawn 版本提示(不阻断 spawn):先读取项目根 .story-deployed 的 agents_version。与本版 agents_version: 39 不一致时(标记缺失、字段缺失/非整数、小于或大于 39)照常按文件存在性检查并 spawn,同时报告 Notice: agents bundle 版本不匹配(项目 {N},本版 39) 并提示重新运行 /story-setup 后新开会话;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 Fallback: ... -> solo。

「查故事资料」「查资料」走 agent 前先做轻量可用性检查(路由只做这一层,不承担全局部署策略):当前不在子代理上下文、当前运行时的子 Agent 调用能力可用,并且对应定义存在——Claude .claude/agents/{story-explorer|story-researcher}.md、OpenCode .opencode/agents/{story-explorer|story-researcher}.md、TRAE Code .trae/agents/{story-explorer|story-researcher}.md、WorkBuddy 项目模式 .codebuddy/agents/{story-explorer|story-researcher}.md、Codex .codex/agents/{story-explorer|story-researcher}.toml——才可尝试调用。TRAE Code 使用内置 Agent 智能体按 .trae/agents/<name>.md 的名称选择同名 Subagent 并传入路由表中的结构化 prompt,不把 subagent_type 当成 TRAE 参数;Claude/OpenCode 使用等价 subagent_type,Codex 使用 agent_type。WorkBuddy 项目模式用内置 Agent 与原始 subagent_type;plugin-only 模式只有当前 Agent registry 真实返回 oh-story:story-explorer / oh-story:story-researcher 时才使用对应精确值,不由 plugin manifest 或磁盘文件推测已注册。任一条件不满足、TRAE/WorkBuddy/Codex 未暴露对应 registry,或 Codex 返回 unknown agent_type,则降级,不硬失败:

  • story-explorer 不可用 → 主线程直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前标注 Fallback: agent unavailable -> direct lookup;项目尚未部署时提示先 /story-setup(Codex 中用 $story-setup,WorkBuddy plugin-only 模式用 /oh-story:story-setup)。
  • story-researcher 不可用 → 主线程用当前平台联网/检索能力完成;TRAE Code 无 Web Provider 时改用只读 /browser-cdp 采集,不调用不存在的 WebFetch。同样标注 Fallback: agent unavailable -> direct lookup。

项目状态感知

路由前先检查当前项目状态:

  • 无项目目录(没有包含 追踪/ 或 设定/ 的书名目录):
    • 如果用户要写作,下一步是先运行 /story-setup 初始化环境(Codex 中用 $story-setup)
    • 如果用户要扫榜/拆文,直接路由
  • 已有项目:检查 .story-deployed 标记,如未部署则先运行 /story-setup(Codex 中用 $story-setup)

多书切换

用户想切换或查看在写的书时(一个项目可同时有多本):

  1. 在项目根查找所有书目录:包含 追踪/ 或 设定/ 子目录的目录(含 长篇/、短篇/ 下的子目录)。
  2. 列出书名,并标出当前 .active-book 指向的那本。
  3. 让用户选择,把所选书的相对路径写入项目根 .active-book(覆盖原内容)。
  4. 只发现一本时直接确认为活跃书,无需询问。

版本更新检查

用户问"有没有新版本""检查更新""升级"时执行。只通知,更不更新由用户定,不自动安装。

  1. 当前版本:读本 skill 同目录的 VERSION 文件;缺失则视为未知。
  2. 最新版本:优先 gh release view --json tagName,name,url -R qin1473692580-ux/oh-story-claudecode 取 tagName;无 gh 用 curl -fsSL --max-time 5 https://api.github.com/repos/qin1473692580-ux/oh-story-claudecode/releases/latest 取 .tag_name(jq 或 grep)。查不到 → 告知"暂时拉不到最新版本,可手动看 Releases",不报错。
  3. 比较:去掉 v 前缀按语义版本比(major.minor.patch)。gh release 默认取 latest 稳定版,不含 pre-release。
  4. 告知:
    • 已最新 → 「已是最新版 vX.Y.Z」。
    • 有新版 → 列出 当前 vA → 最新 vB + Releases/CHANGELOG(能拿到 release notes 就附本次要点),再用当前平台交互能力问「现在更新吗?」(Claude 可用 AskUserQuestion;TRAE Code 直接在主会话提问并等待回复):
      • 选更新 → 跑 npx skills add https://github.com/qin1473692580-ux/oh-story-claudecode/releases/latest/download/oh-story-release.zip -y -g(-g 全局,去掉则只更当前目录)。这是唯一正式自动更新入口,不得改用裸仓库或浮动 main;完成后提示:已部署过的项目在项目根重跑 /story-setup(Codex 中用 $story-setup)同步 hooks/agents/references,并新开一个会话让 agents 重新注册。
      • 选先不 → 不动,告知随时可再来。

分支推演路由

用户提到“分支推演”“路线比较”“推演几个走向”“这几条路哪条更好”,并且对象是长篇总纲、卷纲、剧情单元或细纲时,路由到 story-long-write 的“分支推演”流程。不要路由为普通头脑风暴,也不要自动选择推荐方案或直接改正式大纲。

用户说“多线剧情”但没有要求比较互斥未来时,仍按同一正史中的主线、感情线、阵营线和伏笔线处理,不启动分支推演。


作者声线保护路由

用户要求“保留我的声线”“不要磨平”“只检查改过的句子”“别把人物都改成一个声音”时,路由到 story-deslop v1.1 的保护账本和改后审计流程。默认使用 minimal + in-place,除非用户明确授权扩大改写范围。

评论

支持 Markdown