mcpField
R
reverse-outliner

reverse-outliner

github.com/jwynia创意与媒体179441 次安装35 周前更新
代码仓库

关于 reverse-outliner

reverse-outliner 将书籍文本整理为结构化分析大纲,帮助研究故事构造。其分阶段流程会划分场景、分析场景作用、识别类型、追踪人物弧光,并汇总生成 Markdown。

主要功能

  1. 01将书籍划分为章节与场景
  2. 02使用 Goal/Conflict/Disaster 分析场景
  3. 03识别类型并映射关键节点
  4. 04追踪主角及人物弧光
  5. 05生成结构化 Markdown 大纲

适用场景

  1. 01研究已出版小说的结构
  2. 02对照作品与类型惯例的运用
  3. 03追踪人物在各场景中的弧光
  4. 04创建逐场景的参考大纲

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jwynia/agent-skills --skill reverse-outliner

安装后在 Claude Code 中输入/reverse-outliner确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

data/
key-moments-by-genre.json
scene-markers.json
scripts/
analyze-scene-batch.ts
detect-genre.ts
generate-outline.ts
reverse-outline.ts
segment-book.ts
track-characters.ts

详细介绍

逆向拆解大纲:图书大纲分析

将已出版的图书逆向拆解为结构化的学习大纲。你的职责是从完成的 prose 中提取底层故事架构,揭示塑造读者体验的创作决策。

核心原则

一本完成的书会隐藏它的构造过程。大纲则揭示 prose 之下的骨架。

每个场景都承担结构、情感和角色功能。通过系统地提取这些功能,你可以绘制出故事如何实现其效果的地图。

状态

RO0:无输入

症状: 用户想分析一本书,但尚未提供文本或指出来源。

关键问题:

  • 你要分析哪本书?
  • 你准备好文本文件了吗?
  • 你的学习目标是什么?(创作技巧分析、类型研究、教学)

干预措施: 引导用户准备文本输入。讨论分析范围(全书还是部分内容)。

RO1:未分段的文本

症状: 已有原始文本,但尚未识别章节/场景划分。

关键问题:

  • 这本书是否有明确的章节标记?
  • 场景切换是否通过空白、符号或 POV 变化标记?
  • 这种类型的作品通常每个场景有多长?

干预措施: 运行 segment-book.ts,识别章节和场景。

RO2:已分段,未分析

症状: 已识别章节/场景,但尚未进行结构分析。

关键问题:

  • 总共有多少个场景?
  • 准备开始逐场景分析了吗?

干预措施: 运行 analyze-scene-batch.ts,进行 G/C/D 分析。

RO3:未识别类型

症状: 已分析场景,但尚未映射类型专属的关键节点。

关键问题:

  • 主要的元素类型是什么?
  • 是否有次要类型?
  • 适用哪种关键节点框架?

干预措施: 运行 detect-genre.ts,然后映射关键节点。

RO4:未追踪角色

症状: 已映射场景和类型,但尚未追踪角色弧线。

关键问题:

  • 谁是主角?
  • 哪 3-5 个次要角色最重要?
  • 每个角色分别遵循哪种弧线类型?

干预措施: 运行 track-characters.ts,识别并追踪角色弧线。

RO5:准备好综合

症状: 所有分析已完成,准备生成大纲。

关键问题:

  • 需要哪种输出深度?(摘要、标准、详细)
  • 包含所有场景还是仅包含重要场景?

干预措施: 运行 generate-outline.ts,生成 Markdown 输出。

RO6:大纲已完成

症状: 已生成 Markdown 大纲并可供使用。

关键问题:

  • 大纲是否呈现了这本书的结构?
  • 是否存在遗漏,或需要人工复核的场景?

干预措施: 人工完善、导出或进行对比研究。

诊断流程

  1. 确定当前状态,检查现有文件/分析结果
  2. 根据上方状态表识别下一步干预措施
  3. 运行适当的工具,推进到下一状态
  4. 验证输出后再继续
  5. 重复执行,直到达到 RO6

可用工具

segment-book.ts

将原始书籍文本分割为章节和场景。

deno run --allow-read scripts/segment-book.ts book.txt [options]

选项:

  • --chapter-pattern <regex> - 自定义章节检测模式
  • --scene-break <marker> - 自定义场景分隔标记
  • --output <file> - 输出 JSON 文件(默认:stdout)

输出: 包含章节、场景、行范围和字数的 JSON。

analyze-scene-batch.ts

对所有场景应用场景序列分析(目标/冲突/灾难)。

deno run --allow-read scripts/analyze-scene-batch.ts segments.json book.txt [options]

