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

2026-09-14 · 原文发布日

n8n模板:按天气预报自动调度除雪除冰班组

免费模板,每3小时读取Google Sheets中的站点清单与触发条件,用Open-Meteo逐站查未来12小时预报,达到降雪或冻雨阈值就把派单清单交给OpenAI生成风暴摘要、班组简报和客户通知,经Gmail与Telegram发出并记入派单表;班组通过webhook回执后自动更新状态、通知客户,另有每日扫尾提醒超过6小时未确认的单。气象数据免费。

原文要点

模板由Khairul Muhtadin发布于n8n(2026-09更新),免费。工作流每3小时定时(或用 /snow/check Webhook手动触发)读取Google Sheets的Sites站点清单并校验必填字段(ID、经纬度、触发阈值、邮箱),无效行发管理员Gmail、Telegram并写入Errors页;用免费的Open-Meteo接口逐站取2天逐小时预报,按各站降雪阈值和冻雨条件评估未来12小时,命中则把派单清单交OpenAI生成风暴摘要、班组简报和客户通知;在DispatchLog建派单行,经Gmail发简报与通知并发Telegram;班组通过 /snow/confirm Webhook回执后更新状态、给客户发完成邮件并通知负责人;每日扫尾(或 /snow/followup 手动)找出超过6小时仍为dispatched的单并催办。每次扫描写入CheckLog统计。气象数据免费。

这次做成什么

搭一套按天气预报自动派除雪班组的闭环:读站点表→查预报→阈值判定→AI写简报→派单与通知→回执更新→超时催办。本站设计先用两三个虚构站点和合成凭据跑通,再接真实站点与真实班组邮箱。

准备什么

  • n8n 1.0以上自托管或n8n Cloud实例,可建Schedule、Webhook和OAuth凭证
  • 一个Google Sheets工作簿,建好Sites、DispatchLog、CheckLog、Errors四个分页
  • Google Sheets OAuth2与Gmail OAuth2凭证(练习请用测试账号,别用真实客户邮箱)
  • OpenAI API Key或兼容的聊天模型服务
  • Telegram Bot凭证及目标chat ID;Open-Meteo无需密钥

具体怎么做

  1. 建表并对齐列名

    在Google Sheets建四个分页。Sites列:site_id、site_name、lat、lon、trigger_cm、freezing_rain_watch、crew_email、contact_email、active。DispatchLog列:dispatch_id、site_id、dispatched_at、status、completed_at、crew_email。CheckLog与Errors列按模板读取字段补齐。把下方合成CSV导入Sites。

  2. 导入模板并替换文档ID

    导入模板后,在所有Google Sheets节点把spreadsheet文档ID换成你的工作簿ID,分页名如不同一并改;填入Sheets与Gmail的OAuth凭证,替换节点里管理员/负责人邮箱占位符。

  3. 核对Open-Meteo请求与阈值判定

    打开HTTP请求节点确认它按每站lat/lon请求Open-Meteo的逐小时预报(2天),随后判定节点只评估未来12小时:降雪量达到该站trigger_cm或出现冻雨条件即进入派单清单。可用Code节点在测试时手工注入假预报值,验证阈值边界(如恰好等于trigger_cm算不算触发,需在节点里确认比较符)。

  4. 配置AI简报生成

    在OpenAI节点粘贴下方提示词,传入派单站点清单JSON,让模型对每个站点输出stormSummary、crewBrief、clientNotice三段文本;确认节点内模型在你的账号可用。

  5. 打通派单、回执与催办

    激活 /snow/check、/snow/confirm、/snow/followup 三个Webhook并复制URL。派单分支在DispatchLog写入status=dispatched并发Gmail+Telegram;用下方合成回执POST到 /snow/confirm,确认对应行status变completed、客户收到完成邮件;把某行dispatched_at改成7小时前再触发 /snow/followup,确认收到催办通知。

可直接复制的材料

AI班组简报生成提示词(可直接粘贴)

本站独立编写。{{ $json.dispatchList }}为n8n表达式占位,需按实际字段路径调整;具体措辞和是否含“到场时限”可按公司服务承诺修改。

