前言

就在今天早上,当我还在悠闲地喝着早茶时,我的钉钉准时收到了一份推送。打开一看,是一份条理清晰的《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&notify=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 官方教程,快速实现市场监控自动化。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