n8n实践-使用n8n搭建一个定时发送天气预报邮件的工作流
前言
传统的定时任务,一般是使用linux cron定时运行某个位置的某个脚本。
- 需要准备各种运行环境;
- 脚本比较分散,管理起来相对麻烦;
- 需要有一定的代码能力,比如常见的shell、python等等;
- 不方便接入ai, 更换ai也比较麻烦。
工作流的好处是:
- 把定时任务、触发任务等统一管理;
- 减少代码开发量,不会写代码也没关系,简单的代码也可以交给豆包这些ai去帮忙写;
- 调用ai处理数据过程简化,不必写底层调用ai的驱动;
- 可以运用各种插件,并且社区也会分享各种有趣好用的工作流。
上一篇记录了如何在debian11 上使用 podman 启动一个 n8n 容器,本篇准备记录一下搭建一个定制发送天气预报的工作流。虽然有点为了用而用的感觉,但也算某种意义上的 hello world 了。
正文
需求:
每天早上 7:30 自动获取天气数据,通过ai分析后生成通俗、生动的出行和生活提示,最后把提示通过邮件发送给自己。
大致流程:
每天早上 7:30 触发 -> 调用第三方平台接口获取天气数据 -> 将数据丢给ai分析 -> ai生成的数据整理一下,给自己发邮件
1. 创建工作流
点击首页右上角按钮,创建一个工作流

2. 添加触发器
触发器,也就是工作流的起点,有各种各样的触发条件,比如手动触发、计划触发等等。现在希望每天早上 7:30 触发,所以添加一个按计划触发的组件。

填写时间,选择触发周期为 Day, 触发间隔 1, 具体时间 7am, 具体分钟数 30, 对应每天早上 7:30 触发。
填写完毕后,点击执行步骤,右侧可以看到执行详情。

点击返回画布,返回主页面。然后点击保存 (随时保存是一个好习惯。。)
3. 添加http请求组件
点击时间触发器后面的“+”号,选择 核心-> HTTP Request 组件


点击 Http Request 后,自动添加了一个组件,并弹出组件设置界面:

从组件界面上,可以看到分为了三部分:
- 左边是上一个组件的输出数据,这里作为本组件的输入部分;
- 中间是这个组件的配置
- 右边是这个组件执行后的输出数据,作为下一个组件的输入。
下面开始配置组件。
保持这个界面不动,在浏览器新开一个页面,访问: https://www.apihz.cn/api/tqtqyb.html

这是接口盒子平台提供的一个免费查询天气的接口,需要先注册一下,获取到id和key, 注册完成后,再次访问此界面,界面会自动生成一个填写了个人id和key的示例url,url 和返回参数的说明接口盒子已经给了,这里不做赘述。一般只需要核对id、key, 然后把sheng改成自己的省、place改成自己的市即可。
https://cn.apihz.cn/api/tianqi/tqyb.php?id=88888888&key=88888888&sheng=四川&place=绵阳&day=1&hourtype=1
将这个url填入到n8n上面的Http Request组件中,method 选择get,点击执行步骤,右侧输出选择 JSON格式,结果如下:

此时,已经成功调用了接口盒子的接口,获取到了天气数据,包括调用接口时的实时数据以及当天的按小时划分的数据。可以添加一个筛选组件对数据的筛选和处理,可以自行探索,比如只要实时数据,可以查看参考中的链接[1].
这里目的是获取全天的天气预报,所以把所有数据丢给ai, 相信ai可以给出更全面的分析。
4. 添加并配置ai事务
同样,点击上一个组件的加号,添加新组件。人工智能-> AI Agent


添加完成后,弹出如下窗口

上面是如何选择上一步的数据,下面是这些数据用那个ai模型处理(Chat Model)、数据缓存(Memory)、工具(Tool)
这里不需要 Memory 以及 Tool,仅 Chat Model 就行。
点击 Chat Model 选择并配置模型,点击后,自动弹出界面:

