做自媒体离不开选题,平时写文章都是看看各平台的热搜,还有最新资讯什么的,看看是否有合适的选题,可是每次都要打开各平台去看,比较麻烦。
今天我们分享一个用n8n和RSS汇总不同平台的热搜和最新资讯,打造一个自己专属的选题库。
工作流的运行逻辑
定时从多个平台的RSS源批量获取热点资讯,处理后写入飞书电子表格并通知消息到飞书群
🛠️ 准备工作
一、飞书应用配置
创建飞书应用主要以下几步:
1、登录飞书开放平台,进入开发者后台:
飞书开放平台: open.feishu.cn
2、创建一个企业自建应用
一般开发者都是以个人身份登录的飞书,个人可以成为只有一人的企业
输入应用名称、应用描述并设置图标,点击「创建」按钮,完成应用创建。
3、添加权限
切换左侧「权限管理」菜单,点击「开通权限」按钮,为应用添加文档相关的权限。
搜索框输入 电子表格 ,全选,右下角点击确认开通权限
便于应用发送提醒消息,建议也开通下面的消息权限。
4、激活机器人能力
在应用配置页面,切换左侧「添加应用能力」菜单,点击机器人能力「添加」按钮,为应用激活机器人能力。
激活后,在左侧「应用能力」菜单栏下,可以看见「机器人」菜单。
我们激活机器人能力,是给应用添加飞书文档的权限,机器人配置保持默认即可。
5、创建版本并发布
点击创建版本
输入版本号和更新说明,左下角点击保存
确认发布
获取并保存 App ID 和 APP Secret
二、在飞书创建「一人群」,添加机器人
这步非常关键,经常会有同学会卡在此处。
请按照下面步骤操作:
1、打开飞书桌面端或移动端。
2、点击左侧「消息」 → 右上角「+」 → 选择「创建群组」
在创建群组弹出框中填写群名称,下方不要添加其他群成员,然后点击右下角的「创建」按钮,完成群组的创建
点击群聊右上角「···」→ 选择「群机器人」→ 点击 「添加机器人」,选择你要添加的机器人。
如果在这一步添加机器人时,只能看见「自定义机器人」,并且提示「本群为外部群」,则一定是上一步建群时方式不对。
三、给飞书文件夹添加应用机器人
给飞书文件夹添加机器人权限,这个步骤也很关键。操作以后,应用机器人才可以使用拿到的 folder_token , 在文件夹下创建文档或者写入内容。
1、 新建一个文件夹,用于存放n8n输出的内容
2、打开该文件夹页面 ,点击右侧「分享」按钮。
3、在弹出的对话框中,搜索并添加应用对应的机器人群组为共享成员。
将添加的应用设置为「可编辑」权限。
四、安装飞书社区节点
飞书的社区节点在n8n工作台不能直接搜到,需要手动添加。
点击左下角头像的「settings」 → 点击「install」
在弹出的对话框输入飞书社区节点使用的npm包: n8n-nodes-feishu-lite , 完成安装。
安装完成后,可以在页面看到下面内容,就可以使用飞书社区节点了。
五、添加飞书凭证
安装完成之后,我们要去添加一下飞书的凭证
找到这个飞书的凭证进行添加
这里需要输入飞书的 App ID 和 APP Secret
🚀 创建工作流
节点一:定时触发节点(Schedule)
新建工作流,设置定时触发:点击n8n顶部的 「Create Workflow(创建工作流)」 ,进入画布页面。首先点击「+」搜索并选择 Schedule 节点
设置 Interval 为「Days」, Period 为1(即每天执行), Trigger Time 设置为「7am」(即早上7点)。
点击「测试步骤」运行输出数据,把 Timezone 的时区改为上海,如果不是上海时区,返回界面点击右上角「···」- 设置 - 在时区下拉框中找到 Asia/Shanghai 时区,在测试一遍
节点二:RSS节点
添加RSS节点:我这里方便演示,先添加两个节点
一个节点订阅的是百度热点文章,另一个节点订阅的是微信最新的文章
百度热点文章: https://rss.aishort.top/?type=baidu
微信最新文章: https://rss.aishort.top/?type=wasi
添加好之后执行测试,看到获取成功,一个获得了100条数据,另外一个获得了10条数据:
节点三:数据预处理节点
数据预处理:我们需要对获取的数据进行格式化处理。这里我们获取的都是RSS格式的数据,但不知道每篇内容的来源是哪里的,所以我们这里需要区分一下。
添加两个代码节点,对数据进行处理
进入code节点,按照如下配置,添加一个来源的属性,这个代码的意思就是给所有返回的内容加一个 source 字段来标记内容的来源
执行一下工作流,可以看到现在的数据多了一个来源的属性,接下来我们给不同的订阅分支设置不同来源
节点四:合并数据节点
合并数据:搜索 merge ,添加这个节点,然后把不同分支都连接过来。
修改设置,模式选择 append ,数字代表合并多少个分支,如果订阅的比较多,可以修改这个数字。
设置好后,点击执行,可以看到项目合在一起了
节点五:数据过滤节点
过滤数据:如果数据很多,需要筛选,这里我们只要发布日期在1天之内的内容
设置过滤的条件如下
表达式 new Date(Date.now() - 1 * 24 * 60 * 60 * 1000) 代表1天之前的时间。
设置后直接运行,可以看到过滤后结果
节点六:合并项目节点
合并项目:我们在批量获取数据后,大量发送http请求一般会有调用频次的限制。为了解决这个问题,需要把所有内容组装成一个JSON,然后一次性写入飞书表格。
搜索 aggregate ,添加这个节点,将前面的多个项目合并到一个变量中
添加设置并执行节点,可以看到所有内容数据都在字段 data 中了
节点七:创建电子表格节点
创建电子表格:为什么不直接写表格呢? 这里我们把功能做的更灵活一些,让工作流定时跑,每天都会生成一个电子表格,里面是当天的内容。
搜索 feishu 找到下面这个节点,添加进来
配置一下节点,设置表格标题为当天的日期,代码如下:
{{((d) => `${d.getFullYear()}年${(d.getMonth()+1).toString().padStart(2,'0')}月${d.getDate().toString().padStart(2,'0')}日`)(new Date())}}
文件夹 token 就在打开飞书云文档文件夹的链接地址上:
配置完成后执行一下,看到如下输出表示创建成功
节点八:获取电子表格节点
获取工作表:我们在写数据之前,需要获取表单,熟悉 Excel 的都会知道,一个表格里面可以有许多不同的表单,我们需要获取当前表格的表单ID。
配置执行一下
节点九:数据整理节点
数据整理:我们需要按照飞书的格式要求对数据进行处理。
添加code节点,把前面的JSON数据处理成下面这样的格式
下面是节点中的代码:
// 转换函数
functionconvertToTableData(data) {
// 表头(固定)
const headers = ["标题","链接","发布时间","内容","摘要","来源"];
// 数据行
const rows = data.map(item=>
[
item.title||"", // 标题
item.link||"", // 链接
item.pubDate||"", // 发布时间
item.content||"", // 内容
item.contentSnippet||"", // 摘要
item.source||""// 来源
]);
// 返回:表头 + 数据行
return [headers, ...rows];
}
// Add a new field called 'myNewField' to the JSON of the item
// 原始数据
const inputData = $('Aggregate').item.json.data; console.log(inputData)
// 执行转换
const tableData = convertToTableData(inputData);
// 打印结果(可在控制台查看)
console.log(tableData);
$input.item.json.tableData= tableData;
return $input.item;
节点十:写入电子表格节点
写入数据:获取工作表之后,我们需要写入数据到电子表格
将处理好的数据还有表格ID放进来,保存运行
节点十一:通知飞书群节点
我们先要获取飞书机器人 Webhook URL
打开飞书,左上角「+」号创建一个群组
创建好之后点击群组右上角「···」里的设置 - 点击群机器人 - 添加机器人
点击自定义机器人
命名之后点击添加
复制 Webhook URL 地址
下一步添加Code节点
这里我们使用Code内置函数发送HTTP请求,不用HTTP是因为Code输出更稳定,不像HTTP老是报错
粘贴以下JavaScript代码,替换以下代码中的 [你的电子表格链接前缀] 和 [你的飞书机器人Webhook URL]
// --- 使用n8n内置函数发送HTTP请求 ---
// 这里是生成的电子表格URL
const spreadsheetUrl = '[你的电子表格链接前缀]' + $input.first().json.data.spreadsheetToken
// 消息内容
const messageContent = '每日RSS文章资讯\n' + spreadsheetUrl;
// 这是要发送给飞书的、标准格式的JSON数据
const feishuPayload = {
"msg_type": "text",
"content": {
"text": messageContent
}
};
// 这里是您的飞书机器人Webhook URL
const webhookUrl = '[你的飞书机器人Webhook URL]';
try {
// 使用n8n官方内置的httpRequest函数来发送POST请求
// 这次我们不再需要任何外部库
const response = awaitthis.helpers.httpRequest({
method: 'POST',
url: webhookUrl,
headers: {
'Content-Type': 'application/json'
},
// 注意:n8n官方函数使用 'body' 作为参数名,而不是 'data'
body: feishuPayload
});
// 如果成功,返回飞书服务器的响应
return [{
json: {
success: true,
feishu_response: response
}
}];
} catch (error) {
// 如果失败,返回错误信息
return [{
json: {
success: false,
error_message: error.message,
// 注意:错误对象结构也可能不同,我们简化处理
error_details: error.response ? error.response.body : 'No response data'
}
}];
}
所有节点配置完成后,点击n8n底部的「执行工作流」按钮,测试完整的自动化流程。
你会看到:首先通过RSS获取数据,然后经过数据处理,最后资讯被成功保存到飞书电子表格并通知到飞书群中!
最后一步,也是最关键的一步: 点击n8n右上角的 「 Activate(激活)」 按钮,激活整个工作流! 从此,你自己专属的选题库就正式上线了!每天早上7点,系统都会自动获取最新的RSS热点资讯,准时推送到你的飞书群中,你无需任何手动干预!
如果你在搭建过程中遇到任何问题,或者有什么更酷的玩法,欢迎在评论区留言, 一起交流探讨。
欢迎在评论区分享你的看法 👇
如果觉得不错,随手点个赞👍 + 推荐❤️ + 转发📮三连吧
关注我们,获取更多优质技术内容 ⭐