style-extract

Installation
SKILL.md

风格提取

从文章中提取写作风格特征,建立和维护个人风格档案。

核心概念

风格不是抽象的"好"或"差",而是一组可量化、可复制的具体特征。这个技能做两件事:

  1. 分析入库:把一篇文章的风格拆解为具体维度,存入风格素材库
  2. 融合更新:从风格素材库中挑选特征,合成或更新主力风格档案

主力风格档案(my_style.json)是创作和润色技能实际调用的配方。风格素材库是长期积累的原材料。

数据目录

所有风格数据存放在 ./writing-workspace/styles/

writing-workspace/styles/
├── my_style.json       # 主力风格档案(创作/润色读取的那一份)
├── index.jsonl          # 风格素材索引(JSONL 格式,每行一条 {id, source_title, author, analyzed_at})
└── entries/            # 每篇分析过的文章一条记录
    └── sty_xxx.json

首次使用时自动创建目录结构。

模式判断

根据用户意图自动选择模式:

  • 用户投喂文章说"分析风格""看看这篇文章的写法" → 模式 A:分析入库
  • 用户说"吸收进来""更新我的风格""融合这几个" → 模式 B:融合更新
  • 用户投喂自己的文章说"分析我的文风" → 模式 A,且标记 is_self: true

模式 A:分析入库

分析维度

逐一分析以下维度,每个维度用一句话概括特征:

语言维度:

维度 关注点
vocabulary_level 口语化 / 书面 / 混合?用词偏日常还是专业?
sentence_rhythm 短句为主还是长句?节奏是急促还是舒缓?
favorite_expressions 反复出现的口头禅、过渡语、语气词(提取 3-5 个)
punctuation_habits 破折号多还是省略号多?逗号密度?
person_perspective 第一人称 / 第二人称 / 第三人称?是否切换?
emotion_intensity 冷静克制 / 中等 / 热烈煽情?态度鲜明还是温和?

结构维度:

维度 关注点
opening_pattern 故事切入 / 提问切入 / 数据冲击 / 场景描写 / 直接亮观点?
paragraph_rhythm 段落长短交替规律?关键句是否独立成段?
argument_logic 归纳型(案例→观点)/ 演绎型(观点→论证)/ 并列型?
transition_style 用连接词过渡 / 口语化过渡 / 直接跳转?
closing_pattern 金句收尾 / 开放提问 / 行动号召 / 故事回环?
title_pattern 反常识 / 数字型 / 痛点型 / 悬念型 / 直给型?

提炼亮点

除了维度分析,额外提炼 2-3 个这篇文章最值得借鉴的具体技巧。不要泛泛而谈,要具体到"怎么做"。

好的亮点示例:

  • "用连续三个反问句制造节奏感,然后用一句陈述句收住,形成'问问问→答'的冲击力"
  • "每个大段落结尾都用一句独立成行的短句做总结,像钉钉子一样把观点钉住"

执行流程

  1. 确保 ./writing-workspace/styles/ 目录存在,不存在则创建(含 entries/ 子目录)
  2. 如果 index.jsonl 不存在,创建空文件
  3. 通读全文,理解整体风格基调
  4. 逐一分析 12 个维度,每个维度一句话概括
  5. 提炼 2-3 个最值得借鉴的具体技巧
  6. 生成风格素材条目 JSON,ID 格式:sty_YYYYMMDD_NNNNNN 确定方式:取 index.jsonl 最后一行的 ID 序号,再列出 entries/ 目录下当日已有的 sty_YYYYMMDD_*.json 文件,以两者中较大的序号 +1 作为起始编号。 如果索引为空且当日无已有文件,才从 001 开始。
  7. 写入 styles/entries/{id}.json
  8. 立即更新 styles/index.jsonl——在文件末尾追加一行 JSON {id, source_title, author, analyzed_at}。这一步不能跳过,索引是其他技能检索的入口。
  9. 向用户展示分析结果(用可读的格式,不是 raw JSON)
  10. 询问用户:"要把其中某些特征吸收到主力风格里吗?"

风格素材 JSON 结构

