Bright Data + Coze 实战指南:10分钟搭建 Amazon 竞品监控 Bot(2026)
目录
前言
就在今天早上,当我还在悠闲地喝着早茶时,我的钉钉准时收到了一份推送。打开一看,是一份条理清晰的《Amazon 竞品价格监控日报》。报告里,核心竞品的 ASIN、昨日价格、今日价格、降价幅度一目了然,甚至连评论新增数、评分热度变化都自动统计好了。AI 还直接给出了运营建议:“竞品实施腰斩式降价(降幅超 50%),配合评论激增,属于极激进的清库存或抢占市场份额行为,建议立即评估自身产品利润空间”。
如果按照过去的做法,我需要安排运营人员每天花两三个小时去各大平台手动刷新页面、复制数据、整理 Excel 报表,不仅费时费力,而且往往等我们发现对手降价、开启促销时,黄金销售时段已经悄然流逝。在跨境电商这个瞬息万变的战场上,单纯依靠人工 “盯盘” 无异于蒙着眼睛打仗。
本文使用 Bright Data Amazon Dataset API 获取商品数据,并通过 Coze 工作流完成分析和推送。我们无需编写复杂爬虫代码,就能搭建一套全自动竞品情报采集 Bot,实现价格监控、排名追踪、行业资讯汇总全流程自动化。点击👉Bright Data 中文官网注册账号,即可领取试用额度,快速开启自动化数据采集之旅。在人力成本日益上涨、市场竞争愈发激烈的当下,用 AI 与自动化工具替代重复劳动,已经成为跨境团队降本增效的必然选择。
一、什么是 Bright Data Amazon Dataset API?
Bright Data Amazon Dataset API 是 Bright Data Web Scraper API 产品的一部分,可直接获取 Amazon 商品结构化数据,而无需编写爬虫或解析逻辑。
二、 为什么 Coze 原生工具不够用
扣子 Coze 凭借可视化工作流、内置大模型、丰富的基础插件,成为国内热门的低代码 Bot 搭建平台,不少团队会尝试使用其原生搜索、采集功能完成市场情报工作。但面对 Amazon 等海外跨境平台的反爬机制、复杂页面结构以及企业级数据采集需求,Coze 原生工具存在明显短板。
下表从数据质量、反爬能力、平台覆盖、自定义能力、稳定性五大核心维度,对比 Coze 原生工具与接入 Bright Data Datasets API 后的综合能力,直观展现二者差异:
| 对比维度 | Coze 内置搜索/采集工具 | Coze + Bright Data Datasets API 集成方案 |
|---|---|---|
| 数据质量 | 无法完整渲染JS动态页面,价格、库存等关键字段提取错乱,数据残缺率高 | 支持全量JS渲染,精准提取结构化字段,仅返回HTTP 200有效页面,数据完整可用 |
| 反爬能力 | 无专业代理网络,高频采集极易触发IP封禁、验证码拦截,任务频繁中断 | 依托全球代理网络与自动解锁能力,可显著降低封禁、验证码与访问失败风险。 |
| 覆盖平台 | 仅适配国内主流网站,对Amazon、eBay、Temu、海外搜索引擎适配效果差 | 全面覆盖跨境电商、海外搜索引擎、行业媒体等全品类平台,支持自定义目标域名与页面 |
| 自定义能力 | 采集规则固定,无法按需筛选字段、设置采集频次与地域范围 | 可自由配置采集字段、监控链接、运行周期,满足个性化竞品监控需求 |
| 运维稳定性 | 采集规则易失效,需要人工反复调试、修复 | 企业级稳定性与高可用架构。 |
不难看出,Coze 的核心优势在于 AI 对话、工作流编排与内容总结,而 Bright Data 专攻合规、稳定、高可用的全网数据采集。二者深度集成后,恰好补齐短板,是零代码搭建企业级市场情报 Bot 的最优组合。
三、整体架构介绍
本次落地的 Bot 聚焦单一 Amazon 商品长期监控,整体架构逻辑简单清晰,无需本地部署爬虫、数据库,全部依托 Coze 云端能力实现,完整链路如下:
定时触发器 → Coze 工作流 →Bright Data Amazon Dataset → Amazon 目标商品页 → 实时数据回传 → 本地 / 云端数据存储 → 历史数据比对 → AI 智能分析总结 → 企业微信 / 飞书/钉钉推送报告
四、前置准备
在正式搭建情报 Bot 之前,我们需要完成账号注册、密钥获取、渠道配置等基础准备工作,全程操作简单,新手也可快速完成。
1.注册 Coze 账号:打开扣子 Coze 官网,完成账号注册并登录工作台,这是搭建 Bot 的基础环境。
2.注册 Bright Data 账号:优先通过👉Bright Data 中文官网注册账号。
3.登录 Bright Data 后台,前往个人中心复制专属 API Token,该凭证是调用 Datasets API 服务的必填鉴权参数。
说明:下文代码示例中统一使用占位符 YOUR_BRIGHTDATA_API_KEY 代指密钥,实操时替换为你复制的真实 Token 即可。
4.梳理监控目标
根据业务需求,提前整理需要监控的竞品商品链接、核心搜索关键词、行业资讯网站域名,为后续工作流配置做准备。
五、实战:搭建全自动竞品情报采集 Bot
接下来是干货环节——我会按实际搭建流程,逐一展示操作步骤,让读者能直接复现并应用。
使用专属链接,注册Bright Data,获取20刀免费试用额度
链接:https://get.brightdata.com/yapi25
注册后应用促销代码‘fei20’ 获取20刀免费试用额度


