Skip to main content
ClaudeWave
Skill2.4k estrellas del repoactualizado 2d ago

story-import

The story-import Claude Code skill reverses-engineers existing novels by parsing user-provided text into a standard project directory structure compatible with subsequent long-form or short-form writing workflows. It first analyzes the source material using the appropriate decomposition pipeline (story-long-analyze or story-short-analyze based on detected length), then migrates analysis results into a writing project structure, preserving decomposition libraries as analytical assets rather than disposable intermediates.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/worldwonderer/oh-story-claudecode /tmp/story-import && cp -r /tmp/story-import/skills/story-import ~/.claude/skills/story-import
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# story-import:逆向导入已有小说

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

**核心信念:好的工具不是从零开始,而是从你已有的东西开始。**

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

---

## 核心原则

### 原则 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` 是否存在(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 的 6 阶段管道(Stage 0-5) | `拆文库/{书名}/` |
| 短篇 | 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 的全套产物(逐章摘要 / 聚合分析 / 设定关系 / 汇总报告 / 文风),缺一不可——否则 Phase 3 迁移会拿到半成品。

因此调用 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          # Stage 6 文风:写作技法视图 + 原文 few-shot 锚点
└── _progress.md
```

#### 短篇拆文库结构

短篇分析输出到 `拆文库/{书名}/`,与 story-short-analyze 拆解管道一致:

```
拆文库/{书名}/
├── 原文/
│   └── 原文.txt          # 扩展名随源文件;对话直接贴入的文本存为 原文.md
├── 拆文报告.md
├── 情节节点.md
└── 写作手法.md
```

### 长篇 6 阶段管道

> 管道详细说明见 story-long-analyze(运行 `/story-long-analyze`),此处仅列概要。

| 阶段 | 名称 | 输入 | 输出 | 完成标志 |
|------|------|------|------|----------|
| 0 | 概要提取 | 原始文本 | 概要.md + 章节索引 | 章节结构识别完成 |
| 1 | 黄金三章 | 前 3 章原文 | 第1章_深度拆解.md / 第2章_深度拆解.md / 第3章_深度拆解.md → **停靠产出快速预览.md**(导入场景自动续跑,不停下询问) | 3 章拆解完成 |
| 2 | 逐章摘要 | 分块章节文本 | 章节摘要.md(含情节点+角色)。每章3-40情节点(密度150-200字/个,按字数动态调节)。角色过滤(龙套不提取、别名归类)。**并行 chapter-extractor agent 模式**(未部署 agent 时降级串行)。**计数验证:摘要数 == 章节数**。 | 所有章节处理完成 |
| 3 | 聚合分析 | 全部章节摘要 | 剧情/*.md + 故事线.md。**故事框架识别**(前置)。**两步法剧情聚合**(先从摘要识别剧情大纲,再按大纲分配情节点)。**角色合并**(跨章节去重+别名归一)。**角色分级**(主角/反派/核心配角/功能角色)。**孤立情节兜底**(6步,含覆盖率验证)。**质量门控**(置信度>=0.85/覆盖率85%-95%/重叠率<=35%)。 | 质量检查通过 |
| 4 | 设定+关系 | 阶段 3 合并后角色数据+情节点 | 设定/*.md + 角色/*.md。**两阶段角色模型**。**别名解析**(置信度≥0.85自动合并)。 | 设定和关系提取完成 |
| 5 | 汇总报告 | 全部输出 | 拆文报告.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 判定的篇幅类型分流,两条路径产出的工程结构