| name | holo-proposal-generator |
| version | 1.0.0 |
| description | HOLO数字提案包生成器 — 将「智能报价指引」升级为专业提案PDF。包含封面、客户摘要、方案对比、案例、报价、CTA,一套顶过去十张表格。 |
| triggers | ["生成提案","提案包","PDF提案","专业方案","数字提案","商业提案","给我生成一个提案","对方要方案","proposal","proposal PDF"] |
| category | holo-acquisition |
| tags | ["proposal","PDF","sales","document","automation"] |
| memory | null |
HOLO数字提案包生成器 v1.0.0
核心定位
业务员说「生成提案」→ 系统自动调取客户背景、产品方案、报价策略,生成一套专业提案PDF,直接发给客户。
输入最少,输出最专业。
工作流程
Step 1:收集提案信息
业务员提供以下信息(至少提供前3项):
| 字段 | 必填 | 说明 | 示例 |
|---|
| 客户公司名 | ✅ | 用于提取客户背景 | Belttech |
| 客户国家 | ✅ | 用于匹配案例和关税 | Brazil |
| 产品方案 | ✅ | 选型 + 数量 | 三代风冷1200型 × 2台 |
| 客户背景摘要 | ○ | 有背调记录则自动填充 | 从CRM/记忆 |
| 竞品信息 | ○ | 对方在比较谁 | Beltwin |
| 付款方式 | ○ | T/T预付/L/C | T/T 30% |
| 交货期 | ○ | 对方要求的时间 | 30天 |
| 有效期 | ○ | 报价有效期,默认14天 | 14天 |
业务员说「提案」时,系统自动检查:
- 是否已有该客户的背调记录(记忆/CRM)→ 有则自动填充
- 是否已有该客户的smart-quote记录 → 有则自动填充报价策略
Step 2:组装提案内容
系统根据以下模块自动组装:
📄 HOLO工业设备 · 专业提案包
【封面模块】
- 客户公司名称(带logo占位符)
- 提案标题(定制化,非模板)
- HOLO品牌标识
- 提案编号 + 日期 + 有效期
【客户背景摘要】
- 企业规模 + 行业
- 本次采购背景(新建/扩产/替换)
- 对方核心痛点(从背调/对话中提取)
【方案对比表】
- HOLO方案 vs. 竞品方案(参数对比)
- HOLO方案 vs. 客户现状(如果有)
- 每项参数的差异说明
【产品方案详情】
- 推荐产品 + 参数
- 选型理由(为什么要这款)
- 技术亮点(非标参数重点标注)
【成功案例】
- 同行业/同地区案例(1-2个)
- 客户名称(脱敏)+ 项目结果
- 配图占位符
【商务条款】
- 价格(含税/未税标注)
- 付款方式
- 交货期
- 有效期
- 装运条款
【CTA + 联系方式】
- 明确的下一步动作
- 业务员联系方式
- HOLO联系信息
Step 3:生成PDF
调用 scripts/generate_proposal.py,使用 reportlab 生成 PDF。
输出路径: ~/proposals/<客户名>_<日期>.pdf
文件名示例: Belttech_Proposal_2026-04-14.pdf
Step 4:发送选项
提案生成后,系统询问:
✅ 提案已生成:~/proposals/Belttech_Proposal_2026-04-14.pdf
请选择发送方式:
1. 直接下载(业务员自己发送)
2. 通过163邮箱发送(自动附上正文)
3. 生成邮件草稿(下载附件后手动发送)
技术实现
核心脚本:scripts/generate_proposal.py
使用 reportlab 的 Platypus 页面布局引擎:
SimpleDocTemplate — 基础文档
Paragraph — 标题/正文
Table — 方案对比表/报价表
Image — logo(可选)
PageBreak — 模块分页
HRFlowable — 分隔线
提案内容组装逻辑
def build_proposal_content(client_info, quote_info, case_studies):
content = []
content.append(CoverPage(client_info))
content.append(ClientBackground(client_info))
content.append(SolutionComparison(client_info))
content.append(ProductDetail(quote_info))
content.append(CaseStudies(case_studies))
content.append(CommercialTerms(quote_info))
content.append(CTAPage(client_info))
return content
颜色主题
主色(品牌蓝):#1B4F8A
辅色(深灰): #2D3748
强调色(金色):#D4A843
背景色: #FFFFFF
浅灰分隔: #F7FAFC
深灰正文: #4A5568
红色(警示): #C53030
绿色(优势): #276749
提案模块详细规范
封面模块
┌─────────────────────────────────────────┐
│ │
│ [HOLO Logo] │
│ │
│ ═══════════════════════════════ │
│ │
│ 专业设备方案提议 │
│ Belttech do Brasil │
│ │
│ ───────────────────────────── │
│ │
│ 提案编号:HL20260414N001 │
│ 日期:2026年4月14日 │
│ 有效期:14天 │
│ │
│ ───────────────────────────── │
│ │
│ Wike Chen | Sale Manager │
│ HOLO Industrial Equipment Mfg Co. │
│ wikeye@163.com | +86 131 6586 2311 │
│ │
└─────────────────────────────────────────┘
方案对比表格式
| 对比维度 | 客户现状(可选) | Beltwin方案 | HOLO方案 | 差异说明 |
|---|
| 设备类型 | 二手分层机 | 三代风冷1200 | 三代风冷1200 | 同级别 |
| 压缩机品牌 | 国产 | 国产 | Siemens(德国) | HOLO更优 |
| 能耗 | 未知 | +15% | 基准 | HOLO更优 |
| 质保 | 无 | 1年 | 2年 | HOLO更长 |
| 售后响应 | 无保障 | 贸易商转手 | 原厂直供 | 差异显著 |
| 价格 | — | 较低 | 参考提案 | 含服务溢价 |
成功案例模块格式
【同区域成功案例】
案例 1:智利某铜矿 — 三代风冷机 + 分层机
• 项目背景:2024年扩产,需配套皮带加工设备
• 选型理由:高海拔工况,Siemens压缩机保障稳定性
• 项目结果:设备连续运转18个月零停机,客户复购2台
• 客户评价:「HOLO的设备比之前那家稳定太多了」
(客户名称脱敏处理:XX矿业)
【相关项目图片】
[图片占位符]
商务条款模块
┌─────────────────────────────────────────┐
│ 商务条款 │
├─────────────────────────────────────────┤
│ 报价编号 HL20260414N001 │
│ 报价日期 2026年4月14日 │
│ 有效期 14天(至2026年4月28日) │
│ │
│ ───────────────────────────────────── │
│ │
│ 【三代风冷机 AC-1200 × 2台】 │
│ │
│ 未税单价:¥36,471/台 │
│ 未税总价:¥72,942 │
│ 增值税(13%):¥9,482 │
│ 含税总价:¥82,424 (EX-Factory) │
│ │
│ ───────────────────────────────────── │
│ │
│ 付款方式:T/T 30%预付,70%发货前付清 │
│ 交货期:收到预付款后30天内 │
│ 装运条款:FOB Shanghai │
│ │
│ ───────────────────────────────────── │
│ │
│ 注:以上价格为 CNY EX-Factory 含税价 │
└─────────────────────────────────────────┘
CTA页面
┌─────────────────────────────────────────┐
│ │
│ 接下来,我们建议您: │
│ │
│ ┌─────────────────────────────────┐ │
│ │ │ │
│ │ ① 安排15分钟线上演示 │ │
│ │ 我可以为您远程展示设备实际运转│ │
│ │ │ │
│ │ ② 工厂参观 │ │
│ │ 欢迎来温州实地考察, │ │
│ │ 我们报销差旅费用 │ │
│ │ │ │
│ │ ③ 样品测试 │ │
│ │ 我们可以先发一台样机测试 │ │
│ │ │ │
│ └─────────────────────────────────┘ │
│ │
│ ───────────────────────────────── │
│ │
│ Wike Chen | Sale Manager │
│ HOLO Industrial Equipment Mfg Co., Ltd│
│ M: +86 131 6586 2311 │
│ E: wikeye@163.com │
│ W: www.holo-industrial.com │
│ │
└─────────────────────────────────────────┘
依赖
- Python库:reportlab(PDF生成)
- 数据来源:smart-quote(报价策略)、company-research(客户背调)
- 品牌资产:HOLO Logo(从NAS读取)、产品图片占位符
文件结构
holo-proposal-generator/
├── SKILL.md # 本文件
├── references/
│ └── proposal-template.md # 提案模板规范(含各模块详细格式)
└── scripts/
└── generate_proposal.py # PDF生成脚本
使用示例
完整调用流程
业务员:帮我给Belttech生成一个提案
系统:
① 检测到客户:Belttech(巴西)
② 检测到最近报价:HL-BR-2026-0409-01(已生成)
③ 正在组装提案内容...
④ 正在生成PDF...
⑤ ✅ 提案已生成:~/proposals/Belttech_Proposal_2026-04-14.pdf
请选择:
1. 直接下载
2. 通过163邮箱发送
快速调用(信息不全时)
业务员:生成提案
系统:
请提供以下信息(可以只填必填项):
① 客户公司名: Belttech
② 客户国家: Brazil
③ 产品方案(如:三代风冷1200 × 2台): 三代风冷1200 × 2 + 分层机130 × 1
④ 有竞品在比较吗?(选填): Beltwin
⑤ 付款方式偏好(选填): T/T 30%
⑥ 交货期要求(选填): 30天内
📌 REQUIRED: 提案 PDF 备份到 NAS
MUST — PDF 生成后必须尝试备份到 NAS。不可跳过。
备份步骤
# 确保 NAS 已挂载
$credFile = "$env:USERPROFILE\.openclaw\.nas_credentials"
$enc = Get-Content $credFile -Raw | ConvertFrom-Json
$user = $enc.User | ConvertTo-SecureString | ForEach-Object { [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($_)) }
$pass = $enc.Pass | ConvertTo-SecureString | ForEach-Object { [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($_)) }
$nasPath = "\\192.168.0.194\AI数据\proposals"
if (!(Test-Path "K:")) { net use K: \\192.168.0.194\home /user:$user $pass /persistent:yes }
if (!(Test-Path $nasPath)) { New-Item -ItemType Directory -Path $nasPath -Force }
Copy-Item "~/proposals/{ClientName}_Proposal_{Date}.pdf" "$nasPath/{ClientName}_Proposal_{Date}.pdf" -Force
NAS 路径:\\192.168.0.194\AI数据\proposals\{客户名}_Proposal_{日期}.pdf
降级策略:NAS 不可用时仅本地存储,不阻断流程。
记录活动日志
powershell -File "{{SKILL_DIR}}/../holo-activity-log/scripts/log-activity.ps1" -ActionType quote -Customer "{公司名}" -Result success -Notes "提案PDF已生成并备份" -SkillName holo-proposal-generator
已知Bug
Python脚本禁止中文字符变量名
文件: scripts/generate_proposal.py
问题: 使用中文变量名(如 条款_data)在某些环境下导致 NameError,但错误指向调用处而非定义处,极难定位。
根因: write_file 工具对中文字符的编码处理存在边缘case。
教训: 代码正文(变量名/函数名)必须只用ASCII字符。中文只允许出现在注释和字符串字面量(Paragraph文本内容)中。
版本历史
- v1.0.0 (2026-04-14) — 初始版本,5模块结构(封面/背景/对比/案例/条款),reportlab PDF输出