n8n实践-使用n8n搭建一个定时发送天气预报邮件的工作流

前言


传统的定时任务,一般是使用linux cron定时运行某个位置的某个脚本。

  1. 需要准备各种运行环境;
  2. 脚本比较分散,管理起来相对麻烦;
  3. 需要有一定的代码能力,比如常见的shell、python等等;
  4. 不方便接入ai, 更换ai也比较麻烦。

工作流的好处是:

  1. 把定时任务、触发任务等统一管理;
  2. 减少代码开发量,不会写代码也没关系,简单的代码也可以交给豆包这些ai去帮忙写;
  3. 调用ai处理数据过程简化,不必写底层调用ai的驱动;
  4. 可以运用各种插件,并且社区也会分享各种有趣好用的工作流。

上一篇记录了如何在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改成自己的市即可。

bash 复制代码
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 信息搜集流!](https://zhuanlan.zhihu.com/p/1931821762271773874)