每天手动翻十几个站点看竞品更新,是最容易半途而废的一类活儿。下面这套流程把「找变化—判轻重—写摘要—发到群」串成一条流水线,5 步搭好,之后每天自动跑,你要做的只是看结果。
第 1 步:先圈定三类信号源,别贪多
- 官方侧:产品更新日志(changelog)、定价页、帮助中心、招聘页(招什么岗位,往往等于要做什么方向)。
- 市场侧:应用商店与插件市场的差评、新增评论、Reddit / 即刻 / V2EX 的相关讨论。
- 传播侧:行业媒体标题、竞品创始人的公开动态。
起步建议:每个竞品先选 3~5 个源,全公司合计不超过 30 个源。源太多,日报会直接退化成「噪音日报」,三天后没人看。
第 2 步:抓取优先用 RSS,浏览器型 Agent 只做兜底
优先级顺序是:有 RSS 就用 RSS;没有就看能不能用 RSSHub 这类路由规则生成;实在不行,才上无头浏览器或浏览器 Agent 定时取 DOM。
理由很朴素:RSS 结构化、便宜、稳定;浏览器抓取贵、易碎、还容易被反爬拦住。把最贵的工具只留给最必要的两三个页面。
抓取频率按信息价值分档:changelog 每 6~12 小时一次,定价页每天一次,评论区每 12 小时一次。不要所有源都设成 5 分钟轮询,那是给自己找封禁。
第 3 步:变更检测交给哈希,不要交给大模型
这一步最容易做错。正确做法是:把抓到的正文抽成纯文本 → 归一化(去空白、去时间戳、去「阅读量/推荐」这类噪音)→ 计算 SimHash 或 MinHash → 与上一次比对。只有哈希变化,才进入下一步。
如果让模型判断「内容有没有变」,既贵又会出现「没变说变了」的幻觉,日报立刻失去可信度。
定价页要单独处理:只保留数字与套餐名再做比对。否则一次页面改版,会把整个套餐表报成「重大变化」。
第 4 步:让模型输出固定字段,而不是一段散文
在 prompt 里写死输出结构,建议字段为:source、what_changed、signal_type(定价 / 功能 / 人事 / 舆情)、impact(1~5)、why_it_matters(一句话)、suggested_action。
三个关键细节:
- 只喂「变化前后的文本」,不要喂整页 HTML,省 token 也降噪。
- 要求引用原文片段,引号内的内容必须逐字来自输入;没有引用支撑的字段直接丢弃。这是目前压幻觉最有效的一招。
- impact 打分必须给判定标准,例如「影响我们现有客户 30% 以上记 5 分」。没有标准,模型每天都会给你打 5 分。
第 5 步:推送加归档,留一条可回溯的链
- 推送:飞书或企微群机器人、邮件都行。按 impact 排序,只推 3 分以上的条目摘要,5 分的单独 @ 负责人。
- 归档:每天把原始条目写成 Markdown 落到本地目录或 Git 仓库,格式为「日期—来源—变化内容—哈希」。这样做的好处是,模型换了、提示词改了,历史仍可复盘。
- 周汇总:周会前用一个总结类 prompt,把 7 天条目合成一页趋势。看趋势比每天刷十条零碎消息有用得多。
三个常见坑
一、日报变成「抓取成功报告」。 抓不到内容时不要静默失败,要发一条「源 X 已连续 3 天抓取失败」。否则你很可能在一个月后才发现监控早就断了。
二、成本失控。 别每次变化都调用最强模型。降级策略是:小变化用便宜的小模型做分类,只有 impact 可能高的条目才升级到大模型。
三、版权与合规。 摘要引用要短,别整段搬运;遵守站点 robots.txt 与使用条款,内部使用也别公开原文。
一句话总结
在这套流程里,大模型只负责「写摘要、判轻重」,抓取和变更检测交给确定性代码。分工摆对,5 步搭完,每天花在竞品上的时间可以从 40 分钟降到 5 分钟——而且你终于能说得清,昨天那条情报是从哪个源、哪次变化里来的。