Preview
Skill 市场服务状态
Zework ↗ModelsOk ↗
Skill 市场/销售方案生成器
Skill3 精选 平台签名

销售方案生成器

读取客户背景、销售需求与真实产品物料,生成客户视角的结构化销售方案,并用固定模板稳定渲染。

在 Zework 中创建 Draft ↗安装闭环将在下一阶段开放
版本文件5 files
版本v1.0.0
  • customer-proposal-writer
    • assets
      • company_stats.json
      • template.html
    • scripts
      • render.py
    • README.md
    • SKILL.md
customer-proposal-writer/SKILL.md15.7 KB

# 客户方案撰写

## 北极星

让客户读完觉得**"这家销售真的在为我着想、想帮我解决问题"**,而不是被推销。
方案永远站在客户那一侧:先讲客户的处境和痛点,再讲我们怎么帮,最后才轮到介绍我们自己。

## 🔧 维护气口:想改什么,改哪里

> 原则:**会变的内容都在数据和模板里,`scripts/render.py` 只做确定性的渲染和校验,不承担任何判断。**
> 下面这张表是这个 skill 最重要的维护索引——对号入座,不要改错地方、更不要把内容改回代码里。

| 我想改… | 改这里 | 不要碰 |
|---|---|---|
| 换客户 / 换这次的需求 / 换销售落款 | `inputs/` 下对应文件(`crm.json` / `needs.txt` / `sales.json`) | 代码、模板 |
| 更新产品能力 / 案例 / 公司 / 服务(物料本身) | `materials/` 里对应文件夹的文件 | 代码 |
| 改四段式写法、语气、判断方向、挑案例规则 | **本文件(SKILL.md)正文** | 代码 |
| 改章节顺序 / 配色 / 布局 / 落款位置 / 动效 | `assets/template.html` | `.py` |
| 改公司介绍 / 服务话术 / 底部数字 | `assets/company_stats.json` | 代码、模板 |
| 改报价规则 / 字段校验逻辑 | `scripts/render.py`(**唯一**要动代码的地方) | — |

四路"气口"对应四种变更频率:`inputs/`(每次都变)、`materials/` + `assets/company_stats.json`(偶尔更新)、`assets/template.html`(改外观时)、`SKILL.md`(改判断方式时)。代码 `scripts/render.py` 几乎不用动。

## 这个 skill 的核心架构:判断与渲染彻底分开

```
  ┌─ 输入三路 ──────────────┐      ┌─ 判断(你/模型现场做)─┐   ┌─ 渲染(脚本做)──────┐
  │ inputs/crm.json  背景角度│      │  提炼痛点               │   │ scripts/render.py     │
  │ inputs/needs.txt 痛点来源│ ───▶ │  归并 3-5 个目标         │──▶│ + assets/template.html│──▶ output/*.html
  │ inputs/sales.json 销售落款│     │  四段式对应能力          │   │ + company_stats.json  │
  │ materials/       我方物料 │     │  痛点优先挑案例          │   │ (只渲染/校验,不判断)│
  └─────────────────────────┘      └──────────┬─────────────┘   └───────────────────────┘
                                              ▼
                                   proposal_content.json  ← 单一数据源(中间层)
```

**铁律:**
- **判断 = 模型现场做**(提炼需求、归并目标、写四段式、挑案例)。SKILL.md 只给方向,**绝不写死答案**。
- **渲染 = `scripts/render.py` 做**(套模板、配色、布局、报价占位、字段校验),保证每次布局一致、不漂移。
- **`proposal_content.json` 是中间层**:模型只管把它填对,脚本只管把它渲染好。**两边谁都不越界**——模型不碰 HTML,脚本不做判断。
- **销售联系方式零容错**:`inputs/sales.json` 由脚本**原样只读渲染**,模型一个字都不生成、不改动。

## 输入:三路 + 物料,各管一段

