竞品的定价页面昨天还是 ¥299,今天你偶然刷到已经变成 ¥199 了——活动可能已经持续了一周,你完全不知道。

或者竞品悄悄更新了产品功能页,加了一个你原本认为是自己独有的卖点。你是从用户那里听到的。

这类信息差每天都在产生,但没有人有时间每天手动去刷竞品官网。OpenClaw 可以替你盯着。本文演示如何搭建这套监控系统。更多资源请访问 OpenClaw 中文版官网

一、监控的原理

整个系统的逻辑很简单:

定时触发 → 抓取目标页面内容 → 和上次保存的版本对比
         → 有变化 → AI 分析变化内容 → 推送通知
         → 无变化 → 静默,等下一次触发

OpenClaw 提供了这套流程所需的所有工具:

  • Cron:定时触发,每小时或每天检查一次
  • web_fetch:抓取目标页面的当前内容
  • read / write:保存上次的快照,下次对比
  • bash:执行 diff 命令,找出变化部分
  • AI 分析:把原始 diff 翻译成”价格从 X 降到 Y”这样人能看懂的描述
  • announce:有变化时推送到你的 Telegram 或微信

二、前置检查:确认工具已开放

/tools
# 需要看到以下工具都在可用列表里:
# ✅ web_fetch
# ✅ read
# ✅ write
# ✅ bash

如果有工具显示 ⛔,参考本系列工具权限配置文章,在 openclaw.json 里把需要的工具加进 tools.exec.allow,重启后生效。

三、最简版:监控单个价格页面

从最简单的场景开始——监控一个竞品的定价页面,有变化就通知你。

第一次运行:保存初始快照

在聊天里直接发给 AI:

用 web_fetch 抓取这个页面的完整文本内容:
https://competitor.com/pricing

把抓取到的内容保存到文件:
~/openclaw_monitors/competitor_pricing_snapshot.txt

保存完成后告诉我文件路径和大致内容摘要(不超过 100 字)。

AI 会抓取页面、保存文件,完成后汇报。这是你的”基准快照”。

配置 Cron 定时检查

openclaw cron add \
  --name "monitor-competitor-pricing" \
  --cron "0 9 * * 1-5" \
  --tz "Asia/Shanghai" \
  --session "isolated" \
  --announce \
  --message "执行竞品定价页面监控检查:

第一步:用 web_fetch 抓取页面当前内容:
https://competitor.com/pricing
把抓取结果保存到临时文件:~/openclaw_monitors/competitor_pricing_new.txt

第二步:用 bash 命令对比新旧文件:
diff ~/openclaw_monitors/competitor_pricing_snapshot.txt ~/openclaw_monitors/competitor_pricing_new.txt

第三步:
- 如果 diff 结果为空(无变化):静默结束,不需要发送任何通知
- 如果 diff 有内容(有变化):
  a. 分析 diff 内容,用人话描述发生了什么变化(重点关注价格数字、套餐内容、功能点)
  b. 把 new 文件覆盖保存为 snapshot 文件(更新基准):
     cp ~/openclaw_monitors/competitor_pricing_new.txt ~/openclaw_monitors/competitor_pricing_snapshot.txt
  c. 发送通知,格式如下:

⚠️ 竞品定价页面有更新!
─────────────────
变化内容:[用人话描述发现了什么变化]
发现时间:[当前时间]
页面地址:https://competitor.com/pricing

建议你手动访问确认详情。"

手动测试一次

openclaw cron run monitor-competitor-pricing

如果页面没有变化,AI 会静默结束;如果你想测试通知效果,可以在 snapshot 文件里随便改一个字,再触发一次,看看通知能不能正常到达。

四、多个竞品同时监控

现实中通常不止盯一个竞品。可以为每个目标页面单独建一个 Cron 任务,也可以在一个任务里批量处理:

openclaw cron add \
  --name "monitor-all-competitors" \
  --cron "0 9 * * 1-5" \
  --tz "Asia/Shanghai" \
  --session "isolated" \
  --announce \
  --message "执行每日竞品监控,依次检查以下页面,每页处理完再处理下一页:

目标列表:
1. 竞品 A 定价页:https://competitorA.com/pricing → 快照文件:~/openclaw_monitors/compA_pricing.txt
2. 竞品 B 功能页:https://competitorB.com/features → 快照文件:~/openclaw_monitors/compB_features.txt
3. 竞品 C 首页:https://competitorC.com → 快照文件:~/openclaw_monitors/compC_home.txt

每个目标的处理流程:
1. web_fetch 抓取当前内容保存为 new 临时文件
2. diff 对比 new 和 snapshot 文件
3. 如果无变化:跳过,继续下一个
4. 如果有变化:记录变化内容,更新 snapshot 文件

所有目标检查完毕后:
- 如果没有任何变化:发送一条简短消息『今日竞品监控:所有目标无变化』
- 如果有变化:逐一列出变化,格式:【竞品名称】+【变化描述】

声明格式简洁,适合手机阅读。"

五、监控价格数字变化(更精准)

如果你只关心价格有没有变,不想被页面的细小文字变动(比如版权年份更新)误报,可以让 AI 只提取价格相关内容做对比:

openclaw cron add \
  --name "monitor-price-only" \
  --cron "0 10 * * 1-5" \
  --tz "Asia/Shanghai" \
  --session "isolated" \
  --announce \
  --message "监控竞品定价页面的价格数字变化:

第一步:用 web_fetch 抓取页面:https://competitor.com/pricing

第二步:从页面内容中只提取价格相关的文本行(包含 ¥、$、元、/月、/年、/人 等关键词的行),
保存到:~/openclaw_monitors/pricing_numbers_new.txt

