← 返回
未分类

quotation-builder

|外贸报价单生成器 专业的 Excel 报价单生成工具,支持多规则包扩展,专为外贸行业设计
Kingswayvideo
未分类 community v1.0.0 1 版本 99528.3 Key: 无需
★ 0
Stars
📥 211
下载
💾 26
安装
1
版本
#latest

概述

外贸报价单生成器 (Quotation-Builder)

基于 skill-creator 构建的本地 AI Skill,负责 Excel 报价单的生成。支持标准单列表格和横向 3 列布局两种模式。

快速开始

1. 前置准备

确保已安装依赖:

cd price-list-generator
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

准备配置文件:

  • 创建 config/company.json 写入公司信息(见下方数据格式)
  • 创建 data/local_products.csv 写入本地产品库

2. 典型调用流程

场景:从本地库生成报价单

python main.py --action search_csv --query "mouse"
# 获得产品数据后
python main.py --action generate_excel --output ./output/quote.xlsx

场景:Claude Code 一体化调用(推荐)

Claude Code 可以直接构造 JSON 参数调用:

python main.py --json '{"action":"generate_excel","products":[...],"company_info":{...}}'

场景:使用规则包抓取 1688 并生成报价

# 调用 dg-1688 规则包
from rules.dg_1688.build_quote_from_detail import build_quote
output = build_quote("https://detail.1688.com/offer/xxx.html", fx=7.2)
print(output)  # ./output/dg1688_template_quote_xxx.xlsx

数据格式规范

ProductDict(产品字典)

生成 Excel 时传入的产品数据格式:

{
  "sku": "MS-001",
  "name": "Wireless Mouse 2.4G",
  "image_url": "https://example.com/mouse.jpg",
  "price": 25.00,
  "specs": "Color: Black; DPI: 1600",
  "moq": 100,
  "remarks": "Lead time: 7 days",
  "source": "csv"
}

