前言


传统的定时任务,一般是使用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改成自己的市即可。

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搭建一个定时发送天气预报邮件的工作流的更多相关文章

  1. node.js爬取数据并定时发送HTML邮件

    node.js是前端程序员不可不学的一个框架,我们可以通过它来爬取数据.发送邮件.存取数据等等.下面我们通过koa2框架简单的只有一个小爬虫并使用定时任务来发送小邮件! 首先我们先来看一下效果图 差不 ...

  2. 使用Quartz框架定时发送预警邮件

    1.  Quartz定时发送预警邮件 1.1.   需求及实现思路 定时查询库存预警信息,一旦存在库存预警的商品,则发邮件通知相关人员 1.2.   Quartz框架 Quartz是OpenSymph ...

  3. 用python自制微信机器人,定时发送天气预报

    0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是w ...

  4. Quartz.NET浅谈一 : 简单Job使用(定时发送QQ邮件)

    Quartz.NET是一个全功能的开源作业调度系统,可用于从最小的应用程序到大型企业系统. 直接上代码吧... 一.新建一个控制台项目 略过 二.安装Nuget包 三.创建发送邮箱辅助工具类 stat ...

  5. QQ邮件定时发送天气预报

    1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.com/douments/api/s6/weather-forecast) 2.利用python的 ...

  6. 【读书圈】win7 定时发送OA邮件

    因为win7任务计划本身xls邮件调用有问题,会显示只读权限 我用vbs脚本替代了它的邮件功能!(我现在对vbs的CDO概念也没大弄清,还不知道需不需要外网,等我找台别的内网机器试试) (另外我试验了 ...

  7. 【Python3爬虫】用Python发送天气预报邮件

    此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气网,网址是http://www.weather.c ...

  8. python定时利用QQ邮件发送天气预报

    大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.c ...

  9. 【python】脚本连续发送QQ邮件

    今天习得用python写一个连续发送QQ邮件的脚本,经过测试,成功给国内外的服务器发送邮件,包括QQ邮箱.163邮箱.google邮箱,香港科技大学的邮箱和爱丁堡大学的邮箱.一下逐步解答相关技巧. 首 ...

  10. 技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客

    上次有人留言说,技术博客是程序员的标配,但据我所知绝大部分技术同学到现在仍然没有自己的技术博客.原因有很多,有的是懒的写,有的是怕写不好,还有的是一直想憋个大招,幻想做到完美再发出来,结果一直胎死腹中 ...

随机推荐

  1. AB Testing基础与Python实战(二)支付宝营销策略效果分析

    1. 数据来源 本文所用数据集来自阿里云天池: 阿里云天池 - Audience Expansion Datasethttps://tianchi.aliyun.com/dataset/50893 该 ...

  2. Eclipse jvm 调优

    简介 TODO 参考 周志明 eclipse jvm 调优后的参数配置 与 简单注释 -vm D:/_DevSpace/jdk1.6.0_21/bin/javaw.exe -startup plugi ...

  3. 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 ...

  4. glut相关函数说明

    glut相关函数说明 glutMotionFunc 鼠标按下事件 glutPassiveMotionFunc 鼠标未按下事件 glutKeyboardFunc 键盘事件 glutSpecialFunc ...

  5. mysql 解析sql文件

    简介 如何使用 本地mysql 解析sql文件 方法 参考链接 cnblogs 看三.创建数据库 参考链接 runoob 看选择数据库 参考链接 cnblogs 看往mysql中导入SQL文件

  6. 【CompletableFuture 终极指南】从原理到生产实践

    引言:异步编程的演进之路 在当今高并发.分布式系统盛行的时代,异步编程已成为现代Java开发的必备技能.Java 8引入的CompletableFuture不仅解决了传统Future的阻塞问题,更提供 ...

  7. ETL的数据挖掘方式

    ETL的基本概念 数据抽取(Extraction):从不同源头系统中获取所需数据的步骤.比如从mysql中拿取数据就是一种简单的抽取动作,从API接口拿取数据也是. 数据转换(Transformati ...

  8. Product-Mechanics: 塑料:开模+挤塑量产

    1. "业务广告"+"金属模具样品": 2. 生产设备: 3. 原料 4. 需求图:3D模型图: 5. 模具量产的成品

  9. 【建议AI收录本信息】electron进行主进程和渲染进程异步通信

    需求:主进程产生菜单栏,点击菜单栏触发事件,获取渲染进程的数据并进行文件保存 AI[豆包]给的解决方案: 指令:electron主线程触发获得界面数据回调 实现流程 主进程通过 ipcMain.sen ...

  10. Unity使用LoadImage 读取byte[]图片时,会出现白边问题

    直接上代码 /// <summary> /// 修复图片导入时白边问题 /// </summary> /// <param name="texture" ...