Install
openclaw skills install @mayf3/add-to-cart多平台电商加购物车/收藏自动化工具。通过 Brave Browser CDP 搜索商品并加入购物车(淘宝/京东)、收藏(拼多多)、或标记"想要"(闲鱼)。依赖 brave-browser-agent skill。不涉及支付,只做到加购/收藏为止。Not for: 价格比较、下单支付、商品推荐、订单管理。
openclaw skills install @mayf3/add-to-cart通过 Brave Browser Agent CDP 协议,自动化多电商平台搜索和加购/收藏。
支持: 淘宝(加购)、京东(加购)、拼多多(收藏)、闲鱼(想要)
⚠️ 只做到加购/收藏,不涉及支付。 下单付款由用户自己完成。
/Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser --remote-debugging-port=9222
cdp_exec.py)SKILL_DIR="~/.openclaw/groups/workspace-oc_96ba3f8c3476edac2fb64ee89f842f4e/skills/brave-browser-agent"
CART_DIR="~/.openclaw/groups/workspace-oc_96ba3f8c3476edac2fb64ee89f842f4e/skills/add-to-cart"
# 1. 列出浏览器 tab
python3 $SKILL_DIR/scripts/cdp_exec.py list
# 2. 快捷搜索(任选平台)
$CART_DIR/scripts/add_to_cart.sh taobao "牛奶" price-asc
$CART_DIR/scripts/add_to_cart.sh jd "耳机" price-asc
$CART_DIR/scripts/add_to_cart.sh pdd "玩具"
$CART_DIR/scripts/add_to_cart.sh xianyu "二手书"
# 3. 查看结果
python3 $SKILL_DIR/scripts/cdp_exec.py eval <tab_id> "document.body.innerText.substring(0, 8000)"
python3 $SKILL_DIR/scripts/cdp_exec.py screenshot <tab_id> /tmp/result.png
搜索商品 → 浏览结果 → 进入详情 → 选择规格 → 加购/收藏 → 验证
每步操作后 sleep 3(搜索/跳转 sleep 5),用 screenshot + innerText 确认。
点击按钮方式会被反爬拦截(显示"成功"但未实际加购)。必须用 API 方式:
cart.taobao.com(同域确保登录态)_tb_token_https://cart.taobao.com/add_cart_item.htm?item_id=<ID>&sku_id=<SKU>&quantity=1&_tb_token_=<TOKEN>cartQuantity 增加天猫详情页:按钮是动态 JS,需从 script[44] 提取 SKU 数据(skuBase.props + skuBase.skus)。
📖 完整操作代码见 references/platform-guides.md#淘宝
.bottom-btns-root 包含"加入购物车"📖 完整操作代码见 references/platform-guides.md#京东
mobile.yangkeduo.com 更稳定innerText === '收藏' 匹配(已验证可靠)scrollIntoView + setTimeout(500ms)📖 完整操作代码见 references/platform-guides.md#拼多多
📖 完整操作代码见 references/platform-guides.md#闲鱼
| 问题 | 解决 |
|---|---|
| 淘宝加购"成功"但购物车为空 | 用 API 方式,不要点击按钮 |
| 滑块验证码 | 用户手动完成,间隔 5-10 秒再操作 |
| 频繁访问限制 | sleep 5,每分钟不超过 5 次操作 |
| 登录态失效 | 浏览器中手动重新登录 |
| SKU ID 不正确 | 购物车显示"请选择款式",重新提取 |
| 选择器失效 | 先截图查看实际页面,按文字匹配按钮 |
通用按钮匹配(选择器失效时):
const buttons = [...document.querySelectorAll('button, a, span, div')];
const target = buttons.find(b => b.innerText.includes('加入购物车'));
if (target) { target.click(); 'clicked'; } else { 'not found'; }
list 获取最新 tabsleep 3-5 等待加载/tmp/ 目录screenshot + innerText| 文件 | 内容 |
|---|---|
references/platform-guides.md | 各平台完整操作代码和注意事项 |
references/platform-selectors.md | CSS 选择器速查表 |
references/experience-log.md | 历史操作经验记录 |
scripts/add_to_cart.sh | 统一搜索脚本 |