Step 1:登录Bright Data,获取YOUR_BRIGHTDATA_API_KEY
登录 Bright Data 控制台,进入用户页面,获取YOUR_BRIGHTDATA_API_KEY。
Step 2:打开扣子,创建智能体和工作流



Step 3:创建 扣子工作流
(如果你不想一步一步配置,文末会提供博主的DSL文件,可直接下载导入)
工作流节点设计如下:
1.开始节点:添加一个变量,接收 Amazon ASIN
2.添加代码节点,拼接商品url
代码如下:
async function main({ params }) {
const rawInput = params.input || "";
// Amazon ASIN 通常是 10 位,由大写字母和数字组成
const match = rawInput.toUpperCase().match(/\b[A-Z0-9]{10}\b/);
if (!match) {
return {
asin: "",
domain: "www.amazon.com",
product_url: "",
result: "没有识别到合法 ASIN。请提供 10 位 Amazon ASIN,例如:B08N5WRWNW"
};
}
const asin = match[0];
const domain = "www.amazon.com";
const product_url = `https://${domain}/dp/${asin}`;
const result = JSON.stringify({
asin,
domain,
product_url
}, null, 2);
return {
asin,
domain,
product_url,
result
};
}

3.添加HTTP请求节点,触发Bright Data爬取请求
主要配置的有三处
API:
请求方式:POST请求
url:https://api.brightdata.com/datasets/v3/scrape?dataset_id=gd_l7q7dkf244hwjntr0¬ify=false&include_errors=true
请求头:
Authorization:YOUR_BRIGHTDATA_API_KEY
Content-Type:application/json
请求体:json
{
"input": [
{
"url": "这里选择代码-拼接商品URL节点的product_url",
"zipcode": "94107", #这里设置邮政编码,它的作用是告诉爬虫“以哪个地区的买家视角”去访问该商品页面。
"language": ""
}
]
}

4.增加选择器节点,判断是否需要轮询
在实际调用 Bright Data Amazon 抓取接口时,返回结果通常有两种情况:如果当前任务处理较快,接口会直接返回商品的结构化数据;如果任务仍在处理中,接口则会先返回 snapshot_id,开发者需要基于该 ID 继续轮询下载最终结果。
判断返回结果状态:配置条件分支节点,检测“触发爬取请求”节点的 Body 输出内容是否包含 snapshot_id。如果命中该字段,说明任务为异步执行,需进入轮询等待流程;若未包含,则代表数据已同步就绪,可直接流转至数据清洗环节。
5.处理异步轮询场景
当判断结果为需要走轮询等待时,请在 IF 节点的上方分支(即条件成立的路径)中添加一个「代码节点」。该节点的核心作用是解析上一步返回的原始数据,并精准提取出 snapshot_id 的值,以便后续作为参数传递给轮询接口。
代码:
async function main({ params }) {
const rawBody = params.body || "";
let data = {};
try {
data = JSON.parse(rawBody);
} catch (e) {
return {
snapshot_id: "",
message: "解析 Bright Data 返回 body 失败:" + rawBody
};
}
return {
snapshot_id: data.snapshot_id || "",
message: data.message || ""
};
}

6.增加循环节点
因为异步抓取需要一点时间,所以我们需要沿着连线加一个「循环节点」。你可以把它想象成一个定时的闹钟,它的作用是每隔一小段时间(比如5秒或10秒),就拿着刚才的 snapshot_id 去问一次服务器:“我的数据好了吗?”,直到成功拿到最终的网页数据为止。

