| name | novel-deconstruct |
| description | 拆书——对网络小说进行深度结构分析。输入番茄小说等平台的链接,自动抓取、解码、分析,输出七步骨架/冲突三层/人物弧光/对话技法/节奏控制等维度的拆书报告。触发词:拆书、拆解、分析这本小说、帮我看看这本书。 |
Novel Deconstruct — 拆书技能
对网络小说进行系统性的写作技法分析。自动处理字体反爬、章节抓取、定量扫描、场景级深度拆解全流程。
检测流程
用户提供小说链接
├─ 番茄小说 (fanqienovel.com) → 字体解码 + API抓取
├─ 其他平台 → 通用网页抓取
└─ 用户直接粘贴文本 → 跳过抓取,直接分析
Step 1: 获取元数据
读取小说主页,提取:
- 书名、作者、简介、题材标签、总字数、更新状态
- 完整章节目录(含每章标题)
- 章节总数 N
Step 2: 抓取正文
番茄小说
- 从主页 HTML (
__INITIAL_STATE__ JSON) 提取 chapterListWithVolume
- 从 CSS 提取自定义字体 URL (woff2) →
tools/decode_font.py 用 fontTools + ddddocr 建 PUA→汉字映射表
- 按采样策略批量请求 reader API (
fanqienovel.com/reader/{itemId}),用映射表解码正文
采样策略
| 范围 | 策略 | 用途 |
|---|
| Ch 1-10 | 全文 | 开局分析(激励事件/人物引入/世界观建立) |
| Ch 11-N | 每 N/8 章取1章 | 结构采样(幕转折/冲突升级/人物弧光) |
| 最后10章 | 全文 | 结局分析(高潮/收束/主题落点) |
总计约 20-30 章。番茄免费章节通常仅前10章,后续章节可能需要登录 Cookie 或第三方镜像站。
Step 3: 定量扫描(必做,不可跳过)
对每章正文执行以下自动化扫描,输出数据表:
3.1 基础指标
| 指标 | 方法 |
|---|
| 字数 | len(re.sub(r'\s', '', body)) |
| 段落数 | 按换行分割 |
| 场景数 | 按空行/-/—/视角切换分割 |
| 句均长 | 以 。!?;… 断句,取均值 |
| 短句% | ≤15字的句子占比 |
| 长句% | >25字的句子占比 |
| 对话% | 含对话标记的段落占比 |
| 了/段 | 「了」字总数 ÷ 段落数 |
3.2 疲劳词扫描(逐词计数,输出单章+总计)
按以下分类,使用 body.count(word) 逐词扫描:
| 类别 | 词表 | 阈值 |
|---|
| 副词 | 突然/忽然/猛然/竟然/居然/渐渐/逐渐/依旧/仍然/默默/微微 | 各≤3次/章 |
| 动词模板 | 露出/陷入/涌起/泛起/浮现/充斥 | 各≤3次/章 |
| 连接词 | 然而/不过/于是/随即/紧接着/与此同时 | 各≤4次/章 |
| 身体模板 | 瞳孔一缩/身体一僵/倒吸一口凉气/呼吸一滞 | 各≤2次/章 |
| 含混词 | 仿佛/宛如/好像/似乎 | 合计≤2次/500字 |
| 「让」字 | 让/令/使 | 专项统计(指南禁止项) |
| 「不是…而是…」 | 正则 不是.{0,20}而是 | ≤3次/章 |
3.3 情绪标签词扫描
搜索「悲伤/愤怒/恐惧/幸福/美丽/紧张/焦虑/难过/开心/害怕/兴奋/激动/失望/绝望」等词,区分对话中出现 vs 旁白中出现。旁白中出现即违规。
3.4 章标题风格聚类
将所有章节标题按风格分为五类:
- 感官期:具象名词(食物名、动作、对话片段)
- 事件期:情节节点(冲突、转折、新信息)
- 状态期:心理/关系状态描述
- 悬念期:省略号、对话片段、抽象概念
- 收束期:短句、意象、情感落点
Step 4: 场景级深度拆解
对前10章全文逐章逐场景执行以下分析:
4.1 每章输出
场景切分图(场景1/2/3…字数+POV+内容概要)
↓
关键段落逐段功能标注(激励事件/世界观渗透/人物引入/弧光推进/钩子)
↓
鸿沟检查(场景内人物期望 vs 世界实际反应)
↓
技法点评(冰山对话/以景写情/镜头感/倒叙/详略判断)
↓
章末钩子质量评估
4.2 场景切分规则
- 空行、单独成段的
-/—/... = 场景边界
- POV 人物切换 = 场景边界
- 时间/空间跳跃 = 场景边界
- 单场景章(如Ch4/Ch7)标记为情感高潮章
4.3 鸿沟检查方法
对每个场景回答三个问题:
- 人物的期望是什么?
- 世界实际给出了什么反应?
- 两者之间是否有裂缝(反应 ≠ 期望)?
无裂缝 → 标记「无效场景」。
4.4 冰山对话检查
摘录每章最核心的对话段落,检查:
- 人物说出来的话(水上1/8)vs 真正的意图(水下7/8)
- 是否通过回避/犹豫/沉默/过度否认来传递水下信息
- 有没有人物直接说出自己的真实意图(= 违规)
Step 5: 逐章价值变化追踪
建立 10章 × 6维度 的变化矩阵:
| 维度 | 检查方法 |
|---|
| 处境变化 | 人物外部处境的正↔负转换(安全↔危险/富有↔贫穷等) |
| 关系变化 | 人物间关系的正↔负转换(亲近↔疏远/信任↔怀疑等) |
| 认知变化 | 人物对世界/他人/自己的理解的正↔负转换 |
| 情绪方向 | 本章主导情绪的起→落方向 |
| 钩子类型 | 信息悬念/情感悬念/情境悬念/情感收束 |
| 核心规律 | 每章是否至少一个维度发生可感知变化? |
Step 6: 结构层分析
6.1 七步骨架
对照 story-craft-reference.md,逐步骤标注在正文/章节目录中的对应位置。
6.2 激励事件
- 定位精确章节/段落
- 检查是否在故事前四分之一处
- 验证双欲望设计(自觉+不自觉)
- 检查是否发生在读者面前(非幕后)
6.3 幕结构切分
基于章节标题和内容转折点,将全书切分为 6-8 幕,每幕标注:
- 起止章节 + 章节数
- 核心冲突 + 转折节点
- 对抗力量等级(对立面/矛盾体/反讽)
6.4 冲突三层缠绕验证
选取关键章节,验证三层冲突是否同时推进且互相缠绕。
Step 7: 输出报告
报告保存到 {用户桌面}/拆书_{书名}/ 或用户指定目录。
报告结构(18章标准模板)
一、作品档案
二、七步骨架分析
三、激励事件分析
四、鸿沟推进机制
五、冲突三层法则
六、对抗力量升级路径
七、叙事视角分析
八、对话分析(冰山对话 + 镜头感)
九、句式与文风分析
十、人物塑造分析(主角面具/真相/弧光 + 群像功能)
十一、节奏分析(节奏图 + 章末钩子检查)
十二、逐章定量扫描(基础指标表 + 疲劳词扫描 + 情绪标签词扫描)
十三、逐章逐场景深度拆解(Ch1-10,每章场景切分+功能标注+鸿沟检查+技法点评)
十四、逐章价值变化追踪(6维矩阵)
十五、八幕结构全景(基于全本章节标题)
十六、章标题风格演变(五阶段聚类)
十七、结构总评(优势 + 可改进)
十八、拆书结论(评分表 + 一句话总结)
评分维度
| 维度 | 满分 |
|---|
| 选题 | ★★★★★ |
| 结构 | ★★★★★ |
| 人物 | ★★★★★ |
| 对话 | ★★★★★ |
| 文笔 | ★★★★★ |
| 世界观 | ★★★★★ |
| 商业性 | ★★★★★ |
工具脚本
| 脚本 | 用途 |
|---|
tools/decode_font.py | 番茄字体解码:下载woff2 → fontTools解析cmap → ddddocr OCR识别 → 输出映射JSON |
tools/fetch_novel.py | 批量章节抓取:读取章节列表 → 采样 → 逐章请求+解码 → 保存TXT |
依赖
pip install fonttools brotli Pillow ddddocr requests
分析参照
本技能分析时参照以下理论框架:
- AI写作规范指南 V3.0(麦基《故事》+ 许荣哲《小说课》+ 布兰德《成为作家》)
- awesome-novel-skill 的 story-craft-reference.md(七步骨架/三番四震/鸿沟机制/人物弧光等)
- awesome-novel-skill 的 chapter-quality-checklist.md(15项验收标准)
- awesome-novel-skill 的 common-rules.md(疲劳词阈值/句式规则/镜头感对话/以景写情/活人感)