选项:

  • --depth quick|standard|detailed - 分析深度
  • --output <file> - 输出 JSON 文件

输出: 包含每个场景的 G/C/D 分析的 JSON。

detect-genre.ts

根据文本模式识别主要和次要元素类型。

deno run --allow-read scripts/detect-genre.ts book.txt [options]

选项:

  • --sample-size <n> - 抽样的场景数量(默认:10)
  • --output <file> - 输出 JSON 文件

输出: 包含类型识别和关键节点映射的 JSON。

track-characters.ts

识别主角和主要角色,并追踪他们的角色弧线。

deno run --allow-read scripts/track-characters.ts segments.json book.txt [options]

选项:

  • --protagonist <name> - 指定主角姓名
  • --max-secondary <n> - 次要角色的最大数量(默认:5)
  • --output <file> - 输出 JSON 文件

**输出:**包含角色弧线和关键场景引用的 JSON。

generate-outline.ts

将所有分析综合为结构化的 Markdown 大纲。

deno run --allow-read --allow-write scripts/generate-outline.ts [options]

选项:

  • --segments <file> - 分段 JSON
  • --scenes <file> - 场景分析 JSON
  • --genre <file> - 类型检测 JSON
  • --characters <file> - 角色追踪 JSON
  • --depth summary|standard|detailed - 输出深度
  • --output <file> - 输出 Markdown 文件
reverse-outline.ts(编排器)

运行完整流程,从 book.txt 生成 outline.md。

deno run --allow-read --allow-write scripts/reverse-outline.ts book.txt [options]

选项:

  • --output <dir> - 输出目录(默认:./reverse-outlines/{book-name}/)
  • --depth quick|standard|detailed - 分析深度
  • --protagonist <name> - 指定主角姓名
  • --genre <type> - 覆盖类型检测结果

**输出:**包含 outline.md 以及 analysis/ 文件夹的目录,后者包含所有中间 JSON 文件。

反模式

浅层拆解

**问题:**大纲列出了发生的事情,却没有说明原因。 **解决方法:**针对每个场景,思考:它发挥了什么结构功能?如果删掉它,什么会出问题?

忽略类型的分析

**问题:**把惊悚小说的模式套用到爱情小说上,反之亦然。 **解决方法:**始终先检测类型;使用符合该类型的关键时刻。

臆断主角

**问题:**假定第一个视角角色就是主角。 **解决方法:**追踪所有视角角色的目标关联度和角色弧线表现。

猜测场景边界

**问题:**把段落分隔当作场景分隔。 **解决方法:**使用多种检测策略;优先采用保守分段,并进行人工审查。

不会执行的操作

  • 生成原创故事内容
  • 评判书籍的质量
  • 除非被要求,否则不与其他书籍进行比较
  • 跳过状态(每个状态都基于前一个状态)
  • 修改源文本

输出持久化

此技能会将主要输出写入文件,以便在不同会话间保留工作成果。

输出位置查找

开始任何其他工作之前:

  1. 检查项目中是否存在 context/output-config.md
  2. 如果存在,查找此技能对应的条目
  3. 如果不存在,则在 ./reverse-outlines/{book-name}/ 创建输出
主要输出

对于此技能,需持久化:

  • outline.md - 最终 Markdown 大纲
  • analysis/segments.json - 章节/场景分段
  • analysis/scenes.json - 逐场景 G/C/D 分析
  • analysis/genre.json - 类型检测结果
  • analysis/characters.json - 角色弧线追踪
对话与文件
写入文件保留在对话中
分段数据澄清问题
场景分析方法讨论
类型检测模糊情况的选项
角色弧线实时反馈
最终大纲作者的探索

集成关系图

入站(来自其他技能)
来源技能来源状态导向状态目的
story-senseSS7:准备评估RO0分析已出版作品,以便与自己的作品进行比较
dna-extractionEX7:提取完成RO5将提取出的功能与检测到的结构进行比较
出站(流向其他技能)
此状态导向技能目标状态目的
RO6:大纲完成story-zoomZ2将已出版书籍与自己的结构进行对照
RO6:大纲完成scene-sequencingSQ1将其用作场景结构参考
RO6:大纲完成character-arcCA1将其用作角色弧线设计参考
RO6:大纲完成genre-conventionsGC1研究类型的运用
互补技能
技能关联
scene-sequencing复用核心 G/C/D 分析模式
genre-conventions来源于其中的类型检测模式
character-arc来源于其中的弧线类型识别模式
dna-extraction借用其中的功能分类
story-zoom输出格式兼容,便于比较
revision采用类似的结构分析方法

评论

支持 Markdown