Install
openclaw skills install taobao-nativeShopping assistant via Taobao Desktop client. Use when the user needs to search products, view details, add to cart, place orders, check orders, request shipping, or perform any Taobao/Tmall shopping operation.
openclaw skills install taobao-native当用户的任务涉及以下购物相关操作时,必须通过 taobao-native CLI 调用桌面客户端工具:
凡涉及商品价格的场景(比价、找最便宜、价格排序等),都必须进入商品详情页获取真实SKU价格!
原因:搜索结果价格 / 页面默认价格 ≠ 真实SKU价格
点击SKU后必须 sleep 3 秒!
价格元素是异步刷新的,点击SKU后需等待价格异步刷新完成,不可省略等待时间。
禁止用 click_element --args '{"text":"xxx"}' 点击SKU!
原因:SKU文本可能有重复(如"年卡"和"年卡推荐"),text匹配会点击第一个。
正确做法:scan_page_elements 获取完整DOM → 找精确 index → click_element --args '{"index":N}'
taobao-native 命令不可识别时的处理规则当 taobao-native 命令无法识别或调用失败(如 command not found)时,按操作系统分别处理:
{locatoin}\bin\taobao-native.cmd 或者 bash:{locatoin}\bin\taobao-native (这是 taobao-native 这个path实际指向的路径)进行命令调用;Path 环境变量,具体刷新方法需根据实际情况决定,示例:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
需要重启当前Agent,以识别新添加的指令open -a /Applications/淘宝桌面版.app 尝试打开,若失败,提示可以帮用户下载安装,若成功,执行2~6~/Library/Application\ Support/taobao/cli/taobao-runner 进行命令调用(这是软链所指向的完整路径)export PATH="$HOME/Library/Application Support/taobao/cli/bin:$PATH"
然后重试 taobao-native需要重启当前Agent,以识别新添加的指令使用本机已安装的 taobao-native 命令(淘宝桌面版 CLI),格式:
taobao-native <工具名> --args '<JSON 参数>'
方式 1:Bash—— 最可靠
Bash 中单引号原样传递
taobao-native add_to_cart --args '{"sku":["50g 【抗皱饱满】"],"sourceApp":"Qoderwork"}'
方式 2:--request <文件> —— 任何 Shell 通用,推荐非 Bash 环境使用
参数在文件中以 UTF-8 读取,完全绕过 Shell 和 .cmd 的参数处理:
# request.json 内容:{"tool":"add_to_cart","arguments":{"sku":["50g 【抗皱饱满】"],"sourceApp":"Qoderwork"}}
taobao-native --request request.json -o result.json
方式 3:CMD / PowerShell 直接传参
# PowerShell
powershell -Command 'taobao-native add_to_cart --args ''{"sku":["50g 【抗皱饱满】","混合偏干性肤质 轻润版"],"sourceApp":"Qoderwork"}'' -o "C:\Users\admin\.qoderwork\workspace\mnpnvqeasd3hwtn3\add_cart.json"'
所有工具调用必须传入 sourceApp 参数,用于标识调用来源的 AI 应用名称。例如:
taobao-native navigate --args '{"page":"home","sourceApp":"Qcoderwork"}'
taobao-native search_products --args '{"keyword":"iPhone","sourceApp":"openClaw"}'
sourceApp 值根据当前 AI 客户端确定,如:Qcoderwork、openClaw、copaw 等。
本 Skill 文档中的「工具速查」已包含常用工具的完整说明,优先参考本文档直接调用。仅在以下情况使用 CLI --help:
taobao-native --help <工具名> 或 taobao-native <工具名> --help,查看最新用法taobao-native --help(或 -h)列出全部工具taobao-native --help
taobao-native --help open_chat
taobao-native open_chat --help
navigate / navigate_to_url — 导航到目标页面read_page_content — 读取页面可见文本(用 scope 限定范围)scan_page_elements — 扫描可交互元素(用 filter 过滤)click_element / input_text — 执行交互⚠️ 避免截断:返回数据量较大时(如
search_products通常 50+ 条),环境可能将 stdout 截断显示为...(truncated)。必须对可能返回大量数据的工具使用-o <文件>,将完整结果写入文件,stdout 仅输出摘要(含resultFile绝对路径)。拿到resultFile后读取该文件获取完整 JSON。
- 推荐:
taobao-native search_products --args '{"keyword":"连衣裙"}' -o result.json,再读取result.json- 其他易产生大结果的工具(如
read_page_content、scan_page_elements未加 filter)也建议加-o-o路径须可写且在授权范围内:在 Agent / 沙箱等受限环境中,必须使用当前工作区或环境允许写入的目录(如任务给出的workspace绝对路径下的文件)。相对路径需保证 cwd 落在该范围内;若出现OUTSIDE_AUTHORIZED_ROOT或写入被拒,改为-o "<workspace 下的绝对路径>.json"再试。
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 点击元素失败 | 页面未加载完成 | 等待后重试 |
| SKU 选择失败 | sku 参数格式不对 | 使用返回的精确文本 |
| 读取内容为空 | 页面还在加载 | 等待后再读取 |
| 找不到元素 | 页面已变化 | 重新扫描页面 |
| 连接失败 / error | 桌面版未启动 | 先启动淘宝桌面版或等待 CLI 自动拉起 |
| 误以为返回为空 | 输出被截断显示 ...(truncated) | 调用时加 -o result.json,从 stdout 的 resultFile 路径读取完整 JSON |
OUTSIDE_AUTHORIZED_ROOT / 写入被拒 | -o 指向了沙箱或策略不允许的路径 | 将输出文件改到当前任务 workspace(或环境允许)下的绝对路径,例如 -o "D:\\…\\workspace\\cart_result.json" |
| 价格错误 | sleep 时间不够 | 点击SKU后 sleep 3秒 |
| SKU点击错误 | 用 text 匹配 | 用 index 精确点击 |
JSON 解析错误(含中文 【】 等字符) | Windows .cmd 剥离双引号破坏 JSON 结构 | 优先用 Bash;否则用 --request <文件> 传参 |
| 命令 | 用途 | 说明 |
|---|---|---|
--help / -h | 列出当前可用工具及 description / inputSchema | |
--help <工具名> | 当工具返回错误时,帮助排查错误 |
| 工具 | 用途 | 注意 |
|---|---|---|
| launch | 启动淘宝桌面版 | macOS 下可用 open "/Applications/淘宝桌面版.app" 作为兜底 |
| 工具 | 用途 | 关键参数 |
|---|---|---|
| list_available_pages | 获取所有可用页面名称和链接 | 不确定页面名称时先调用此工具 |
| navigate | 导航到淘宝预设页面 | page: 页面名称;若 page 不在列表中将返回所有可用页面及链接,禁止自行编造 URL |
| navigate_to_url | 打开已知有效的淘宝 URL | url(必须是淘宝/天猫等可信域名);禁止编造 URL,预设页面请使用 navigate 工具 |
| close_page | 关闭当前任务页面 | - |
| 工具 | 用途 | 关键参数 |
|---|---|---|
| get_current_tab | 获取当前标签页 URL 和标题 | - |
| read_page_content | 提取页面可见文本 | scope?, maxLength?, offset? |
| scroll_page | 滚动页面 | direction: up/down/top/bottom, selector?, amount? |
| inspect_page | 诊断页面 DOM 状态(排查操作失败原因) | - |
| 工具 | 用途 | 关键参数 |
|---|---|---|
| scan_page_elements | 扫描可交互元素,返回带序号的列表 | filter?, scope? |
| click_element | 点击元素 | index(序号,精确)或 text(文本,模糊匹配) |
| input_text | 输入文本 | text, index?, placeholder?, scope?, submit? |
| trigger_keyboard_event | 触发单个键盘事件(keydown/keyup/keypress) | key 或 keyCode, eventType?, ctrlKey?, altKey?, shiftKey?, metaKey? |
| trigger_key_sequence | 连续触发按键序列 | text(自动拆分字符)或 sequence(精细控制) |
| hold_keyboard_key | 长按某个键(keydown → 保持 → keyup) | key 或 keyCode, duration?, repeatEvents? |
| 工具 | 用途 | 关键参数 |
|---|---|---|
| search_products | 文字搜索商品并返回结果列表 | keyword;type?(可选,默认 all:all=商品、shop=店铺、tmall=天猫商品、22pc_b=企业购、pc_taobao=淘宝;用户提到「店铺」「找店」「进店」等时优先 type=shop) |
| image_search | 以图搜图(淘宝相似商品)。【调用前准备】需先获取图片地址,推荐方式:1)从系统剪切板获取图片,判断是否与用户发送的图片相同;2)询问用户图片本地存储位置。支持三种图片输入格式:本地文件路径、CDN地址、base64数据。会自动点击页面上的图片分类小卡获取每个分类的商品列表 | imagePath(图片数据:1)本地绝对路径如 /tmp/xxx.jpg;2)CDN地址如 https://example.com/img.jpg;3)base64数据如 data:image/png;base64,xxx) |
| get_product_skus | 【加购前必调】 获取商品 SKU 维度与可选规格列表 | itemId?(不传则使用当前商详页) |
| add_to_cart | 加入购物车(自动处理 SKU 选择和弹窗)。必须先调用 get_product_skus 获取可选规格,再传入完整 sku 参数 | itemId?, sku(必须与页面 SKU 维度完全匹配) |
| get_browse_history | 获取浏览历史 | type: product/search/shop |
| submit_product_rating | 提交商品评价(自动填充表单并提交)。【评价专用工具-唯一方式】评价页面内禁止使用 input_text、click_element、scan_page_elements 等工具!这些工具无法正确操作评价表单,必须使用本工具! | qualityContent?(单商品评价内容)、qualityContents?(多商品评价内容数组,每个商品一条不同内容)、merDsr?(描述相符评分1-5)、serviceQualityScore?(卖家服务评分1-5)、saleConsignmentScore?(物流服务评分1-5)、isAppend?(是否追加评价)、serviceContent?(服务评价内容)、imageUrls?(图片路径数组)、gender?(1=男,2=女)、birthday?(格式YYYY-MM-DD)、anonymous?(是否匿名)、submit?(是否自动提交) |
| 工具 | 用途 | 关键参数 |
|---|---|---|
| open_chat | 【发消息必选】打开旺旺聊天并发送消息,复合工具自动完成全流程 | source(场景), message(消息内容), imagePath?(图片路径,支持单张或多张) |
| send_chat_message | 在已打开的旺旺页面中继续发消息,支持同时发送图片 | message(消息内容), imagePath?(单张路径、路径数组或JSON字符串数组), shopName?(切换店铺) |
imagePath 参数说明:
"/path/to/image.png" 或 "https://cdn.com/img.jpg" 或 "data:image/png;base64,..."["/path/img1.png", "/path/img2.png"]open_chat 场景说明:
source: cart - 从购物车找商品发消息,需传 productName(商品关键词)source: order - 从订单列表找商品发消息,需传 productName(商品关键词)source: search - 搜索商品后给商家发消息,需传 query(搜索词)触发关键词: 当用户提到"问问商家"、"旺旺"、"聊天"、"咨询"、"发消息"时,必须使用 open_chat 工具
| 工具 | 用途 | 关键参数 |
|---|---|---|
| trigger_keyboard_event | 触发单个键盘事件 | key(键名)或 keyCode(数字), eventType(keydown/keyup/keypress), 修饰键(ctrlKey/altKey/shiftKey/metaKey) |
| trigger_key_sequence | 连续触发按键序列 | text(自动拆分字符)或 sequence(精细控制数组) |
| hold_keyboard_key | 长按某个键 | key/keyCode, duration(长按毫秒,默认500), repeatEvents(是否重复触发keydown) |
键盘操作使用说明:
trigger_keyboard_event:用于触发单个键盘事件
key:键名如 "Enter"、"Escape"、"ArrowUp"、"ArrowDown"、"Backspace"、"Delete"、"Tab"、"Space"、字母数字等keyCode:数字键码,如 13(Enter)、27(Escape)、38(上箭头)eventType:事件类型,keydown(按下)、keyup(释放)、keypress(按键),默认 keydownctrlKey、altKey、shiftKey、metaKey 用于组合键trigger_key_sequence:用于连续输入文字或快捷键组合
text:直接传入字符串,自动拆分为单个字符依次触发sequence:精细控制数组,可指定每个按键的事件类型和修饰键hold_keyboard_key:用于长按场景(如游戏中的移动、连续删除)
keydown,保持指定时间后触发 keyuprepeatEvents=true 可在长按期间重复触发 keydown(模拟真实键盘重复)使用示例:
# 按 Enter 键
taobao-native trigger_keyboard_event --args '{"key":"Enter"}'
# 按 Ctrl+A 全选
taobao-native trigger_keyboard_event --args '{"key":"a","ctrlKey":true}'
# 先 keydown 再 keyup(分开触发)
taobao-native trigger_keyboard_event --args '{"key":"ArrowDown","eventType":"keydown"}'
taobao-native trigger_keyboard_event --args '{"key":"ArrowDown","eventType":"keyup"}'
# 输入文字
taobao-native trigger_key_sequence --args '{"text":"Hello World"}'
# 快捷键组合:Ctrl+A 然后 Delete
taobao-native trigger_key_sequence --args '{"sequence":[{"key":"a","ctrlKey":true},{"key":"Delete"}]}'
# 长按 Backspace 2秒(连续删除)
taobao-native hold_keyboard_key --args '{"key":"Backspace","duration":2000,"repeatEvents":true}'
# 长按方向键移动(游戏场景)
taobao-native hold_keyboard_key --args '{"key":"ArrowRight","duration":1000}'
不要主动给用户下载安装。 详细 CDN 地址、命名规则、静默安装与启动说明见同目录下的 Reference:
references/install-download.md仅在以下情况打开并遵循该文件:
taobao-native 无法使用(如 command not found),且上文「命令不可识别时的处理规则」仍无法恢复open -a /Applications/淘宝桌面版.app 失败,需要走下载安装流程。日常购物、已能正常调用 CLI 时无需阅读该 Reference。
get_product_skus 获取 SKU 信息,然后根据用户意图/偏好智能选择规格,仅在无法判断时才询问用户search_products、add_to_cart、open_chat、submit_product_rating 等工具已内置完整流程,调用成功后请勿再手动操作remainingLength 字段,若 truncated: true 且 remainingLength > 0,可传入 offset 分段读取后续内容(如 offset: 5000)open_chat 工具,不要手动导航到聊天页面-o <文件>,再从 resultFile 读完整数据,避免截断-o 时 stdout 为摘要(含 resultFile),脚本可读该文件解析_.webp 后缀,需去掉该后缀才能正常显示(适用于商品主图、SKU 图片等所有场景)submit_product_rating - 【评价专用工具-唯一方式】自动填充并提交淘宝/天猫商品评价表单
绝对禁止:评价页面内禁止使用 input_text、click_element、scan_page_elements 等工具!这些工具无法正确操作评价表单,必须使用本工具!
多商品必须差异化文案:一个订单有多个商品时,每个商品的评价内容必须不同!禁止复制相同内容!
使用流程:
参数规则:
**评分必填:**首次评价必须填:merDsr(描述相符)、serviceQualityScore(卖家服务)、saleConsignmentScore(物流服务),各1-5星。
**图片可选:**imageUrls 传入图片路径数组,所有商品共用这些图片。
**追加评价:**isAppend=true 时评分可不填。
参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| qualityContent | string | 【单商品专用】单个商品的评价内容必填。仅当订单只有一个商品时使用。多商品时禁止使用此参数! |
| qualityContents | string[] | 【多商品必填】多商品评价内容数组必填。要求:1.数组长度必须等于商品数量;2.每个元素必须是不同的评价内容,禁止重复!3.顺序与页面商品顺序一致。 |
| merDsr | number | 描述相符评分,1-5星(首次评价必填) |
| serviceQualityScore | number | 卖家服务评分,1-5星(首次评价必填) |
| saleConsignmentScore | number | 物流服务评分,1-5星(首次评价必填) |
| isAppend | boolean | 是否追加评价,默认false。追加评价时评分可不填 |
| serviceContent | string | 服务评价内容(评价服务) |
| imageUrls | string[] | 图片路径数组,最多5张。支持:本地文件路径、CDN地址、base64数据。所有商品共用这些图片。 |
| gender | number | 性别,1=男,2=女 |
| birthday | string | 生日/预产期,格式:YYYY-MM-DD,如2026-03-13 |
| anonymous | boolean | 是否匿名评价,默认为true |
| submit | boolean | 是否自动点击提交按钮,默认为true |
使用示例:
# 基础评价(只打星)
taobao-native submit_product_rating --args '{"merDsr":5,"serviceQualityScore":5,"saleConsignmentScore":5}'
# 带文字评价
taobao-native submit_product_rating --args '{"merDsr":5,"serviceQualityScore":5,"saleConsignmentScore":5,"qualityContent":"商品质量很好,非常满意","serviceContent":"卖家服务态度很好"}'
# 带晒图的评价
taobao-native submit_product_rating --args '{"merDsr":5,"qualityContent":"很好","imageUrls":["/tmp/xxx.jpg","/tmp/yyy.jpg"]}'
# 多商品评价(每个商品不同内容)
taobao-native submit_product_rating --args '{"merDsr":5,"serviceQualityScore":5,"saleConsignmentScore":5,"qualityContents":["商品A很好","商品B不错","商品C满意"]}'
taobao-native get_product_skus --args '{"itemId":"<商品ID>"}':【必须】 先获取商品 SKU 维度与可选规格(含图片){"success":true,"hasSku":true,"availableSkus":[{"label":"颜色","options":[{"text":"黑色","image":"https://..."},{"text":"白色","image":"https://..."}]},{"label":"尺码","options":[{"text":"M"},{"text":"L"},{"text":"XL"}]}],...}availableSkus 中对应的选项,自动填充 sku 参数image 图片(使用 Markdown 图片语法 ),帮助用户直观选择taobao-native add_to_cart --args '{"itemId":"<商品ID>","sku":["黑色","XL"]}':传入完整 sku 数组加购sku 参数必须与页面 SKU 维度数量完全匹配,例如页面有「颜色」「尺码」两个维度,则必须传入两个值get_product_skus 返回 hasSku: false,说明商品无多规格,可直接调用 add_to_cart 不传 skuget_product_skus 返回 allSelected: true,说明页面规格已全选,可直接加购disabled: true),需告知用户并让其重新选择请选择颜色:
1.  黑色
2.  白色
_.webp 后缀,需去掉该后缀才能正常显示目标:获取商品详情页中特定SKU规格的真实价格,用于比价、价格排序等场景。
⚠️ 核心问题:搜索结果价格 / 页面默认显示价格 ≠ 真实SKU价格
唯一可靠的方法:
# 1. 打开商品页
taobao-native navigate_to_url --args '{"url":"https://item.taobao.com/item.htm?id=xxx","sourceApp":"copaw"}'
sleep 3 # 等待页面加载
# 2. 获取SKU维度
taobao-native get_product_skus --args '{"sourceApp":"copaw"}'
# 3. 扫描完整DOM,找到目标SKU索引
taobao-native scan_page_elements --args '{"sourceApp":"copaw"}' -o elements.json
# 从DOM中找到目标SKU的精确 index
# 4. 用 index 精确点击SKU(禁止用 text!)
taobao-native click_element --args '{"index":80,"sourceApp":"copaw"}'
# 5. ⚠️ 等待3秒让价格刷新(必须!)
sleep 3
# 6. 获取真实价格
taobao-native scan_page_elements --args '{"filter":"¥","sourceApp":"copaw"}'
常见陷阱:
| 陷阱 | 表现 | 正确做法 |
|---|---|---|
| 搜索价格≠真实价格 | 显示¥88,实际¥135 | 进详情页获取SKU真实价格 |
| 价格未刷新 | sleep不够取到旧价 | sleep 3秒 |
| SKU点击错误 | text匹配点错SKU | 用 index 精确点击 |
| read_page_content取错价 | 多个价格混淆 | 用 scan_page_elements --args '{"filter":"¥"}' |
taobao-native navigate_to_url --args '{"url":"<商详URL>"}':打开商详页taobao-native read_page_content --args '{}':读取页面内容,返回值中 [商品主图] 和 [商品图] 标签已自动提取图片 URL,无需指定 scope[商品图] https://img.alicdn.com/imgextra/.../O1CN01yyy.jpg
_.webp 后缀才能正常显示taobao-native navigate_to_url --args '{"url":"<商详URL>"}':进入商详taobao-native click_element --args '{"text":"用户评价"}':点击评价 tab,pageChanges.added 会直接返回评价内容taobao-native read_page_content --args '{}':读取完整页面,评价内容在「用户评价·N」之后;商详页默认只展示约 2 条预览评价taobao-native click_element --args '{"text":"查看全部评价"}':如需查看更多评价,点击后会打开左侧评价抽屉面板(非 URL 跳转)taobao-native read_page_content --args '{"scope":"[class*=Drawer]"}':读取抽屉中的全部评价内容(约 20 条,以实际页面为准);可用 taobao-native scroll_page --args '{"direction":"down"}' 在抽屉内加载更多taobao-native navigate --args '{"page":"cart"}':进入购物车taobao-native input_text --args '{"text":"商品关键词","placeholder":"搜索购物车内商品","submit":true}':在购物车搜索框中搜索目标商品,筛选后只显示匹配的商品taobao-native scan_page_elements --args '{}':不传 filter,扫描完整 DOM 树;搜索已大幅减少商品数量,完整树中商品名 <a>商品标题</a> 和删除按钮 <div>删除</div> 按顺序交替排列,可准确对应颜色分类:冲牙器-绿色),找到目标商品紧跟其后的 <div>删除</div> 对应索引taobao-native click_element --args '{"index":<删除按钮索引>}':点击该商品的删除按钮(无需先勾选复选框)taobao-native click_element --args '{"text":"删除"}'或taobao-native click_element --args '{"index":<确认索引>}':在确认弹窗中点击确认删除taobao-native navigate_to_url --args '{"url":"<商详URL>"}':打开商详页taobao-native click_element --args '{"text":"联系客服"}':点击商详页底部「联系客服」,打开旺旺聊天页面taobao-native scan_page_elements --args '{"filter":"发送"}':扫描右侧栏,返回例如:
发送宝贝链接 — 发送当前正在咨询的商品发送商品(多个) — 发送右侧「历史逛过」或「本店推荐」中的商品<div>商品标题</div> 紧跟在对应 <div>发送商品</div> 之前taobao-native click_element --args '{"index":<对应索引>}':点击「发送宝贝链接」或「发送商品」,商品链接自动发送到聊天中[146] <div>发送宝贝链接</div> ← 当前咨询的商品
[152] <div>商品A标题</div> ← 历史逛过 / 本店推荐
[153] <div>发送商品</div> ← 点击发送商品A
[156] <div>商品B标题</div>
[157] <div>发送商品</div> ← 点击发送商品B
发送商品 按钮