AI PLAY玩法更新持续收录
← 回到更新流

2026-09-10 · 原文发布日

网页截图对比,有实质变化才发邮件提醒

每六小时用Browserless加载目标网页截图并带时间戳存档到Google Drive,首次运行建基线;之后每次把新旧两张截图一起发给Gemini判断是NO_CHANGE还是CHANGED并附一句描述,刻意忽略无关视觉噪声,只有判定有变化时才通过Gmail发出说明邮件,同时更新状态表里的最新截图ID。配置只需目标URL、Drive文件夹和通知邮箱三项。

原文要点

原模板事实:每6小时触发;Browserless打开目标URL截图,以带时间戳文件名上传到指定Google Drive文件夹;首次运行把截图ID写入n8n Data Table作基线并发基线邮件;后续运行取回上一张截图,与新截图一起交给Google Gemini,要求只输出NO_CHANGE或CHANGED加一句描述,并忽略琐碎视觉噪声;仅CHANGED时经Gmail发提醒,同时更新状态表里的最新截图ID与时间戳。配置项只有targetUrl、driveFolderId、notifyEmail。

这次做成什么

在站内照着搭一个“网页实质变化才提醒”的独立练习版:用n8n计划触发,截图存档,双图交给Gemini做二分类,只有CHANGED发邮件;不导入原工作流文件,不宣称复刻作者环境。

准备什么

  • n8n可用实例,能使用Schedule Trigger、HTTP Request、Google Drive、Gmail、Gemini/Google AI节点
  • Browserless自托管或云端服务地址与访问凭据,仅用于测试页
  • 一个可公开访问的测试网页URL,建议自己搭建并可控改字
  • Google Drive文件夹ID,凭据具备该文件夹上传下载权限
  • Gmail或Google Workspace发信凭据,通知邮箱用测试别名
  • Gemini API凭据;调用可能产生费用由各自平台计费

具体怎么做

  1. 建三项配置与状态表

    在n8n新建工作流,开头放Manual Trigger便于联调,后接Set节点命名Configuration,写入targetUrl、driveFolderId、notifyEmail三个字符串。再建一个Data Table或先用Google Sheet模拟,列固定为url_key,latest_file_id,latest_at,status;url_key用targetUrl的域名加路径去掉斜杠,保证同一URL只一行。

  2. 定时截图并上传存档

    把Manual Trigger换成Schedule Trigger,间隔设6小时;联调阶段先保持手动。HTTP Request调用Browserless截图接口/截图端点,按你的Browserless文档填地址与凭据,请求体只放url、fullPage:true、viewport:{"width":1366,"height":900};返回二进制后接Google Drive Upload,文件名用watch_{{$now.toFormat('yyyyLLdd_HHmmss')}}.png,父文件夹填driveFolderId,输出保留fileId与webViewLink。

  3. 首次基线与后续取旧图

    上传后用Data Table Lookup按url_key查询;无记录则Insert写入latest_file_id为当前fileId、status为BASELINE,并用Gmail发“已建立基线”邮件,流程结束。有记录则用Google Drive Download下载latest_file_id对应旧图,再把旧图二进制与新图二进制放进同一Item的两个binary属性,命名old.png与new.png。

  4. Gemini二分类与条件发信

    Gemini/Google AI节点选择支持图片输入的对话能力,system与user提示词用下方材料,要求严格输出JSON。后接IF节点:expression判断{{$json.change}}是否等于CHANGED且confidence>=0.7;真分支先用Gmail给notifyEmail发邮件,主题“网页有实质变化”,正文含description、新旧Drive链接、本次fileId;再Update状态表latest_file_id与latest_at。假分支只更新latest_at不更新latest_file_id,便于人工回看。

可直接复制的材料

练习配置与状态表结构

本站独立练习配置;driveFolderId、邮箱、URL需替换;schedule间隔来自原模板,实际用隔离测试页。

