---
name: story-import
version: 1.0.0
description: "逆向导入已有小说。将已写好的小说（半成品或完本）反向解析为标准项目目录结构，兼容 story-long-write / story-short-write 后续写作流程；内部复用 story-long-analyze / story-short-analyze 的拆解管道，按篇幅自动分流。触发方式：/story-import、「导入小说」「反向解析」「导入」「把我的书导进来」。"
metadata: {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claudecode"}}
---
# story-import：逆向导入已有小说

你是小说项目逆向工程师。将用户已有的小说文本（半成品或完本）解析为标准项目目录结构，使其可以无缝接入 story-long-write / story-short-write 的后续写作流程。导入流程按篇幅分流：长篇走长篇路径，短篇走短篇路径。

**核心信念：好的工具从已有素材开始，不从零起步。**

**交付物是写作工程**：把作者已有的书重建为可续写的**写作工程**（项目结构 + 拆文库分析资产）。`拆文库/` 属于工程的一部分（喂给项目 `对标/`），不能当成用完即弃的中间产物，也不能替代交付物本身——交付物应让作者能直接续写。执行时以「建工程」为可见目标，别把「拆文」当成终点或对外标签。

---

> 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 执行并报告 fallback。Claude/OpenCode 兼容面保留 `subagent_type`。

## 核心原则

### 原则 1：先分析后迁移

先用拆解管道完整拆解小说（输出到 `拆文库/`），再将分析结果迁移为项目结构。**`拆文库/` 是写作工程的一部分**（分析资产，喂给项目 `对标/`），保留不丢弃，不是用完即弃的中间产物。

### 原则 2：复用不重复

深度分析阶段调用现成的拆解管道，不重新发明：长篇运行 `/story-long-analyze` 的完整拆解管道，短篇运行 `/story-short-analyze` 的拆解管道。拆解方法论与输出模板由对应 analyze skill 自带，story-import 不执行拆解方法论、不维护这些文件。

---

## Phase 1：确认导入源

问用户：**「你要导入哪本书？请提供文件路径或直接贴文本。」**

### 1.0 确认意图（写作工程 vs 仅拆文库）

默认目标是**完整写作工程**（可续写）。若用户意图不明确——是要可续写的工程，还是只要一份拆文库分析——**主动询问**，不要默认：

> 「你是想把这本书做成可续写的写作工程（设定/大纲/正文/追踪，能接着写第 N+1 章），还是只要一份拆文库分析？」

- 要可续写工程 → 走完整 story-import（Phase 2 拆 + Phase 3 迁移）。
- 只要分析 / 拆文库 → 直接用 `/story-long-analyze`（短篇 `/story-short-analyze`），到拆文库为止，不进 Phase 3 迁移。

### 输入方式识别

```
用户提供路径？
├─ 单文件路径（.txt/.md）
│   └─ 按章节分隔符自动切分
├─ 目录路径
│   └─ 按文件名排序，合并处理
└─ 无路径 → 用户直接贴文本？
              ├─ 是 → 保存到临时文件后处理
              └─ 否 → 提示用户提供源文件
```

### 基本信息确认

1. **自动检测**：从文本中识别书名（如果有）、总章数、总字数、章节格式
2. **用户确认**：
   - 书名：{自动检测或用户输入}
   - 题材类型：{用户提供}
   - 目标平台：{起点/番茄/晋江/其他}
   - 是否完本：{是/否（半成品写到第N章）}
   - **篇幅类型**：长篇 / 短篇 —— 按 [references/length-routing.md](references/length-routing.md) 自动检测（用户显式声明 > 结构信号 > 字数兜底），并向用户复述检测结果请其确认。判定结果决定 Phase 3 走长篇还是短篇路径。
   - **最后一章是否完整**：完整章 / 残稿（写了一半）。若是残稿，提示用户并把「残稿到第 N 章」记入上下文，让用户决定是「基于残章续写」还是「先补完再导入」。story-import 只记录用户决定，不替用户选。
3. **输出确认**：向用户展示检测到的章节范围、字数、判定的篇幅类型、最后一章状态，确认后开始分析

### 环境检测前置

在进入 Phase 2 之前，先检测项目是否已部署 story-setup 基础设施：

- 检测 `.story-deployed` 是否存在；
- 优先检测 `.claude/agents/` 下的 `chapter-extractor.md` 是否存在；不存在时再检测 `.opencode/agents/`，再不存在时检测 `.codex/agents/`（Phase 2 长篇深度分析的并行 agent）。

**未部署时**，提示用户：

> 「检测到当前项目尚未部署写作基础设施。建议先运行 `/story-setup` 再回来导入，否则深度分析阶段无法使用并行 chapter-extractor agent。」

给用户两个选择：

1. **先去 setup**：暂停导入，运行 `/story-setup`，部署完成后重新触发 `/story-import`；
2. **继续导入**：接受 Phase 2 降级为串行处理（长篇逐章摘要不并行，速度较慢，但产物完整）。

用户选择记入上下文，Phase 2 据此决定是否走并行模式。

### 原文备份

原文备份由 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） | `拆文库/{书名}/` |

### 调用契约

<!--
  契约说明：story-import 依赖 story-long-analyze 的「跳过询问」机制
  （对应 story-long-analyze「Stage 1 停靠点」的「跳过询问的情形」）。
  若 story-long-analyze 后续重构改动了该机制的触发措辞，需同步检查并更新本契约。
-->

#### 长篇：自动续跑过 Stage 1 停靠点

story-long-analyze 在 Stage 0+1（黄金三章）后会**自动停靠**并用 AskUserQuestion 询问是否继续全量拆解（对应 story-long-analyze 的「Stage 1 停靠点」）。但导入场景需要 Stage 2-6 的全套产物（逐章摘要 / 聚合分析 / `剧情/节奏.md` / `剧情/情绪模块.md` / 设定关系 / 汇总报告 / 文风），缺一不可——否则 Phase 3 迁移会拿到半成品。

**新旧拆文库判定**：若 `_progress.md` 标记 Stage 3+ 已完成，或 `拆文报告.md` 已含「读者需求 / 情绪引擎」「关键信息与扩写技法总览」「节奏与情绪触动点」「可复现模块」任一 v12 摘要标题，视为 v12 新契约拆文库；此时 `剧情/节奏.md` 与 `剧情/情绪模块.md` 是导入必备权威产物，缺失必须先修复/重跑 Stage 3，不得静默降级。只有旧拆文库（pre-v12，无上述信号）才能走 legacy fallback。

因此调用 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 停靠点**，契约较简单：调用后让其跑完 Stage 2-6 即可，无需声明跳过询问。

### 输出目录

#### 长篇拆文库结构

长篇分析输出到 `拆文库/{书名}/`，与 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
```

### 长篇完整管道（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（整书级写作技法视图，story-long-write 日更循环必读） | 文风落盘 `拆文库/{书名}/文风.md` |

### 短篇拆文管道

> 管道详细说明见 story-short-analyze（运行 `/story-short-analyze`），此处仅列概要。

短篇为单一全量管道（Stage 2-6 严格串行），产物落盘 `拆文库/{书名}/`：Stage 2 结构+情节节点 → Stage 3 情感线+爆点 → Stage 4 反转+写作手法 → Stage 5 人物+开头结尾 → Stage 6 综合评估，最终汇总为 `拆文报告.md`、`情节节点.md`、`写作手法.md`。

### 分块策略（长篇）

沿用 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](references/structure-mapping-long.md) | story-long-write 日更循环 |
| 短篇 | **3-S：短篇结构迁移** | [references/structure-mapping-short.md](references/structure-mapping-short.md) | story-short-write Phase 3 逐场景写作 |

---

## Phase 3-L：长篇结构迁移

将 `拆文库/{书名}/` 的分析结果迁移为 `{书名}/` 长篇项目结构。迁移规则详见 [references/structure-mapping-long.md](references/structure-mapping-long.md)。

### 迁移步骤

#### 3.1 创建项目骨架

```
{书名}/
├── 设定/
│   ├── 世界观/
│   ├── 角色/
│   └── 势力/
├── 大纲/
├── 正文/
├── 追踪/
├── 对标/
│   └── {书名}/剧情/
└── 参考资料/
```

#### 3.2 正文标准化

将原文迁移到 `正文/`，统一命名格式：`第XXX章_章名.md`。

- 识别章节分隔符（第X章、Chapter X 等）
- 提取章节标题
- 补零对齐编号（第1章 → 第001章）
- 保留原文内容不变

#### 3.3 角色文件迁移

将 `拆文库/{书名}/角色/{角色名}.md` 迁移到 `设定/角色/{角色名}.md`。

迁移时增加 story-long-write 角色模板字段：

```markdown
---
name: {角色名}
---

# {角色名}

## 基本信息
- 身份：{}
- 核心特质：{}
- 当前能力：{}
- 核心动机：{}
- 弱点/缺陷：{}

## 出场记录
| 章节 | 关键事件 | 状态变化 |
|------|---------|---------|
```

角色分级（沿用 story-long-analyze 标准）：

| 等级 | 标准 | 迁移策略 |
|------|------|---------|
| 主角 | 出现章节 ≥50% + 推动主线 + 完整成长轨迹 | 完整迁移 |
| 反派 | 与主角对立 + 推动核心冲突 + 明确动机 | 完整迁移 |
| 核心配角 | 出现章节 ≥20% 或推动重要支线 | 完整迁移 |
| 功能角色 | 出现章节 <20% + 作用有限 | 简化迁移 |

#### 3.4 关系文件迁移

将 `拆文库/{书名}/角色/角色关系.md` 转换为 `设定/关系.md`，按 [structure-mapping-long.md](references/structure-mapping-long.md)「关系文件转换规则」的目标格式模板输出。

#### 3.5 世界观设定拆分（识别拆文库的两种形态）

**先检测拆文库形态，再决定路径**：

| 拆文库形态 | 检测方法 | 处理 |
|-----------|---------|------|
| **已按主题拆分** | `拆文库/{书名}/设定/世界观/` 子目录存在 + 至少含 `背景设定.md` 或 `力量体系.md` 之一 | **pass-through**：原样同步 `设定/世界观/*.md` 和 `设定/势力/*.md` 到项目，无需 re-split |
| **单文件版本** | 仅 `拆文库/{书名}/设定/世界观.md` 单文件（无子目录） | 按下方映射表 re-split |

**单文件版本的拆分映射表（兜底，仍保留）**：

| 拆文库内容 | 项目文件 | 拆分规则 |
|-----------|---------|---------|
| 力量体系 | 设定/世界观/力量体系.md | 独立文件 |
| 地理 | 设定/世界观/地理.md | 独立文件（内容充足时） |
| 核心规则 | 设定/世界观/背景设定.md | 与其他无法独立的内容合并 |
| 特殊设定 | 设定/世界观/背景设定.md | 合并 |
| 金手指 | 设定/世界观/金手指.md | 独立文件 |
| 势力/组织 | 设定/势力/{势力名}.md | 内容 >= 200 字时独立为势力文件，不足则合并到 `背景设定.md` |

内容不足独立成文件时，合并到 `背景设定.md`。

#### 3.6 大纲生成

**大纲.md**（卷级结构）：从 `剧情/故事线.md`、`剧情/*.md` 和 `快速预览.md` 反推。**卷划分采用用户确认制**，规则见 [structure-mapping-long.md](references/structure-mapping-long.md)「大纲反推规则」：

- **原文有明确卷界**（存在「第一卷」「卷一」等卷级标题）→ 按原文卷界直接划分，无需询问。
- **原文无明确卷界** → **不机械按「每卷 20-40 章」硬切**。根据故事线/场景切换/大型时间跳跃检测候选卷边界，向用户展示候选划分方案，**等待用户确认后**才写定卷纲；用户确认前 `大纲/大纲.md` 只记录候选方案。

```markdown
# 全书大纲

## 卷级大纲

### 第一卷：{卷名}（约 {X} 万字，{Y} 章）
- 功能：{从剧情分析推断}
- 核心事件：{一句话}
- 起始状态 → 结束状态：{从角色弧线推断}
```

**卷纲**：卷划分确认后，从剧情文件聚合生成 `大纲/卷纲_第X卷.md`，按 [structure-mapping-long.md](references/structure-mapping-long.md)「卷纲反推」模板格式。

**细纲**：从章节摘要反推生成 `大纲/细纲_第XXX章.md`：

```markdown
## 细纲（第 N 章）

### 第 N 章：{章名}
- 核心事件：{从摘要中提取}
- 字数目标：{原文实际字数}
- 目标情绪：{从章节基调/情绪曲线提取；未知写 [待补充]}
- 章首钩子：[待补充]
- 爽点：{从情节点推断；无明确证据写 [待补充]}

#### 内容概括（五段式）
- 起因：{从情节点归纳；未知写 [待补充]}
- 发展：{从情节点归纳；未知写 [待补充]}
- 转折：{从情节点归纳；未知写 [待补充]}
- 高潮：{从情节点归纳；未知写 [待补充]}
- 结尾：{从情节点归纳；未知写 [待补充]}

#### 情节安排（多线）
- 主线推进：{从剧情线索引/摘要反推}
- 辅线推进：{无证据写“无”或 [待补充]}
- 事件线 / 任务线：{外部事件链}
- 感情线 / 关系线：{有证据才写；否则“无显性”或 [待补充]}
- 逻辑线：原因 → 行动 → 结果 → 后果/新问题

#### 人物关系和出场顺序
- 出场顺序：{摘要中角色/势力/关键物件出现顺序}
- 人物关系变化：{本章前 → 本章后；未知写 [待补充]}
- 视角/信息差：{谁知道什么；读者知道什么；主角误判什么；未知写 [待补充]}

#### 情节细化
- 情节点序列：{从摘要情节点反推，每点“谁做了什么 + 功能标签”}
- 代价兑现 / 收益兑现：{有证据才写；未知写 [待补充]}

#### 结尾设定和钩子
- 结尾设定：{收束状态；未解决问题；下一章推动力；未知写 [待补充]}
- 章尾钩子：[待补充]
```

> 钩子、人物关系变化、辅线/感情线、代价兑现等无法由原文摘要稳定判断的字段统一标 `[待补充]`；story-import 只反推有证据的蓝图，不为补齐字段编造关系或副线。

#### 3.7 追踪文件生成

追踪目录共四个文件，**必须按以下顺序生成**（后一个文件依赖前一个的产出）：

```
① 追踪/伏笔.md     ← 先生成（角色状态反推的「待回收伏笔」字段依赖此文件）
② 追踪/时间线.md   ← 与伏笔同步或紧随其后
③ 追踪/角色状态.md ← 依赖伏笔.md 已存在
④ 追踪/上下文.md   ← 最后生成（其「角色状态：最近变更」字段依赖角色状态.md）
```

**① 追踪/伏笔.md**：从情节点的「铺垫」类型情节点提取潜在伏笔：

```markdown
# 伏笔追踪

## 伏笔状态表

| ID | 伏笔内容 | 埋设章节 | 预计回收章节 | 状态 | 重要度 |
|----|---------|---------|-------------|------|--------|
| F001 | {从铺垫情节点提取} | 第{N}章 | {如已回收则标注} | {已埋/已回收} | {中} |
```

**② 追踪/时间线.md**：从时间标记提取：

```markdown
# 故事时间线

## 关键事件时序

| 章节 | 故事时间 | 事件 | 涉及角色 | 与主线关系 |
|------|---------|------|---------|-----------|
```

**③ 追踪/角色状态.md**：从拆书产物反推每个主要角色的当前状态。反推算法详见 [references/character-state-reverse.md](references/character-state-reverse.md)：

- **输入来源**：拆文库已有产物（`角色/{角色名}.md`、`角色/角色关系.md`、`章节/第N章_摘要.md` 情节点、`剧情/*.md`）+ 已生成的 `追踪/伏笔.md`，**不重读 `原文/`**。
- **追踪范围**：主角、反派、核心配角；功能角色不进入。
- **输出对齐**：严格对齐 [character-state-reverse.md](references/character-state-reverse.md)「输出格式」的 `角色状态.md` 标准模板（当前身份 / 当前能力 / 关键关系 / 公众形象 / 待回收伏笔 / 状态变更记录）。
- **生成时机**：必须在 `追踪/伏笔.md` 之后（步骤「待回收伏笔」依赖伏笔状态）。
- **半成品书**：最后一章为残稿时，角色状态以「残稿之前的最后一个完整章节」为准，文件头注明基准章节。

> 此文件不可遗漏。story-long-write 的日更写前准备「状态筛选」依赖 `追踪/角色状态.md`；若缺失，导入书进入日更会永久走「从角色设定和前文推断」的兜底分支，长期降级。

**④ 追踪/上下文.md**：进度摘要（最后生成，「当前状态」中的角色状态变更引用 `角色状态.md`）：

```markdown
## 写作进度

- 最后完成章节：第 {N} 章
- 更新时间：{导入日期}
- 本期完成：导入 {N} 章，共 {X} 字

## 当前状态

- 活跃伏笔：{A} 条待回收
- 角色状态：最近变更见 `追踪/角色状态.md`
- 下一章细纲状态：已有
- 注意事项：最后一章为残稿时在此注明残稿到第 N 章及用户选定的续写策略
```

#### 3.8 题材定位生成

从拆文报告中提取核心发现，生成 `设定/题材定位.md`（按 [structure-mapping-long.md](references/structure-mapping-long.md)「题材定位生成」模板格式）。

`设定/题材定位.md` **必须包含「对标书清单 + 主对标书」段**。主对标书最多 1 本；副对标 / 参考对标不限制数量，按用户素材和题材相关性追加到列表，不要截断成“一本副书”。格式：

```yaml
主对标书: {书名}  # 多本对标时日更默认用哪本的文风；缺失时 story-long-write 用字典序第一本并提示用户补
对标书列表:
  - 书名: {书名 A}
    引用强度: 主  # 主 / 辅 / 参考
    题材类型: {题材}
    相关性: 同题材
    用途: 文风+核心结构
  - 书名: {书名 B}
    引用强度: 辅
    题材类型: {题材}
    相关性: 同题材/弱相关
    用途: {补设定/大纲/模块，不进文风}
  - 书名: {书名 C}
    引用强度: 辅
    题材类型: {题材}
    相关性: 同题材/弱相关
    用途: {补设定/大纲/模块，不进文风}
  - 书名: {书名 D}
    引用强度: 参考
    题材类型: {题材}
    相关性: 同题材/弱相关
    用途: {仅按预算召回摘要}
```

后续如需快速概览，可另写「对标分析（派生概要）」表；该表不是权威 registry，不得替代 `主对标书` 与完整 `对标书列表`。

#### 3.9 对标结构化资产同步

把拆文库的结构化分析资产同步到项目引用视图 `{项目}/对标/{书名}/`，供 story-long-write 的对标书路径查找优先读取。同步不重新生成内容，保持拆文库为唯一准源：

| 源路径 | 项目对标路径 | 用途 |
|-------|-------------|------|
| `拆文库/{书名}/剧情/节奏.md` | `{项目}/对标/{书名}/剧情/节奏.md` | story-long-write 读取关键信息推进、情绪触动点、爆发节奏 |
| `拆文库/{书名}/剧情/情绪模块.md` | `{项目}/对标/{书名}/剧情/情绪模块.md` | story-long-write 读取读者需求 / 情绪引擎、可复现模块 |
| `拆文库/{书名}/剧情/*.md` | `{项目}/对标/{书名}/剧情/*.md` | 剧情线与故事线参考 |
| `拆文库/{书名}/章节/*.md` | `{项目}/对标/{书名}/章节/*.md` | 匹配章摘要和关键信息与扩写技法证据 |
| `拆文库/{书名}/角色/*.md` | `{项目}/对标/{书名}/角色/*.md` | 角色功能位参考 |
| `拆文库/{书名}/设定/` | `{项目}/对标/{书名}/设定/` | 世界观/势力参考 |
| `拆文库/{书名}/拆文报告.md` | `{项目}/对标/{书名}/拆文报告.md` | 摘要投影与旧拆文库回退 |

**缺失处理**：

- v12 新契约拆文库缺 `剧情/节奏.md` 或 `剧情/情绪模块.md` → **导入停下并给修复动作**：提示重跑 `/story-long-analyze` Stage 3+ 或手动补齐对应文件；导入报告写 `module_or_rhythm_required_missing`，不得继续生成看似完整的对标视图。
- pre-v12 旧拆文库缺 `剧情/节奏.md` / `剧情/情绪模块.md` → 允许导入继续，但报告必须标 `legacy_deconstruction: true`、`rhythm_missing` / `module_missing`，说明日更只会低置信回退到 `拆文报告.md`、`文风.md`、匹配章摘要或 `剧情/故事线.md`。
- 其它结构化子目录缺失 → 按既有导入缺失项提示，不阻塞项目创建

#### 3.10 文风同步

把 `拆文库/{书名}/文风.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
```

### 迁移步骤

#### 3-S.1 正文迁移

将 `拆文库/{书名}/原文/` 的全文迁移为单文件 `{标题}/正文.md`，按 [format-and-structure.md](references/format-and-structure.md) 规范化格式（小节标记 `###1.`、段间仅单换行、对话引号按项目/平台约定统一）。**原文已是成稿，不重写内容，只规范格式。**

#### 3-S.2 设定生成

从 `拆文报告.md`、`写作手法.md` 反推 `{标题}/设定.md`，含两个区块：

- **核心框架**：对齐 story-short-write 核心框架模板（基本信息、一句话梗概、核心反转、情绪设计、人设速写）。
- **对标摘要**：把故事结构、情绪节奏、核心反转机制、可复用写作手法写入对标摘要区。

#### 3-S.3 小节大纲生成

从 `情节节点.md` 的功能分段反推 `{标题}/小节大纲.md`，按开头段/铺垫段/升级段/反转段/结尾段映射；短篇只做轻量蓝图：每节写 `结构段/五段功能`、主事件、3-5 个子事件、目标情绪、人物/关系变化、因果/逻辑链、结尾承接/小钩子。钩子或关系无法判断时标 `[待补充]`，不套用长篇完整章节蓝图。

#### 3-S.4 对标引用视图（可选）

将 `拆文库/{书名}/` 整体复制为 `{标题}/对标/{书名}/`，供续写阶段的对标上下文加载。默认生成。

---

## Phase 4：项目激活

### 4.1 质量检查

按篇幅对照对应的质量检查清单：

- **长篇**：完整迁移质量清单见 [references/structure-mapping-long.md](references/structure-mapping-long.md) 末尾的质量检查清单（含正文文件数对照、主要角色覆盖、`追踪/角色状态.md` 已生成且对齐标准模板、卷划分已经用户确认等）。
- **短篇**：质量清单见 [references/structure-mapping-short.md](references/structure-mapping-short.md) 末尾的质量检查清单（含 `正文.md` 单文件存在且格式合规、`设定.md` 含核心框架+对标摘要、未误建长篇专属目录等）。

### 4.2 缺失项提示

输出导入结果摘要和待补充项，按篇幅分支。

**长篇导入完成报告**：

```
=== 导入完成报告（长篇）===
书名：{书名}
源文件：{X} 章，{Y} 万字
项目目录：{路径}

## 已生成文件
- 正文：{N} 章
- 角色文件：{M} 个
- 大纲：大纲.md + {V} 个卷纲 + {N} 个细纲
- 追踪：伏笔.md + 时间线.md + 角色状态.md + 上下文.md
- 设定：{世界观文件数} 个
- 对标同步：`对标/{书名}/剧情/节奏.md`（节奏已同步/未同步）+ `对标/{书名}/剧情/情绪模块.md`（情绪模块已同步/未同步）+ 文风.md + 拆文报告.md

## 待补充项
- [ ] 细纲中的章首/章尾钩子需要补充
- [ ] 题材定位的核心梗三分法需要确认
- [ ] 伏笔追踪中的伏笔已复核
- [ ] 角色状态.md 已复核（日更写前准备依赖此文件）
- [ ] 卷划分已确认（原文无明确卷界时）
- [ ] 文风已从拆文库同步到 `对标/{书名}/`（日更前 fail-fast 依赖此文件）
- [ ] 节奏已同步到 `对标/{书名}/剧情/节奏.md`；v12 新契约拆文库缺失时必须先修复，只有 legacy 拆文库可标 `rhythm_missing` 回退
- [ ] 情绪模块已同步到 `对标/{书名}/剧情/情绪模块.md`；v12 新契约拆文库缺失时必须先修复，只有 legacy 拆文库可标 `module_missing` 回退
- [ ] `设定/题材定位.md` 已含 `主对标书` 字段（多本对标时必填）

## 下一步操作
- 运行 `/story-review lean` 审查导入结果
- 运行 `/story-long-write` + "日更" 开始续写
```

**短篇导入完成报告**：

```
=== 导入完成报告（短篇）===
标题：{短篇标题}
源文件：{Y} 字
项目目录：{路径}

## 已生成文件
- 正文.md（单文件，{Y} 字）
- 设定.md（核心框架 + 对标摘要）
- 小节大纲.md（{N} 个小节）
- 对标/{书名}/（可选引用视图）

## 待补充项
- [ ] 所有 [待补充] 标记的文件已复核
- [ ] 小节大纲的章首/章尾钩子需要补充
- [ ] 核心反转的铺垫线索已确认

## 下一步操作
- 运行 `/story-short-write` Phase 3 开始续写
```

### 4.3 项目激活

- 设置 `.active-book` 指向导入的书名/标题目录
- 确认项目可以被对应写作 skill 识别（长篇 → story-long-write，短篇 → story-short-write）
- 可选验证：如果项目已部署 story-explorer agent（优先检查 `.claude/agents/` 下的 `story-explorer.md` 是否存在；不存在时再检查 `.opencode/agents/`，再不存在时检查 `.codex/agents/`），可 spawn `Agent(subagent_type: "story-explorer", prompt: "项目目录：{dir}\n查询类型：progress\n查询参数：导入验证")` 交叉验证迁移数据完整性

> setup 环境检测已在 Phase 1「环境检测前置」完成，此处不再重复检测。

---

## 大型作品处理（>200 章）

> 本节仅适用于长篇导入。短篇为单文件全量迁移，无增量导入需求。

超过 200 章的作品，采用增量导入策略：

1. **首期导入**：只导入前 50 章 + 全书概要
2. **增量补充**：后续按用户需求分批导入剩余章节
3. **上下文摘要**：未导入的章节生成简化摘要（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` |

---

## 语言

- 跟随用户的语言回复，用户用什么语言就用什么语言回复
- 中文回复遵循《中文文案排版指北》