你是除雪除冰调度文案助手。输入是本轮需要派单的站点清单JSON,每个站点含site_id、site_name、未来12小时预报摘要(预计降雪量cm、是否有冻雨、起止时段)、trigger_cm。
请为每个站点输出一个JSON数组元素,只输出JSON,不要输出其他文字:
[{"site_id":"站点ID","stormSummary":"一段话风暴摘要,含预计降雪量、冻雨风险和时间窗","crewBrief":"给班组的简报:到场时限建议、作业重点(车道/人行道/出入口)、冻雨时撒布提醒、安全注意事项","clientNotice":"给客户的通知:我们已监测到贵站点将触发服务条件,班组已安排,作业完成后会再通知"}]
要求:不编造输入中没有的气象数值;时间用24小时制;语气简洁专业。
站点清单JSON:{{ $json.dispatchList }}

Sites分页合成示例数据(CSV)

全部为虚构站点与测试邮箱(example.test为保留测试域),坐标落在哈尔滨附近仅为练习参考值;导入时保持列名与模板读取字段一致。

site_id,site_name,lat,lon,trigger_cm,freezing_rain_watch,crew_email,contact_email,active
ST-001,北岭物流园,45.772,126.634,2.0,true,crew-a@example.test,manager-a@example.test,true
ST-002,河畔小学,45.741,126.681,1.0,true,crew-b@example.test,office-b@example.test,true
ST-003,南山停车场,45.698,126.590,3.0,false,crew-a@example.test,ops-c@example.test,false

班组回执测试数据(POST /snow/confirm)

dispatch_id需与DispatchLog中已存在的一行匹配才能走更新分支;用不存在的ID可验证错误分支会报告dispatch ID缺失或未知。

{
  "dispatch_id": "DSP-20260203-0001",
  "site_id": "ST-001",
  "status": "completed",
  "completed_at": "2026-02-03T14:20:00+08:00",
  "crew_note": "主干道与出入口已清理,撒布融雪剂两遍(合成测试记录)",
  "reported_by": "练习账号"
}

输入与输出示例

本站虚构演示,预报值为测试注入,非模板真实运行结果;具体dispatch_id格式需以模板实际生成为准。

输入

Sites表按上方CSV配置,ST-001(阈值2.0cm)模拟预报未来12小时降雪3.5cm且有冻雨时段,ST-002(阈值1.0cm)预报降雪0.4cm,ST-003为inactive。触发一次 /snow/check。

对应输出

本轮扫描结果示意:CheckLog新增一行{"checked":2,"dispatched":1,"noAction":1,"rejected":0};DispatchLog新增{"dispatch_id":"DSP-20260203-0001","site_id":"ST-001","status":"dispatched"};AI输出中ST-001的crewBrief含“预计降雪约3.5cm并伴冻雨时段,优先清理车道与出入口,注意撒布防滑”;班组POST回执后该行status更新为completed,负责人Telegram收到完成提醒。

做完检查这些

  • ST-003因active=false不进入预报请求,ST-001触发派单而ST-002不触发,与各自阈值一致
  • DispatchLog新行status为dispatched,Gmail发出班组简报与客户通知,Telegram收到派单提醒
  • POST /snow/confirm后对应行更新为completed并写completed_at,未知dispatch_id走错误分支有明确报错
  • 把dispatched_at改为7小时前后触发 /snow/followup,收到该单的催办邮件与Telegram提醒

容易卡住的地方

  • 四个分页的名称与列名必须与模板读取字段完全一致,否则整行被判无效并写入Errors页
  • 阈值比较符(大于还是大于等于)和冻雨判定条件需在判定节点内亲自确认,模板说明未给出精确边界
  • 经纬度若格式错误会导致Open-Meteo请求失败,先在浏览器手工拼一次请求验证坐标
  • 练习时务必用测试邮箱和测试chat,避免把合成简报发给真实客户
  • Open-Meteo免费但不保证极端天气下的更新时延,关键业务应保留人工复核环节

原文与作者资料 ↗

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

原文标题
Dispatch snow and ice crews from forecasts with Open-Meteo, GPT-4o and Gmail
原作者
Khairul Muhtadin
原始发布日期
2026-09-14T11:23:35.707Z
来源
https://n8n.io/workflows/19569