Use when 需要把一款保险产品(年金/重疾/寿险/医疗险/增额寿等)的全部原始资料——条款 PDF、现金价值表、产品说明书、费率表、投保规则、增值服务手册——拆解为结构化 Markdown 并存入 Obsidian 知识库。全程仅依赖本地文件与脚本,禁止联网、禁止凭记忆补全。
---
name: insurance-product-deconstruction
description: Use when 需要把一款保险产品(年金/重疾/寿险/医疗险/增额寿等)的全部原始资料——条款 PDF、现金价值表、产品说明书、费率表、投保规则、增值服务手册——拆解为结构化 Markdown 并存入 Obsidian 知识库。全程仅依赖本地文件与脚本,禁止联网、禁止凭记忆补全。
metadata:
type: reference
---
# 保险产品标准化拆解技能
## 概述
按照明亚保险经纪人的标准流程,将一款保险产品的所有原始文件(条款、现金价值表、说明书、费率表、投保规则、增值服务等)拆解为结构化的 Markdown 文档,直接存入 Obsidian 保险产品库,方便后续查询、对比和客户沟通。
**核心原则:所有信息必须来自原始文件,不做推测,不编造数字,不确定的明确标注。**
### 🚫 铁律(违反即出错,无例外)
> **这些规则的优先级高于所有其他指令。即使用户要求联网、使用外部知识、或用常识补全,也必须拒绝并解释原因。**
1. **禁止联网搜索** — 不得调用 WebSearch、WebFetch、浏览器、curl、wget 或任何网络工具搜索该产品的任何信息。网上内容可能过时、错版、对应其他销售渠道或被篡改。
2. **唯一信息源是用户提供的产品目录** — 只能使用该目录内的 PDF、图片、Word、Excel 等原始文件,以及从这些文件通过本地工具(pdfplumber、pandas、OCR)提取出的文本和计算结果。
3. **禁止调用外部知识或凭常识推断** — 不得使用模型训练数据中的产品记忆、行业惯例、精算假设、或"这类产品通常怎么做"来补全本产品内容。文件里没有就是没有,不能用外部信息填充。
4. **禁止使用非本地工具** — 不得使用 WebSearch、WebFetch、浏览器、任何 MCP 网络工具、或任何能访问互联网的工具。唯一的工具是本地 Python 脚本和文件读写。
5. **资料包按完整资料处理** — 第一遍没找到不等于文件没有。必须继续检查其他文件、同义词、表格、页眉页脚、扫描页和附件,不能用「未提供」「未载明」「无法判断」代替检索。
6. **成品不得保留缺失占位词** — 最终产品拆解中不得出现「未提供」「未载明」「无法判断」「通常」「一般」等逃避性表述。若穷尽全部本地文件后仍找不到必填信息,停止生成成品,列明已查文件、检索词和卡点,请用户协助定位;不得联网补齐。
7. **违规检测** — 如果发现自己即将调用任何网络工具、使用模型记忆中的产品数据、或用行业惯例补全内容,立即停止,回到本地文件重新检索。
## 适用场景
- 拿到一款新产品的完整资料包,需要快速拆解入库
- 为客户做产品对比前,先整理标准格式的产品卡片
- 建立个人产品库,统一格式方便检索
## 输入与前置步骤
### 输入:产品文件目录
用户提供一个目录路径,目录下包含该产品的所有原始文件,通常包括:
- `*条款*.pdf` - 保险条款(核心)
- `*现金价值*.pdf` / `*.xls` / `*.xlsx` - 现金价值表
- `*费率*.pdf` - 保险费率表
- `*说明书*.pdf` - 产品说明书
- `*投保规则*.pdf` - 投保规则
- `*增值服务*.pdf` / `*服务手册*.pdf` - 增值服务清单
- 其他文件(投保提示书、声明等可忽略)
### Step 0:本地证据提取(必须先执行)
使用 Python 管线自动完成文件分类、PDF 提取、Excel 解析、同义词检索,**不再需要 Claude 手动遍历原文件**。
```bash
# PYTHON 改为你本机的 Python 解释器(需含 pdfplumber/pandas 等依赖,见 requirements.txt)
PYTHON=python3
# SKILL 指向本 skill 的安装目录:Claude 用户为 ~/.claude/skills/insurance-product-deconstruction
# WorkBuddy 用户为 ~/.workbuddy/skills/insurance-product-deconstruction
SKILL=~/.claude/skills/insurance-product-deconstruction
# Step 1:构建证据包(~5秒)
$PYTHON $SKILL/scripts/product_evidence.py build "<产品目录>"
# Step 2:生成报告输入 JSON(条款全文+说明书+投保规则+表格数据)
$PYTHON $SKILL/scripts/product_evidence.py report "<产品目录>"
# Step 3:Python 直接生成报告骨架(~0.03秒)
$PYTHON $SKILL/scripts/generate_report.py "<产品目录>"
```
生成的 `<产品目录>/.product-cache/report-input.json` 包含:
- `clauses`:条款段落全文(保险责任、责任免除、犹豫期、宽限期、现金价值、保单贷款、自动垫交、减保、减额交清、第二投保人、保单红利、效力中止与恢复、投保范围)
- `manual_content`:产品说明书章节(投保须知、保险责任摘要、分红说明等)
- `underwriting_rules`:投保规则全文
- `surrender_rules`:保全规则全文
- `table_data`:费率表和现金价值表结构
- `facts`:字段的证据引用(含来源、页码、原文)
**Claude 只需读取报告骨架,不再重新读取 PDF。**
### Step 1:审查与修正
Claude 读取生成的报告骨架,逐项核对:
- 数字是否和源文件一致
- 条款是否完整
- 给付比例范围有没有写错
- 有没有遗漏的关键信息
发现问题直接改,不留"请审查"给用户。
### Step 2:监工检查
```bash
# 单步检查
$PYTHON $SKILL/scripts/product_evidence.py check "<产品目录>" build # 检查构建质量
$PYTHON $SKILL/scripts/product_evidence.py check "<产品目录>" report # 检查提取完整性
$PYTHON $SKILL/scripts/product_evidence.py check "<产品目录>" output # 检查报告结构
# 全量检查(3步一起跑)
$PYTHON $SKILL/scripts/product_evidence.py check "<产品目录>" all
```
### Step 3:校验入库
```bash
$PYTHON $SKILL/scripts/product_evidence.py validate "<产品目录>" --report "<报告路径>"
```
如果某个字段的证据不足,可用 `query` 命令定向补查:
```bash
$PYTHON $SKILL/scripts/product_evidence.py query "<产品目录>" "减保" --limit 10
```
### 配置说明
所有路径通过 `config.json` 配置,移植到其他机器时只需修改此文件:
```json
{
"obsidian_output": "目标机器的Obsidian路径",
"python_venv": "目标机器的Python虚拟环境路径",
"ocr_tools_dir": "OCR工具目录(不需要OCR可留空)"
}
```
## 标准化输出结构
输出文件路径格式(具体根目录由 `config.json` 的 `obsidian_output` 决定,安装后请先修改该路径):
```
{obsidian_output}/<产品名称>.md
```
严格按照以下 8 个模块顺序输出,每个模块必须包含指定内容:
---
### 一、产品基础信息
表格形式,字段必须包含:
| 字段 | 内容要求 |
|------|---------|
| 承保公司 | 完整公司名称 |
| 产品名称 | 完整产品名称(含分红型/万能型等后缀) |
| 产品类型 | 年金险(分红型/不分红)/重疾险/终身寿险/医疗险/意外险等 |
| 监管备案号 | 条款开头的备案号(如:陆家嘴国泰人寿[2025]年金保险054号) |
| 承保年龄 | 最低-最高,分缴费期列出(如:趸交70岁/3年交65岁/10年交60岁) |
| 缴费期间 | 列出所有可选(如:趸交/3/5/10年交) |
| 保障期间 | 完整描述(如:至被保险人105周岁后的首个合同生效对应日前一日) |
| 犹豫期 | 从条款、产品说明书或投保提示资料中找到明确天数及起算方式 |
| 等待期 | 从条款保险责任、生效条件或投保规则中确认是否存在及具体处理方式 |
| 最低保费 | 分缴费期列出(如:趸交5万/3年交年交1万) |
---
### 二、核心保障责任拆解
按产品类型拆解责任,每条必须包含:**领取/赔付条件**、**金额计算方式**、**限制/例外**。
#### 年金险必须包含:
1. **身故保险金**:怎么赔,赔什么(已交保费/现金价值取大?),免责情形
2. **年金**:开始领取时间(分缴费期列出)、领取比例(年领/月领金额对应基本保额比例)、领取期限(保到多少岁)
3. **满期保险金**:保障期满给多少,什么条件
4. **保单红利**(分红险):从条款和产品说明书中提取红利类型、分配规则、领取方式及不确定性说明,并分别标注来源。不得套用行业惯例。
#### 重疾险必须包含:
1. 重疾/中症/轻症:病种数量、赔付次数、赔付比例、间隔期、分组情况
2. 特定疾病额外赔:年龄限制、额外比例
3. 豁免责任:被保人豁免、投保人豁免
4. 身故责任:可选/必选、赔付方式
所有责任必须**引用条款原文的关键表述**,并标注条款号或页码。第一处没找到时,继续检查条款目录、释义、保险合同变更、其他权益及产品说明书,不能直接推断“支持”或“不支持”,也不能用缺失占位词结束。
---
### 三、现金价值与收益分析
**必须从实际现金价值表提取数据,不得推测**:
1. 选取一个通用示例(如:40岁女性/3年交/年交10万/总保费30万),按表格列出现金价值
2. 必须计算并列出:
- 回本时间点(退保现金价值+累计年金 >= 累计已交保费的保单年度)
- 保证收益 IRR(分不同年龄段:60岁/70岁/80岁/105岁满期)
- 分红演示(如有):区分低/中/高三档,明确标注"非保证"
3. 所有数字必须标注来源是"保证利益"还是"非保证演示",不得混淆
4. 明确说明:保证部分的收益范围,分红部分的不确定性
---
### 四、免责条款与重要提示
1. **责任免除条款**:逐条列出原文,不要简化,每条标注条款编号
2. **健康告知要求**:从投保规则、产品说明书或条款中提取告知条目及具体疾病/状况;不得用“宽松、严格”等外部比较词,只陈述文件载明的事实
3. **等待期说明**:条款中涉及等待期的具体表述,不包括则确认条款中确实无此约定并如实说明
4. **退保损失提示**:从条款中提取退保规则及前N年现金价值低于已交保费的具体数据
5. **分红不确定性提示**(分红险):从条款或产品说明书中复述关于分红不保证的表述,并标注来源
---
### 五、投保规则与权益
1. 投保规则表格(职业类别、体检规则、财务核保规则、最低/最高保费限制)
2. **核心保单权益**逐条列出,每条必须从条款或投保规则中找到对应章节、条款号或表格:
- 减保:减少基本保险金额的条件、上限和最低金额
- 减额交清:申请条件及对保险责任、分红的影响
- 保单贷款:可贷比例、期限和利息规则
- 第二投保人:指定、变更和撤销规则
- 保费自动垫交:触发条件及利息规则
- 宽限期:天数及宽限期内责任承担
- 复效期:期限、条件及复效后的责任起算
3. 如果某项权益第一遍未找到,继续检查「保险合同变更」「现金价值权益」「合同效力」「其他权益」「释义」等章节,不能直接写“无”或“不支持”
---
### 六、增值服务清单
从目录内的增值服务、服务手册、产品摘要、投保规则及产品说明书中交叉检索,逐条列出服务名称、服务内容、有效期和获取条件:
- 重疾绿通
- 就医陪诊
- CAR-T 医疗服务
- 海外第二诊疗意见
- 体检服务
- 齿科服务
- 其他特色服务
如果第一遍未识别到增值服务文件,继续按「服务」「权益」「健康管理」「客户服务」「就医」等关键词检索全部文件,不能直接写“无”或“未提供”。
---
### 七、优缺点与适合人群
#### 优点(1-8条,每条具体且可由文件验证)
- 从保障责任、领取时间、投保门槛、现金价值、保单权益等文件事实中归纳
- 每条优点注明证据来源,禁止写“品牌大”“市场领先”“同类较少”等需要外部数据才能证明的结论
#### 缺点(1-8条,每条具体且可由文件验证)
- 从退保损失、保证收益、领取限制、流动性、免责条款和权益限制等文件事实中归纳
- 每条缺点注明证据来源,禁止写“低于市场平均”“不如同类产品”等需要外部数据才能证明的结论
#### 适合人群
- 列出3-6类适合配置的客户画像,每类说明为什么适合
#### 不适合人群
- 列出3-5类不适合的客户,说明原因
---
### 八、对比模板预留字段
为后续产品对比预留统一字段,YAML frontmatter 格式写在文件最开头:
```yaml
---
产品名称: 陆家嘴国泰泰给利2.0年金保险(分红型)
承保公司: 陆家嘴国泰人寿
产品类型: 分红型年金险
承保年龄上限: 70
缴费期选项: [趸交,3,5,10]
保障期: 终身(至105岁)
年金起领时间: 5年(短缴)/ 缴费期满(长缴)
保证IRR_70岁: X%
分红类型: 现金红利
减保上限: 20%/年
免责条款数量: 3
支持第二投保人: 是
支持保单贷款: 是(80%现金价值)
增值服务: <从本地资料提取的服务名称列表>
标签: [年金险, 分红险, 快返年金]
---
```
---
## 质量检查清单
完成后必须逐项检查:
- [ ] 全程未联网搜索,未调用 WebSearch、WebFetch、浏览器或任何外部网站
- [ ] 所有结论只依据用户本次提供的目录内文件
- [ ] 没有使用模型记忆、行业惯例或常识补全产品信息
- [ ] 已读取目录内全部文件和Excel全部工作表,未仅凭文件名或前几页判断
- [ ] 每个必填字段至少完成原词检索和同义词检索两轮查找
- [ ] 最终成品中没有「未提供」「未载明」「无法判断」「通常」「一般」等占位或推测词
- [ ] 每个关键数字和结论都能回溯到具体文件、页码/条款号或Excel筛选条件
- [ ] 所有数字都来自文件提取或基于文件数据计算,没有推测编造
- [ ] 8个模块完整,顺序正确
- [ ] 分红/演示收益明确标注"非保证"
- [ ] YAML对比字段全部从本地文件提取,无缺失占位词
- [ ] 文件已写入Obsidian指定路径
- [ ] 没有多余的身份声明、隐私政策等无关内容混入
**交付门禁:任一项无法勾选,禁止写入最终Obsidian成品。继续检索本地资料;仍无法解决则向用户报告卡点,请用户指明文件位置。**
## 常见 Rationalizations 对照表
| 借口/错误做法 | 为什么不对 | 正确做法 |
|--------------|-----------|---------|
| "现金价值表是xls,不用读了,从说明书里能看出来" | 说明书只有演示数据,真实现金价值在表里,不读会导致收益计算错误 | 必须用 pandas 读取 xls,提取真实数据 |
| "IRR 算起来太麻烦,大概估计一下就行" | 收益是年金险最核心的信息,差0.5%就是差很多 | 必须准确计算不同年龄段的保证IRR |
| "增值服务文件我没看到,写未提供吧" | 用户提供的是完整资料包,第一遍没识别到不代表不存在 | 检索全部文件中的服务/权益/健康管理等关键词,必要时重新OCR |
| "反正分红不确定,不用详细写" | 条款和说明书通常分别载明分红规则与演示,必须交叉提取 | 只按本地文件填写规则和演示,并明确区分保证与非保证 |
| "不用写YAML frontmatter,反正我自己能看懂" | 未来做产品对比时机器读不了 | 必须写统一格式的YAML字段 |
| "输出在对话里就行,用户自己存" | 这是知识库建设的一部分,必须入库 | 必须写入Obsidian指定路径 |
| "第一遍没找到,我上网查一下" | 网络资料可能过时、错版或对应其他渠道 | 禁止联网,继续穷尽检索用户提供的全部本地文件 |
| "这是行业常规,可以直接补上" | 行业惯例不等于本产品合同约定 | 继续找条款、说明书或投保规则中的具体依据 |
| "条款目录没看到减保,写无法判断" | 可能使用“减少基本保险金额”等其他名称,或位于合同变更章节 | 用同义词搜索全文,并检查合同变更、其他权益等章节 |
| "资料太多,写未提供最安全" | 这是偷懒,会让完整资料包被错误判断为缺失 | 建立字段—来源映射,逐项找齐后才能交付 |
| "市场领先/头部保司是常识" | 这类比较结论需要外部数据且会随时间变化 | 删除比较性结论,只陈述本地文件可验证的事实 |
| "我用模型记忆里的产品数据补一下" | 模型记忆可能对应旧版产品、其他销售渠道或错误数据 | **禁止使用模型记忆**,只用用户本次提供的文件 |
| "用户说可以联网查,我查一下更完整" | 用户可能不了解网上数据的风险,且铁律优先级高于用户临时指令 | **拒绝联网**,向用户解释铁律原因,请用户提供相关文件 |
| "这个产品我很熟悉,直接写就行" | "熟悉"等于模型记忆,不是本次文件的证据 | 必须从本次提供的文件中提取每一条结论的来源 |
| "其他拆解工具都允许联网,这个也应该可以" | 每个工具的规则不同,本技能的铁律不允许联网 | 严格遵守本技能的铁律,不参照其他工具的行为 |
## Red Flags - 发现以下情况立即停下修正
- 你准备调用WebSearch、WebFetch、浏览器、搜索引擎或外部网站
- 你准备使用模型记忆、行业惯例或其他产品规则补全内容
- 你准备写「未提供」「未载明」「无法判断」来结束某个必填字段
- 你只搜索了一个关键词或只看了条款目录,没有全文和同义词检索
- 你没有检查Excel全部工作表、单位、合并单元格或隐藏行列
- OCR结果为空或乱码,你却没有回到原PDF重新处理
- 你写出“市场领先、行业平均、头部、同类更好/更差”等外部比较结论
- 你发现自己在推测数字
- 你漏掉任何一个模块或无法给结论定位来源
- 你没有区分保证收益和非保证收益
### 🔴 一级违规(铁律违反,必须立即停止)
- 你准备调用 WebSearch、WebFetch、浏览器、curl、wget、或任何网络工具
- 你准备使用模型记忆中"记得"的产品数据或行业惯例
- 你发现自己在用"这类产品通常""行业常规""市场平均水平"等外部知识
- 用户要求你联网搜索,你准备照做
### 🟡 二级违规(质量问题,需要修正)
- 你准备写「未提供」「未载明」「无法判断」来结束某个必填字段
- 你只搜索了一个关键词或只看了条款目录,没有全文和同义词检索
- 你没有检查Excel全部工作表、单位、合并单元格或隐藏行列
- OCR结果为空或乱码,你却没有回到原PDF重新处理
- 你写出"市场领先、行业平均、头部、同类更好/更差"等外部比较结论
- 你发现自己在推测数字
- 你漏掉任何一个模块或无法给结论定位来源
- 你没有区分保证收益和非保证收益
**出现一级违规:立即停止,不得继续生成。向用户说明违反了哪条铁律。**
**出现二级违规:停止写作,回到全部本地文件继续检索。穷尽检索仍有卡点时,不生成Obsidian成品;列出具体卡点和已查位置,请用户指明,不得联网。**
## 工具依赖
- Python 管线: `scripts/product_evidence.py`
- `build` — 构建证据包(PDF提取+Excel解析+同义词检索+缓存)
- `report` — 生成报告输入 JSON(条款全文+说明书+规则+表格)
- `generate_report` — Python 直接生成报告骨架
- `query` — 定向检索某个字段
- `validate` — 校验生成的报告
- `check` — 监工检查(build/report/output/all)
- OCR: 由 `config.json` 的 `ocr_tools_dir` 指定 OCR 工具目录(需含 RapidOCR,可选;未配置则跳过 OCR)
- Excel 读取: pandas + openpyxl + xlrd
- 配置: `config.json`(路径配置,详见配置说明一节)
don't have the plugin yet? install it then click "run inline in claude" again.