Back to skills
SKILL.md
1688 Selection Upload
ASecurity通过 BrowserWorker 插件浏览器,在 1688 搜索结果页筛选商品,并勾选符合条件的采购助手商品。适用于 1688 选品、扫描、月代销/48H 揽收筛选、待采商品勾选。
- 6 stars
- 0 votes
- 0 copies
- 1 view
- Added September 10, 2026
Security analysis
100/100Pro scans all 6 files and shows the line behind each finding
npx -y skills add huawolf/VaneWorker --skill 1688-selection-upload --agent claude-codeAre you the author of 1688 Selection Upload?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/huawolf-1688-selection-upload)---
name: 1688-selection-upload
description: 通过 BrowserWorker 插件浏览器,在 1688 搜索结果页筛选商品,并勾选符合条件的采购助手商品。适用于 1688 选品、扫描、月代销/48H 揽收筛选、待采商品勾选。
title: 1688选品和上架
example: |-
> **选品扫描**:分析指定关键词的 1688 搜索结果并筛选符合要求的商品,例如:"扫描 3 页女鞋,看看哪些符合要求"
> **勾选待采**:自动勾选符合过滤条件且未处理过的商品,例如:"勾选女鞋,最多 5 个,先 dry run 看看"
version: 2.0.0
---
# 1688-selection-upload
> [!IMPORTANT]
> **前置插件约束**:运行本技能前必须确认 1688 采购助手插件 (`1688-extension`) 已安装。平台会在触发 `1688-selection-upload` 任务时自动校验插件状态。若未检测到 1688 插件,平台将拦截任务并引导由**运营主管**(ops_director)使用 `chrome-plugin` 技能安装 1688 插件。
统一入口:
```bash
python3 {baseDir}/run.py <command> [options]
```
该技能使用项目内置 `BrowserWorker` daemon 的 extension-first transport,不再直接依赖 CDP 控制页面,也不要求用户机器安装 ChromeDriver、Playwright、Selenium 或固定 Chrome 路径。页面读取通过 BrowserWorker 插件浏览器执行 `browser.evaluate(...)`,因此能读取 1688 原页面和采购助手插件渲染到当前 DOM 中的内容。
## 意图判断
触发本技能:
- 用户要求在 1688 搜索、选品、筛选商品。
- 用户提到采购助手、待采商品勾选、选品勾选。
- 用户要求按月代销、48H 揽收率、实力商家/源头旗舰筛选。
命令选择:
```text
只查看符合条件的商品 -> scan
勾选符合条件的采购助手商品,不最终提交 -> collect
```
## 命令
| 命令 | 用途 | 语法 |
| --- | --- | --- |
| `scan` | 扫描并返回符合条件的商品,不点击页面 | `python3 run.py scan [关键词] [--pages 页数]` |
| `collect` | 扫描并勾选符合条件商品,不点击最终提交按钮 | `python3 run.py collect [关键词] [--pages 页数] [--max 最大采集数] [--dry]` |
默认值:
- 关键词:`女鞋`
- `--pages`:`1`
- `--max`:`0` 表示不限制
- `--dry`:只列待勾选商品,不点击
## 新架构流程
1. `run.py` 获取浏览器锁,然后调用 daemon `/execute`。
2. `run.py` 必须传入本 skill 的 `action_search_path={baseDir}/scripts/actions`。
3. daemon 必须优先加载 `action_search_path` 下的 `scan_1688.py` 或 `collect_1688.py`;BrowserWorker 内置 actions 只是 fallback,不能覆盖本 skill 同名 action。
4. `/execute` 返回里的 `action_path` 可用于确认实际加载的 action 文件。
5. action 通过 `browser.goto/evaluate/wait_ms/request_help` 操作 BrowserWorker 插件浏览器页面。
6. action 先进入 1688 搜索页,输入关键词,进入搜索结果页。
7. action 拼接排序和商家过滤参数:
- 销量降序:`sortType=va_sales360&descendOrder=true`
- 商家标签:`filtMemberTags=5179713,5125953,5343297`
8. 分段滚动页面,等待懒加载和采购助手插件数据面板渲染。
9. 在页面 DOM 中提取商品卡片、月代销、48H 揽收、价格、勾选状态。
10. `scan` 返回符合条件商品;`collect` 只勾选商品卡片内的采购助手复选框,并更新 `data/ledger.json`。不要继续点击最终提交、确认、批量采集或一键上架按钮。
## 筛选口径
当前硬规则:
- `月代销 != "100以内"`,视为月代销 > 100。
- `48h揽收 > 90%`。
- 搜索 URL 会附带实力商家/源头旗舰相关标签过滤。
返回字段包括:
- `offerId`
- `title`
- `dx`:月代销桶值
- `ls`:48H 揽收率数字
- `price`
- `href`
- `qualify`
- `collected`
## 快速定位和排查
如果页面结构变化导致勾选失败,按这个顺序处理:
1. 先读取当前页面匹配的 `page_semantics`,优先按 `semantic_key` 理解关键元素和重复商品卡片,例如 `search.primary_input`、`search.submit`、`result_card`、`result_card.primary_link`、`selection.checkbox`。
2. `page_semantics` 缺失、低置信或执行失败时,再用 BrowserWorker `snapshot` 验证当前页面事实并补充证据。
- 页面简单:可用 `full snapshot`。
- 搜索结果/卡片列表:优先 `data snapshot`。
- snapshot 返回的 `ref` / `handle` 只用于当前页面的一次性验证,不写入脚本或台账。
3. snapshot 找不到时,用小 JS probe 检查真实 DOM:
```javascript
(() => [...document.querySelectorAll("a.search-offer-wrapper,[class*='search-offer-wrapper']")]
.slice(0, 20)
.map(el => ({
text: (el.innerText || "").replace(/\s+/g, " ").trim().slice(0, 240),
href: el.href || el.querySelector("a[href]")?.href || ""
})))()
```
4. 页面很复杂、hover 才出现按钮、插件 UI 难判断时,让用户用 BrowserWorker 扩展录制并上传。
5. 读取上传后的三层数据:
- `*.trace.json`
- `*.interests.json`
- `*.script_hints.json`
6. 根据录制里的 `page_key/page_role`、`semantic_key` 和候选节点证据更新 `page_semantics`、action 的结构化目标或 DOM parser;不要把 `@eN`、临时 handle、长路径 selector 当作长期定位键。
## 人工处理
遇到登录、滑块、验证码时,action 会通过 `browser.request_help(...)` 提示用户在 BrowserWorker 插件浏览器中处理,然后继续执行。不要绕过安全验证。
## 输出和台账
`collect` 默认读取并更新本 skill 下的 `data/ledger.json`,避免重复勾选已成功的 `offerId`。也可以用环境变量 `MANAI_1688_SELECTION_LEDGER` 指向外部台账;如果旧版根目录 `ledger.json` 已存在且 `data/ledger.json` 不存在,会兼容读取旧文件。
`run.py` 默认将符合条件的商品链接保存到 `data/outputs/1688_selection_<关键词>.json`。如果 ManAI 全局配置里有 `data_directory`,或设置了 `MANAI_1688_SELECTION_OUTPUT_DIR`,允许写到外部目录。脚本和 action 实现必须留在 `{baseDir}/` 内;运行产物可配置。
## 验证
修改 action 后至少运行:
```bash
python3 - <<'PY'
from pathlib import Path
for p in [
"scripts/actions/scan_1688.py",
"scripts/actions/collect_1688.py",
"run.py",
]:
src = Path(p).read_text(encoding="utf-8")
compile(src, p, "exec")
print("syntax ok")
PY
```
真实验证:
```bash
python3 run.py scan 保温杯 --pages 1
python3 run.py collect 保温杯 --pages 1 --max 3 --dry
```
Files in this skill
- SKILL.md
- info.json
- ledger.json
- run.py
- scripts/actions/collect_1688.py
- scripts/actions/scan_1688.py
Attribution
Comments
Loading comments…