| 文件 | 内容 | 它提供什么 | 它**不**提供什么 |
|---|---|---|---|
| `inputs/crm.json` | 客户 CRM 字段:行业、规模、意向产品、在用版本、成交状态/标签等 | **背景与角度**——行业(定背景章+挑案例)、规模、标签决定方案角度(见下) | 痛点。CRM 给不了客户这次的具体困扰 |
| `inputs/needs.txt` | 销售这次沟通了解到的需求简述 / 对话记录(自由文本) | **痛点与需求**——这是四段式"你的处境"的**唯一真实来源** | 行业背景、公司资质这类标准信息 |
| `inputs/sales.json` | 销售落款:`name` / `phone` / `wechat`(可选) / `qrcode`(可选) | **销售联系方式(固定资产·零容错)** | 不参与任何判断,纯展示 |
| `materials/` | 我方真实物料:`01_产品` / `02_案例` / `03_公司` / `04_服务` | **事实素材**——产品能力、案例、公司、服务的真实内容 | 客户的痛点 |

> demo 阶段 `crm.json` / `sales.json` 由销售手动放一份;未来 `crm.json` 对接 yccrm,`sales.json` 从**登录态 / CRM 负责人字段自动带出**。

**销售落款铁律(零容错):** `sales.json` 里的姓名、电话、微信是零容错信息,**由 render.py 原样读取渲染,模型一个字都不许生成或改动**——避免编错号码。它属于"固定资产渲染",不进 `proposal_content.json`。字段缺失或为空 → 落款处显示「——」,绝不编。

**CRM 标签决定方案角度(举例,非穷举):**
- 标签含"流失客户"/"已流失" → 方案走**赢回**角度("我们注意到贵司曾…,这次想重新…")。
- 在用"标准版"、意向"专业版/AI教练" → 走**升级**角度(站在已用功能之上讲新增价值)。
- 全新客户 → 走标准的**首次合作**角度。

## 工作流:当销售说"给【客户】做方案,情况是【…】"时

> 销售的口头需求描述,应先落到 `inputs/needs.txt`(直接写入或粘贴对话记录);客户 CRM 落到 `inputs/crm.json`。然后按下面顺序做。

### 第 1 步:读全部输入
读 `inputs/crm.json`、`inputs/needs.txt`,以及 `./materials/` 下的产品(`01_产品`)、案例(`02_案例`)、公司(`03_公司`)、服务(`04_服务`)物料。
产品/案例/公司/服务的**事实内容必须来自 materials,不许编**。

### 第 2 步:提炼需求/痛点
从 `needs.txt` 里提炼出客户的若干条具体需求/痛点。**尽量保留客户自己的话**。
🚫 **不许编 needs.txt 里没有的痛点**,不要靠行业常识脑补客户没说过的困扰。

### 第 3 步:目标梳理(体现把控性)
把这些需求**归并成 3-5 个核心目标**(不是逐条罗列),像顾问一样帮客户看清全局。
这是体现"我懂你、我有把控"的一步——把零散诉求收敛成几条主线。

### 第 4 步:对每条需求现场生成四段式
结合 `materials/01_产品` 里的**真实能力**,为每条需求写四段:

| 段 | 写什么 | 红线 |
|---|---|---|
| **你的处境** | 用客户原话/原意复述这条痛点,先让他觉得被听懂 | 不许我方腔,不许夸产品 |
| **这对贵司意味着** | 这个痛点的**业务代价**,站客户角度(影响良品率/安全/排产/成单/翻台率…) | 讲客户的损失,不是讲我们多好 |
| **我们怎么帮你解决** | 针对客户**这个具体场景**,授客学堂的某能力**具体怎么用**——讲机制和场景 | 不是报功能名清单;能力必须真实存在于 materials |
| **你会得到** | 客户能拿到的**结果/改变** | 落在结果上,不空喊 |

🚫 某条需求在产品物料里**找不到对应能力 → 如实写"建议进一步沟通确认"**,绝不硬塞不相干功能。
🚫 删掉"完全匹配/匹配度"这类销售徽章,那不是分析。语气全程"你的/贵司的/帮你"。

### 第 5 步:挑案例,焊到痛点上

**核心原则:痛点同构是硬通货,同行业是加分项。** 挑案例的目的是让客户信"你解决过**我这种问题**",而不是"你服务过我同行"。

