| name | query-product-search |
| description | 根据用户给定的 query 词,提取电商搜索词信息并获取对应商品链接。支持 AliExpress、Amazon 等多平台。自动将自然语言 query 改写为电商搜索词,浏览器打开搜索页,提取前 N 个商品商详页链接。Use when the user asks to find products, search for items on e-commerce sites, extract product links, or mentions "找商品", "搜商品", "相关商品", "query找商品". |
Query 找相关商品
根据用户输入的 query 词,自动改写为电商搜索词,在指定电商平台搜索,并返回前 N 个商品的商详页链接。
工作流程
Step 1: Query 改写
将用户的自然语言 query 改写为电商搜索词。规则:
- 提取核心商品关键词,去除无关修饰语
- 示例:
"if someone give me black glasses" → "black glasses"
"I want to buy a red running shoes for my son" → "red running shoes"
"xiaomi tv" → "xiaomi tv"(已是电商搜索词,无需改写)
Step 2: 构建搜索 URL
根据目标平台构建搜索 URL,将搜索词中的空格替换为 -:
| 平台 | URL 模板 |
|---|
| AliExpress | https://www.aliexpress.com/w/wholesale-{search-term}.html |
| Amazon | https://www.amazon.com/s?k={search-term} |
默认使用 AliExpress,用户指定时使用对应平台。
Step 3: 浏览器搜索并提取
- 使用浏览器 navigate 打开搜索页
- 等待页面加载完成(使用 snapshot 确认商品列表已渲染)
- 从页面快照中提取前 N 个商品的商详页链接
- AliExpress:提取
//www.aliexpress.com/item/{id}.html?... 格式的链接
- Amazon:提取
/dp/{asin} 或 /gp/product/{asin} 格式的链接
Step 4: 清洗链接
去除 URL 中 .html(或最后一个路径段)之后的所有查询参数:
- 原始:
https://www.aliexpress.com/item/1005008987799569.html?algo_pvid=xxx&spm=yyy
- 清洗后:
https://www.aliexpress.com/item/100500898779569.html
Amazon 同理去除 ?ref_=, ?th= 等参数。
Step 5: 提取商品详情(仅格式 2 需要)
当用户要求输出**格式 2(详细表格)**时,需依次打开每个商详页提取额外信息:
- 依次 navigate 到每个清洗后的商详页链接
- 等待页面加载完成,使用 snapshot 确认内容已渲染
- 提取商品标题和价格信息
- 提取 Specification 参数:
- 定位页面中的 "Specifications" 标签页或区块,点击进入/展开
- 如有 "View More" / "查看更多" 按钮,先点击展开全部内容
- 提取所有 key-value 键值对参数
- AliExpress 规格通常位于
Specifications 区块下的 <table> 或 <dl> 结构中
- 将参数压缩为单行字符串,格式:
Key1:Value1; Key2:Value2; ...
- 必须展示全部参数,禁止折叠或截断
- 收集完成后关闭该标签页或 navigate 回搜索页,继续下一个商品
格式 1(纯链接列表)跳过此步骤。
Step 6: 评估相关度分数
对每个提取的商品,评估其与原始 query 的相关度分数(relevance_score),区间 0-1:
评分维度:
- 标题匹配度(0.4 权重): 商品标题是否包含 query 中的核心关键词
- 类别匹配度(0.3 权重): 商品是否属于 query 隐含的品类
- 语义相关性(0.3 权重): 商品用途/功能是否与 query 意图一致
评分参考:
0.9-1.0:完全匹配,商品精准对应 query(如 query="xiaomi tv",商品为小米电视)
0.7-0.8:高度相关,商品为 query 的直接相关产品(如 query="iphone case",商品为 iPhone 手机壳)
0.5-0.6:中等相关,商品与 query 有间接关联(如 query="running shoes",商品为运动袜)
0.3-0.4:弱相关,商品仅部分关键词匹配或类别相近(如 query="larve de hanneton traitement chimique",返回钓鱼幼虫饵)
0.0-0.2:几乎不相关,商品与 query 意图完全不符
过滤阈值: 默认 relevance_score >= 0.5 为有效结果,低于 0.5 的商品应被过滤掉。如用户指定阈值则使用用户值。
Step 7: 返回 JSON 结果
始终以 JSON 格式返回结果,结构如下:
{
"query": "原始搜索词",
"rewritten_query": "改写后的电商搜索词",
"platform": "aliexpress",
"total_count": 3,
"threshold": 0.5,
"products": [
{
"index": 1,
"title": "商品标题",
"price": "AU$52.83",
"specifications": "Key1:Value1; Key2:Value2; ...",
"url": "https://www.aliexpress.com/item/1005008987799569.html",
"relevance_score": 0.92
},
{
"index": 2,
"title": "商品标题",
"price": "AU$134.99",
"specifications": "Key1:Value1; Key2:Value2; ...",
"url": "https://www.aliexpress.com/item/1005006746789214.html",
"relevance_score": 0.85
}
]
}
字段说明:
query: 用户原始输入的搜索词
rewritten_query: Step 1 改写后的电商搜索词
platform: 使用的电商平台(aliexpress / amazon)
total_count: 有效商品数量(经过 relevance_score >= threshold 过滤后的数量,无结果则为 0)
threshold: 相关度过滤阈值(默认 0.5)
products: 商品列表数组,每项包含:
index: 商品序号(从 1 开始)
title: 商品标题
price: 商品价格(如提取到),未提取到则为 "—"
specifications: 规格参数压缩字符串(format 为 table 时提取),否则为 "—"
url: 清洗后的商品商详页链接
relevance_score: 相关度分数(0-1,保留 2 位小数)
无结果场景:
{
"query": "larve de hanneton traitement chimique",
"rewritten_query": "larve de hanneton traitement chimique",
"platform": "aliexpress",
"total_count": 0,
"threshold": 0.5,
"products": []
}
参数说明
| 参数 | 说明 | 默认值 |
|---|
| query | 用户输入的搜索词 | 必填 |
| platform | 电商平台(aliexpress / amazon) | aliexpress |
| count | 请求返回商品数量 | 3 |
| format | 输出格式(list / table) | table |
| threshold | 相关度过滤阈值(0-1) | 0.5 |
format 为 table 时会自动进入商品详情页提取 Specification 参数
format 为 list 时 specifications 字段返回 "—"
- 参数提取会尝试展开 "View More" 获取完整内容
- 所有商品需经过
relevance_score >= threshold 过滤后才计入 total_count
异常处理
- 如果搜索页无商品结果,返回
total_count: 0,products: []
- 如果可用商品数量少于请求的 count,返回实际可用数量
- 如果所有商品的相关度分数均低于 threshold,返回
total_count: 0,products: []
- 如果页面加载超时或无法访问,告知用户并建议重试
注意事项
- 使用浏览器自动化时,优先使用 snapshot 而非 screenshot 来提取链接,效率更高
- AliExpress 搜索结果页的商品链接通常在
link 元素的 /url 属性中,匹配 /item/{id}.html 模式
- 确保只提取商详页链接,不提取分类页、推荐搜索词等无关链接
- 格式 2(table)提取参数时的要点:
- Specification 区块可能有多种 DOM 结构:
<table>、<dl>/<dt>/<dd>、或列表形式,需灵活适配
- "View More" 按钮文字可能为 "View More"、"展开"、"展开全部" 等,需模糊匹配
- 参数 key 和 value 之间可能有冒号、空格或直接相邻,提取后统一格式化为
Key:Value
- 必须提取并返回全部规格参数,禁止使用 "..." 折叠或截断
- 相关度分数评估要点:
- 必须基于商品标题、价格、类别等可见信息综合判断
- 不要被关键词字面匹配误导(如 "larva" 在钓鱼饵和害虫防治中含义不同)
- 评分需客观,宁可给低分也不要高估不相关商品
- 输出 JSON 时确保
relevance_score 为数字类型(非字符串),保留 2 位小数