不用买工具,我用 cron + AI 每天自动盯竞品:从零搭建一个低价情报站

不用买工具,我用 cron + AI 每天自动盯竞品:从零搭建一个低价情报站

· ⏱ 10 分钟阅读 ✍️ spark1 👁 6 次阅读 📂 AI工具教程
🎧 听全文
点击播放,AI语音朗读全文
1.0x
标签 AI工具 自动化 cron 竞品监控 开源实践

竞品每天都在变:价格页微调、功能文案换版、限时活动上线。对普通人来说,靠手动刷新去追这些信息,既费时间,也容易遗漏。但如果你能花 30 分钟搭一套「定时 + AI 总结」的轻量情报站,这件事就可以从「每天刷一遍」变成「每天早上看一眼摘要」。

这套方案不需要付费监控工具,也不需要复杂架构:一个 Node 脚本、一条 cron 定时任务、一个 LLM 接口,再加一个最便宜的告警通道。站内已经用类似思路跑了很久,这篇文章把它简化成任何人都能复现的版本。

一、核心思路:让机器做「抓取」,让 AI 做「理解」

整个流程分成四步:

  1. 定时触发:用 cron 每天固定时间跑一次脚本;
  2. 抓取目标页:把竞品的公开页面(定价页、功能页、更新日志)拉下来;
  3. 提取关键文本:过滤掉导航、广告、footer 等噪声;
  4. 交给 LLM 生成摘要:对比前一次快照,用自然语言输出「今天变了什么」。

关键原则是人只负责看结论,不负责追过程。脚本稳定跑起来之后,你每天收到的是一条飞书/钉钉/微信消息,而不是一堆需要逐页打开的浏览器标签。这套思路和站内的AI 工作流入门一脉相承:都是把重复劳动交给机器,人只保留判断环节。

二、最小可运行版本

下面是一个最简化的 Node 脚本,可以监控任意公开页面。为了可读性,我省去了异常重试、指纹校验等生产细节,但骨架是完整的。

// monitor.js
const https = require('https');
const fs = require('fs');
const crypto = require('crypto');

const TARGETS = [
  { name: 'Example 定价页', url: 'https://example.com/pricing' },
  { name: 'Example 更新日志', url: 'https://example.com/changelog' }
];
const DB_FILE = './snapshots.json';

function fetch(url) {
  return new Promise((resolve, reject) => {
    https.get(url, { headers: { 'User-Agent': 'Mozilla/5.0' } }, (res) => {
      const chunks = [];
      res.on('data', d => chunks.push(d));
      res.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
    }).on('error', reject);
  });
}

function digest(text) {
  return crypto.createHash('sha256').update(text).digest('hex').slice(0, 16);
}

async function main() {
  const db = fs.existsSync(DB_FILE) ? JSON.parse(fs.readFileSync(DB_FILE)) : {};
  const report = [];

  for (const t of TARGETS) {
    try {
      const html = await fetch(t.url);
      // 生产环境这里会再跑一遍 HTML 清洗,提取正文、价格、标题等
      const hash = digest(html);
      if (db[t.url] !== hash) {
        db[t.url] = hash;
        report.push({ name: t.name, url: t.url, changed: true });
      }
    } catch (err) {
      report.push({ name: t.name, url: t.url, error: err.message });
    }
  }

  fs.writeFileSync(DB_FILE, JSON.stringify(db, null, 2));
  console.log(JSON.stringify(report, null, 2));
}

main();

把这段脚本存成 monitor.js,测试一次:

node monitor.js

第一次运行会生成 snapshots.json,记录每个页面的内容指纹。之后每次运行,只要页面内容变了,就会输出一条变更记录。

三、用 cron 把它变成自动化任务

Linux/macOS 系统自带 cron,让脚本每天 8 点 30 分运行一次:

# 编辑 crontab
crontab -e

# 添加一行(路径换成你的真实路径)
30 8 * * * cd /home/yourname/monitor && /usr/bin/node monitor.js >> /var/log/monitor.log 2>&1

这样每天上午 8:30,脚本会自动跑一次,把结果追加到日志里。如果你想更频繁,比如每小时一次,把 30 8 改成 0 * 即可。

如果你用的是 Windows,可以用「任务计划程序」达到同样效果;如果是云服务器,建议把脚本和日志放在 /opt 或 /home 下,避免占用系统目录。

四、引入 AI:把原始 diff 变成可读摘要

上面的脚本只能告诉你「变了」,但不知道「变了什么」。下一步是把变化内容交给 LLM,让它生成一段人话摘要。

const { callLLMNoCharge } = require('./lib/ai-service');