**排序逻辑:第一维度永远是「痛点/场景相似度」**(多门店分散、一线高流动、上岗取证、标准化复制、合规留痕…),**不是行业标签**。先按痛点同构度给所有案例排序,同行业只在此基础上**加分**,不作必要条件、不死卡。

每个案例**回扣一条具体需求**,按下面**三优先级**择优,**绝不伪装**:

| 优先级 | 条件 | 为什么 | JSON `match_level` |
|---|---|---|---|
| **1** | 同行业 + 同痛点 | 既懂行又解决过,最强 | `same_industry` |
| **2** | 跨行业 + 痛点高度同构 | 痛点同构是硬通货——能证明"你解决过我这种问题" | `cross_industry` |
| **3** | 同行业 + 痛点一般 | 靠"自己人"建立信任 | `same_industry_weak` |
| 都没有 | 连相近场景都没有 | 绝不硬凑 | `none` |

> 注意优先级 **2 高于 3**:一个跨行业但痛点高度同构的案例,比一个同行业却没解决过相似问题的案例更有说服力。

**句式:**
- **优先级 1**:「贵司最担心的【X】,同行【某公司】原来也这样,我们帮他【做法】做到了【效果】。」
- **优先级 2**:**必须如实标注行业差异**,并填 `similarity`(一句话说清哪里同构):
  「虽属【制造业】,但同样面对【全国门店分散培训】的难题,与贵司多门店场景高度相似——【某公司】我们帮他【做法】做到了【效果】。」
- **优先级 3**:点明是同行、但坦诚痛点不完全一致:
  「同为【行业】的【某公司】也在用,虽然场景不完全相同,但同行的实践或可供贵司参考——【做法】【效果】。」
- **都没有**:「暂无高度匹配的案例,但我们可提供完整的客户案例库供贵司参考。」(JSON 放一条 `match_level: "none"`,无需 company/approach)

案例的客户名/做法/效果**必须是 materials 里的真实案例**,不许编。判断痛点是否同构是模型的活——SKILL.md 只给排序逻辑与四档方向。



### 第 6 步:写中间层
把第 2-5 步生成的全部内容写进 `proposal_content.json`(结构见下)。这是**唯一数据源**。

### 第 7 步:渲染
运行 `python3 scripts/render.py`,它读 `proposal_content.json` + 固定资产(`assets/company_stats.json` 公司介绍/服务/数字 + `assets/template.html` 模板 + `inputs/sales.json` 销售落款)→ 输出 HTML 到 `output/`。**报价占位、字段校验也在这一步由脚本完成。**

## 受众语气

从 `crm.json` / `needs.txt` 判断受众,写进 `proposal_content.json` 的 `audience` 字段:
- **管理层**(对接的是老板/总监、关注 ROI 与全局)→ 顶部生成"一屏看懂"摘要、多用结果和数据。
- **对接人**(HR/培训专员等执行层)→ 可讲到操作层面,但仍简洁,别让他花很久读;不出"一屏看懂"。

## proposal_content.json 结构(模型负责填,render.py 负责读)

```jsonc
{
  "customer_name": "客户公司名",
  "industry": "行业",            // 来自 crm.json
  "scale": "企业规模",            // 来自 crm.json
  "audience": "管理层",          // 管理层 | 对接人
  "angle": "升级",               // 首次合作 | 升级 | 赢回(由 CRM 标签判断)
  "background": "客户所处行业大环境的一段话(背景章,站客户视角)",
  "challenges": ["客户原话/原意的痛点1", "痛点2", "..."],   // 现状与挑战,尽量保留客户的话
  "goals": ["归并后的核心目标1", "目标2", "目标3"],          // 3-5 个,不是逐条罗列
  "matches": [
    {
      "title": "这条需求的小标题",
      "situation": "你的处境(客户的话)",
      "impact": "这对贵司意味着(业务代价)",
      "how": "我们怎么帮你解决(具体机制/场景)",   // 找不到能力时设为 null
      "gain": "你会得到(结果)",                    // 找不到能力时设为 null
      "todo": false                                   // 找不到对应能力时为 true → 渲染成"建议进一步沟通确认"
    }
  ],
  "cases": [
    {
      "need": "回扣的那条需求(客户担忧)",
      "match_level": "same_industry",                 // same_industry | cross_industry | same_industry_weak | none
      "company": "案例客户名(materials 里真实;none 档可省)",
      "industry": "案例所属行业",
      "scale": "案例规模",
      "similarity": "仅 cross_industry 需要:一句话说清哪里场景同构(如'同样是全国上万门店分散培训')",
      "approach": "做法(materials 里真实;none 档可省)",
      "effect": "效果(materials 里真实;none 档可省)"
    }
  ]
}
```

