2026-09-06 · 原文发布日
博物馆微气候异常自动分级与派单
付费模板。每半小时拉一次各展厅温湿度传感器数据,与Postgres里的上次读数比对,只保留超过阈值的变化;OpenAI对这些异常做结构化文保风险评估并给出建议响应窗口,再算出严重度分流:一般异常建Jira任务,紧急的发Slack提醒,证据JSON归档到Google Drive,最后把新快照写回数据库供下次比对和审计。阈值、提示词、通知渠道都可改。
原文要点
这是Swapnil Mandloi发布的付费n8n模板:定时器每30分钟扫描一次,从传感器厂商HTTP API取各展厅温湿度,与Postgres中上次读数比对,只保留超过RH或温度变化阈值的读数;超阈值的读数经OpenAI结构化抽取得到文保风险评估与建议响应窗口,再与实测差值合成严重度并分为watch/urgent/critical三路,分别建Jira工单、发Slack告警、把证据JSON归档到Google Drive,最后把新快照写回Postgres。作者称配置耗时约35–50分钟,外部动作失败重试3次间隔2秒。
这次做成什么
在自有n8n实例中照此思路搭一条博物馆微气候异常分级派单练习流:定时拉取模拟传感器数据→与Postgres上次快照比对→仅对超阈值展厅调用AI风险评估→按严重度分流到Jira/Slack/Drive→写回快照。原模板需付费购买,本页是本站按其公开说明独立设计的等价练习方案,不是原工作流文件;OpenAI、Jira等第三方服务可能另行收费。
准备什么
- 自托管或n8n Cloud实例,且可访问外网HTTP节点
- 一个可用的PostgreSQL数据库及具备建表、读写权限的账号
- OpenAI API Key(建议用便宜的mini级模型做练习)
- Jira项目、Slack Bot、Google Drive账号,练习时可先换成邮箱或Webhook占位
- 本页下方提供的合成展厅测试数据,不连接真实传感器
具体怎么做
建状态表与快照表
在Postgres执行下方DDL:prior_state表按zone_id存上次温湿度,snapshots表存每次运行的captured_at与readings_json审计记录。先用INSERT写入3个展厅的基线读数(如A厅温度20.0、湿度50.0)。
定时触发并拉取传感器读数
添加Schedule Trigger设为每30分钟;接HTTP Request节点指向传感器API(练习时改用Mock接口或Webhook.site返回下方合成JSON),Header带上厂商凭据;再用Postgres节点SELECT prior_state全表,把两路数据用Merge按zone_id对齐。
计算差值并过滤超阈值读数
在Code节点对每个zone计算Δtemp与ΔRH绝对值,只保留ΔRH≥4个百分点或Δtemp≥1.5℃的展厅(阈值按自己政策改),输出changed数组;无异常时走空分支直接写快照,不调用AI以省钱。
AI结构化风险评估
用OpenAI节点配Structured Output,粘贴下方评估提示词,把changed数组中每条读数连同差值一起送入,要求返回risk_level、evidence、response_window_hours三个字段;随后Code节点把AI结果与差值合成severity=基础分+差值加权,映射为watch/urgent/critical。
按严重度三路分流
Switch节点按route分流:watch建Jira工单(填项目Key、摘要含zone_id与差值),urgent额外发Slack告警到指定频道,critical两者都做并把该条证据JSON上传到Google Drive指定文件夹;三路用Merge汇合。
写回快照并试跑
最后用Postgres节点把本次全部读数INSERT进snapshots并UPSERT更新prior_state;手动Execute一次,确认只有超阈值的展厅产生工单/消息,基线数据第二次跑时应无异常。
可直接复制的材料
Postgres状态与快照表DDL
本站独立编写的练习表结构,字段名需与实际工作流查询对齐后使用
CREATE TABLE prior_state (
zone_id TEXT PRIMARY KEY,
temperature_c NUMERIC(5,2) NOT NULL,
rh_pct NUMERIC(5,2) NOT NULL,
updated_at TIMESTAMPTZ DEFAULT now()
);
CREATE TABLE snapshots (
id BIGSERIAL PRIMARY KEY,
captured_at TIMESTAMPTZ NOT NULL DEFAULT now(),
readings_json JSONB NOT NULL
);
INSERT INTO prior_state (zone_id, temperature_c, rh_pct) VALUES
('hall-a', 20.0, 50.0),
('hall-b', 21.0, 55.0),
('hall-c', 19.5, 48.0);文保风险评估提示词
本站独立编写的练习提示词,藏品敏感性规则应请本馆文保人员确认后调整
你是博物馆预防性保护助理。下面是某展厅相对于上次读数的微气候变化数据(JSON):
{"zone_id":"{{zone_id}}","temperature_c":{{temperature_c}},"rh_pct":{{rh_pct}},"delta_temp_c":{{delta_temp_c}},"delta_rh_pct":{{delta_rh_pct}}}
请只输出JSON,不要输出其他文字,字段如下:
risk_level:low/medium/high 之一,依据纸质、纺织品与木质藏品对湿度骤变的常见敏感性判断;
evidence:一句话说明判断依据,引用具体差值;
response_window_hours:建议多少小时内到场处理,high不超过4小时,medium不超过24小时,low不超过72小时。合成传感器测试数据
配合上方基线,仅hall-b会超阈值(ΔRH=7.5、Δtemp=2.4),用于验证过滤逻辑
[
{"zone_id":"hall-a","temperature_c":20.3,"rh_pct":50.8},
{"zone_id":"hall-b","temperature_c":23.4,"rh_pct":62.5},
{"zone_id":"hall-c","temperature_c":19.6,"rh_pct":48.2}
]输入与输出示例
本站虚构演示输出,字段与上方提示词约定一致,非原作者运行结果
输入
hall-b本次读数temperature_c=23.4、rh_pct=62.5,基线为21.0/55.0,即Δtemp=2.4℃、ΔRH=7.5个百分点,超过阈值对应输出
{"zone_id":"hall-b","risk_level":"high","evidence":"相对湿度半小时内上升7.5个百分点并伴随2.4℃升温,纸张与纺织品藏品存在吸湿变形风险","response_window_hours":4,"route":"urgent"}做完检查这些
- 第二次手动运行时无新差值,OpenAI节点不触发,Jira与Slack均无新增内容
- hall-b测试数据触发后,Jira工单摘要中包含zone_id=hall-b与ΔRH=7.5
- snapshots表每次运行新增一行且readings_json包含全部3个展厅读数
- prior_state在运行后更新为本次读数,供下一轮比对
容易卡住的地方
- 原模板需付费购买,本页为等价练习方案,节点名与按钮位置需以你实际导入或自建的流程为准
- 传感器标签可能暴露藏品位置,Drive/Jira/数据库权限要按最小化原则配置
- AI评估不替代文保人员判断,传感器校准与藏品敏感性数据需人工维护
- 模型调用按变更条目数计费,阈值设太低会让每次扫描都调AI推高费用
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Triage museum microclimate excursions with OpenAI, Jira, Slack, and Google Drive
- 原作者
- Swapnil Mandloi
- 原始发布日期
- 2026-09-06T05:03:27.217Z
- 来源
- https://n8n.io/workflows/19274