# 文章知识点提取规则

## 概述

从文章中提取知识点并自动拆分为卡片系列。提取过程分为三阶段：内容分析 → 知识点拆分 → 卡片类型匹配。

---

## 阶段一：内容分析

### 1.1 识别文章结构

| 分析维度 | 输出 |
|----------|------|
| 文章类型 | 教程 / 科普 / 评测 / 观点 / 清单 / 故事 |
| 核心主题 | 一句话概括文章讲了什么 |
| 目标受众 | 初学者 / 中级 / 专业人士 |
| 信息密度 | 低（叙事为主）/ 中（混合）/ 高（干货密集） |
| 知识点数量 | 预估可提取的独立知识点数量 |

### 1.2 标记提取锚点

在文章中标记以下类型的内容作为提取锚点：

| 锚点类型 | 识别信号 | 示例 |
|----------|----------|------|
| **定义** | "是指"、"定义为"、"是一种"、概念+解释 | "RESTful API 是一种..." |
| **列举** | 数字编号、"首先/其次"、"第一/第二"、并列要点 | "前端开发的 5 个核心技能" |
| **对比** | "vs"、"相比"、"区别"、"优缺点" | "React vs Vue 的区别" |
| **步骤** | "第一步"、"然后"、有序操作、流程 | "部署的 4 个步骤" |
| **问答** | "为什么"、"如何"、"常见问题"、反问句 | "为什么要用 TypeScript？" |
| **分类** | "分为"、"类型"、矩阵、象限 | "按紧急/重要分为四类" |
| **金句** | 引用、总结性句子、核心观点 | "简单是可靠性的前提" |
| **关系** | "包含"、"影响"、"依赖"、层级结构 | "微服务架构的组件关系" |

---

## 阶段二：知识点拆分

### 2.1 拆分原则

1. **一卡一主题**：每张卡片只承载一个核心知识点
2. **独立可理解**：每张卡片不依赖其他卡片也能看懂
3. **信息量适中**：单张卡片文字量控制在 50-150 字
4. **逻辑连贯**：系列卡片之间有合理的阅读顺序

### 2.2 拆分策略

根据文章类型采用不同的拆分策略：

| 文章类型 | 拆分策略 | 典型卡片数 |
|----------|----------|------------|
| 教程类 | 每个步骤/阶段一张卡片 | 5-8 张 |
| 科普类 | 每个概念/定义一张卡片 | 4-6 张 |
| 评测类 | 维度对比 + 各项评分 | 4-7 张 |
| 观点类 | 核心论点 + 论据 + 结论 | 3-5 张 |
| 清单类 | 每 2-3 个条目合为一张 | 3-5 张 |
| 故事类 | 关键节点 + 核心启发 | 3-5 张 |

### 2.3 系列结构

所有系列遵循统一的首尾结构：

```
[封面卡] → [内容卡 1] → [内容卡 2] → ... → [内容卡 N] → [总结卡]
```

- **封面卡**（必须）：1 张，展示系列标题和主题视觉
- **内容卡**（核心）：N 张，承载提取的知识点
- **总结卡**（必须）：1 张，核心回顾 + 行动号召

总数控制在 **4-10 张**，推荐 5-7 张。

---

## 阶段三：卡片类型匹配

### 3.1 自动匹配规则

根据每个知识点的结构特征，自动匹配最适合的卡片类型：

| 知识点特征 | 匹配卡片类型 | 匹配理由 |
|------------|-------------|----------|
| 3-7 个并列要点 | `tips`（要点清单） | 列表结构天然适合 |
| 两个选项/方案的比较 | `comparison`（对比卡） | 并列对比信息最清晰 |
| 单个概念/术语的解释 | `definition`（定义卡） | 聚焦一个概念深度解读 |
| 有序的操作步骤 | `steps`（步骤卡） | 强调顺序和流程 |
| 问题 + 解答配对 | `qa`（问答卡） | Q&A 结构直观 |
| 多维分类/象限 | `matrix`（矩阵卡） | 矩阵展示分类关系 |
| 核心观点/精华句 | `quote`（金句卡） | 大字体突出重点 |
| 多概念间的关系 | `mindmap`（脑图卡） | 辐射结构展示关系 |

### 3.2 混合类型处理

当文章包含多种类型的知识点时：

1. **每张卡片独立匹配**：不要求系列中所有内容卡使用同一类型
2. **风格保持统一**：即使卡片类型不同，视觉风格在整个系列中保持一致
3. **避免类型过于分散**：同一系列中建议不超过 3 种卡片类型

### 3.3 特殊情况

| 情况 | 处理方式 |
|------|----------|
| 知识点太大 | 拆分为多张卡片（如长列表拆为"上/下"两张 tips） |
| 知识点太小 | 合并相关的小知识点到一张卡片 |
| 无法匹配类型 | 默认使用 `tips`（最通用的类型） |
| 纯叙事内容 | 提取核心观点，使用 `quote` 或 `definition` |

---

## 手动输入模式

当用户直接输入知识点（非文章提取）时：

### 单张卡片

用户输入一段内容 → 分析内容结构 → 匹配卡片类型 → 直接生成

### 多张卡片

用户输入多个知识点 → 逐个匹配卡片类型 → 自动添加封面和总结 → 生成系列

### 识别用户意图

| 用户输入格式 | 推断 |
|-------------|------|
| 单段文字 | 单张卡片，自动匹配类型 |
| 编号列表 | `tips` 类型 |
| "A vs B" 格式 | `comparison` 类型 |
| "什么是 X" 格式 | `definition` 类型 |
| "如何 / 怎么" 格式 | `steps` 类型 |
| 多段独立内容 | 多张卡片系列 |