6.1 设置循环体中的节点
如下为循环体的详细节点
6.2 等待10秒代码节点
async function main({ params }) {
await new Promise(resolve => setTimeout(resolve, 10000));
return {
waited: true
};
}

6.3 下载结果 HTTP节点
请求方式:GET
URL:https://api.brightdata.com/datasets/v3/snapshot/{{这里选择解析 snapshot_id 代码节点的snapshot_id输出}}?format=json
请求头: Authorization:YOUR_BRIGHTDATA_API_KEY
6.4 判断下载结果代码节点
代码:
async function main({ params }) {
const statusCode = Number(params.statusCode || 0);
const body = params.body || "";
const headers = params.headers || "";
// 只要 HTTP 不是 200,就认为还没好
if (statusCode !== 200) {
return {
done: false,
product_data: "",
message: "Snapshot 暂未完成,statusCode=" + statusCode
};
}
// 如果 body 里还有处理中提示,也认为没好
const lowerBody = body.toLowerCase();
if (
lowerBody.includes("in progress") ||
lowerBody.includes("not ready") ||
lowerBody.includes("running") ||
lowerBody.includes("pending")
) {
return {
done: false,
product_data: "",
message: "Snapshot 仍在处理中"
};
}
// 如果 body 有内容,而且不是处理中,就认为拿到数据了
if (body.trim().length > 0) {
return {
done: true,
product_data: body,
message: "商品数据已获取"
};
}
return {
done: false,
product_data: "",
message: "返回为空,继续等待"
};
}

6.5 增加选择器,判断是否拿到结果,如果拿到,则把结果赋值给中间变量

7.增加大模型,进行数据清洗
首先 判断是否需要轮询,不成立的分子和循环同时接入该节点

选择模型和设置输入,如下截图:
系统提示词:
你是一个专业的电商数据清洗助手。你的任务是将输入的原始 JSON 数据转换为标准的数据库写入格式。
请严格遵守以下处理规则:
### 1. 核心提取规则
- **ASIN**: 直接提取 `asin` 字段。
- **标题 (title)**: 提取 `title` 字段,去除首尾空格。
- **价格 (price)**:
- 优先查找 `final_price` 或 `current_price`。
- 如果找不到上述字段,尝试从 `buy_box_winner` -> `price` 中提取。
- **注意**:只保留数字部分(例如 "$45.99" 应转为 45.99)。
- 如果无法提取到有效价格,必须返回 null,严禁编造为 0。
- **货币 (currency)**:
- 查找 `currency` 字段。
- 如果原文没有该字段,且价格包含符号(如 $, €, £),请根据符号推断($->USD, €->EUR, £->GBP)。
- 如果完全无法确定,默认填写 "USD"。
- **卖点 (features)**: 提取 `feature_bullets` 或 `features` 数组,**仅保留前 2 条**。
- **颜色列表 (color_list)**: 从 `variations` 数组中提取所有的 `Color` 值,并**自动去重**。
### 2. 输出格式要求
- 必须输出纯净的 JSON 对象。
- **严禁**使用 Markdown 代码块标记(如 ```json ... ```)。
- **严禁**包含任何解释性文字、前言或后缀。
- 即使某些字段在原文中不存在,也必须在输出中包含该 Key,值设为 null 或空字符串,不能丢弃字段。
### 3. 目标输出结构示例
{
"asin": "B0XXXXXX",
"title": "产品标题",
"price": 99.99,
"currency": "USD",
"features": ["卖点1", "卖点2"],
"color_list": ["Red", "Blue"]
}
用户提示词:
请从以下数据中提取电商商品信息。
**原始数据源:**
{{input}}
{{input1}}
(注:请自动识别上述两个变量中有内容的那个作为数据源)
**提取规则:**
1. 根层级必须提取 5 个核心字段:asin, title, price, currency, reviews_count。
- price:只保留数字(如 49.99),去除货币符号。
- reviews_count:提取真实的评论数数字。
2. output 对象内必须包含所有详细数据,包括上述 5 个核心字段,以及:brand, rating, root_bs_rank, bs_rank, initial_price, availability, max_quantity_available, features, color_list。
3. 如果原文中找不到某个字段,请将其设为 null,不要编造。
**请严格按照以下 JSON 格式输出,不要包含任何其他解释性文字:**
{
"asin": "提取到的ASIN",
"price": 提取到的数字价格,
"title": "提取到的标题",
"currency": "提取到的货币代码",
"reviews_count": 提取到的评论数,
"output": {
"asin": "提取到的ASIN",
"price": 提取到的数字价格,
"title": "提取到的标题",
"currency": "提取到的货币代码",
"reviews_count": 提取到的评论数,
"brand": "提取到的品牌",
"rating": 提取到的评分,
"root_bs_rank": 提取到的大类排名,
"bs_rank": 提取到的小类排名,
"initial_price": 提取到的原价,
"availability": "提取到的库存状态",
"max_quantity_available": 提取到的最大可售数量,
"features": ["卖点1", "卖点2"],
"color_list": ["颜色1", "颜色2"]
}
}
设置输出
8.对开始节点输入做一个简单的清洗
代码:
async function main({ params }: Args): Promise<Output> {
// 1. 获取原始输入值
const rawInput = params.input;
// 2. 强制转为字符串并去除首尾空格、换行符、制表符
const cleanAsin = String(rawInput).trim().replace(/[\r\n\t]/g, '');
// 3. 可选:转大写(ASIN 通常不区分大小写,但统一格式更稳妥)
const finalAsin = cleanAsin.toUpperCase();
// 4. 返回清洗后的值
return {
key0: finalAsin // 你可以把 key0 改成你想要的输出变量名,比如 "clean_asin"
};
}

