| name | taobao-search |
| description | 淘宝商品搜索。当用户想要搜索商品、找某品牌产品、比价、查看新款等电商购物场景时激活。
|
| metadata | {"xomniclaw":{"always":false,"emoji":"🛒","version":"1.0.0","category":"shopping"}} |
Taobao Search Tool
通过淘宝 Deep Link 直达搜索页面,浏览商品并为用户提供购物建议。
🎯 When to Use
Use this skill when user asks about:
✅ 商品搜索 - "帮我找阿迪达斯今年新款男鞋"
✅ 品牌查找 - "搜一下耐克跑步鞋"
✅ 比价购物 - "淘宝上看看有什么好的蓝牙耳机"
✅ 新品浏览 - "今年有什么新款连衣裙"
✅ 特定条件搜索 - "200元以内的双肩包"
📋 Workflow
标准搜索流程
1. 解析用户意图,提取搜索关键词
2. 通过 device(action="open", uri="taobao://...") 跳转淘宝搜索页
3. 等待淘宝 App 加载搜索结果:device(action="act", kind="wait", timeMs=1500)
4. 拉取页面 UI 树:device(action="snapshot", format="compact")
—— 这是商品名/价格/店铺/销量等文字信息的**唯一来源**
5. 从 snapshot 返回的 text 节点里逐条提取商品信息(详见 Step 3)
6. 基于提取到的具体商品信息回答用户(200字以内,必须包含真实数字和细节)
⚠️ 绝对禁止: 不要用 read_file 读截图 PNG(如 read_file("/sdcard/.xomniclaw/workspace/screenshots/*.png"))。PNG 是二进制,read_file 会以 UTF-8 解码出大量乱码并撑爆上下文窗口,整个 session 会被 context window exceeds limit 终止。只用 device(action="snapshot") 读页面文字。
🔗 Deep Link 构造规则
淘宝搜索 Deep Link 格式:
taobao://s.taobao.com/search?q={关键词}
关键词用 + 连接多个搜索词,示例:
| 用户意图 | 搜索关键词 | Deep Link |
|---|
| 阿迪达斯今年新款男鞋 | 阿迪达斯+2026+新款+男鞋 | taobao://s.taobao.com/search?q=阿迪达斯+2026+新款+男鞋 |
| 耐克跑步鞋 | 耐克+跑步鞋 | taobao://s.taobao.com/search?q=耐克+跑步鞋 |
| 200元蓝牙耳机 | 蓝牙耳机 | taobao://s.taobao.com/search?q=蓝牙耳机 |
🚀 X-OmniClaw Implementation
Tool: device (DeviceTool — 统一设备控制工具)
⚠️ 重要: 不要使用 shell am start 命令跳转 Deep Link(会因 SecurityException 权限拒绝),必须使用 device(action="open", uri="...") 通过 X-OmniClaw 应用上下文发起 ACTION_VIEW Intent。
Step 1: Deep Link 跳转淘宝搜索页
val keyword = "阿迪达斯+2026+新款+男鞋"
val deepLink = "taobao://s.taobao.com/search?q=$keyword"
device(action = "open", uri = deepLink)
Step 2: 等待页面加载并拉取 UI 树
device(action = "act", kind = "wait", timeMs = 1500)
device(action = "snapshot", format = "compact")
不要在这一步用 screenshot:screenshot 只用于内部 grounding(定位点击坐标),不会把图像内容送给你。snapshot 才会把页面上每个可见文本节点(含商品名、价格、店铺名)以纯文本方式返回给你。
Step 3: 从 snapshot 的 text 节点中提取商品信息(关键步骤)
snapshot 返回的是 UI 树文本,例如:
text "ULTRABOOST 5X 2026春季款男子跑步鞋"
text "¥899"
text "阿迪达斯官方旗舰店"
text "2000+人付款"
你必须从 text 节点逐条提取以下字段:
- 商品完整名称(含品牌、系列、型号,如 "Nike Air Max 270 React")
- 价格(精确到元,如 ¥599、¥1299)
- 颜色/配色(如 黑白、灰蓝、荧光绿)—— 若 snapshot 中没有出现颜色文字,可省略此字段
- 店铺名称(如 "耐克官方旗舰店"、"XX运动专营店")
- 销量/付款人数(如 "2000+人付款"、"月销500+")
- 标签/卖点(如 "官方正品"、"新品首发"、"包邮")
如果 snapshot 文本节点稀疏(页面还在加载或被弹窗遮挡),再次 device(action="act", kind="wait", timeMs=1500) 然后重新 snapshot;不要 read_file 截图 PNG。
Step 4: 基于具体商品信息回答用户
⛔ 严禁笼统回复。以下是禁止出现的回复方式:
❌ "搜索结果展示了多个商家的耐克新款男鞋,包含不同款式和价位"
❌ "你可以在当前页面继续上下滑动查看更多商品"
❌ "点击感兴趣的商品查看详情和价格"
❌ "包含不同款式和价位,可以根据你的喜好选择"
这类回复等于没有回答,用户自己也能看到屏幕。你的价值在于帮用户总结屏幕上的具体商品信息。
✅ 必须包含具体数字和细节,回复格式:
为您在淘宝搜索了"{搜索词}",挑选了几款值得关注的:
1. {完整商品名含型号} - ¥{具体价格},{颜色},{店铺名},{销量}
2. {完整商品名含型号} - ¥{具体价格},{颜色},{店铺名},{销量}
3. {完整商品名含型号} - ¥{具体价格},{颜色},{店铺名},{销量}
价格区间¥{最低}-¥{最高}。{1-2句具体购物建议,如哪款性价比高、哪家是官方旗舰店等}。需要我点开某款看详情吗?
💡 Complete Example
用户: "帮我找阿迪达斯今年新款男鞋"
执行流程:
val keyword = "阿迪达斯+2026+新款+男鞋"
device(action = "open", uri = "taobao://s.taobao.com/search?q=$keyword")
device(action = "act", kind = "wait", timeMs = 1500)
device(action = "snapshot", format = "compact")
回复示例(注意每一条都是从 snapshot 的 text 节点中实际读取的具体信息):
为您在淘宝搜索了"阿迪达斯2026新款男鞋",挑选了几款值得关注的:
1. Adidas ULTRABOOST 5X 2026春季款男子跑步鞋 - ¥899,黑白配色,阿迪达斯官方旗舰店,2000+人付款
2. Adidas Originals GAZELLE Indoor 板鞋 - ¥799,深蓝/白色,adidas三叶草官方旗舰店,1500+人付款
3. Adidas SAMBA OG 德训鞋经典复刻 - ¥699,白色/黑尾,得物adidas授权店,3000+人付款
价格区间¥699-¥899。3款都是今年新配色,其中SAMBA销量最高性价比也不错;如果追求跑步性能推荐ULTRABOOST。前两家是官方旗舰店更有保障。需要我点开某款看详情吗?
🔍 关键词提取策略
从用户查询中提取搜索关键词时:
val brand = "阿迪达斯"
val year = "2026"
val category = "新款+男鞋"
val keyword = "$brand+$year+$category"
时间词映射:
| 用户表述 | 转换为 |
|---|
| 今年 | 2026 |
| 新款 | 2026+新款 |
| 最新 | 2026+新款 |
| 去年 | 2025 |
⚠️ 注意事项
- 必须使用 device tool: 通过
device(action="open", uri="...") 跳转,不要用 shell am start(会报 SecurityException)
- 淘宝 App 必须已安装: Deep Link 需要淘宝 App,若未安装会返回 ActivityNotFoundException
- 登录状态: 部分搜索结果需要登录淘宝账号才能完整展示
- 网络依赖: 需要联网才能加载搜索结果
- 加载时间: 网络较慢时适当增加
wait 的 timeMs;snapshot 文本稀疏时再 wait 1-2 秒后重 snapshot
- 回复字数: 字数控制在 200 字以内,但必须包含从 snapshot 中读取的具体商品信息
- 严禁套话: 绝对不能回复"包含不同款式和价位""你可以继续浏览"这类笼统废话。如果 snapshot 里没有足够商品文字,应再 wait 后重新 snapshot,仍不行则如实说明
- 严禁 read_file 截图 PNG:
read_file("/sdcard/.../screenshots/*.png") 会返回二进制乱码并撑爆上下文,整个 session 会被 context window exceeds limit 终止;任何"读截图内容"的需求一律改用 device(action="snapshot")
🔄 Error Handling
淘宝未安装
device(action = "open", uri = "https://s.taobao.com/search?q=$keyword")
搜索无结果
val simplifiedKeyword = "阿迪达斯+男鞋"
device(action = "open", uri = "taobao://s.taobao.com/search?q=$simplifiedKeyword")
页面加载超时
device(action = "act", kind = "wait", timeMs = 2000)
device(action = "snapshot", format = "compact")
📱 Supported Queries
| 查询类型 | 示例 | 搜索关键词 |
|---|
| 品牌+品类 | "找耐克跑步鞋" | 耐克+跑步鞋 |
| 品牌+年份+品类 | "阿迪达斯今年新款" | 阿迪达斯+2026+新款 |
| 品类+价格 | "300以内的双肩包" | 双肩包 |
| 泛品类 | "好看的连衣裙" | 连衣裙+新款 |
| 特定商品 | "iPhone 16 手机壳" | iPhone+16+手机壳 |