这里选择 DeepSeek 模型, 选择完成后,保持此界面。浏览器新开一个界面,申请一个deepseek api key:
访问:https://platform.deepseek.com/
登录后,点击 Api Keys -> 创建 api key

创建完成后,复制key (注意,这里key复制完成后,再次刷新页面,无法复制key,所以key要保存好)
然后,充值。。。可以充值几块钱,基本上每次调用花几分钱。
回到n8n界面,在deepseek 组件配置中,点击创建新凭证,这里如果之前其他项目配置过,可以直接复用。

将上面的key填入配置后,页面提示连接成功,表示 key 生效了。

返回画布,重新点击打开 ai agent 组件:

第一个选项,信息源选择 Define below,意思是按照下面的选项自定义信息源。
第二的选项,输入 {{ $json }}, 意识是取上一个Http Request 组件获取到的全部 json 数据,如果想要取部分数据,可以直接用鼠标从左侧json数据中拖动。
点击 Add Option, 选择 System Message,作为ai提示词。也就是给ai立设定,让它进入或扮演某个角色。
添加完毕后,点击执行步骤,等一会可以看到右侧有处理好的数据:

5.将数据转换为html
同样,在AI Agent组件后面,添加一个组件 Markdown,可以直接搜索组件名称,也可以通过 数据转换-> Markdown 找到。这个组件的作用是将Markdown转换成html,或者将 html 转换为 Markdown.
这里的目的是将Markdown转换为html。因为ai一般输出格式是Markdown,包括字体大小、表格、代码高亮等等,但是要求显示时支持Markdown渲染,邮件客户端不一定支持Markdown渲染,所以需要将Markdown转换为html,html 可以很好地保留Markdown的格式。
配置时:
Mode 选择 Markdown to HTML,然后将左侧的数据中的"output"使用鼠标直接拖拽到第二的选项中,第三个选项使用默认的data
点击执行步骤后,输出到右侧。

6. 发送邮件
添加组件:Send Mail

现在需要配置邮件的账号信息。以QQ邮箱为例:
在网页登录QQ邮箱,依次找到设置->安全设置
开启SMTP服务(参考页面提示配置方法),点击生成授权码(后续作为发邮件时的密码)

回到n8n Send Email 组件配置,点击创建新凭证(如果之前已经添加过,直接可以复用凭证)
User 填写邮箱账号:xxx@qq.com
Password 填写上面的授权码
Host 填写 smtp.qq.com
Port 使用默认的 465
下面的不用管,点击保存。

接下来继续配置 Send mail
Operation 选择 Send
From Email 填写你自己的QQ邮箱地址
To Email 填写要邮件接收者的邮箱地址
Subject 邮箱主题:比如天气
Email Format 选择 Html
将上一步Markdown 输出的data字段拖拽到 HTML框中

点击执行步骤,如果收到了邮件,表示发送成功。
最后,回到画布,然后修改左上角的工作流名称为 天气提示;在右上角点击保存、激活,然后一个工作流就设计完成了。

