毛毡包源头工厂筛选工具 v2 — 直接使用用户关键词(禁止变形),8维度严格筛选 + 自动询盘 + HTML可视化报告 + Dinzee公网分享。 一键完成:关键词搜索 → 地区验证 → 筛选分类 → 询盘确认 → 生成报告 → 上传链接。
---
name: 1688-felt-bag-factory-finder
version: "2.0.0"
description: |
毛毡包源头工厂筛选工具 v2 — 直接使用用户关键词(禁止变形),8维度严格筛选 + 自动询盘 + HTML可视化报告 + Dinzee公网分享。
一键完成:关键词搜索 → 地区验证 → 筛选分类 → 询盘确认 → 生成报告 → 上传链接。
metadata:
openclaw:
emoji: "👜"
requires:
bins: ["python3"]
primaryEnv: "ALPHASHOP_ACCESS_KEY"
tags: [1688, 毛毡包, 工厂筛选, 源头工厂, 邢台, 东莞, OEM, ODM, 询盘]
trigger:
- 毛毡包工厂
- 毛毡包源头工厂
- 毛毡包生产厂家
- 邢台毛毡包
- 东莞毛毡包
- 毛毡包OEM
- 毛毡包定制
- 毛毡包工贸一体
---
# 毛毡包源头工厂筛选工具 v2.0
## 🎯 功能概述
专门针对**毛毡包品类**,在邢台+东莞产业带筛选源头工厂。整合 AlphaShop 搜索、地区验证、8维度筛选、自动询盘、HTML报告和 Dinzee 公网分享。
### 🔍 8维度筛选条件
| 条件 | 要求 | 硬性/弹性 |
|------|------|----------|
| **锁定地区** | 邢台市、东莞市(含南宫) | 硬性 |
| **工厂类型** | 生产厂家/工贸一体/超级工厂/源头工厂 | 硬性 |
| **响应率** | ≥80% | 硬性 |
| **回头率** | ≥20% | 硬性 |
| **起订量** | 支持50-500件 | 弹性(询盘确认) |
| **验厂标签** | 深度验厂/安心购/老板带看视频 | 弹性(询盘确认) |
| **特殊工艺** | 阻燃、环保胶水 | 弹性(询盘确认) |
| **合作方式** | 支持OEM/ODM | 弹性(询盘确认) |
## 🚀 命令行调用
```bash
# 基础用法(搜索 + 筛选 + 询盘 + 报告 + 上传)
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包
# 多关键词搜索
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包 "邢台 毛毡包" "东莞 毛毡包"
# 跳过询盘
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包 --no-inquiry
# 控制最大询盘数
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包 --max-inquiry 3
# 保存JSON结果
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包 --output result.json
```
### 参数说明
| 参数 | 必填 | 说明 | 默认值 |
|------|------|------|--------|
| `--keywords` | ✅ | 搜索关键词列表(直接使用,不做变形) | 无 |
| `--no-inquiry` | ❌ | 跳过自动询盘 | false |
| `--max-inquiry` | ❌ | 最大询盘数量 | 5 |
| `--output` | ❌ | 输出JSON文件路径 | 无 |
## 📋 工作流程(6步)
```
Step 1 关键词搜索(AlphaShop search-1688-supplier,精确匹配)
↓
Step 2 地址验证(curl 工厂卡片页,从 HTML 提取地区)
↓
Step 3 8维度筛选(地区+工厂类型+响应率+回头率 → 通过/待确认)
↓
Step 4 自动询盘(从工厂卡片页提取商品链接 → inquiry-1688 提交)
↓
Step 5 生成HTML报告(通过/待确认分区 + 询盘状态表格)
↓
Step 6 上传Dinzee获取公网链接
```
## ⚠️ 核心铁律
### 1. 禁止关键词变形
**直接使用用户给定的关键词,不做任何变形或扩展。**
❌ 禁止:自动添加"工厂""OEM""深度验厂"等后缀、拆分地区组合
✅ 正确:用户给"毛毡包"→搜"毛毡包";用户给多个→逐个搜索
### 2. AlphaShop 单结果限制
AlphaShop API 每次搜索只返回 1 个最佳匹配。**同一关键词重复调用返回同一家工厂。**
- 要获取 5+ 家工厂 → 用户必须提供多个不同关键词
- 结果不够时 → 诚实告知 API 限制,建议用户提供更多关键词
### 3. location 字段经常为空
AlphaShop 返回的 `supplier.location` 经常为空。地区推断策略:
1. 从公司名称提取("南宫市XX"→邢台,"东莞市XX"→东莞)
2. curl 工厂卡片页 HTML 搜索地区关键词
### 4. 询盘需要商品链接
`inquiry-1688` 需要商品详情页链接(`detail.1688.com/offer/xxx.html`),不支持工厂卡片链接。
从工厂卡片页 curl HTML,正则 `detail\.1688\.com/offer/(\d+)\.html` 提取。
## 📈 报告特性
- **分区展示**:通过全部筛选 vs 部分条件待确认
- **工厂卡片**:响应率/回头率(颜色标识达标/未达标)、服务分、30天订单、180天买家
- **筛选评估**:每个工厂的 8 维度达标/未达标明细
- **询盘状态**:已提交询盘的工厂、商品链接、TaskId
- **配色**:深蓝 #0f3460 + 红 #e94560
- **响应式**:手机/电脑均可查看
## 🔧 依赖环境
| 组件 | 路径 | 用途 |
|------|------|------|
| search-1688-supplier | `~/.agents/skills/search-1688-supplier` | AlphaShop 搜索(需 AK/SK) |
| inquiry-1688 | `~/.agents/skills/inquiry-1688` | 询盘提交(需 AK/SK) |
| Dinzee 上传 | 内置 | 报告公网分享 |
### 凭证配置
在 `~/.openclaw/openclaw.json` 中配置:
```json
{
"skills": {
"entries": {
"search-1688-supplier": {
"env": {
"ALPHASHOP_ACCESS_KEY": "YOUR_AK",
"ALPHASHOP_SECRET_KEY": "YOUR_SK"
}
}
}
}
}
```
## 💡 使用示例
### 示例1:基础筛选 + 询盘
```bash
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包 "邢台 毛毡包" "东莞 毛毡包"
```
### 示例2:只筛选不询盘
```bash
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包 --no-inquiry
```
### 示例3:限制询盘数量
```bash
python3 scripts/felt_bag_factory_finder.py --keywords 毛毡包 --max-inquiry 3 --output result.json
```
## 📚 更新日志
### v2.0.0 (2026-05-19)
- **重大重构**:脚本完全重写,更简洁可靠
- **新增自动询盘**:从工厂卡片页提取商品链接 → 个性化询盘问题 → inquiry-1688 提交
- **新增地区验证**:curl 工厂卡片页 HTML 提取地区信息
- **新增分区报告**:通过筛选 vs 待确认分区展示,带颜色标识
- **新增询盘状态表格**:报告中展示已提交询盘的工厂/商品链接/TaskId
- **修复凭证传递**:统一用环境变量传递 AlphaShop AK/SK
- **修复询盘链接**:自动从工厂卡片页提取商品详情链接(非工厂卡片链接)
- **删除 1688-source-suppliers 依赖**:不再需要单独的供应商详情查询
### v1.1.0 (2026-05-19)
- 删除关键词变形,严格使用用户给定关键词
### v1.0.0 (2026-05-19)
- 初始版本
## ⚠️ 已知陷阱
1. **AlphaShop 积分耗尽**:返回 `FAIL_ACCOUNT_POINT_NOT_ENOUGH` 时停止,告知用户充值
2. **询盘需要商品链接**:工厂卡片链接不支持,需从卡片页提取 offer URL
3. **curl 优于浏览器**:1688 需登录,工厂卡片页用 curl 抓取更稳定
4. **inquiry.py 必须传环境变量**:不会从 config 自动读取凭证
don't have the plugin yet? install it then click "run inline in claude" again.