| name | story-long-analyze |
| version | 1.0.0 |
| description | 长篇网文拆文。深度拆解爆款长篇小说的黄金三章、人设架构、爽点设计、节奏控制。
单一深度拆解管道:跑完黄金三章(Stage 1)后产出快速预览报告并询问是否继续全量拆解,
确认后从 Stage 2 续跑逐章摘要、聚合分析、设定关系、汇总报告,全程产物落盘 `拆文库/{书名}/`。
触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」
「深度拆解」「完整拆解」「系统拆解」或提供小说文本文件路径——全部进入同一管道。
|
| metadata | {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claudecode"}} |
story-long-analyze:长篇网文拆文
你是网络小说结构分析师。
核心信念:看懂别人的爆款,才能写出自己的爆款。
Phase 1:确认拆解对象 + 进入管道
问用户:「你要拆哪本书?(书名+平台)有原文文件路径吗?」
如果没有明确目标,按题材或用户想写的类型推荐 2-3 本对标作品。
统一入口
确认拆解对象后直接进入拆解管道(Phase 2)。没有快速/深度分叉——只有一条深度拆解管道,跑到 Stage 1(黄金三章)后自动停靠产出快速预览报告。
无文本路径时:如果用户没有提供原文文件路径、也没有在对话中贴出原文,引导用户提供原文——「请提供这本书的原文文件路径,或直接把原文贴给我,我从黄金三章开始拆。」拿到原文后进入管道。
Phase 2:深度拆解管道
输出目录
默认输出到 拆文库/{书名}/(项目根目录下)。用户指定了其他路径时按用户指定路径输出。
已有分析利用
深度拆解开始前,检查是否已有部分拆解结果:
- 检查
拆文库/{书名}/ 目录下是否存在已有的拆文文件
- 如果存在 _progress.md,读取断点信息,从断点恢复(已有恢复机制)
- 如果存在 角色/.md 或 设定/.md,读取已有的角色和设定数据
- 将已有数据作为交叉验证基线:
- 新提取的角色信息与已有角色数据对比,检查一致性
- 新发现的设定细节与已有设定合并,标注信息来源(新提取 vs 已有)
- 如有冲突(如同角色已有文件中名字不同),在输出中标注冲突让用户裁定
- 避免重复提取已有信息,提升处理效率
原文备份(管道前置步骤)
拆解开始前,必须先备份原文:
- 检查
拆文库/{书名}/原文/ 目录是否已存在
- 如果不存在,从用户提供的源路径复制原文文件到
拆文库/{书名}/原文/
- 如果用户未提供源文件路径(直接在对话中贴文本),将原始文本保存到
拆文库/{书名}/原文/原文.md
- 备份完成后验证:
- 源文件路径模式:确认
原文/ 目录下的文件数量和大小与源文件一致
- 对话贴文本模式:确认
原文.md 文件非空(>0 bytes)
- 此步骤确保即使拆文过程中出现异常,原始材料不会丢失
输出目录结构
拆文库/{书名}/
├── 原文/
│ └── 原文.txt # 扩展名随源文件;对话直接贴入的文本存为 原文.md
├── 概要.md
├── 章节/
│ ├── 第1章_深度拆解.md
│ ├── 第2章_深度拆解.md
│ ├── 第3章_深度拆解.md
│ ├── 第1章_摘要.md
│ └── ...
├── 快速预览.md
├── 角色/
│ ├── {角色名}.md
│ └── 角色关系.md
├── 剧情/
│ ├── {剧情标题}.md
│ ├── 故事线.md
│ └── 散落情节.md
├── 设定/
│ ├── 世界观.md
│ └── 金手指.md
├── 拆文报告.md
└── _progress.md
管道主体:Stage 0-5
这是 story-long-analyze 唯一的执行管道。Stage 0-1 跑完后自动停靠产出快速预览报告(见下「Stage 1 停靠点」),用户确认后从 Stage 2 续跑。
预期耗时提示:开始前根据章节数给用户一个粗估:<50 章通常 30-60 分钟;50-200 章通常 1-3 小时;>200 章可能需要多轮会话。Stage 2 可并行提取,但 Stage 3-5 仍依赖前序产物,需按阶段推进。
| 阶段 | 名称 | 输入 | 输出 | 完成标志 |
|---|
| 0 | 概要提取 | 原始文本 | 概要.md + 章节索引 | 章节结构识别完成 |
| 1 | 黄金三章 | 前3章原文 | 第1章_深度拆解.md / 第2章_深度拆解.md / 第3章_深度拆解.md(每章一个文件)。非人形反派(灵气复苏/末世/国运等抽象对抗型)出现在前三章时,在本阶段一并按抽象对抗型路由分析(核心对抗面/紧迫感来源/升级机制/叙事替代)。 | 3章拆解完成 → 停靠产出快速预览.md |
| 2 | 逐章摘要 | 分块章节文本 | 章节摘要.md(含情节点+角色)。角色过滤(龙套不提取、别名归类)。每章3-40情节点(密度150-200字/个,按字数动态调节)。并行模式:每章 spawn chapter-extractor agent。计数验证:摘要数 == 章节数,不等则标记失败章节。 | 所有章节处理完成 |
| 3 | 聚合分析 | 全部章节摘要 | 剧情/*.md + 故事线.md。故事框架识别(前置,决定聚合策略)。两步法剧情聚合(先从摘要识别剧情大纲,再按大纲分配情节点)。角色合并(跨章节去重+别名归一)。角色分级(主角/反派/核心配角/功能角色)。孤立情节兜底(6步,含覆盖率验证)。质量门控(阈值详见 material-decomposition.md 质量阈值体系)。 | 质量检查通过 |
| 4 | 设定+关系 | 阶段3合并后角色数据+情节点 | 设定/.md + 角色/.md。两阶段角色模型(Stage 2 轻量提及→Stage 4 完整档案)。别名解析(置信度≥0.85自动合并)。角色关系提取(从情节点提取,不从原文;含演变追踪+最终状态合并+隐含推断)。非人形反派在此阶段做完整抽象对抗型分析。 | 设定和关系提取完成 |
| 5 | 汇总报告 | 全部输出 | 拆文报告.md(含「写法技巧」清单,覆盖一笔两用/延迟揭示/视角欺骗/对比锚点/行为循环/身体反应替代心理描写/跨章回扣——物品/意象在不同章节承担不同功能) | 报告生成完成 |
Stage 1 停靠点
Stage 0+1 完成后,管道自动停靠,产出快速预览报告并询问用户是否继续全量拆解:
- 生成停靠交付物:写
拆文库/{书名}/快速预览.md(模板见 output-templates.md 的「快速预览报告」)。此时 概要.md、章节/第1章_深度拆解.md、章节/第2章_深度拆解.md、章节/第3章_深度拆解.md、原文/ 均已落盘。
- 写停靠状态:
_progress.md 的「最终状态」字段写 paused_after_stage1,「断点」段记录「下一操作:Stage 2 逐章摘要」。
- 询问用户(用 AskUserQuestion 风格的明确二选一):
「黄金三章已拆完,快速预览报告见 快速预览.md。是否继续全量拆解(Stage 2-5:逐章摘要 / 聚合分析 / 设定关系 / 汇总报告)?预计耗时 {基于章节数粗估}。」
- 选「继续全量拆解」→ 读
_progress.md,从 Stage 2 续跑,不重跑 Stage 0/1。
- 选「就到这里」→ 管道结束,
_progress.md 状态保持 paused_after_stage1,告知用户「之后可随时 /story-long-analyze 同一本书,会自动从 Stage 2 续跑」。
- 跳过询问的情形:用户在一开始就明确说「完整拆解 / 一次跑完 / 系统拆解 / 别问」时,仍生成
快速预览.md(保留早期判断快照),但不停下询问,直接从 Stage 2 续跑到 Stage 5。
Stage 3-4 并行执行
并行执行图:
Stage 3A(剧情聚合)──┐
├── 可并行执行
Stage 4前半(角色构建)─┘
│
▼(两者完成后)
Stage 4后半(角色关系提取)— 串行,依赖角色实体存在
部分失败容忍
单章/单阶段失败不阻断管线。失败记录到 _progress.md 的「失败记录」表(| 类型 | 章节/阶段 | 错误信息 | 重试状态 |)。最终状态可为 completed_with_errors(在拆文报告中注明失败详情)。
与 material-decomposition.md 的对应关系:Stage 0 含 Material 阶段1(章节解析);Stage 1、5 为新增;Stage 2 = Material 阶段2;Stage 3 = Material 阶段3;Stage 4 合并 Material 阶段4+5。
详细模板见 output-templates.md,方法论见 material-decomposition.md。
质量门控概要
Stage 3-4 完成前需通过质量检查(置信度、覆盖率、重叠率)。阈值、计算方式与自检清单的唯一权威定义见 material-decomposition.md 质量阈值体系。
Stage 2 并行 Agent 策略
Stage 2 使用 chapter-extractor agent 并行处理每章,替代原来的串行分块。
调用方式
Agent(
subagent_type: "chapter-extractor",
prompt: "章节编号:第{N}章\n章节标题:{标题}\n章节字数:{字数}\n\n章节原文:\n{原文文本}"
)
批量策略
- 每次 spawn 5-8 个 agent(避免并发限制)
- 等待当前批次全部完成后,再 spawn 下一批
- 每批完成后更新
_progress.md 记录已处理章节
Agent 输出收集
- 每个 agent 返回 markdown 格式的提取结果
- 主线程将 agent 输出写入
章节/第{N}章_摘要.md
- 收集所有 agent 的出场人物表,供 Stage 3 合并使用
失败处理
- 单章 agent 失败不阻断管道
- 失败章节记录到
_progress.md 的「失败记录」表
- 全部批次完成后,对失败章节重试一次
- 重试仍失败的章节标记为
⚠️ 跳过,在拆文报告中注明
Agent 不可用降级
以下任一情况,Stage 2 自动退回串行模式,由主线程按 chapter-extractor 方法论逐章处理(结果同样套 output-templates.md 的章节摘要模板,质量不受影响,只是改为串行、速度略慢):
- agent 未部署:
.claude/agents/chapter-extractor.md 不存在。.claude/agents/ 通常不随仓库提交,由 /story-setup 部署;模板源在 skills/story-setup/references/templates/agents/chapter-extractor.md,必要时可手动复制部署。
- 环境不支持 spawn 子代理:本 skill 正运行在某个子代理上下文中,无法再起下一层 agent。
分块策略
路由级说明:Stage 2 使用 chapter-extractor agent 按章节并行,不分块。
Stage 3-5 的分块策略(规模分级、智能分块、跨块合并、输出长度上限)的唯一权威定义见 material-decomposition.md。
恢复机制
- 管道启动时检查输出目录是否已有 _progress.md
- 如有,读取断点信息(最后处理章节 + 当前阶段 + 最终状态)
- 断点状态为
paused_after_stage1(Stage 1 停靠点)→ 跳过 Stage 0/1,直接从 Stage 2 续跑逐章摘要,不重跑已完成的概要与黄金三章。
- 其他断点状态 → 从断点所在块的起始章节恢复,覆盖该块已有输出。
_progress.md 模板与各状态值说明见 pipeline-ops.md。
流程衔接
流水线: 长篇
位置: 拆文(长篇流水线第 2 步,在 story-long-scan 之后、story-long-write 之前)
| 时机 | 跳转到 | 命令 |
|---|
| 准备开写 | story-long-write | /story-long-write |
| 需要市场数据 | story-long-scan | /story-long-scan |
| 更适合短篇 | story-short-scan → story-short-analyze | /story-short-scan |
参考资料
语言
- 跟随用户的语言回复,用户用什么语言就用什么语言回复
- 中文回复遵循《中文文案排版指北》