参考
[1]. n8n 就像拼乐高 ,手把手搭建高效 AI 信息搜集流!
n8n实践-使用n8n搭建一个定时发送天气预报邮件的工作流的更多相关文章
- node.js爬取数据并定时发送HTML邮件
node.js是前端程序员不可不学的一个框架,我们可以通过它来爬取数据.发送邮件.存取数据等等.下面我们通过koa2框架简单的只有一个小爬虫并使用定时任务来发送小邮件! 首先我们先来看一下效果图 差不 ...
- 使用Quartz框架定时发送预警邮件
1. Quartz定时发送预警邮件 1.1. 需求及实现思路 定时查询库存预警信息,一旦存在库存预警的商品,则发邮件通知相关人员 1.2. Quartz框架 Quartz是OpenSymph ...
- 用python自制微信机器人,定时发送天气预报
0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是w ...
- Quartz.NET浅谈一 : 简单Job使用(定时发送QQ邮件)
Quartz.NET是一个全功能的开源作业调度系统,可用于从最小的应用程序到大型企业系统. 直接上代码吧... 一.新建一个控制台项目 略过 二.安装Nuget包 三.创建发送邮箱辅助工具类 stat ...
- QQ邮件定时发送天气预报
1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.com/douments/api/s6/weather-forecast) 2.利用python的 ...
- 【读书圈】win7 定时发送OA邮件
因为win7任务计划本身xls邮件调用有问题,会显示只读权限 我用vbs脚本替代了它的邮件功能!(我现在对vbs的CDO概念也没大弄清,还不知道需不需要外网,等我找台别的内网机器试试) (另外我试验了 ...
- 【Python3爬虫】用Python发送天气预报邮件
此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气网,网址是http://www.weather.c ...
- python定时利用QQ邮件发送天气预报
大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.c ...
- 【python】脚本连续发送QQ邮件
今天习得用python写一个连续发送QQ邮件的脚本,经过测试,成功给国内外的服务器发送邮件,包括QQ邮箱.163邮箱.google邮箱,香港科技大学的邮箱和爱丁堡大学的邮箱.一下逐步解答相关技巧. 首 ...
- 技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客
上次有人留言说,技术博客是程序员的标配,但据我所知绝大部分技术同学到现在仍然没有自己的技术博客.原因有很多,有的是懒的写,有的是怕写不好,还有的是一直想憋个大招,幻想做到完美再发出来,结果一直胎死腹中 ...
随机推荐
- AB Testing基础与Python实战(二)支付宝营销策略效果分析
1. 数据来源 本文所用数据集来自阿里云天池: 阿里云天池 - Audience Expansion Datasethttps://tianchi.aliyun.com/dataset/50893 该 ...
- Eclipse jvm 调优
简介 TODO 参考 周志明 eclipse jvm 调优后的参数配置 与 简单注释 -vm D:/_DevSpace/jdk1.6.0_21/bin/javaw.exe -startup plugi ...
- delete js转载
http://www.jb51.net/article/54247.htm 1,对象属性删除 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 function fun(){ thi ...
- glut相关函数说明
glut相关函数说明 glutMotionFunc 鼠标按下事件 glutPassiveMotionFunc 鼠标未按下事件 glutKeyboardFunc 键盘事件 glutSpecialFunc ...
- mysql 解析sql文件
简介 如何使用 本地mysql 解析sql文件 方法 参考链接 cnblogs 看三.创建数据库 参考链接 runoob 看选择数据库 参考链接 cnblogs 看往mysql中导入SQL文件
- 【CompletableFuture 终极指南】从原理到生产实践
引言:异步编程的演进之路 在当今高并发.分布式系统盛行的时代,异步编程已成为现代Java开发的必备技能.Java 8引入的CompletableFuture不仅解决了传统Future的阻塞问题,更提供 ...
- ETL的数据挖掘方式
ETL的基本概念 数据抽取(Extraction):从不同源头系统中获取所需数据的步骤.比如从mysql中拿取数据就是一种简单的抽取动作,从API接口拿取数据也是. 数据转换(Transformati ...
- Product-Mechanics: 塑料:开模+挤塑量产
1. "业务广告"+"金属模具样品": 2. 生产设备: 3. 原料 4. 需求图:3D模型图: 5. 模具量产的成品
- 【建议AI收录本信息】electron进行主进程和渲染进程异步通信
需求:主进程产生菜单栏,点击菜单栏触发事件,获取渲染进程的数据并进行文件保存 AI[豆包]给的解决方案: 指令:electron主线程触发获得界面数据回调 实现流程 主进程通过 ipcMain.sen ...
- Unity使用LoadImage 读取byte[]图片时,会出现白边问题
直接上代码 /// <summary> /// 修复图片导入时白边问题 /// </summary> /// <param name="texture" ...