async function summarizeDiff(oldText, newText) {
  const prompt = `下面是一个网页的旧文本和新文本片段,请用中文总结主要变化,控制在 100 字以内,只讲对用户可能有影响的内容:

旧文本片段:
${oldText.slice(0, 2000)}

新文本片段:
${newText.slice(0, 2000)}`;

  const { content } = await callLLMNoCharge({
    tool: 'competitor-summary',
    systemPrompt: '你是竞品情报分析师,只输出事实摘要,不做主观评价。',
    userMessage: prompt,
    jsonMode: false,
    maxTokens: 600
  });

  return content;
}

生产环境里,我们会把前一次抓取的完整文本也存下来,和新版本做 diff,再交给 LLM。这样它不仅能说「价格变了」,还能说「高级版月费从 69 元涨到 139 元」。

如果你还没有自己的 LLM 接入层,可以直接调用百炼、OpenAI 或 Claude 的 API,把 prompt 里的文本控制在 4000 字以内即可。

五、告警通道:越便宜越好

情报只有送达才有价值。最低成本的方案是:

我推荐先用 webhook,因为设置最简单,5 分钟就能跑通。下面是一个飞书 webhook 的示例:

const http = require('http');

function sendFeishu(webhook, text) {
  const body = JSON.stringify({ msg_type: 'text', content: { text } });
  const req = http.request(webhook, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) }
  }, (res) => { /* 可选:检查 res.statusCode */ });
  req.write(body);
  req.end();
}

六、真实运行中要注意的三个坑

1. 页面动态渲染抓不到内容

很多现代网站是客户端渲染的,直接 https.get 只能拿到一个空壳。解决方案是用 Playwright 或 Puppeteer 先把页面跑起来再抓取。代价是依赖更重、启动更慢,建议只对必须渲染的目标使用。关于把自动化权限交给第三方工具之前应该问清哪些问题,可以读一下AI 操作电脑三问里的判断顺序。

2. 不要把「例行构建」误判为「重大变化」

有些网站每次构建都会换版本号、nonce、时间戳,导致 diff 永远不为空。解决办法是给变化分级:只关注 title、keywords、H1、价格字段和官方更新条目,其他字段的变化打为「例行构建滚动」不予告警。

3. 小心频率和版权

抓取公开页面通常没问题,但不要把频率调得太高(建议每天 1-2 次),也不要绕过反爬或抓取付费内容。你的目标是「监测公开信息」,不是「爬取数据库」。

七、从「盯竞品」到「管信息」

这套方法不限于竞品监控。你可以用同样的 cron + AI 组合做:

核心思路是一致的:把重复性的信息收集交给 cron,把理解成本交给 AI,人只负责做决策。

站内已有不少相关工具可以帮你完成这套流程中的不同环节:

自动化不是让你彻底放手,而是把你从「反复查看」中解放出来,把精力留给真正需要判断的地方。

常见问答

Q: 这套方案需要服务器吗?

不一定。最轻量的做法是在自己电脑或树莓派上跑 cron;如果你有长期开机的电脑或 NAS,直接放上面即可。只有当需要 24 小时不间断监控时,才需要租一台最便宜的云服务器。

Q: 如果我想监控的是 APP 或小程序里的价格,怎么办?

公开网页最容易抓;APP 和小程序通常需要抓包或逆向,复杂度会高很多。对普通用户来说,优先监控官网、公开定价页和官方更新日志,性价比最高。如果你确实需要监控 APP 内容,建议先从「有没有公开网页版」开始查。

Q: AI 摘要会不会编造变化?

会。LLM 可能把无关的文本差异渲染成「重大更新」。降低风险的办法是:① 把新旧文本一起喂给 AI,让它基于原文总结;② 要求 AI 只引用原文中的具体字段,不发散;③ 关键结论人工二次确认。这套方案的定位是「降低信息噪音」,不是替代人工判断。

📄 版权声明:本文由 AI家园 团队创作。欢迎非商业性转载或引用,转载时须注明原文出处并保留原文链接;商业使用请事先联系授权。

本文链接:https://spark1.cn/articles/20261005-bu-yong-mai-gong-ju-wo-yong-cron-ai-mei-tian-zi-dong-ding-jing-pin-cong-ling-da · 转载规则详见《服务条款》

🎁 喜欢这篇文章?获取更多干货

关注公众号「xAI智工场」

关注公众号「xAI智工场」

每天一个AI干货
回复「提示词」免费领实战模板包

💬

加入AI交流群

微信号:xaizgc
和AI爱好者一起成长

⭐ 深度精选
⭐

知识星球·深度圈

系统课程 · 社群答疑 · 资源库
¥99/年

立即加入 →
分享到

💡 想用 AI 马上搞定这件事?

查看全部 AI 工具 →

💬 评论

加载中...

转载或引用本站内容请注明原文出处及链接 · 转载规则

Copyright © 2026 AI家园 浙ICP备2024142181号-2 浙公网安备 33010202005420号