8.增加查询数据的数据库节点
首先要新建数据库,如下结构
设置节点:

9.增加新增数据 数据库节点
10.增加时间戳获取节点
在流程中新增一个「代码节点」,用于精确获取当前的系统时间。博主在实际测试中发现,若直接依赖大模型生成报告日期,部分模型可能会出现时间幻觉或输出不准确的情况。因此,通过独立的代码节点注入绝对准确的时间变量,能确保最终生成的分析报告在时效性上完全可靠。
代码:
async function main() {
// 获取当前时间,并格式化为:YYYY-MM-DD HH:mm
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const currentTime = `${year}-${month}-${day} ${hours}:${minutes}`;
return {
current_time: currentTime
};
}

11. 增加大模型节点,用于数据分析,产出分析报告
输入
today_data:大模型-数据清洗-output
history_data:查询上次价格-outputLis
current_time:获取当前时间-current_time
系统提示词:
# Role
你是一位资深的 Amazon 竞品监控分析师。你的任务是根据提供的“今日最新数据”和“历史数据”,撰写一份专业、精炼的《今日 Amazon 竞品价格监控日报》。
# Rules
1. 语气必须客观、专业、具有商业洞察力。
2. 严格遵循下方的【Output Format】,不要输出任何多余的问候语或解释。
3. 【降价预警】:仅当今日价格 < 历史价格时触发。计算降价幅度(保留两位小数)。
4. 【涨价预警】:仅当今日价格 > 历史价格时触发。计算涨价幅度(保留两位小数),并结合库存情况(如 max_quantity_available)分析是否为缺货前兆或溢价测试。
5. 【热度上升】:仅当今日评论数 > 历史评论数时触发。计算新增评论数。
6. 【热度下降】:仅当今日评论数 < 历史评论数时触发。计算流失评论数,并提示可能的风险(如被平台折叠、差评激增等)。
7. 如果以上指标均无变化,对应板块写“今日无异常”。
8. 运营建议必须具体、可执行,且与监控到的竞品动作强相关。
用户提示词:
请根据以下两份数据生成日报:
- 监控时间:{{current_time}}
- 今日最新数据:{{today_data}}
- 历史数据:{{history_data}}
【数据提取指引】
1. 今日数据请从 `{{today_data}}` 中提取 `price`、`reviews_count`、`title`、`asin`。
2. 历史数据请从 `{{history_data}}` 的 `outputList[0]` 中提取 `price`、`reviews_count`。
请严格按照以下 Markdown 格式输出报告:
# 今日 Amazon 竞品价格监控日报
监控时间:[填写你刚才自动获取的时间]
监控 ASIN 数量:1
触发预警数量:[根据对比结果自动统计降价或评论新增的数量]
## 一、降价预警
(仅当今日价格 < 历史价格时输出,否则写“今日无异常”)
### 1. [ASIN] - [商品名称]
- 昨日价格:$[历史价格]
- 今日价格:$[今日价格]
- 降价幅度:[降价百分比]%
- 评论新增:[今日评论数 - 历史评论数]
建议:[一句话分析该降价动作的影响及应对策略]
## 二、热度上升商品
(仅当今日评论数 > 历史评论数时输出,否则写“今日无异常”)
### [ASIN] - [商品名称]
- 评论新增:[今日评论数 - 历史评论数]
- 评分:[今日评分]
- 当前价格:$[今日价格]
建议:[一句话分析热度上升的原因及应对策略]
## 三、今日运营建议
1. [针对竞品动作的具体应对建议]
2. [针对自家产品定价/广告的建议]
3. [其他运营动作建议]
输出
12.这个时候就已经基本完成,下面可以试运行测试一下,如果没有问题 ,下一步我们可以选择推送到企业微信/飞书/钉钉等
如下是博主的运行结果:
13.推送到钉钉
上一步没有问题,我们可以选择推送,博主这里选择推送到钉钉
如下步骤:
打开钉钉客户端,进入你想要推送消息的目标群聊。
点击右上角“群设置” → “智能群助手” → “添加机器人”。
选择“自定义”机器人,输入机器人名称(如“AI报告推送”),点击“完成”。
复制弹出的 Webhook 地址,
新增HTTP节点,配置如下参数:
URL:粘贴上一步复制的 Webhook 地址。
Method:POST。
Body Type:JSON。
Headers(可选):Content-Type: application/json。
Body:填写以下 JSON 结构,将 {{你的大模型输出变量}} 替换为你实际的大模型输出变量名:
{
"msgtype": "text",
"text": {
"content": "{{block_output_187189.output}}"
}
}

