
Story Import
FreeReverse-engineer existing novels into structured projects.
Free · Opens the source repo
What Story Import does
Story Import is a skill designed for authors looking to convert their existing novels, whether incomplete or finished, into a structured writing project. By utilizing a reverse parsing approach, it organizes the novel into a standard project directory structure compatible with subsequent writing processes, specifically for both long and short stories. This skill integrates seamlessly with the existing analysis pipelines of story-long-analyze and story-short-analyze, ensuring that the imported content is appropriately categorized based on its length.
The primary output of this skill is a writing project that allows authors to continue their work seamlessly. The skill creates a dedicated directory for the imported book, ensuring that all relevant analysis assets are preserved and organized. This means that authors can easily access their work and continue writing without losing context or structure. The skill also emphasizes the importance of not treating the analysis output as a disposable product; instead, it should serve as a foundation for further writing.
To initiate the import process, users can trigger the skill using specific commands like /story-import or simply by providing the text of their novel. The skill first confirms the source of the novel and the intended outcome—whether the user wants a fully structured writing project or just an analysis. It then proceeds to analyze the text, generating a comprehensive breakdown that feeds into the project structure, thus allowing for a smooth transition into the writing phase.
Story Import is particularly useful for writers who have previously drafted their stories and are looking to refine and continue them in a more organized manner. It is an essential tool for authors who wish to leverage existing content while ensuring that their writing process remains efficient and structured.
When to use it
Use this skill when you have a completed or partially completed novel that you want to convert into a structured writing project.
When not to use it
This skill is not suitable for creating new content from scratch or for authors who do not have any existing material to import.
What you can build with it
Importing a Completed Novel
You have finished a novel and want to organize it into a structured writing project for further editing and publishing.
Continuing a Partially Written Story
You have a draft of a novel that you want to analyze and restructure for better flow and organization before continuing to write.
Creating a Reference for Future Work
You want to analyze your existing work to create a reference that helps you maintain consistency in character development and plot.
How to install Story Import
View source1. Install with the skills CLI
npx skills add worldwonderer/oh-story-claudecode/story-import --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by worldwondererstory-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: 24不一致时(标记缺失、字段缺失/非整数、小于或大于 24)照常按文件存在性检查并 spawn,同时报告Notice: agents bundle 版本不匹配(项目 {N},本版 24)并提示重新运行/story-setup后新开会话;大于 24 时额外提示先更新 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/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 自动检测(用户显式声明 > 结构信号 > 字数兜底),并向用户复述检测结果请其确认。判定结果决定 Phase 3 走长篇还是短篇路径。
- 最后一章是否完整:完整章 / 残稿(写了一半)。若是残稿,提示用户并把「残稿到第 N 章」记入上下文,让用户决定是「基于残章续写」还是「先补完再导入」。story-import 只记录用户决定,不替用户选。
- 外部对标(可选、与导入源分离):用户已经明确指定外部对标时,记录
{对标书名}并确认拆文库/{对标书名}/是该参考作品的独立拆解产物;不得把{导入书名}或本次刚生成的拆文目录当候选。用户未指定时不追加提问,记为“未绑定”,后续交给写作 skill 的对标发现流程。 - 输出确认:向用户展示检测到的章节范围、字数、判定的篇幅类型、最后一章状态,以及“外部对标:{对标书名/未绑定}”,确认后开始分析。
Step 5:环境检测前置
在进入 Phase 2 之前,先检测项目是否已部署 story-setup 基础设施:
- 先读取
.story-deployed并执行顶部 Spawn 版本门禁;旧版chapter-extractor文件即使仍在磁盘上也不可复用。 - 只有
agents_version: 24通过后,才按.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%/重叠率<=35%)。 | 质量检查通过 |
| 4 | 设定+关系 | 阶段 3 合并后角色数据+情节点 | 设定/.md + 角色/.md。两阶段角色模型。别名解析(置信度≥0.85自动合并)。 | 设定和关系提取完成 |
| 5 | 汇总报告 | 全部输出 | 拆文报告.md(含「读者需求 / 情绪引擎」「关键信息与扩写技法总览」「节奏与情绪触动点」「可复现模块」,并指向 剧情/节奏.md / 剧情/情绪模块.md) | 报告生成完成 |
| 6 | 文风 | 拆文报告.md + 章节/第1-3章_深度拆解.md + 章节/*_摘要.md + 原文/原文.txt | 文风.md(本书历史写法分析) | 文风落盘 拆文库/{导入书名}/文风.md,保留为导入分析,不复制到本书 对标/ |
短篇拆文管道
管道详细说明见 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 并行,其他阶段按以下策略分块):
| 规模 | 策略 | 块大小 |
|---|---|---|
| <50 章 | 按阶段整体处理 | 无需分块 |
| 50-100 章 | 按阶段整体处理 | 无需分块(可选智能分块) |
| 100-500 章 | 按章节分块 | 5-8 章/块 |
| >500 章 | 语义分块:按自然分界切分,无明确分界时按固定章节数均匀切分 | 50-200 章/块 |
恢复机制
- 中断时通过进度文件追踪进度
- 新会话读取进度文件定位断点
- 从断点所在块的起始章节恢复
- 长篇进度文件格式沿用 story-long-analyze 拆解管道的进度段落约定,包含当前阶段、最后处理章节、已完成阶段列表、更新时间
质量检查
长篇阶段 3-4 完成前执行质量检查(置信度 >= 0.85,覆盖率 85%-95%,重叠率 <= 35%),由 story-long-analyze 拆解管道自带的质量检查负责。短篇质量检查见 story-short-analyze 各阶段的完成标志。
Phase 3:结构迁移
将 拆文库/{导入书名}/ 的分析结果迁移为可被写作 skill 消费的项目结构。
分流路由
按 Phase 1 判定的篇幅类型分流,两条路径产出的工程结构完全不同:
| 篇幅 | 迁移路径 | 映射规则 | 续写接手 |
|---|---|---|---|
| 长篇 | 3-L:长篇结构迁移 | references/structure-mapping-long.md | story-long-write 日更循环 |
| 短篇 | 3-S:短篇结构迁移 | references/structure-mapping-short.md | story-short-write Phase 3 逐场景写作 |
Phase 3-L:长篇结构迁移
将 拆文库/{导入书名}/ 的分析结果迁移为 {导入书名}/ 长篇项目结构。迁移规则详见 references/structure-mapping-long.md。
迁移步骤
Step 1:创建项目骨架
{导入书名}/
├── 设定/
│ ├── 世界观/
│ ├── 角色/
│ └── 势力/
├── 大纲/
├── 正文/
├── 追踪/
│ └── 逐章记录/
├── 对标/ # 可选;仅在显式绑定外部对标时创建子目录
└── 参考资料/
Step 2:正文标准化
将原文迁移到 正文/,统一命名格式:第XXX章_章名.md。
- 识别章节分隔符(第X章、Chapter X 等)
- 提取章节标题
- 补零对齐编号(第1章 → 第001章)
- 保留原文内容不变
Step 3:角色文件迁移
将 拆文库/{导入书名}/角色/{角色名}.md 迁移到 设定/角色/{角色名}.md。
迁移时增加 story-long-write 角色模板字段:
---
name: {角色名}
---
# {角色名}
## 基本信息
- 身份:{}
- 核心特质:{}
- 当前能力:{}
- 核心动机:{}
- 弱点/缺陷:{}
## 出场记录
| 章节 | 关键事件 | 状态变化 |
|------|---------|---------|
角色分级(沿用 story-long-analyze 标准):
| 等级 | 标准 | 迁移策略 |
|---|---|---|
| 主角 | 出现章节 ≥50% + 推动主线 + 完整成长轨迹 | 完整迁移 |
| 反派 | 与主角对立 + 推动核心冲突 + 明确动机 | 完整迁移 |
| 核心配角 | 出现章节 ≥20% 或推动重要支线 | 完整迁移 |
| 功能角色 | 出现章节 <20% + 作用有限 | 简化迁移 |
Step 4:关系文件迁移
将 拆文库/{导入书名}/角色/角色关系.md 转换为 设定/关系.md,按 structure-mapping-long.md「关系文件转换规则」的目标格式模板输出。
Step 5:同步世界观设定
当前拆文契约已按主题输出 拆文库/{导入书名}/设定/世界观/*.md 与 设定/势力/*.md。导入时原样同步到项目;世界观/ 必须包含 背景设定.md。力量体系.md 小于 200 字并已并入 背景设定.md 时可省略;否则缺失当前必需产物时停止并提示重跑 story-long-analyze Stage 4。不再现场拆分扁平文件。
Step 6:大纲生成
大纲.md(卷级结构):从 剧情/故事线.md、剧情/*.md 和 快速预览.md 反推。卷划分采用用户确认制,规则见 structure-mapping-long.md「大纲反推规则」:
- 原文有明确卷界(存在「第一卷」「卷一」等卷级标题)→ 按原文卷界直接划分,无需询问。
- 原文无明确卷界 → 不机械按「每卷 20-40 章」硬切。根据故事线/场景切换/大型时间跳跃检测候选卷边界,向用户展示候选划分方案,等待用户确认后才写定卷纲;用户确认前
大纲/大纲.md只记录候选方案。
# 全书大纲
## 卷级大纲
### 第一卷:{卷名}(约 {X} 万字,{Y} 章)
- 功能:{从剧情分析推断}
- 核心事件:{一句话}
- 起始状态 → 结束状态:{从角色弧线推断}
卷纲:卷划分确认后,从剧情文件聚合生成 大纲/卷纲_第X卷.md,按 structure-mapping-long.md「卷纲反推」模板格式。
细纲:从章节摘要反推生成 大纲/细纲_第XXX章.md:
## 细纲(第 N 章)
### 第 N 章:{章名}
- 核心事件:{从摘要中提取}
- 字数目标:{原文实际字数}
- 目标情绪:{从章节基调/情绪曲线提取;未知写 [待补充]}
- 章首钩子:[待补充]
- 爽点:{从情节点推断;无明确证据写 [待补充]}
#### 内容概括(五段式)
- 起因:{从情节点归纳;未知写 [待补充]}
- 发展:{从情节点归纳;未知写 [待补充]}
- 转折:{从情节点归纳;未知写 [待补充]}
- 高潮:{从情节点归纳;未知写 [待补充]}
- 结尾:{原文最后落在什么动作/画面/台词上;未知写 [待补充]}
#### 情节安排(多线)
- 主线推进:{从剧情单元索引/摘要反推}
- 辅线推进:{无证据写“无”或 [待补充]}
- 事件线 / 任务线:{外部事件链}
- 感情线 / 关系线:{有证据才写;否则“无显性”或 [待补充]}
- 逻辑线:原因 → 行动 → 结果 → 后果/新问题
#### 人物关系和出场顺序
- 出场顺序:{摘要中角色/势力/关键物件出现顺序}
- 人物关系变化:{本章前 → 本章后;未知写 [待补充]}
- 视角/信息差:{谁知道什么;读者知道什么;主角误判什么;未知写 [待补充]}
#### 情节细化
- 情节点序列:{从摘要情节点反推,每点“谁做了什么 + 功能标签”}
- 行动成本(可无)/收益归属:{有证据才写;行动成本可无、不硬造;未知写 [待补充]}
#### 结尾设定和钩子
- 结尾设定:{原文收束落在什么动作或画面;未解决问题;下一章推动力;未知写 [待补充]}
- 章尾钩子:[待补充]
钩子、人物关系变化、辅线/感情线、行动成本/收益归属等无法由原文摘要稳定判断的字段统一标
[待补充];story-import 只反推有证据的蓝图,不为补齐字段编造关系或副线。
Step 7:追踪文件生成
导入项目必须通过本 skill 自带的 scripts/tracking_commit.py init 一次性生成追踪状态,禁止模型分别写最终文件。完整字段与命令见 references/tracking-transaction.md。语义准备顺序如下:
-
导入截止章:把最后完整章 N 写入初始化事务的
last_chapter。工具在 meta 记录imported_through_chapter=N;导入旧章没有日更事务,不得为第 1..N 章伪造逐章增量,也不额外生成一份重复当前状态的叙事基线。 -
核心角色当前快照:从拆书产物反推主角、反派、核心配角的截至 N 章状态,按角色写入初始化 JSON 的
character_snapshots。输出由工具生成到追踪/角色状态/{角色名}.md;算法见 references/character-state-reverse.md。 -
伏笔当前行:从有正文证据的铺垫/回收事件生成
foreshadow。每个 ID 只保留当前状态一行;尚未实际埋设的未来设计留在大纲,不写伏笔.md。 -
事实与读者认知:把关键事件生成到
timeline_events。同一事件同时写客观事实、读者截至 N 章已知内容和实际揭示状态;未来计划揭示章不得伪装成已发生事实。 -
续写状态卡输入:准备当前位置、长期约束、活跃核心角色、近三章速记、下一章承诺和连贯性风险。
上下文.md由工具生成固定 7 栏,不把文风、文件索引、普通待办或质检计数塞进续写状态卡。 -
执行初始化:按当前平台探测 Python 3(
python3→python→py -3),执行:项目
追踪/里已有不属于当前协议的早期文件时不必手工清理:init会先把它们按原样整体移入追踪/_旧追踪存档/,再在原地建当前协议。旧内容保留供作者查阅,不参与解析,当前状态完全由本次导入输入决定;校验失败的init不移动任何文件。{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「题材定位生成」模板格式)。
设定/题材定位.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。
短篇工程与长篇完全不同:短篇正文是单文件
正文.md(不切章),不产追踪/、大纲/、正文/等长篇目录。迁移时严禁误建这些长篇专属目录。
短篇目标工程结构
{短篇标题}/
├── 设定.md ← 含核心框架 + 本书续写基线
├── 小节大纲.md ← 按段-小节结构反推
├── 正文.md ← 单文件全文正文
└── 对标/{对标书名}/ ← 可选:仅外部对标引用视图
├── 拆文报告.md
├── 情节节点.md
└── 写作手法.md
迁移步骤
Step 1:正文迁移
将 拆文库/{导入书名}/原文/ 的全文迁移为单文件 {标题}/正文.md,按 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 末尾(含正文文件数对照、核心角色独立快照、作者/读者时间线隔离、
tracking_commit.py check通过、卷划分已经用户确认等)。 - 短篇:质量清单见 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} 个小节)
- 外部对标:{未绑定 / `对标/{对标书名}/` 已同步 / 绑定失败及修复动作}
## 待补充项
- [ ] 所有 [待补充] 标记的文件已复核
- [ ] 小节大纲的章首/章尾钩子需要补充
- [ ] 核心反转的铺垫线索已确认
## 下一步操作
- 运行 `/story-short-write` Phase 3 开始续写
Step 3:项目激活
- 设置
.active-book指向导入的书名/标题目录 - 确认项目可以被对应写作 skill 识别(长篇 → story-long-write,短篇 → story-short-write)
- 可选验证:如果项目已部署 story-explorer agent(优先检查
.claude/agents/下的story-explorer.md是否存在;不存在时再检查.opencode/agents/,再不存在时检查.codex/agents/),可 spawnAgent(subagent_type: "story-explorer", prompt: "项目目录:{dir}\n查询类型:progress\n查询参数:导入验证")交叉验证迁移数据完整性
setup 环境检测已在 Phase 1「环境检测前置」完成,此处不再重复检测。
大型作品处理(>200 章)
本节仅适用于长篇导入。短篇为单文件全量迁移,无增量导入需求。
超过 200 章的作品,拆解可以分批,追踪初始化必须一次覆盖全部已写章节:
- 拆解分批:首期只深拆前 50 章 + 全书概要,后续按需补拆更多章节到
拆文库/。 - 追踪一次到位:初始化事务的
last_chapter写最后一个已写完的章号 N,不是首期拆解的 50。imported_through_chapter由init一次写定、之后不再推进,逐章事务只接受 N+1 起的章号;第 1..N 章不伪造逐章记录,续写从 N+1 开始。若 init 时误写成 50,第 51..N 章仍可逐章append补上(一章一份事务,章号必须连续),只是要为已写好的旧章逐章构造事务;不要删追踪/重来——_旧追踪存档/也在里面。 - 上下文摘要:未深拆的章节生成简化摘要(200 字/章),供反推当前状态用。
参考资料索引
按阶段加载,不一次全部加载。
本 skill 自带的 reference 文件全部位于 references/,按场景加载。涉及别的 skill 的方法论/模板时,story-import 不直接加载文件,而是运行对应 /命令 由该 skill 自行加载。
Phase 1:确认导入源
| 场景 | 加载文件 |
|---|---|
| 篇幅分流判定 | references/length-routing.md |
| 章节格式识别 | 由 story-long-analyze 拆解管道(运行 /story-long-analyze)的阶段 1 负责 |
Phase 2:深度分析
| 场景 | 加载文件 / 相关 skill |
|---|---|
| 长篇深度分析(方法论、质量检查、输出模板均自带) | 运行 /story-long-analyze 调用长篇拆解管道 |
| 短篇深度分析(方法论、质量检查、输出模板均自带) | 运行 /story-short-analyze 调用短篇拆解管道 |
Phase 3:结构迁移
| 场景 | 加载文件 |
|---|---|
| 长篇迁移映射规则 | references/structure-mapping-long.md |
| 短篇迁移映射规则 | references/structure-mapping-short.md |
| 角色状态反推规则(长篇) | references/character-state-reverse.md |
| 角色状态规则(character-state-reverse.md 依赖) | references/state-tracking.md |
| 短篇正文格式规范 | references/format-and-structure.md |
长篇细纲模板格式参见 story-long-write(Phase 3 细纲部分);短篇核心框架模板参见 story-short-write(核心框架部分)。这两项为纯文本指引,story-import 不加载对应 skill 的文件。
Phase 4:项目激活
| 场景 | 说明 |
|---|---|
| 长篇项目结构规范 | 参见 story-long-write(Phase 4 项目文件结构) |
| 短篇项目结构规范 | 参见 story-short-write(Phase 3 项目结构) |
| 环境部署 | 部署模板由 /story-setup 提供,story-import 不负责部署 |
流程衔接
流水线: 长篇 / 短篇 位置: 导入(在开书之前)
| 时机 | 跳转到 | 命令 |
|---|---|---|
| 导入完想继续写(长篇) | story-long-write | /story-long-write + "日更" |
| 导入完想继续写(短篇) | story-short-write | /story-short-write |
| 导入完想审查质量 | story-review | /story-review |
| 想深入分析对标(长篇) | story-long-analyze | /story-long-analyze |
| 想深入分析对标(短篇) | story-short-analyze | /story-short-analyze |
| 从零开新书(长篇) | story-long-write | /story-long-write + "开书" |
| 从零开新书(短篇) | story-short-write | /story-short-write |
| 项目未部署环境 | story-setup | /story-setup |
语言
- 跟随用户的语言回复,用户用什么语言就用什么语言回复
- 中文回复遵循《中文文案排版指北》
Frequently asked questions about Story Import
Similar skills
Write Story
Scaffold your fiction writing with structured guidance.
Be Creative
Generate diverse ideas and expand your creative corpus.
CrossFrame Essay
Generate structured essays with critical insights in Chinese.
CrossFrame Critical
A structured approach to critical Chinese essays.
Writer Memory
A persistent memory system for creative writers.
Weekly Digests
Generate structured weekly narratives of project timelines.
