|外贸报价单生成器 专业的 Excel 报价单生成工具,支持多规则包扩展,专为外贸行业设计
外贸报价单生成器 (Quotation-Builder)是一项面向实际任务的技能,主要用于基于 skill-creator 构建的本地 AI Skill,负责 Excel 报价单的生成;支持标准单列表格和横向 3 列布局两种模式;
创建 config/company.json 写入公司信息(见下方数据格式);创建 data/local_products.csv 写。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
基于 skill-creator 构建的本地 AI Skill,负责 Excel 报价单的生成。支持标准单列表格和横向 3 列布局两种模式。
确保已安装依赖:
cd price-list-generator python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
准备配置文件:
config/company.json 写入公司信息(见下方数据格式)data/local_products.csv 写入本地产品库场景:从本地库生成报价单
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
生成 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")配置文件 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"
}
本 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-1688 |
1688.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.pybuild_quote(url, **kwargs) -> output_path- 与 _ 规则名互通(例如 dg-1688 与 dg_1688)从本地 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
}
生成 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": []
}
适合 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"
}'
本 Skill 不直接抓取网页,需要配合 web-access Skill 使用。
完整工作流示例:
Claude Code 接收用户指令:
"抓取这个 1688 链接 https://example.com/product 生成报价单,利润加 30%"
Claude Code 调用 web-access 抓取商品信息:
/navigate 打开页面/scroll 滚动加载图片/eval 提取产品标题、价格、图片 URLClaude Code 在内存中处理数据:
price * 1.30Claude Code 构造 ProductDict 并调用本 Skill:
python main.py --json '{"action":"generate_excel","products":[...],"company_info":{...}}'
返回生成的 Excel 文件路径给用户
包含三个区域:
公司信息区(第 1-5 行):
表头区(第 6 行):
数据区(第 7 行起):
$25.00适用于产品数量多、需要紧凑展示的场景:
第1行(图片行): [图片1] [链接1] [空] [图片2] [链接2] [空] [图片3] [链接3] [空] 第2行(数据行): [名称] [CNY] [USD] [名称] [CNY] [USD] [名称] [CNY] [USD]
列宽设置:
产品名称处理:
USD 价格计算:
| 错误场景 | 处理策略 |
|---|---|
| 图片下载失败 | 显示 "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/ # 默认报价单输出目录
"$"#,##0.00),确保在 Excel 中是真正的数字而非文本_sum 缩略图后缀python scripts/smoke_test.py
通过标准:
main.py --help 可执行search_csv 返回 JSON 且 status=okgenerate_excel 成功生成 output/smoke_test_quote.xlsx| 版本 | 说明 |
|---|---|
| 1.0 | 初版:标准单列布局、CSV 支持、Excel 生成 |
| 1.1 | 新增:横向 3 列布局、dg-1688 规则包、产品名称加序号 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习