Step 4:运行工作流
至此,我们已经完成整个流程,下面开始试运行 测试一下,如下是博主的运行结果:
大模型-数据分析节点是输出结果如下:
钉钉推送内容如下:
六、交付物:拿走就能用
为了让所有读者可以零成本、一键复刻、直接落地整套 Amazon 竞品监控方案,我将本次实战项目所有可复用文件、配置截图、使用文档全部整理为标准化交付物,无需逐行对照教程配置,导入即可使用、部署即可运行。
github下载地址:https://github.com/youyoufeifei/amazon-price-monitor-bot.git
使用方法:
由于扣子导入导出都需要会员,这里我们使用邪修一点的方法,首先下载导入文件.txt,复制全部文字内容,打开一个新的工作流粘贴,即可把相关节点都导入该工作流中。
粘贴后,相对应的节点设置:
1.开始节点连接代码-拼接商品URL节点,并且设置输入变量值为开始节点
2.结束节点连接HTTP 请求-推送结果至钉钉节点,并且结束节点输出变量值设置为推送结果至钉钉节点的输出
3.触发爬取请求、下载snapshot结果节点,设置请求头Authorization为你的YOUR_BRIGHTDATA_API_KEY,变量值格式为:Bearer YOUR_BRIGHTDATA_API_KEY
4.大模型-数据清洗、大模型-数据分析节点,选择你需要使用的模型
5.查询上次价格、新增数据节点,选择你自己的数据库
6.HTTP 请求-推送结果至钉钉,url设置你自己的 Webhook 地址
七、成本分析:真正省下的是维护时间
如果只看“抓一个 Amazon 页面”,很多人会低估维护成本。现实是,DIY 方案真正贵的地方不在请求本身,而在:
- 规则失效后的修复时间
- 不稳定数据带来的重复验证
- 工程师持续维护的隐性成本
对比下来更像是这样:
| 方案 | 前期投入 | 月均维护 | 成本结构 |
|---|---|---|---|
| 自建脚本 | 快则几小时,复杂则几天 | 持续修补 | 工程时间成本高 |
| Bright Data + Coze | 不到 1 天 | 很低 | 按成功采集付费 |
对我来说,这种模式最大的优势不是“更便宜”三个字,而是更可控。
尤其当你的目标是做商品入库、选品分析、数据标准化时,稳定性通常比“自己写了多少代码”重要得多。
总结
在跨境电商行业,市场情报的及时性直接决定了定价与投放策略的成败。本项目利用 Bright Data 的企业级采集能力结合 Coze 的 AI 工作流,成功构建了一套全自动竞品监控体系。它不仅彻底解决了人工盯盘效率低、数据非结构化的痛点,更实现了从数据采集到智能分析再到钉钉消息触达的完整闭环,让团队从繁琐的重复劳动中解放出来,专注于核心业务决策。
现在,你也可以像我一样,在清晨收到一份包含深度运营建议的自动化竞品日报。点击👉Bright Data 中文官网注册账号并领取试用额度,搭配本文配置文件,10分钟即可完成部署;若遇技术问题,可查阅交付物 README 或 GitHub 官方教程,快速实现市场监控自动化。
更多推荐




所有评论(0)