工作流
用 AI 智能体做竞品监控:定时抓取 + AI 摘要推送到微信
每天手动刷竞品官网、公众号、定价页——又累又容易漏掉关键更新。本教程教你搭一个「竞品监控 Agent」:定时抓取你盯的目标站点,用 LLM 浓缩成 3 条人话要点,再自动推送到微信 / 邮件 / 飞书。你只需要早上看一眼摘要,重要变化一个不落。这套流水线会复用本中心前两篇的 Firecrawl 抓取与结构化抽取能力。
📡 本教程适合:市场、运营、创始人等需要「持续盯竞品」但没时间天天刷的人。可用 OpenClaw / n8n / 一段 Python 定时任务实现,下面以 Python 定时任务为例,思路通用。
先搞懂:一条监控流水线长什么样
把它拆成 4 段,每段都能单独换工具:
| 环节 | 干什么 | 可用工具 |
|---|---|---|
| 采集 | 定时抓目标页最新内容 | Firecrawl / RSS |
| 比对 | 和上次抓的比,找出变化 | 文本 diff / 哈希 |
| 摘要 | 把变化浓缩成要点 | LLM |
| 推送 | 发到微信/邮件/飞书 | Server 酱 / SMTP / 开放平台 |
没变化就别推送——每天弹一条「无更新」比不弹还烦。流水线必须在「比对」环节做拦截。
Step 1:定义监控清单
1 先列清楚「盯谁、盯什么」
targets = [
{"name": "竞品A官网", "url": "https://a.com/", "watch": "产品/定价页"},
{"name": "竞品B博客", "url": "https://b.com/blog", "watch": "新文章标题"},
{"name": "竞品C定价", "url": "https://c.com/pricing", "watch": "价格数字"},
]
💡 监控粒度越细越好。「盯整站」会抓一堆噪声;「只盯定价页」变化才有意义。配合《文档结构化抽取》把价格直接抽成数字,比对最准。
Step 2:定时抓取 + 和上次的差异比对
2 只关心「变了什么」
用 Firecrawl 抓正文,存一份快照,下次抓来算差异:
import hashlib, json
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="你的Key")
def fetch(url):
return app.scrape_url(url, params={"formats":["markdown"]})["markdown"]
def changed(name, new_text):
h = hashlib.md5(new_text.encode()).hexdigest()
old = cache.get(name) # 读上次快照
cache[name] = h
return old is not None and old != h
diffs = []
for t in targets:
txt = fetch(t["url"])
if changed(t["name"], txt):
diffs.append({"name": t["name"], "text": txt})
用内容哈希判断「变没变」,比字符串 diff 稳——能过滤掉「页脚版权年变了」这类无关噪声,只关心正文实质变化。
Step 3:让 LLM 把变化浓缩成 3 条要点
3 人话摘要,不是全文转发
from openai import OpenAI
client = OpenAI()
def summarize(name, text):
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{
"role":"user",
"content": f"以下是「{name}」本次更新内容,请用不超过3条要点概括"
f"对我校市场最有价值的实质变化,每条一句话:\n{text}"
}]
)
return r.choices[0].message.content
brief = "\n\n".join(f"【{d['name']}】\n{summarize(d['name'], d['text'])}" for d in diffs)
🔑 关键技巧:摘要提示词强调「对我校市场最有价值」,模型才会帮你做过滤,而不是复述更新日志。
Step 4:推送到微信(Server 酱方案,最省事)
4 手机上准时收到摘要
微信个人号没有官方推送接口,最省事的是 Server 酱(或企业微信应用消息):
import requests
def push_wechat(title, content):
# 在 sct.ftqq.com 拿到 SendKey
url = f"https://sctapi.ftqq.com/{SENDKEY}.send"
requests.post(url, data={"title": title, "desp": content})
if brief.strip():
push_wechat("竞品日报", brief)
# 无变化则不调用,静默
推送到飞书/钉钉可用各自开放平台的「群机器人 webhook」,把上面的 push 换成 POST 一个 JSON 即可,思路完全一致。见本中心《飞书/钉钉接入》思路。
Step 5:用定时任务让它每天自动跑
5 不用你点,它自己干
# 本地用 cron,每天早 8:30 跑
# crontab -e
30 8 * * * /usr/bin/python3 /path/monitor.py
# 或用 OpenClaw 的 Heartbeat Cron(无需自己管服务器)
# 在 heartbeat.md 写:每天 08:30 运行竞品监控脚本并推送
🚀 想 7×24 不掉线又不想养服务器,把脚本丢进 OpenClaw 的 Cron,或者用云函数(如 Cloudflare Workers / 阿里云函数计算)定时触发,成本几乎为零。
Step 6:避坑清单
6 上线前对照
| 坑 | 现象 | 解决 |
|---|---|---|
| 无变化也推送 | 每天收到「无更新」 | 比对环节拦截 |
| 抓整站 | 噪声太多 | 只盯具体页面 |
| 摘要太长 | 懒得看 | 限 3 条要点 |
| Key 泄露 | 被冒用 | 环境变量 + 推送 Key 单独存 |
小结
竞品监控 Agent 是「把人从重复刷网页里解放出来」最典型的智能体应用:采集→比对→摘要→推送四段流水线,变化才通知、无变化则静默。它把本中心《Firecrawl 实战》的抓取、《文档结构化抽取》的字段化、《Agent 反馈闭环》的持续优化思路串成了一条可直接用的产品。想更省心,直接用 OpenClaw 的 Cron 托管整套脚本即可。