Install
$ agentstack add skill-qin1473692580-ux-oh-story-claudecode-story-import ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
story-import:逆向导入已有小说
你是小说项目逆向工程师。导入按篇幅分流:长篇走 Phase 3-L,短篇走 Phase 3-S。
交付物是写作工程:把作者已有的书重建为可续写的写作工程(项目结构 + 拆文库分析资产)。拆文库/{导入书名}/ 是重建工程的数据源,不能当成用完即弃的中间产物,也不能替代交付物本身——交付物应让作者能直接续写。执行时以「建工程」为可见目标,别把「拆文」当成终点或对外标签。
> Agent 兼容性:检查专业 agent 是否可用时,按 .claude/agents/{agent}.md → .opencode/agents/{agent}.md → .codex/agents/{agent}.toml 的顺序查找。Codex 原生子代理调用优先使用同名 agent_type;如果当前 Codex 运行时返回 unknown agent_type 或未暴露 custom-agent registry,必须降级为 solo/direct。检测到 .zcode/ 时同样直接 solo/direct,因为 ZCode 3.3.4 不执行项目 custom agents;报告 Fallback: project custom agents unavailable -> solo。Claude/OpenCode 兼容面保留 subagent_type。 > > Spawn 版本提示(不阻断 spawn):先读取项目根 .story-deployed 的 agents_version。与本版 agents_version: 29 不一致时(标记缺失、字段缺失/非整数、小于或大于 29)照常按文件存在性检查并 spawn,同时报告 Notice: agents bundle 版本不匹配(项目 {N},本版 29) 并提示重新运行 /story-setup 后新开会话;大于 29 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 Fallback: ... -> solo。
核心原则
名词与目录边界(全流程硬约束)
{导入书名}:用户自己已经写到一半或已经完本、现在要重建为工程的小说;它的分析源固定为拆文库/{导入书名}/。{对标书名}:用户另行选择的外部参考作品;它必须是独立拆解产物,来源固定为拆文库/{对标书名}/,且不得指向本次导入源。story-import可以复用拆解管道分析{导入书名},但不得把{导入书名}登记为主/副对标,不得把拆文库/{导入书名}/或项目设定/复制进对标/。- 用户没有明确选择外部对标时,不创建对标子目录、不写
主对标书;后续由 story-long-write / story-short-write 的对标发现流程单独处理。
原则 1:先分析后迁移
先用拆解管道完整拆解小说(输出到 拆文库/{导入书名}/),再将分析结果迁移为项目结构。该目录保存本书导入分析,保留不丢弃,但不属于外部对标视图。
原则 2:复用不重复
深度分析阶段调用现成的拆解管道,不重新发明:长篇运行 /story-long-analyze 的完整拆解管道,短篇运行 /story-short-analyze 的拆解管道。拆解方法论与输出模板由对应 analyze skill 自带,story-import 不执行拆解方法论、不维护这些文件。
Phase 1:确认导入源
Step 1:导入续写入口顺序(先答用户的流程问题)
当用户问"导入续写先走 story-setup 还是 story-import"、"已有小说怎么续写"、"导入流程"这类流程问题时,先直接给出结论,再继续收集原文:
- 推荐顺序:先
/story-setup(部署 hooks/agents/AGENTS),新开/刷新会话后运行/story-import,最后用/story-long-write 日更/写第N章续写。 - 也可以直接
/story-import:本 skill 会在进入深度分析前检测.story-deployed与专业 agent;未部署时会给出"先去 setup"或"继续导入(串行降级)"两种选择。 - 已导入过的当前协议项目(书名目录下有
追踪/_tracking-state.json):不要重复跑完整导入;直接进入书名目录,确认.active-book指向正确书目,再用/story-long-write 日更或/story-long-write 写第N章。 - v0.7.2 及更早的旧追踪项目(有
追踪/和正文,但没有追踪/_tracking-state.json):日更会停下要求重新导入,但不需要重跑全书拆解。只重建追踪即可,见下方「旧追踪项目迁移」。
这段结论必须出现在任何导入源追问之前,避免用户只想确认流程却被直接要求贴原文。
旧追踪项目迁移
书名目录下有 追踪/ 与正文、但没有 追踪/_tracking-state.json 时,项目停在 v0.7.2 及更早的追踪结构上。正文和 设定/、大纲/、拆文库/ 都不受影响,只需重建 追踪/,不重跑 Phase 2 拆解、不碰正文:
- 数清最后一个完整章号
N(正文/第NNN章_*.md的最大值)。 - 从旧
追踪/现有文件(角色状态、伏笔、时间线等,文件名按项目实际情况)和最近 3-5 章正文,重建当前状态:核心角色快照、未回收伏笔、已揭示时间线事件、长期约束、下一章承诺。角色快照的反推方法见 [references/character-state-reverse.md](references/character-state-reverse.md)。 - 按 [references/tracking-transaction.md](references/tracking-transaction.md) 的初始化事务格式构造 JSON,
last_chapter写N(第 1..N 章不伪造逐章记录),执行tracking_commit.py init。 init会把旧追踪结构按原样整体移入追踪/_旧追踪存档/再建当前协议——旧内容不删除、不参与解析,留给作者查阅。- 跑
tracking_commit.py check确认通过,再回/story-long-write 日更续写。
重建结果以第 2 步的证据为准;拿不准的字段留空或写进 continuity_risks,不杜撰。用户明确要求重拆全书时才走完整 Phase 2。
问用户:「你要导入哪本书?请提供文件路径或直接贴文本。」
Step 2:确认意图(写作工程 vs 仅拆文库)
默认目标是完整写作工程(可续写)。若用户意图不明确——是要可续写的工程,还是只要一份拆文库分析——主动询问,不要默认:
> 「你是想把这本书做成可续写的写作工程(设定/大纲/正文/追踪,能接着写第 N+1 章),还是只要一份拆文库分析?」
- 要可续写工程 → 走完整 story-import(Phase 2 拆 + Phase 3 迁移)。
- 只要分析 / 拆文库 → 直接用
/story-long-analyze(短篇/story-short-analyze),到拆文库为止,不进 Phase 3 迁移。
Step 3:输入方式识别
用户提供路径?
├─ 单文件路径(.txt/.md)
│ └─ 按章节分隔符自动切分
├─ 目录路径
│ └─ 按文件名排序,合并处理
└─ 无路径 → 用户直接贴文本?
├─ 是 → 保存到临时文件后处理
└─ 否 → 提示用户提供源文件
Step 4:基本信息确认
- 自动检测:从文本中识别书名(如果有)、总章数、总字数、章节格式
- 用户确认:
- 导入书名:{自动检测或用户输入}
- 题材类型:{用户提供}
- 目标平台:{起点/番茄/晋江/其他}
- 是否完本:{是/否(半成品写到第N章)}
- 篇幅类型:长篇 / 短篇 —— 按 [references/length-routing.md](references/length-routing.md) 自动检测(用户显式声明 > 结构信号 > 字数兜底),并向用户复述检测结果请其确认。判定结果决定 Phase 3 走长篇还是短篇路径。
- 最后一章是否完整:完整章 / 残稿(写了一半)。若是残稿,提示用户并把「残稿到第 N 章」记入上下文,让用户决定是「基于残章续写」还是「先补完再导入」。story-import 只记录用户决定,不替用户选。
- 外部对标(可选、与导入源分离):用户已经明确指定外部对标时,记录
{对标书名}并确认拆文库/{对标书名}/是该参考作品的独立拆解产物;不得把{导入书名}或本次刚生成的拆文目录当候选。用户未指定时不追加提问,记为“未绑定”,后续交给写作 skill 的对标发现流程。 - 输出确认:向用户展示检测到的章节范围、字数、判定的篇幅类型、最后一章状态,以及“外部对标:{对标书名/未绑定}”,确认后开始分析。
Step 5:环境检测前置
在进入 Phase 2 之前,先检测项目是否已部署 story-setup 基础设施:
- 先读取
.story-deployed并执行顶部 Spawn 版本门禁;旧版chapter-extractor文件即使仍在磁盘上也不可复用。 - 只有
agents_version: 29通过后,才按.claude/agents/chapter-extractor.md→.opencode/agents/chapter-extractor.md→.codex/agents/chapter-extractor.toml检查 Phase 2 长篇并行 agent。 - 如果
.story-deployed的target_cli包含zcode,项目 agents 缺失是 ZCode 3.3.4 的预期状态:不要提示重复部署,直接以串行 solo/direct 进入分析并报告 fallback。
部署标记缺失、版本无效/过期,或当前端的 agent 不可用,且不是已部署 ZCode 项目时,提示用户:
> 「检测到当前项目尚未部署写作基础设施。建议先运行 /story-setup 再回来导入,否则深度分析阶段无法使用并行 chapter-extractor agent。」
给用户两个选择:
- 先去 setup:暂停导入,运行
/story-setup,部署完成后重新触发/story-import; - 继续导入:接受 Phase 2 降级为串行处理(长篇逐章摘要不并行,速度较慢,但产物完整)。
用户选择记入上下文,Phase 2 据此决定是否走并行模式。
Step 6:原文备份
原文备份由 Phase 2 调用的 analyze 拆解管道负责(analyze 管道前置步骤会把原文复制/保存到 拆文库/{导入书名}/原文/,对应 story-long-analyze 与 story-short-analyze 的「原文备份(管道前置步骤)」)。Phase 1 只需确认源文件就绪(路径有效或文本已拿到),不在此处单独备份,避免与 analyze 管道重复备份逻辑。
Phase 2:深度分析
按 Phase 1 判定的篇幅类型,调用对应 analyze skill 的完整拆解管道;不要做「复用方法论」式的半流程,要驱动整条管道跑完,拿到全套结构化产物。
| 篇幅 | 调用的拆解管道 | 产物目录 | |------|--------------|---------| | 长篇 | story-long-analyze 的完整管道(Stage 0-6) | 拆文库/{导入书名}/ | | 短篇 | story-short-analyze 的拆解管道(Stage 2-6) | 拆文库/{导入书名}/ |
调用契约
长篇:自动续跑过 Stage 1 停靠点
story-long-analyze 在 Stage 0+1(黄金三章)后会自动停靠并用 AskUserQuestion 询问是否继续全量拆解(对应 story-long-analyze 的「Stage 1 停靠点」)。但导入场景需要 Stage 2-6 的全套产物(逐章摘要 / 聚合分析 / 剧情/节奏.md / 剧情/情绪模块.md / 设定关系 / 汇总报告 / 文风),缺一不可——否则 Phase 3 迁移会拿到半成品。
当前拆文契约:_progress.md 必须是 schema_version: 2,且 剧情/节奏.md 与 剧情/情绪模块.md 是导入必备权威产物。任一缺失都先修复或重跑对应 Stage,不得用摘要文件拼出看似完整的导入工程。
因此调用 story-long-analyze 时必须在一开始就以「完整拆解、一次跑完、不要停下询问」模式驱动管道,命中其「跳过询问」路径(用户开头明确说「完整拆解 / 一次跑完 / 系统拆解 / 别问」时不停靠),让管道自动从 Stage 2 续跑到 Stage 6。
- 措辞示例:启动深度分析时声明「以『完整拆解、一次跑完、不要停下询问』模式拆解本书,确保 Stage 2-6 全部产出」。
- 兜底:若运行环境实际仍停在 Stage 1 询问处,story-import 自动选择「继续全量拆解」,绝不把停靠询问甩给用户。
- 环境检测(Phase 1)发现未部署 chapter-extractor agent 且用户选择「继续导入」时,Stage 2 逐章摘要降级为串行处理,产物仍完整,仅速度变慢。
短篇:单一全量管道
story-short-analyze 的拆解管道(Stage 2-6)本身无 Stage 1 停靠点,一次跑完即可。它的 Phase 1 四个 Step 都要跑,按下表的导入场景取值执行,不整段跳过:
| Phase 1 步骤 | 导入场景下的处理 | |-------------|----------------| | Step 1:拿到原文 | 用 story-import Phase 1 已确认的源文件,不重新问 | | Step 2:字数检查(长短篇路由) | 篇幅已在 story-import Phase 1 判定并经用户确认,直接答「按短篇继续」,不重新路由 | | Step 3:题材识别 | 照常跑,题材标尺必须加载;story-import Phase 1 Step 4 已确认的题材类型直接代入,不重复提问 | | Step 4:续跑检查(拆文库/{导入书名}/_meta.json 已存在时三选一) | 先看旧产出是否可直接复用:stages_completed 已含 6 且 拆文报告.md / 情节节点.md / 写作手法.md / 原文/ 均非空、来源与本次导入源一致 → 直接进 Phase 3,不重跑也不归档。否则本轮首次进入 Phase 2 → 按 (a) 覆盖:先把旧产出归档到 拆文库/{导入书名}/_archive_{时间戳}/,再从 Stage 2 重跑;同一轮导入内重试同一本书 → 按 (b) 续跑。不把三选一甩给用户,也不跳过归档 |
_meta.json 的 genre_detected 由 Step 3 产出,是拆文契约的阻断级必填字段,下游 story-short-write 靠它选题材标尺——不要跳过 Step 3 直接从原文备份起跑。
- 措辞示例:启动深度分析时声明「《{导入书名}》篇幅已确认为短篇(题材 {题材类型},全文约 {N} 字),Step 2 直接按短篇继续,Step 4 按覆盖并归档处理,题材识别照跑,确保 Stage 2-6 全部产出」。
- 兜底:若运行环境仍抛出「此文字数 {N} 偏长,建议改用
/story-long-analyze」或灰区提问「介于短/长之间,按短篇还是长篇拆?」,一律按 Phase 1 已锁定的判定逐字回「按短篇继续」,绝不把路由询问甩给用户。
输出目录
长篇拆文库结构
长篇分析输出到 拆文库/{导入书名}/,与 story-long-analyze 拆解管道完全一致:
拆文库/{导入书名}/
├── 原文/
│ └── 原文.txt # 扩展名随源文件;对话直接贴入的文本存为 原文.md
├── 概要.md
├── 章节/
│ ├── 第1章_深度拆解.md
│ ├── 第1章_摘要.md
│ └── ... # 每章同时有 第N章_深度拆解.md 和 第N章_摘要.md
├── 快速预览.md
├── 角色/
│ ├── {角色名}.md
│ └── 角色关系.md
├── 剧情/
│ ├── {剧情标题}.md
│ ├── 故事线.md
│ ├── 节奏.md # 关键信息推进 / 情绪触动点 / 爆发节奏
│ ├── 情绪模块.md # 读者需求 / 情绪引擎 / 可复现模块
│ └── 散落情节.md
├── 设定/
│ ├── 世界观/ # 背景设定.md / 力量体系.md / 地理.md / 金手指.md(子目录形态)
│ └── 势力/ # {势力名}.md(每势力一文件)
├── 拆文报告.md
├── 文风.md # Stage 6 文风:写作技法视图 + 原文范例锚点
└── _progress.md
短篇拆文库结构
短篇分析输出到 拆文库/{导入书名}/,与 story-short-analyze 拆解管道一致:
拆文库/{导入书名}/
├── 原文/
│ └── 原文.txt # 扩展名随源文件;对话直接贴入的文本存为 原文.md
├── 拆文报告.md
├── 情节节点.md
├── 写作手法.md
└── _meta.json # 管道元数据 + 结构计数(下游 story-short-write 必读)
长篇完整管道(Stage 0-6)
> 管道详细说明见 story-long-analyze(运行 /story-long-analyze),此处仅列概要。
| 阶段 | 名称 | 输入 | 输出 | 完成标志 | |------|------|------|------|----------| | 0 | 概要提取 | 原始文本 | 概要.md + 章节索引 | 章节结构识别完成 | | 1 | 黄金三章 | 前 3 章原文 | 第1章深度拆解.md / 第2章深度拆解.md / 第3章_深度拆解.md → 停靠产出快速预览.md(导入场景自动续跑,不停下询问) | 3 章拆解完成 | | 2 | 逐章摘要 | 分块章节文本 | 章节摘要.md(含情节点+角色+关键信息与扩写技法)。每章10-40情节点(密度150-200字/个,按字数动态调节)。角色过滤(龙套不提取、别名归类)。并行 chapter-extractor agent 模式(未部署 agent 时降级串行)。计数验证:摘要数 == 章节数。 | 所有章节处理完成 | | 3 | 聚合分析 | 全部章节摘要 | 剧情/*.md + 剧情/README.md + 剧情/故事线.md + 剧情/节奏.md + 剧情/情绪模块.md。故事框架识别(前置)。两步法剧情聚合(先从摘要识别剧情大纲,再按大纲分配情节点)。关键信息推进索引、情绪触动点与爆发节奏、读者需求 / 情绪引擎 / 可复现模块。角色合并(跨章节去重+别名归一)。角色分级(主角/反派/核心配角/功能角色)。散落情节兜底(6步,含覆盖率验证)。质量检查(置信度>=0.85/覆盖率85%-95%/重叠率 管道详细说明见 story-short-analyze(运行 /story-short-analyze),此处仅列概要。
短篇为单一全量管道(Stage 2-6 严格串行),产物落盘 拆文库/{导入书名}/:Stage 2 结构+情节节点 → Stage 3 情感线+爆点 → Stage 4 反转+写作手法 → Stage 5 人物+开头结尾 → Stage 6 综合评估,最终汇总为 拆文报告.md、情节节点.md、写作手法.md,另有 _meta.json 记管道元数据与结构计数。
分块策略(长篇)
沿用 story-long-analyze 的分块策略(Stage 2 使用 chapter-extractor agent 并行,其他阶段按以下策略分块):
| 规模 | 策略 | 块大小 | |------|------|--------| | 500 章 | 语义分块:按自然分界切分,无明确分界时按固定章节数均匀切分 | 50-200 章/块 |
恢复机制
- 中断时通过进度文件追踪进度
- 新会话读取进度文件定位断点
- 从断点所在块的起始章节恢复
- 长篇进度文件格式沿用 story-long-analyze 拆解管道的进度段落约定,包含当前阶段、最后处理章节、已完成阶段列表、更新时间
质量检查
长篇阶段 3-4 完成前执行质量检查(置信度 >= 0.85,覆盖率 85%-95%,重叠率 钩子、人物关系变化、辅线/感情线、行动成本/收益归属等无法由原文摘要稳定判断的字段统一标 [待补充];story-import 只反推有证据的蓝图,不为补齐字段编造关系或副线。
Step 7:追踪文件生成
导入项目必须通过本 skill 自带的 scripts/tracking_commit.py init 一次性生成追踪状态,禁止模型分别写最终文件。完整字段与命令见 [references/tracking-transaction.md](references/tracking-transaction.md)。语义准备顺序如下:
- 导入截止章:把最后完整章 N 写入初始化事务的
last_chapter。工具在 meta 记录imported_through_chapter=N;导入旧章没有日更事务,不得为第 1..N 章伪造逐章增量,也不额外生成一份重复当前状态的叙事基线。 - 核心角色当前快照:从拆书产物反推主角、反派、核心配角的截至 N 章状态,按角色写入初始化 JSON 的
character_snapshots。输出由工具生成到追踪/角色状态/{角色名}.md;算法见 [references/character-state-reverse.md](references/character-state-reverse.md)。 - 伏笔当前行:从有正文证据的铺垫/回收事件生成
foreshadow。每个 ID 只保留当前状态一行;尚未实际埋设的未来设计留在大纲,不写伏笔.md。 - 事实与读者认知:把关键事件生成到
timeline_events。同一事件同时写客观事实、读者截至 N 章已知内容和实际揭示状态;未来计划揭示章不得伪装成已发生事实。 - 续写状态卡输入:准备当前位置、长期约束、活跃核心角色、近三章速记、下一章承诺和连贯性风险。
上下文.md由工具生成固定 7 栏,不把文风、文件索引、普通待办或质检计数塞进续写状态卡。 - 执行初始化:按当前平台探测 Python 3(
python3→python→py -3),执行:
> 项目 追踪/ 里已有不属于当前协议的早期文件时不必手工清理:init 会先把它们按原样整体移入 追踪/_旧追踪存档/,再在原地建当前协议。旧内容保留供作者查阅,不参与解析,当前状态完全由本次导入输入决定;校验失败的 init 不移动任何文件。
``text {PYTHON} {story-import skill 根}/scripts/tracking_commit.py init --project {项目根} --input {初始化事务.json} {PYTHON} {story-import skill 根}/scripts/tracking_commit.py check --project {项目根} ``
以 demo《让你管账号,你高燃混剪炸全网》导入至第 10 章为例:续写状态卡要写清江晨的手机原版《诸君,且听龙吟》被专业团队高清重拍,但高层看片后认为新版“缺了灵魂”,最终继续采用原版;江晨快照应体现其军宣创作价值已获周薄森、张耀祖确认;读者时间线只写读者已经看到的看片会结论,钟嘉嘉“只猜对了一半”背后的培养安排若尚未揭示,只能出现在作者真相,不能泄露到读者视图。
初始化成功后应得到:
追踪/
├── _tracking-state.json
├── 上下文.md
├── 逐章记录/ # 导入旧章不补造文件,续写从第 N+1 章开始
├── 角色状态/{角色名}.md
├── 伏笔.md
├── 时间线/
│ ├── 作者真相.md
│ └── 读者已知.md
半成品最后一章为残稿时,last_chapter、角色快照和其他当前语义检查点一律截至最后完整章;残稿处理策略写入连贯性风险,不把未完成动作登记成既成事实。
Step 8:题材定位生成
从拆文报告中提取核心发现,生成 设定/题材定位.md(按 [structure-mapping-long.md](references/structure-mapping-long.md)「题材定位生成」模板格式)。
设定/题材定位.md 的本书题材、核心梗、情绪与节奏摘要来自 拆文库/{导入书名}/,但这些字段不是对标登记。只有 Phase 1 已明确绑定外部对标时,才追加「对标书清单 + 主对标书」段;主对标书最多 1 本,副对标 / 参考对标不限制数量。未绑定时省略整个对标登记段,不得用 {导入书名} 补位。格式:
主对标书: {对标书名} # 必须是独立外部参考作品
对标书列表:
- 书名: {对标书名}
引用强度: 主 # 主 / 辅 / 参考
题材类型: {题材}
相关性: 同题材
用途: 文风+核心结构
- 书名: {书名 B}
引用强度: 辅
题材类型: {题材}
相关性: 同题材/弱相关
用途: {补设定/大纲/模块,不进文风}
- 书名: {书名 C}
引用强度: 辅
题材类型: {题材}
相关性: 同题材/弱相关
用途: {补设定/大纲/模块,不进文风}
- 书名: {书名 D}
引用强度: 参考
题材类型: {题材}
相关性: 同题材/弱相关
用途: {仅按预算召回摘要}
后续如需快速概览,可另写「对标分析(派生概要)」表;该表不是权威 registry,不得替代 主对标书 与完整 对标书列表。所有登记项必须能回溯到对应 拆文库/{对标书名}/,不得引用本书根 设定/。
Step 9:对标结构化资产同步
本步只处理 Phase 1 显式绑定的外部参考作品。把 拆文库/{对标书名}/ 的结构化分析资产同步到项目引用视图 {项目}/对标/{对标书名}/,供 story-long-write 优先读取。没有绑定外部对标时跳过本步,不创建空目录;严禁使用 拆文库/{导入书名}/ 或项目 设定/ 作为复制源。
| 源路径 | 项目对标路径 | 用途 | |-------|-------------|------| | 拆文库/{对标书名}/剧情/节奏.md | {项目}/对标/{对标书名}/剧情/节奏.md | story-long-write 读取关键信息推进、情绪触动点、爆发节奏 | | 拆文库/{对标书名}/剧情/情绪模块.md | {项目}/对标/{对标书名}/剧情/情绪模块.md | story-long-write 读取读者需求 / 情绪引擎、可复现模块 | | 拆文库/{对标书名}/剧情/*.md | {项目}/对标/{对标书名}/剧情/*.md | 剧情单元与故事线参考 | | 拆文库/{对标书名}/章节/*.md | {项目}/对标/{对标书名}/章节/*.md | 匹配章摘要和关键信息与扩写技法证据 | | 拆文库/{对标书名}/角色/*.md | {项目}/对标/{对标书名}/角色/*.md | 角色功能位参考 | | 拆文库/{对标书名}/设定/ | {项目}/对标/{对标书名}/设定/ | 世界观/势力参考 | | 拆文库/{对标书名}/拆文报告.md | {项目}/对标/{对标书名}/拆文报告.md | 人类可读摘要投影 |
缺失处理:
- 已选外部对标缺
剧情/节奏.md或剧情/情绪模块.md→ 不登记、不生成半套对标视图;报告module_or_rhythm_required_missing并提示对{对标书名}重跑/story-long-analyzeStage 3+。本书核心工程迁移不因此回滚。 - 其它结构化子目录缺失 → 按既有导入缺失项提示,不阻塞项目创建
Step 10:文风同步
外部对标已通过 Step 9 校验时,把 拆文库/{对标书名}/文风.md 复制到 {项目}/对标/{对标书名}/文风.md。纯复制,不重新生成;未绑定外部对标时跳过。
缺失处理:
- 拆文库没有文风文件(analyze 未跑 Stage 6)→ 导入报告提示用户重跑
/story-long-analyze后再同步;日更前文风缺失会被 fail-fast 拦截 - 项目对标已有旧文风文件 → 覆盖(最新拆文产物优先),在导入报告告知
Phase 3-S:短篇结构迁移
将 拆文库/{导入书名}/ 的短篇拆文产物迁移为 {短篇标题}/ 短篇工程结构,供 story-short-write Phase 3 逐场景写作无缝接手。迁移规则详见 [references/structure-mapping-short.md](references/structure-mapping-short.md)。
> 短篇工程与长篇完全不同:短篇正文是单文件 正文.md(不切章),不产 追踪/、大纲/、正文/ 等长篇目录。迁移时严禁误建这些长篇专属目录。
短篇目标工程结构
{短篇标题}/
├── 设定.md ← 含核心框架 + 本书续写基线
├── 小节大纲.md ← 按段-小节结构反推
├── 正文.md ← 单文件全文正文
└── 对标/{对标书名}/ ← 可选:仅外部对标引用视图
├── 拆文报告.md
├── 情节节点.md
└── 写作手法.md
迁移步骤
Step 1:正文迁移
将 拆文库/{导入书名}/原文/ 的全文迁移为单文件 {标题}/正文.md,按 [format-and-structure.md](references/format-and-structure.md) 规范化格式(小节标记 ###1.、段间仅单换行、对话引号按项目/平台约定统一)。原文已是成稿,不重写内容,只规范格式。
Step 2:设定生成
从 拆文报告.md、写作手法.md 反推 {标题}/设定.md,含两个区块:
- 核心框架:对齐 story-short-write 核心框架模板(基本信息、一句话梗概、核心反转、情绪设计、人设速写)。
- 本书续写基线:把已写内容的故事结构、情绪节奏、核心反转机制、既有写作手法写入续写基线区;这是本书内部上下文,不是对标摘要。
Step 3:小节大纲生成
从 情节节点.md 的功能分段反推 {标题}/小节大纲.md,按开头段/铺垫段/升级段/反转段/结尾段映射;短篇只做轻量蓝图:每节写 结构段/五段功能、主事件、3-5 个子事件、目标情绪、人物/关系变化、因果/逻辑链、结尾承接/小钩子。钩子或关系无法判断时标 [待补充],不套用长篇完整章节蓝图。
Step 4:外部对标引用视图(可选)
仅当 Phase 1 已显式绑定外部 {对标书名} 时,才把 拆文库/{对标书名}/ 同步为 {标题}/对标/{对标书名}/;没有绑定则跳过。不得把 拆文库/{导入书名}/ 整体复制进 对标/。
Phase 4:项目激活
Step 1:质量检查
按篇幅对照对应的质量检查清单:
- 长篇:完整导入质量清单见 [references/structure-mapping-long.md](references/structure-mapping-long.md) 末尾(含正文文件数对照、核心角色独立快照、作者/读者时间线隔离、
tracking_commit.py check通过、卷划分已经用户确认等)。 - 短篇:质量清单见 [references/structure-mapping-short.md](references/structure-mapping-short.md) 末尾的质量检查清单(含
正文.md单文件存在且格式合规、设定.md含核心框架+本书续写基线、未误建长篇专属目录等)。
Step 2:缺失项提示
输出导入结果摘要和待补充项,按篇幅分支。
长篇导入完成报告:
=== 导入完成报告(长篇)===
书名:{导入书名}
源文件:{X} 章,{Y} 万字
项目目录:{路径}
## 已生成文件
- 正文:{N} 章
- 角色文件:{M} 个
- 大纲:大纲.md + {V} 个卷纲 + {N} 个细纲
- 追踪:唯一结构化 state + 核心角色独立派生快照 + 伏笔当前视图 + 时间线双视图 + 空逐章记录目录 + 固定 7 栏上下文
- 设定:{世界观文件数} 个
- 外部对标:{未绑定 / 已从 `拆文库/{对标书名}/` 同步到 `对标/{对标书名}/` / 绑定失败及修复动作}
## 待补充项
- [ ] 细纲中的章首/章尾钩子需要补充
- [ ] 题材定位的核心梗三分法需要确认
- [ ] 伏笔追踪中的伏笔已复核
- [ ] `追踪/角色状态/{角色名}.md` 已复核,核心角色各自为截至最后完整章的当前快照
- [ ] `追踪/上下文.md` 顶层区块恰好为新协议规定的 7 个,且不超过 12288 字节
- [ ] `追踪/逐章记录/` 为空;续写从第 N+1 章产生紧凑增量,导入章不补造记录
- [ ] `追踪/时间线/读者已知.md` 未泄露 `作者真相.md` 中尚未揭示的事实
- [ ] `tracking_commit.py check` 通过,`_tracking-state.json` 与全部派生视图一致
- [ ] 卷划分已确认(原文无明确卷界时)
- [ ] `拆文库/{导入书名}/` 未被复制到项目 `对标/`,本书未登记为自身对标
- [ ] 若绑定外部对标,`设定/题材定位.md` 的 `主对标书` 与 `对标书列表` 只包含独立 `{对标书名}`,且同步来源与目录名一致
## 下一步操作
- 运行 `/story-review lean` 审查导入结果
- 运行 `/story-long-write` + "日更" 开始续写
短篇导入完成报告:
=== 导入完成报告(短篇)===
标题:{短篇标题}
源文件:{Y} 字
项目目录:{路径}
## 已生成文件
- 正文.md(单文件,{Y} 字)
- 设定.md(核心框架 + 本书续写基线)
- 小节大纲.md({N} 个小节)
-
…
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [qin1473692580-ux](https://github.com/qin1473692580-ux)
- **Source:** [qin1473692580-ux/oh-story-claudecode](https://github.com/qin1473692580-ux/oh-story-claudecode)
- **License:** MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.