> `render.py` 只读 `proposal_content.json` 里的上述字段;公司介绍、服务保障、底部数字、落款等**固定资产**在 `assets/company_stats.json`,销售联系方式在 `inputs/sales.json`,模型都不用在本 JSON 里重复。

## 章节结构(render.py 固定,不漂移)

封面 →(管理层才有)一屏看懂 → ①方案背景 → ②现状与挑战 → ③目标梳理 → ④解决方案·四段式 → ⑤案例("同样的难题,我们解决过",痛点优先)→ ⑥服务与安全保障 → ⑦报价(占位)→ ⑧关于我们 → 销售落款。

- 飞书风:主色 `#1456F0`,字体 PingFang SC,轻量克制的滚动动效。
- 报价永远是**占位区**,不含数字。
- "关于我们"放最后、弱化。

## 工程结构

```
proposal-skill/
├── SKILL.md                      # 本文件:维护气口 + 工作流 + 判断方向(不写死答案)
├── inputs/                       # 【气口1:每次用都会变的输入】
│   ├── crm.json                  #   客户 CRM 字段(demo 手填,未来对接 yccrm)
│   ├── needs.txt                 #   销售这次沟通的需求描述/对话记录(自由文本)
│   └── sales.json                #   销售落款:姓名/电话/微信/二维码(零容错,未来从登录态带出)
├── materials/                    # 【气口2:我方物料,会更新但不常变】
│   ├── 01_产品/  02_案例/        #   产品能力 / 客户案例
│   ├── 03_公司/  04_服务/        #   公司介绍 / 服务保障
│   └── 05_友商/                  #   友商对比(备用)
├── assets/
│   ├── template.html             # 【气口3:布局/配色/章节顺序/动效/落款位置】
│   └── company_stats.json        # 【气口4:公司介绍/服务话术/底部数字】
├── scripts/
│   └── render.py                 #   唯一的代码:渲染 + 校验 + 报价占位(不判断)
├── proposal_content.json         #   中间层:模型把判断结果填进来(单一数据源)
├── output/
│   └── 方案_<客户>.html          #   生成结果
└── README.md                     #   给人看的使用与维护说明
```

## 换客户怎么用(关键:内容跟着全变)

1. 把这个客户的 CRM 放进 `inputs/crm.json`,把这次沟通了解到的需求/对话放进 `inputs/needs.txt`,销售落款放进 `inputs/sales.json`。
2. 模型按上面工作流**重新做一遍判断**,覆盖写 `proposal_content.json`。
3. 跑 `python3 scripts/render.py`。

> 换行业、换需求 → 背景、挑战、目标、四段式、案例**全部跟着变**。
> 如果换了客户还冒出上一个客户/行业的内容,说明判断没做干净(或没覆盖写 JSON),要重做。
发布可信度
签名算法
Ed25519
签名密钥
skill3-preview-2026-08
内容哈希
18855afa3f14…
发布状态
Published
兼容性
openai-agentszework-server
最低 Zework
0.1.0
包大小
55.4 KB
发布日期
2026年8月18日
来源与许可
来源
Zework Work
版本证据
HASH_MATCH
许可证
NOASSERTION
请求权限2
filesystemskill-workspace:read-write

读取客户输入和产品物料,并写入方案 HTML。

shellpython3 scripts/render.py

使用确定性渲染器生成最终方案。