文风蒸馏器 / Style Distiller
把某位作家、某本书或某个公众号的文风,拆解成「可模仿、可校验」的写作规则。
本技能帮你把任意长文本语料(小说、历史叙事、爆款长文、竞品账号文章等)「蒸馏」成一份写作规律说明书。它不抄原句、只抽「写法动作」,让你能建立写作分身、批量仿写,或沉淀团队内容方法论。
核心原则
- 只抽写法,不抄句子。 说明书里禁止大段照搬原文;所有规律必须是「可执行的写法动作」。
- 区分「印」与「偶然表达」。 恒定的、反复出现的是作者的「印」;只出现一两次的修辞是偶然表达,不进规则。
- 能用数字说话的,绝不靠感觉。 可量化项一律用
scan_style.py跑确定性统计,再写进规则。 - 规则分级。 规律按「硬 / 中 / 软」三级交付,硬规则必须可被脚本校验。
- 样本要够大。 至少 3 万字、跨 5 个以上章节或 10 篇以上文章,否则「印」会被偶然表达淹没。
八维画像(详见 references/eight_dimensions.md)
| 维度 | 抽什么 |
|---|---|
| 句式 | 平均句长、句长 P50/P90、短句率、长句率、短句独立成段、反问/设问频率 |
| 段落 | 段落平均字数、短段占比、空行习惯、小标题密度 |
| 词汇 | 连接词/叹词/人称/年份/叠词密度、词汇丰富度、高频二元组 |
| 视角 | 第几人称、上帝视角/限知、旁白跳入频率 |
| 温度 | 冷叙事 vs 热抒情、讽刺/温情占比 |
| 逻辑 | 因果推进、铺垫回收、时空跳跃 |
| 修辞 | 比喻/拟人/通感的类型与密度 |
| 基因 | 作者的「招牌动作」(如括号旁白、段尾抖机灵) |
四步法(详见 references/four_steps.md)
- 取样与清洗:取 3–10 万字代表性语料,去页眉页脚/版权页/注释,统一全半角。
- 八维画像:逐维读样本,标注「印」与「偶然」,形成风格骨架草稿。
- 确定性扫描:跑
template/scan_style.py,把 20+ 项数字填进各维度。 - 分级与自检:按硬/中/软写进说明书,跑
template/selfcheck.py --strict确认达标。
硬 / 中 / 软 分级
| 级别 | 含义 | 可脚本校验 | 例子 |
|---|---|---|---|
| 硬 | 确定性、可量化、必守 | ✅ | 括号旁白密度 ≥ 2.0 次/千字;短句独立成段占比 18%–26% |
| 中 | 结构性偏好,大概率守 | ⚠️ | 每 800–1500 字一个章节切口;每章 1–2 次跳入内心 |
| 软 | 语气/质感,靠感觉对齐 | ❌ | 冷面讲惨事、段尾常抖一句反差机灵 |
> 硬规则写法要求:比较符 + 数字 + 单位 + 实测值。例:H1 括号旁白密度 ≥ 2.0 次/千字(实测 3.23)。
内置脚本
两个脚本均为纯标准库实现(无需 pip 安装),任意 Python3 环境直接跑。
1) scan_style.py —— 确定性扫描(v2)
python template/scan_style.py 语料.txt # 分组文本报告
python template/scan_style.py 语料.txt --md # 直接粘进说明书的 Markdown 表格
python template/scan_style.py 语料.txt --json # 机器可读(含 schema / 每文件字数)
python template/scan_style.py --dir ./正文 --md # 批量目录(.txt/.md,递归)
python template/scan_style.py 竞品.txt --baseline 自己.json # 与基线对比,输出增减
python template/scan_style.py 语料.txt --top 15 # 高频二元组 TopN
python template/scan_style.py 语料.txt --encoding gbk # 指定编码
指标清单(20+ 项,分五组)
| 组 | 指标 |
|---|---|
| 节奏 | 有效字数、句数、段落数、平均句长、句长 P50/P90、短句率(<10字)、长句率(>50字)、段落平均字数、短句独立成段占比、短段占比(≤30字) |
| 标点 | 括号旁白密度、逗号/感叹号/问号/省略号/破折号/冒号密度、句末句号/感叹/问号/省略占比 |
| 对话 | 引号对数量、对话密度(对/千字)、对话频率(对/百句) |
| 词汇 | 连接词、口语叹词、人称、年份、叠词密度、不重复汉字数、词汇丰富度(前万字 TTR)、高频二元组 |
| 结构 | 小标题密度、反问/设问频率 |
2) selfcheck.py —— 说明书自检(v2)
python template/selfcheck.py 写作规律说明书.md
python template/selfcheck.py 写作规律说明书.md --strict # 硬规则必须带数字/比较符
python template/selfcheck.py 写作规律说明书.md --json
校验:八维标题齐全、硬/中/软三级齐全、扫描数据小节含 ≥6 个带单位数字、仿写清单存在、明确区分「印/偶然」;--strict 额外要求每条硬规则含数字或比较符且至少 2 条。
指标怎么读(节选,详见 references/metrics_guide.md)
| 指标 | 说明什么 | 参考区间(写实/口语向) |
|---|---|---|
| 平均句长 | 叙述密度 | 15–25 短促;25–40 常规;40+ 绵密 |
| 句长 P90 | 长句上限 | 与平均句长差越大,长短句反差越强 |
| 短句独立成段占比 | 呼吸节奏 | 10%–15% 稳;20%+ 强节奏感 |
| 括号旁白密度 | 作者插话冲动 | <1 克制;1–2 温和;3+ 强人格式吐槽 |
| 句末问号占比 | 设问推进 | 5%–12% 明显自问自答 |
| 感叹号密度 | 情绪外露 | <2 克制;5+ 高亢 |
| 词汇丰富度(前万字) | 用词广度 | 8%–12% 通俗;15%+ 文雅/多典故 |
| 小标题密度 | 结构切分 | 纯正文常为 0;0.3–1 个/千字为强切分 |
常见坑
- 样本里剥离了章节标题 → 小标题密度会假性为 0,需在说明书里注明。
- ASCII 单引号 会被当撇号误判为对话,脚本已排除;若语料含英文缩写需人工复核。
- 剧本/对话体 对话频率天然极高,阈值不能照搬小说。
- 样本 <1 万字 时,句长分位与高频词不稳定,只作参考。
- 只扫一节一章 会把偶然表达当「印」,务必跨章节取样。
产出物结构
说明书建议用 references/manual_template.md 的骨架:
风格速写 → 八维画像(每维写「印 / 偶然 / 规则」)→ 硬规则表 → 中规则 → 软规则 → 扫描数据 → 仿写检查清单。
典型用法
> 用户:把《明朝那些事儿》的文风蒸馏成写作规律。
> 助手:① 取样清洗(≥3 万字)→ ② 八维画像 → ③ scan_style.py 语料.txt --md 拿数字 → ④ 按 manual_template.md 写说明书、硬规则带实测值 → ⑤ selfcheck.py --strict 通过 → 交付仿写蓝图。
禁忌
- 不要把原文整段复制进说明书(只抽「写法动作」)。
- 不要把偶然出现一次的修辞当成「印」。
- 硬规则若写进说明书,必须能在
scan_style.py输出里找到对应数字佐证。 - 不要用单一短样本下结论。