{
  "configuration": {
    "targetUrl": "https://example.com/status-demo",
    "driveFolderId": "1AbC_DefGhIjKlMnOpQrStUv",
    "notifyEmail": "alerts+watch@example.com"
  },
  "stateTable": {
    "name": "site_watch_state",
    "columns": [
      {"key": "url_key", "type": "string"},
      {"key": "latest_file_id", "type": "string"},
      {"key": "latest_at", "type": "datetime"},
      {"key": "status", "type": "string"}
    ],
    "uniqueKey": "url_key"
  },
  "schedule": {"mode": "every6Hours", "manualFirstRun": true}
}

Gemini双图判定提示词

本站编写;需在Gemini节点同时附old.png与new.png两个binary;阈值0.7是本站练习值,可在原模板核对默认值。

你是网页变更判定器。输入有两张同一URL的截图:old.png为上一基线,new.png为当前截图。只判断对用户有意义的实质变化:新增/删除/改价/售罄/公告/正文大段变更/导航结构调整。忽略广告轮播、时间戳、在线人数、推荐位顺序、 Cookie横幅、字体渲染微差、滚动位置与1-2像素偏移。必须只输出一行JSON,不要Markdown:{"change":"NO_CHANGE"或"CHANGED","confidence":0到1,"description":"一句不超过40字中文说明"}。若无法读取图片,输出{"change":"NO_CHANGE","confidence":0.2,"description":"图像不可读,转入人工"}。

测试用状态表CSV

合成CSV,仅用于Lookup/Update联调;file_id为虚构,不代表真实Drive文件。

url_key,latest_file_id,latest_at,status
example.com_status-demo,DRV_OLD_FILE_001,2026-09-10T00:00:00Z,WATCHING
blog.example.net_release,DRV_OLD_FILE_778,2026-09-09T18:00:00Z,WATCHING

输入与输出示例

本站虚构演示,未调用Gemini;DRV_*与图片内容为练习占位,真实结果以你的模型与页面为准。

输入

targetUrl=https://example.com/status-demo;状态表已有latest_file_id=DRV_OLD_FILE_001;旧图为“库存充足”,新图同页中部出现红色“今日售罄”横幅,其余仅广告顺序不同。

对应输出

Gemini应返回:{"change":"CHANGED","confidence":0.91,"description":"商品状态从库存充足变为今日售罄"};IF进入真分支,Gmail主题“网页有实质变化”,正文含该描述与新旧截图链接,状态表latest_file_id更新为DRV_NEW_FILE_205。

做完检查这些

  • 第一次手动运行后状态表出现一行且status=BASELINE,同时收到基线邮件,不产生变化提醒
  • 同一URL第二次运行能按url_key找到旧fileId,并同时把old.png与new.png送入Gemini,不会只发新图
  • 新图仅改广告顺序或时钟时输出NO_CHANGE,不发邮件,但latest_at被刷新
  • 新图出现价格、售罄或大段正文变化时输出CHANGED,邮件正文包含description与新截图fileId
  • Drive凭据失效、文件夹无权限或Gemini返回非JSON时流程进入错误分支并停止,不写坏状态表

容易卡住的地方

  • 必须先用Manual Trigger建基线,否则首次调度会把旧状态当成缺失或重复发基线邮件
  • Google Drive文件夹要同时允许上传与下载;只读共享会导致后续取旧图失败
  • Browserless地址、端口与认证方式依你的部署而定,本站不伪造可运行命令
  • Gemini输出偶发带解释文字,提示词已限制一行JSON,仍要加JSON解析失败保护
  • 对动态广告多的页面,关键词过滤比像素比较更稳;不要把置信度阈值当作作者承诺

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Send webpage change alerts with Browserless, Google Drive, Gemini and Gmail
原作者
Vardaan Gupta
原始发布日期
2026-09-10T14:00:37.376Z
来源
https://n8n.io/workflows/19449