{
  "id": "sty_20260327_001",
  "source": {
    "title": "原文标题",
    "author": "作者",
    "url": "来源链接(如有)",
    "is_self": false
  },
  "language": {
    "vocabulary_level": "",
    "sentence_rhythm": "",
    "favorite_expressions": [],
    "punctuation_habits": "",
    "person_perspective": "",
    "emotion_intensity": ""
  },
  "structure": {
    "opening_pattern": "",
    "paragraph_rhythm": "",
    "argument_logic": "",
    "transition_style": "",
    "closing_pattern": "",
    "title_pattern": ""
  },
  "highlights": "2-3 个具体技巧的自然语言描述",
  "analyzed_at": "ISO 8601 时间戳"
}

注意事项

  • 如果只给了一篇文章,分析完后提醒用户:"一篇文章的风格分析可能不够全面,建议提供 3-5 篇同作者/同风格的文章以获得更准确的特征提取。"
  • 分析时重点关注"人味"特征——那些让这篇文章读起来不像 AI 写的元素。这些特征在后续创作和润色中特别有价值。
  • 写入 JSON 时必须正确转义特殊字符highlightsoverall_toneanti_ai_notesfavorite_expressions 等文本字段中的双引号 " 必须转义为 \",反斜杠 \ 转义为 \\,换行符转义为 \n。使用 Write 工具写入 JSON 时,确保字符串值中不包含未转义的双引号。

模式 B:融合/更新主力风格

执行流程

  1. 读取当前主力风格档案 styles/my_style.json
    • 如果不存在,进入初始化流程(见下方)
  2. 读取用户指定的风格素材(可以是刚分析完的,也可以是 entries/ 里已有的)
  3. 逐维度对比当前主力风格 vs 新素材的特征差异
  4. 对每个有差异的维度,向用户展示对比并询问:
    • "你当前的 opening_pattern 是'故事切入',这篇文章用的是'数据冲击'。要替换、保留、还是两者兼收?"
  5. 按用户选择更新 my_style.json
    • version 加 1
    • last_updated 更新为当前时间
    • trait_sources 记录每个特征的来源(哪个风格素材条目)
  6. 展示更新后的主力风格摘要

主力风格初始化

my_style.json 不存在时:

情况 1:用户投喂了自己的文章

  • 分析完直接将结果作为主力风格的初始版本
  • version 设为 1,trait_sources 全部标记为"自己的文章"

情况 2:用户投喂了别人的文章

  • 分析完后引导用户挑选想要的特征
  • 组装成第一版主力风格

主力风格 JSON 结构

{
  "name": "我的主力风格",
  "version": 1,
  "last_updated": "ISO 8601 时间戳",
  "language": {
    "vocabulary_level": "",
    "sentence_rhythm": "",
    "favorite_expressions": [],
    "punctuation_habits": "",
    "person_perspective": "",
    "emotion_intensity": "",
    "forbidden_words": ["值得注意的是", "总而言之", "综上所述", "让我们", "在当今社会"]
  },
  "structure": {
    "opening_pattern": "",
    "paragraph_rhythm": "",
    "argument_logic": "",
    "transition_style": "",
    "closing_pattern": "",
    "title_pattern": ""
  },
  "overall_tone": "一段自然语言描述整体风格基调",
  "anti_ai_notes": "避免排比句、避免'首先其次最后'的机械结构、避免每段都差不多长...",
  "trait_sources": {
    "opening_pattern": "来自 sty_xxx",
    "sentence_rhythm": "自己的文章"
  }
}

forbidden_words 初始包含常见 AI 用语,用户可以随时补充。创作和润色技能会读取这个列表。


输出格式

分析结果用可读的中文呈现,不要直接输出 JSON。示例格式:

## 风格分析报告

**来源:** 《文章标题》 by 作者

### 语言特征
- **词汇风格:** 口语化为主,偶尔蹦出书面用语制造反差
- **句式节奏:** 短句密集,长句用来收尾,形成"碎碎碎——收"的节奏
- **常用表达:** "说白了""你想想看""本质上就是"
- ...

### 结构特征
- **开头方式:** 故事切入——用一个具体场景把读者拉进来
- ...

### 最值得借鉴的技巧
1. ...
2. ...

---
风格素材已保存为 sty_20260327_001
要把其中某些特征吸收到你的主力风格里吗?
Weekly Installs
2
GitHub Stars
2
First Seen
Today