字段说明:

  • sku: 产品唯一标识(可选)
  • name: 产品名称(必填)
  • image_url: 图片 URL 或本地路径(可选)
  • price: 最终报价(必填,已包含 markup 和汇率换算)
  • specs: 规格描述(可选)
  • moq: 最小起订量(可选,默认 1)
  • remarks: 备注(可选)
  • source: 数据来源标记(可选,"csv""web"

CompanyInfo(公司信息)

配置文件 config/company.json 格式:

{
  "name": "Global Trade Co., Ltd.",
  "logo_path": "./assets/logo.png",
  "website": "https://www.example.com",
  "contact_name": "Jane Smith",
  "phone": "+86-138-0000-0000",
  "whatsapp": "+86-138-0000-0000",
  "email": "sales@example.com",
  "address": "Room 101, Building A, Shenzhen, China"
}

规则包机制(Rules)

本 Skill 支持通过规则包扩展对不同电商网站的抓取支持。

规则包结构

rules/
├── dg-1688/                    # 1688.com 专用规则
│   ├── SKILL.md               # 规则说明文档
│   ├── extract_sku_selection.js    # 标准 SKU 提取脚本
│   ├── extract_sku_separated.js    # 分离式(颜色/尺码分开)提取脚本
│   └── build_quote_from_detail.py  # Python 执行入口
└── {new-rule}/               # 新增规则包目录
    ├── SKILL.md
    └── ...

当前内置规则

规则名适用网站特殊功能
:---:---:---
dg-16881688.com横向 3 列布局、颜色×尺码笛卡尔积、产品名称加序号

调用规则包

# 方式 1:直接调用规则包
from rules.dg_1688.build_quote_from_detail import build_quote
output = build_quote(detail_url, fx=DEFAULT_FX)

# 方式 2:通过主入口动态执行(推荐,适合多客户规则解耦)
python main.py --action run_rule --rule dg-1688 --url "https://detail.1688.com/offer/xxx.html"

# 方式 3:主入口 + 扩展参数
python main.py --action run_rule \
  --rule dg-1688 \
  --url "https://detail.1688.com/offer/xxx.html" \
  --rule-params '{"fx":7.2}'

规则加载约定:

  • 每个规则包目录:rules/{rule-name}/
  • 入口文件:build_quote_from_detail.py
  • 入口函数:build_quote(url, **kwargs) -> output_path
  • 支持 -_ 规则名互通(例如 dg-1688dg_1688

命令参考

search_csv

从本地 CSV 检索产品。

python main.py --action search_csv --query "mouse"

参数:

  • --query: 搜索关键词(SKU 精确匹配 或 Name 模糊匹配)
  • --csv: CSV 文件路径(可选,默认 ./data/local_products.csv

返回:

{
  "status": "ok",
  "query": "mouse",
  "results": [...],
  "count": 2
}

generate_excel

生成 Excel 报价单。

方式 1:使用配置文件中的公司信息和全部产品

python main.py --action generate_excel --output ./output/quote.xlsx

方式 2:指定产品和公司信息(JSON 传参)

python main.py --action generate_excel \
  --products '[{"sku":"MS-001","name":"Mouse","price":25,"specs":"DPI:1600","moq":100}]' \
  --company '{"name":"My Co.","website":"https://example.com"}' \
  --output ./output/quote.xlsx

参数:

  • --products: 产品列表 JSON 字符串(可选,默认使用 CSV 全部产品)
  • --company: 公司信息 JSON 字符串(可选,默认使用配置文件)
  • --output: 输出文件路径(可选,默认 ./output/quotation_{timestamp}.xlsx
  • --temp-dir: 临时图片目录(可选,默认 ./tmp/images

返回:

{
  "status": "ok",
  "file_path": "./output/quotation_20260326_143052.xlsx",
  "warnings": []
}

JSON 一体化传参模式

适合 Claude Code 直接调用,单条命令完成所有操作:

python main.py --json '{
  "action": "generate_excel",
  "products": [
    {
      "sku": "MS-001",
      "name": "Wireless Mouse 2.4G",
      "image_url": "https://example.com/mouse.jpg",
      "price": 25.00,
      "specs": "Color: Black; DPI: 1600",
      "moq": 100,
      "remarks": "Lead time: 7 days"
    }
  ],
  "company_info": {
    "name": "Global Trade Co., Ltd.",
    "logo_path": "./assets/logo.png",
    "website": "https://www.example.com",
    "contact_name": "Jane Smith",
    "phone": "+86-138-0000-0000",
    "whatsapp": "+86-138-0000-0000",
    "email": "sales@example.com"
  },
  "output_path": "./output/quotation.xlsx",
  "temp_dir": "./tmp/images"
}'

与 web-access Skill 协同

本 Skill 不直接抓取网页,需要配合 web-access Skill 使用。

完整工作流示例:

  1. Claude Code 接收用户指令:

> "抓取这个 1688 链接 https://example.com/product 生成报价单,利润加 30%"

  1. Claude Code 调用 web-access 抓取商品信息:
    • 使用 web-access 的 /navigate 打开页面
    • 使用 /scroll 滚动加载图片
    • 使用 /eval 提取产品标题、价格、图片 URL
  1. Claude Code 在内存中处理数据:
    • 提取价格字段
    • 应用 30% markup:price * 1.30
    • 转换为美元(如需要)
  1. Claude Code 构造 ProductDict 并调用本 Skill:

```bash

python main.py --json '{"action":"generate_excel","products":[...],"company_info":{...}}'

```

  1. 返回生成的 Excel 文件路径给用户

Excel 输出格式

标准布局(单列)

包含三个区域:

  1. 公司信息区(第 1-5 行):
    • A1:B5:公司 Logo(等比缩放,最大 200px)
    • C1:F5:公司名称、官网、联系人、电话、WhatsApp、邮箱
  1. 表头区(第 6 行):
    • 字段:Image, Product Name, Specifications, Unit Price (USD), MOQ, Remarks
    • 样式:深蓝色背景(#1F4E79)、白色加粗字体
  1. 数据区(第 7 行起):
    • 行高 80pt,容纳产品图片
    • 图片等比缩放,最大 90×90px
    • 奇偶行交替背景色
    • Unit Price 格式化为 $25.00

横向 3 列布局(DG-1688 规则专用)

适用于产品数量多、需要紧凑展示的场景:

第1行(图片行):  [图片1] [链接1] [空] [图片2] [链接2] [空] [图片3] [链接3] [空]
第2行(数据行):  [名称] [CNY] [USD] [名称] [CNY] [USD] [名称] [CNY] [USD]

列宽设置:

  • 图片列:18
  • CNY 价格列:10(缩减)
  • USD 价格列:14(加宽,显示绿色加粗 $)
  • 空列:2(留白)

产品名称处理:

  • 提取原始编号(如 E560-钢色爱心手链 → E560)
  • 添加 DG 前缀(如 DG-E560)
  • 添加序号避免重名(如 DG-E560-01、DG-E560-02)

USD 价格计算:

  • 公式:CNY / 0.65 / 7
  • 保留 2 位小数,四舍五入
  • 显示美元符号(绿色加粗)

错误处理

错误场景处理策略
:---:---
图片下载失败显示 "No Image" 占位符,继续生成
公司信息缺失返回错误,不生成文件
产品列表为空返回错误
CSV 不存在search_csv 返回空列表,不报错
Logo 加载失败跳过 Logo,其余正常生成

文件结构

price-list-generator/
├── main.py              # 主入口
├── csv_manager.py       # CSV 检索
├── excel_builder.py     # Excel 生成
├── image_handler.py     # 图片处理
├── SKILL.md             # 本文件
├── rules/               # 抓取规则包目录
│   └── dg-1688/         # 1688.com 规则
│       ├── SKILL.md
│       ├── extract_sku_selection.js
│       ├── extract_sku_separated.js
│       └── build_quote_from_detail.py
├── config/
│   └── company.json     # 公司信息配置
├── assets/
│   └── logo.png         # 公司 Logo
├── data/
│   └── local_products.csv   # 本地产品库
├── tmp/
│   └── images/          # 临时图片下载目录
└── output/              # 默认报价单输出目录

技术细节

  • 图片处理:自动下载网络图片,WebP/AVIF 转 PNG,等比缩放至最大 90px
  • 单元格格式:价格使用数字格式("$"#,##0.00),确保在 Excel 中是真正的数字而非文本
  • 图片顶部裁剪:裁掉 100px 编码水印区
  • 高清图片处理:自动去掉 _sum 缩略图后缀
  • 性能:单张报价单生成(含 12 张网络图片)应在 60 秒内完成

发布前自检(必跑)

python scripts/smoke_test.py

通过标准:

  • main.py --help 可执行
  • search_csv 返回 JSON 且 status=ok
  • generate_excel 成功生成 output/smoke_test_quote.xlsx

变更记录

版本说明
:---:---
1.0初版:标准单列布局、CSV 支持、Excel 生成
1.1新增:横向 3 列布局、dg-1688 规则包、产品名称加序号

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-04-03 17:15 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

外贸开发信撰写

user_c72f7801
B2B cold email sequence generator with Intelligence Hierarchy System and Gmail API integration. Generates personalized 3
★ 1 📥 472

外贸客户激活系统,话术跟进

user_c72f7801
外贸客户激活系统 - 自动识别超过5天未回复的外贸客户,生成专业跟进话术,提高客户转化率。支持每日统计、多轮跟进、自动关闭等功能。
★ 1 📥 452

阿里巴巴竞品价格监控器

user_c72f7801
1688 商品价格监控技能。使用 browser-use 或 web-access 自动抓取 1688 商品价格,监控价格变化并生成报告。 适用场景: - 监控 1688 供应商价格变化 - 批量抓取商品当前价格 - 生成价格趋势报告 -
★ 0 📥 447