mcpField
S
story

story

github.com/qin1473692580-uxクリエイティブ・メディア6946 回インストール8 週間前に更新
リポジトリ

story について

storyはWeb小説ツールキットのルーティングスキルで、依頼内容に応じて執筆、分析、公開などの専用スキルやエージェントへ振り分けます。プロジェクト状態の確認、ダッシュボード起動、作品切り替え、バージョン確認の手順も含みます。

主な機能

  1. 01依頼内容に応じた専用スキルへの振り分け
  2. 02調査クエリのエージェントへの振り分け
  3. 03プロジェクトの導入状態確認
  4. 04ダッシュボードと作品切り替えの管理
  5. 05バージョン確認手順

活用シーン

  1. 01曖昧な執筆依頼の振り分け
  2. 02登場人物、伏線、進捗の確認
  3. 03プロジェクトのファイル確認のためのダッシュボード起動
  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

詳細

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 未満または 39 より大きい)も、通常どおりファイルの存在を確認して spawn します。同時に Notice: agents bundle 版本不匹配(项目 {N},本版 39) を報告し、/story-setup を再実行してから新しいセッションを開始するよう案内します。39 より大きい場合は、先に oh-story-claudecode を更新するよう追加で案内します。ローカルの旧版 setup でダウングレード上書きしてはいけません。agent ファイルがない場合、または実行時にカスタム 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 つのプロジェクトに複数の書籍を置けます):

  1. プロジェクトルートで、すべての書籍ディレクトリを検索します。追踪/ または 设定/ サブディレクトリを含むディレクトリが対象です(长篇/、短篇/ 配下のサブディレクトリも含みます)。
  2. 書籍名を一覧表示し、現在 .active-book が指している書籍を示します。
  3. ユーザーに選択してもらい、選択した書籍の相対パスをプロジェクトルートの .active-book に書き込みます(既存の内容は上書きします)。
  4. 見つかった書籍が 1 冊だけの場合は、確認してアクティブな書籍に設定します。質問する必要はありません。

バージョン更新の確認

ユーザーが「新しいバージョンはある?」「更新を確認して」「アップグレード」と尋ねた場合に実行します。通知のみ行い、更新するかどうかはユーザーが決めます。自動インストールはしません。

  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 はデフォルトで最新の安定版を取得し、pre-release は含みません。
  4. 通知:
    • 最新の場合 → 「最新版 vX.Y.Z です」。
    • 新しいバージョンがある場合 → 現在の vA → 最新 vB と Releases/CHANGELOG を提示します(リリースノートを取得できた場合は、今回の主な変更点も添えます)。その後、現在のプラットフォームの対話機能を使って「今すぐ更新しますか?」と尋ねます(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 を再実行して hooks/agents/references を同期し、agents を再登録するため新しいセッションを開始するよう案内します。
      • 今は更新しない場合 → 何も変更せず、いつでも再度確認できることを伝えます。

分岐推演のルーティング

ユーザーが「分岐推演」「ルート比較」「いくつかの展開を推演」「この複数のルートではどれがよい?」と言い、対象が長編の全体構成、巻ごとの構成、プロット単位、または詳細な構成である場合は、story-long-write の「分岐推演」フローにルーティングします。通常のブレインストーミングにはルーティングせず、推奨案を自動で選んだり、正式な構成を直接変更したりしません。

ユーザーが「複数のストーリーライン」と言っていても、互いに排他的な未来の比較を求めていない場合は、同一の正史におけるメインストーリー、恋愛ライン、陣営ライン、伏線ラインとして扱い、分岐推演は開始しません。


作者の声を保護するルーティング

ユーザーが「自分の声を残して」「平板にしないで」「変更した文だけを確認して」「登場人物の声を同じにしないで」と求めた場合は、story-deslop v1.1 の保護台帳と変更後の監査フローにルーティングします。ユーザーが書き換え範囲の拡大を明示的に許可しない限り、デフォルトでは minimal + in-place を使います。

コメント