第三步:对比 ~/openclaw_monitors/pricing_numbers_snapshot.txt

第四步:
- 无变化:静默结束
- 有变化:分析是哪个套餐的价格变了,从多少变成多少,发送通知:

💰 竞品价格变动提醒
─────────────
[具体描述:如「专业版从 ¥299/月 降至 ¥199/月」]
发现时间:[时间]

请手动确认:https://competitor.com/pricing"

六、监控新功能发布和博客更新

除了价格,竞品发了什么新功能、写了什么博客,同样值得关注:

openclaw cron add \
  --name "monitor-competitor-blog" \
  --cron "0 8 * * 1-5" \
  --tz "Asia/Shanghai" \
  --session "isolated" \
  --announce \
  --message "检查竞品博客/更新日志是否有新内容:

目标:https://competitor.com/changelog 或 https://competitor.com/blog

第一步:web_fetch 抓取当前页面,提取所有文章标题、日期和第一段摘要,
保存到 ~/openclaw_monitors/competitor_blog_new.txt

第二步:diff 对比 ~/openclaw_monitors/competitor_blog_snapshot.txt

第三步:
- 无新内容:静默
- 有新条目:
  发送通知,列出新增的文章/更新日志条目:

📢 竞品有新发布!
─────────────
[新增条目的标题 + 日期 + 一句话摘要]
链接:[原文链接如果有的话]

更新快照文件。"

七、使用浏览器工具处理需要 JS 渲染的页面

有些网站的价格是通过 JavaScript 动态加载的,web_fetch 只能抓到 HTML 框架,拿不到实际的价格数字。这时候需要用浏览器工具:

# 首先确认浏览器工具已启用
# openclaw.json 里:
{
  "browser": { "enabled": true },
  "agents": {
    "defaults": {
      "tools": {
        "exec": {
          "allow": ["bash", "read", "write", "browser", "web_fetch"]
        }
      }
    }
  }
}

然后在 Cron 的 message 里改用 browser 工具:

"第一步:用 browser 工具打开页面 https://competitor.com/pricing,
等页面完全加载后截取文本内容(特别是包含价格的部分)......"

浏览器工具会真正打开网页(带 JS 渲染),能看到动态加载的内容,但速度比 web_fetch 慢,Token 消耗也更高,按需使用。

八、快照文件管理

随着监控目标增多,快照文件也会越来越多。建议统一管理:

# 创建专用监控目录
mkdir -p ~/openclaw_monitors

# 查看所有快照文件
ls -lh ~/openclaw_monitors/

# 查看某个快照的内容
cat ~/openclaw_monitors/compA_pricing.txt

# 手动重置某个快照(相当于重新开始计时)
rm ~/openclaw_monitors/compA_pricing.txt
# 然后手动触发一次 Cron 任务让 AI 重新建立快照

也可以定期清理旧的临时文件:

openclaw cron add \
  --name "cleanup-monitor-temp" \
  --cron "0 2 * * 0" \
  --tz "Asia/Shanghai" \
  --session "isolated" \
  --message "删除 ~/openclaw_monitors/ 目录下所有 _new.txt 和 _temp.txt 结尾的临时文件,
并告诉我删除了多少个文件。"

九、常见问题

web_fetch 拿到的内容总是一样,但网站明明改了

可能原因:

  • 网站有 CDN 缓存,web_fetch 拿到的是缓存版本
  • 页面内容是 JS 动态渲染的,web_fetch 抓不到(改用 browser 工具)
  • 目标内容在登录墙后面,未登录状态访问不到

误报太多,每次都说有变化但其实没什么重要的

网站可能有动态时间戳、随机 ID、广告内容等每次都变化的元素。解决方法:在提示词里让 AI 提取关键内容再保存快照,而不是保存整个页面:

"只保存产品名称、价格、套餐包含的功能点这三类内容,
过滤掉日期、时间戳、广告、导航菜单等动态元素"

想监控的网站有反爬,被封了

爬取公开商业网站的公开页面通常是合法的,但频率过高可能触发反爬机制。几个应对方法:

  • 降低监控频率,每天一次比每小时一次更不容易被封
  • 用 browser 工具打开页面,模拟真实用户行为
  • 在提示词里加”等页面完全加载后再提取内容”
  • 如果竞品有公开的 RSS 订阅或 API,优先用这些官方数据源

如何在旅行/出差期间暂停监控

# 暂停所有监控任务
openclaw cron pause monitor-competitor-pricing
openclaw cron pause monitor-all-competitors

# 回来后恢复,顺便更新快照(避免长时间空白期积累大量"变化"误报)
rm ~/openclaw_monitors/*_snapshot.txt   # 清除旧快照
openclaw cron resume monitor-competitor-pricing
openclaw cron run monitor-competitor-pricing   # 立刻运行一次建立新快照

总结

用 OpenClaw 搭建竞品监控系统,核心流程只有四步:

  1. 先手动抓一次,建立初始快照(web_fetch 抓取保存到文件)
  2. 配置 Cron 定时检查,每次运行时抓新版本和快照对比(diff
  3. 有变化让 AI 分析,把 diff 翻译成人话,更新快照,推送通知
  4. 无变化静默结束,不打扰你

从配置完成到第一次有效监控,不超过 15 分钟。配置之后不需要维护,OpenClaw 会按时自动检查,只在发现真正变化时才联系你。

你的注意力很贵,不应该花在”每天刷竞品官网看有没有更新”这件事上。想了解更多 OpenClaw 自动化场景配置,欢迎访问 OpenClaw 中文版官网