定时AI新闻/博客(一)- n8n搭建

定时 AI 新闻/博客(一)- n8n 搭建

背景

这几年 AI 的风很大,也确实给程序员的我们带来了很多好处,谷歌的次数都变少了。所以从在 Cloudflare 上搭建了博客之后,就一直想着能不能在博客上开个实时的 AI 新闻页面,在加上最近一直在倒腾 Clawcloud,看看能不能在白嫖的额度上面搭建点其他东西,毕竟额度不用完,那就是亏了啊!
某天在 B 站上正好看到了 n8n 自动化工作流,好巧不巧 Clawcloud 上还有现成的部署方案,只需要点点点就好了,那必须得搭起来。

技术选型

  1. Clawcloud
  2. n8n
  3. 和风天气

n8n 搭建流程

在 Clawcloud 的 App Store 中搜索 n8n,点击 Deploy App进行部署。

等待 Clawcloud 部署完毕,URL 显示可用之后,访问该 URL,可以看到 n8n 的初始化页面。

填入邮箱和名字,密码。进入 n8n 的主界面。选择用途、公司啥的,随便选。

点击发送免费的授权码。从邮箱获取授权码,填入即可激活。

使用 n8n

创建工作流

我们来实现一个简单的工作流,获取明天的天气,发送到钉钉,提醒自己记得带伞。

  • 点击右上角 Create Workflow
    可以看到一个新的工作流界面如下:
  • 点击Add first step...创建我们的第一个工作流节点,在右侧选择Trigger manually -手动触发节点


    此节点通过手动触发整个工作流

准备获取天气的接口 - 和风天气

和风天气提供每月 5 万次的免费接口请求次数。

在和风天气后台的项目管理页面创建新的项目,获取项目 id 和api key。在设置页面获取你的API HOST

和风天气官网

Geo 城市 id 查询 – 查询城市、行政区 id

每日天气预报 – 查询未来三天的天气

调用流程

  1. 通过 Geo 接口获取行政区的 id – 这个没有也可以,后面的接口直接通过写死的行政区 id 来获取天气即可
  2. 通过天气预报接口获取最近三天的天气

添加网络请求

  • 点击手动触发节点右侧+,在节点面板中输入 http 进行搜索,选择 HTTP Request 节点进行添加。

  • 我们偷懒一下子,通过Import cURL导入网络请求配置,在和风天气的 api 文档上复制 curl 的请求示例

  • 双击 HTTP 请求节点,点击 Import cURL 后,粘贴代码。

  • 在 和风提供的仓库中github查找你所在的城市和行政区的缩写,填入请求参数中。

  • 配置 API Key
    Authentication选择 Generic Credential Type,在 Generic Auth Type 中选择 Header Auth 类型的权限校验凭证。
    Create new Credential中新增凭证,如下配置即可(此处填入的就是前面获取到的 APIKEY),次凭证便可以重复选中使用了。

  • 点击Execute step 运行一下次节点,可以在右侧 OUTPUT 看到网络请求返回的信息。

我们需要从返回信息中取出 id 这个字段,用于后续天气详情获取的接口中。

  • 再次添加 HTTP 网络请求,用于查询未来三天的天气

    此处的 location 参数,就需要从前面的节点返回结果中获取了。
    点击此节点的Execute step,便可以将之前的节点和当前节点都运行一次。
    运行效果如下所示:

    选择 JSON 格式展示,将 id 这个 key 如图所示拖动到 value 一栏中。
    此时,再次点击此节点的Execute step,可以看到该请求再次运行了一次,右侧展示出最新的接口返回内容,已经变成上海/闽行区的天气。

发送消息到钉钉

钉钉接口文档

参考我之前的Clawcloud 部署 Uptime Kuma这篇博客添加钉钉群机器人。
只是安全设置需要使用自定义关键字 — 我设置的是 “n8n” ,简单。拿到对应的 access_token 备用。

新增 HTTP 网络请求,发送钉钉消息
如下图一样,配置网络请求


发送的 JSON 内容,可以参考我的:

1
2
3
4
5
6
{
"msgtype": "text",
"text": {
"content": "n8n天气助手\n今天是{{ $json.daily[0].fxDate }}\n明日:{{ $json.daily[1].fxDate }}\n天气:{{ $json.daily[1].textDay }},{{ $json.daily[1].windDirDay }}{{ $json.daily[1].windScaleDay }}级\n气温:{{ $json.daily[1].tempMin }}-{{ $json.daily[1].tempMax }}摄氏度\n湿度:{{ $json.daily[1].humidity }}%\n降水量:{{ $json.daily[1].precip }}毫米\n能见度:{{ $json.daily[1].vis }}公里\n发布于:{{ $json.updateTime }}"
}
}

注意其中的 {{ }} 包围的变量都是通过拖动放进去的,自己按照自己的需要和爱好拼装信息即可。

最终的消息效果如下:

1
2
3
4
5
6
7
8
9
n8n天气助手
今天是2025-07-15
明日:2025-07-16
天气:晴,北风1-3级
气温:27-37摄氏度
湿度:89%
降水量:0.0毫米
能见度:24公里
发布于:2025-07-15T17:51+08:00

替换触发器,实现定时运行

n8n支持多个触发器,我们可以保留手动触发节点,添加定时触发器,这样子就可以手动触发也可以定时运行。

定时触发器可以设置分钟、天等间隔,根据自己需要配置即可。

同时,记得将工作流右上角的 Active 状态改为 On,激活工作流,否则到时间点也不会执行。

额外注意

要注意确认工作流所使用的时区,我之前就遇到过,时区不对,怎么设置定时执行都无效(因为它确实没到该运行的时间啊!!!)
在工作流右上角的settings里面有时区设置,记得修改为正确的时区。

总结

其实,n8n 的搭建非常简单,起码在我所使用的 Clawcloud 上搭建的方式来说简单。我没有在上面放很重要地工作流,用 Clawcloud 我也是无所谓的,它的稳定性,我要求不高。
如果我有需要稳定性更高的场景,我肯定会使用其他方式部署了。不过这种方式也是有好处的,在后续我使用一些大模型的 api 的时候,海外的 Clawcloud 自带翻墙,简直不要太爽。

当然博客中只是临时写的示例工作流,我自己使用的工作流根据自己的实际需要进行过一些前置的处理,比如明天不是工作日就不发这个消息了。这些自己在网上找一些免费的api,通过http请求处理结果,走不同的流程分支即可。n8n是有if节点可以使用的。
在我看来,其实n8n更强大的地方在于它有很多AI节点,可以直接使用如Gemini、OepnAI、Deepseek 等等大模型,通过这些大模型就能简单的做到你以前可能需要非常多代码才能实现的功能。
所以,还是建议阅读官方文档,了解更多的n8n节点功能,在实际使用中才能更加得心应手。