2026-09-17 · 原文发布日
用Claude Vision分析Prey截图判断设备是否闲置
这个n8n流程由webhook触发,从设备管理软件Prey拉取指定时间窗口内的屏幕截图,均匀抽样后按时间顺序发给Claude视觉接口,让模型判断画面变化是否代表真实使用,输出含idle真假值与摘要的JSON。内置冷却时间和最小数据量门槛,截图不足时直接返回空结果,避免误报,适合做远程设备状态监控的人。
原文要点
该n8n流程由webhook(路径 /prey-idle-check)或手动触发,先做工作流级冷却检查,距今上次分析太近就直接提前停止。随后用Prey API拉取指定设备近期的报告,只保留配置时间窗口内带截图的报告;截图数量不足min_reports或首尾时间跨度小于min_span_minutes时返回 idle:null 的空结果。通过门槛后按均匀抽样最多取max_images张截图,逐张从Prey下载并按时间顺序打包,发给Anthropic Messages API的Claude Vision判断画面变化是否代表真实使用,解析模型JSON后输出含idle真假值、简短摘要和被分析报告元数据的最终JSON。window_minutes、min_reports、min_span_minutes、max_images、cooldown_minutes五个控制值均可配置。
这次做成什么
在本站设计的隔离练习中搭通这条“webhook→冷却判断→拉Prey截图→抽样→Claude Vision判定→JSON结论”的链路,并用合成数据验证冷却提前停止与数据不足返回idle:null两个分支。
准备什么
- 一个Prey账号及目标设备ID,且该设备近期有含屏幕截图的报告(练习环境请勿用生产设备)
- Anthropic API密钥,可调用带视觉能力的Claude Messages接口
- 可接收外部POST的n8n实例,webhook路径可公开访问
- n8n工作流模板19686已导入并可编辑控制参数
具体怎么做
配置两组凭据与设备
在n8n凭据页新建Prey API凭据(按Prey开发者文档生成的API Key),在拉取报告的节点里选定目标device ID;再建Anthropic API凭据供Claude Vision的HTTP请求节点使用。两组凭据请用测试专用密钥,不要复用生产环境的。
设定五个控制值
在配置节点检查 window_minutes(回看窗口,本站练习设120)、min_reports(最少截图报告数,设3)、min_span_minutes(首尾截图最小跨度,设30)、max_images(最多送模型张数,设6)、cooldown_minutes(冷却,设60)。数值含义以模板节点注释为准,练习阶段保持小窗口便于触发数据不足分支。
手动跑通数据不足分支
先把window_minutes临时改成1分钟,手动执行工作流。预期流程在筛选截图报告后直接终止,最终输出 {"idle": null} 及原因说明,不会调用Anthropic接口。这一步确认了你的Prey凭据可用且分支逻辑正确,再改回正常窗口。
跑通完整判定并接webhook
恢复窗口后手动执行一次完整流程:节点应按时间顺序下载并打包截图,Anthropic节点返回JSON文本,解析节点输出最终verdict。确认无误后激活工作流,复制webhook URL,让上游系统向 /prey-idle-check 发POST触发;随后在冷却时间内再POST一次,应看到提前停止、不产生第二次模型调用。
可直接复制的材料
Claude Vision闲置判定提示词(本站独立编写,覆盖前请核对原节点结构)
本站独立编写,输出键名需与原模板解析节点对齐;changed_frames为本站增加的辅助字段,如原节点只解析idle与summary可删除
你将收到一组按时间顺序排列的电脑屏幕截图,它们来自同一台设备在约{{window_minutes}}分钟内的不同时刻。
请判断这段时间内设备是否处于真实使用状态。判定标准:
- 若截图之间出现有意义的画面变化(窗口切换、内容滚动、输入痕迹、播放进度变化),视为活跃,idle=false;
- 若画面基本静止、仅屏保/锁屏/同一静态页面,视为闲置,idle=true;
- 忽略时钟秒数、光标闪烁等无意义微小变化。
只输出一个JSON对象,不要输出其他文字:
{"idle": true或false, "summary": "不超过50字的判定依据", "changed_frames": 你认为有明显变化的截图对数}控制参数示例配置(本站练习值)
参数名为按模板描述整理的示意,导入后以工作流内配置节点的实际字段为准
{
"window_minutes": 120,
"min_reports": 3,
"min_span_minutes": 30,
"max_images": 6,
"cooldown_minutes": 60,
"webhook_path": "prey-idle-check"
}webhook触发测试请求体(合成)
原模板webhook只需POST触发即可,此JSON为本站加的占位请求体,用于在日志里标识测试来源
{
"device_id": "prey-demo-device-0001",
"requested_by": "aiplay-practice",
"note": "本站合成测试数据,device_id请替换为练习设备的真实ID"
}输入与输出示例
本站虚构演示,未真实调用Prey与Anthropic,数字仅为字段对应示意
输入
window_minutes=120内Prey返回5条带截图报告,首尾跨度95分钟,均匀抽样取5张;首帧为文档编辑页,中间帧切换到表格并滚动,末帧停留在视频播放页;cooldown_minutes=60且距上次分析已过3小时。对应输出
{"idle": false, "summary": "截图间出现文档到表格再到视频页的连续窗口切换与滚动,判定为真实使用", "changed_frames": 4, "reports_analyzed": 5, "window_minutes": 120} —— 若将窗口改为1分钟重跑,则输出 {"idle": null, "summary": "窗口内截图报告不足min_reports,未调用模型", "reports_analyzed": 0}做完检查这些
- window_minutes设为1分钟时流程提前结束,输出idle为null,且Anthropic节点无执行记录
- 连续两次触发间隔小于cooldown_minutes时,第二次在冷却检查节点停止,不产生第二次模型调用
- 正常跑通时输出JSON同时包含idle布尔值、summary、被分析报告数与窗口字段,且summary与截图内容描述一致
- 抽样后送入模型的图片张数不超过max_images,且节点内图片顺序与报告时间先后一致
容易卡住的地方
- Prey免费或低频同步设备可能根本没有足够截图报告,idle:null是设计好的正常结果而非报错
- Anthropic视觉请求按图片计费,max_images调大与冷却调短都会明显增加调用成本,原文未给出具体费用
- 模型返回若带解释性文字会导致JSON解析失败,提示词必须要求只输出JSON对象
- webhook路径公开后任何人都能触发分析并消耗API额度,建议在上游系统加签名或在n8n前加鉴权
- 截图含屏幕敏感内容,练习与生产都应确认隐私合规,勿把含他人信息的截图发往第三方模型
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Detect idle device activity from Prey screenshots with Claude Vision
- 原作者
- Patricio
- 原始发布日期
- 2026-09-17T14:09:23.624Z
- 来源
- https://n8n.io/workflows/19686