---
name: compose
description: 基于主题或参考文章进行中文创作。自动检索素材库、加载主力风格档案，产出符合个人风格的文章。支持公众号、Twitter、小红书、博客等多种场景。当用户说"写一篇关于XX的文章""围绕XX创作""基于这篇文章写一篇""参考这篇英文写个中文版""帮我写""出一篇稿子"时使用此技能。即使用户只给了一个主题或一篇参考文章，也应考虑使用。
license: MIT
metadata:
  author: simonwong
  version: "1.1.0"
---

# 创作

基于主题或参考文章，结合素材库和主力风格，产出文章。

## 核心原则

1. **分步走**：先出大纲/创作规划，用户确认后再写正文。不要一口气写完再问。
2. **风格优先**：严格遵循主力风格档案，这是区别于通用 AI 写作的关键。
3. **素材融入**：自然引用素材库中的内容，不是生硬拼接。
4. **去翻译腔**：参考模式下，最终产出必须像中文母语者写的，不是翻译稿。

## 模式判断

根据用户输入自动识别：

- 用户给了一个**主题**，没有参考文章 → **主题模式**
- 用户给了一篇**参考文章**（通常是英文） → **参考模式**
- 用户同时给了主题和参考文章 → **参考模式**（参考文章为骨架，主题为方向）

## 前置准备

无论哪种模式，先做以下准备：

### 1. 加载主力风格

读取 `./writing-workspace/styles/my_style.json`。

- 如果文件存在：后续写作严格遵循其中的语言特征、结构偏好、forbidden_words 和 anti_ai_notes
- 如果文件不存在：提醒用户"你还没有建立主力风格档案，建议先用 style-extract 技能分析几篇文章来初始化。现在可以用默认风格先写，写完再用 rewrite 技能调整。"，然后用自然、口语化的默认风格继续

### 2. 检索相关素材

读取 `./writing-workspace/materials/index.jsonl`。

- 如果文件存在且非空：逐行解析，按主题/标签匹配相关素材，读取匹配条目的完整 JSON
- 如果文件不存在或为空：跳过，仅基于用户输入和自身知识写作

### 3. 确认输出场景

如果用户没有指定场景，默认为公众号长文。各场景篇幅参考：

| 场景 | 篇幅 | 特点 |
|------|------|------|
| 公众号 | 2000-4000 字 | 深度长文，可以铺开讲 |
| 博客 | 1500-3000 字 | 结构化，小标题清晰 |
| 小红书 | 300-800 字 | 短平快，口语化，段落短 |
| Twitter | 280 字以内 | 一个核心观点，金句化 |

---

## 主题模式

用户给了一个主题，从零开始写。

### 第一步：生成大纲

基于主题、检索到的素材、主力风格的结构偏好，生成文章大纲：

```
## 创作大纲

**主题：** XXX
**场景：** 公众号
**预计篇幅：** 约 2500 字
**风格：** [从 my_style.json 中提取的 overall_tone 摘要]

### 结构

1. **开头** — [开头方式，如"从一个具体场景切入"]
   - 引出问题/悬念
2. **第一部分：[小标题]**
   - 核心观点：...
   - 素材支撑：[mat_xxx — 一句话说明]
3. **第二部分：[小标题]**
   - ...
4. **第三部分：[小标题]**
   - ...
5. **结尾** — [结尾方式，如"金句收束"]

### 将使用的素材
- mat_20260327_001: "..."
- mat_20260327_003: "..."
```

呈现给用户，等待确认或修改意见。

### 第二步：写正文

用户确认大纲后，按大纲逐段写作：

- 遵循主力风格的语言特征（词汇、句式、标点、人称、情绪）
- 遵循主力风格的结构特征（段落节奏、过渡方式）
- 自然融入素材（转述而非直接粘贴，除非是 quote 类型）
- 严格避免 forbidden_words 中的词
- 严格遵守 anti_ai_notes 中的约束

### 第三步：自检

写完正文后，对照以下清单自检一遍：

- [ ] 没有使用 forbidden_words 中的任何词
- [ ] 段落长短有变化，不是每段都差不多长
- [ ] 没有"首先...其次...最后..."的机械结构
- [ ] 没有排比句（除非主力风格明确偏好排比）
- [ ] 开头和结尾符合主力风格的偏好
- [ ] 素材融入自然，不像是硬塞进去的
- [ ] 整体读起来像人写的，不像 AI 生成的

如果自检发现问题，直接修正后输出。

### 第四步：保存和提示

- 将终稿保存到 `./writing-workspace/drafts/draft_[主题关键词]_v1.md`
- 告诉用户文件保存路径
- 建议："初稿完成，可以用 rewrite 技能做进一步润色，或用 title-gen 技能生成标题。"

---

## 参考模式

用户给了一篇参考文章（通常是英文），基于它创作中文内容。

**核心区别**：这不是翻译，是再创作。结构要重组，语言要中文化。

### 第一步：生成创作规划

深度阅读参考文章后，生成创作规划：

```
## 创作规划

**参考文章：** 《原文标题》
**输出场景：** 公众号
**预计篇幅：** 约 3000 字

### 原文核心概念
1. [概念A] — 一句话中文摘要
2. [概念B] — 一句话中文摘要
3. [概念C] — 一句话中文摘要

### 取舍建议
- ✅ 保留：概念A（核心论点，必须保留）
- ✅ 保留：概念B（有数据支撑，说服力强）
- ⚠️ 弱化：概念C（过于技术细节，中文读者可能不关心）
- ❌ 跳过：原文第X段（纯背景介绍，中文语境不需要）

### 补充建议
- 🔗 素材库匹配：mat_xxx 可以补充到概念A的论述中
- 💡 建议加入：[你自己的案例/思考] 的位置在概念B之后

### 建议结构（不照搬原文）
1. **开头** — ...
2. **第一部分** — 对应概念A，但用中文读者熟悉的案例引入
3. **第二部分** — 融合概念B + 素材库补充
4. **第三部分** — 你的延伸思考
5. **结尾** — ...
```

呈现给用户，等待确认。

### 第二步：写正文

用户确认后写作，额外注意：

- **不照搬原文结构**：段落安排必须重新设计
- **不翻译句子**：用自己的话重新阐述概念，读者不应察觉有英文原文
- **本地化案例**：尽量用中文读者熟悉的案例替换或补充
- **融入素材**：将素材库中的匹配内容自然织入
- 同样执行主题模式的自检清单

### 第三步：保存和提示

同主题模式。

---

## 写作中的风格应用

以下是将 my_style.json 应用到写作中的具体指导：

### 语言层面

- `vocabulary_level`：决定用词的口语/书面比例
- `sentence_rhythm`：控制句子长短交替。如果是"短句为主"，大部分句子控制在 15 字以内，偶尔用长句收束
- `favorite_expressions`：在自然的位置使用这些表达，但不要刻意堆砌
- `punctuation_habits`：比如"多用破折号"就多用破折号做插入和转折
- `person_perspective`：决定主要人称。如果是"第一人称为主，偶尔切第二人称"，就这么写
- `emotion_intensity`：控制情绪表达的浓度

### 结构层面

- `opening_pattern`：决定文章如何开头
- `paragraph_rhythm`：控制段落长短的交替规律
- `argument_logic`：决定论证的展开方式
- `transition_style`：决定段落之间如何过渡
- `closing_pattern`：决定文章如何收尾

### 反 AI 层面

- `forbidden_words`：这些词绝对不能出现
- `anti_ai_notes`：这些模式必须避免
