n8n自动化流程工具 | 通过关键词获取youtube热门视频并发送telegram-bot提醒

先来简单说一下n8n是什么:n8n 是一个开源的工作流自动化工具,用户可通过可视化界面创建和管理各种自动化任务。它支持与多个应用和服务的集成,无需编写代码即可实现复杂的业务流程自动化。对比make和zapier,n8n的优势是用户可以自托管,避免了第三方托管带来的数据隐私问题。

那么接下来我们试着实现一个简单的场景,看看n8n如何使用。

需求是这样:每周固定的一个时间点,我希望自动在youtube上搜索关于一些关键词的视频,把发布日期是本周的并且观看次数最多的5条视频整理出来,然后通过telegram机器人发给我。这样我每周就可以获取到我关心的内容并且最热门的视频了,提高我的效率。

如何在n8n上进行配置呢?

1、首先我们在首页,新建一个workflow

看到页面是这样的

我们就在这个页面来创建我们的工作流

2、添加一个Schedule Trigger节点

第一个节点,我们添加Schedule Trigger,它是一个根据时间来自动触发工作流的节点。

我们设置成每周日的早上9点触发这个工作流

3、添加HTTP Request节点

这个节点主要是用来通过http接口获取数据的节点,理论上任何开放http接口的应用,都可以用这个节点来获取数据

因为我们要获取到youtube的数据,所以我们用这个节点来实现。

youtube的接口文档可以看这个:https://developers.google.com/youtube/v3/docs/search/list?hl=zh-cn

我们在url输入接口地址:https://www.googleapis.com/youtube/v3/search 方法选择get

参数我们就根据接口文档来输入即可

比如

part=snippet

q=工作流

order=viewCount

type=video

key=your_api_key

publishedBefore和publishedAfter

这些参数都是可以在接口文档看到详细说明的

我简单说下和我们需求相关的

①q:指定了要搜索的查询字词,你需要查询什么内容,就输入什么内容。

②order:对资源进行排序的方法,我们输入viewCount,意为按查看次数从高到低对资源进行排序

③publishedAfter和publishedBefore:包含在指定时间内创建的资源。这两个字段的值如何写,一会再详细说下。

④key:输入你的youtube api的key值

接下来我们说说publishedAfter和publishedBefore

publishedBefore,我希望是取流程发起时的时间。publishedAfter,我希望取流程发起前7天的时间。 也就是说,通过publishedAfter和publishedBefore的时间设定,我希望取到自流程发起时前7天内的数据。

那么对于publishedBefore,我们就直接把第一节点output的时间戳拖拽到publishedBefore的value里即可。

对于publishedAfter,我们可能需要简单计算一下,在publishedBefore的基础上减去7天。

我们在http节点前增加一个code节点,写个简单的js帮我们计算出publishedAfter

code节点可以这样写

// 获取当前的时间戳
const timestamp = new Date();

// 减去7天
const publishedAfter = new Date(timestamp);
publishedAfter.setDate(publishedAfter.getDate() - 7);

// 格式化为 ISO 8601 格式,并保留原始时区信息
const formattedPublishedAfter = publishedAfter.toISOString();

return {
  json: {
    timestamp: timestamp,
    publishedAfter: formattedPublishedAfter,
  }
}

接着我们在http节点,把publishedAfter的时间戳也拖拽到publishedAfter的value里面

好了,那么这几个节点就配置完成了。

你可以点这个test试一下

可以看到output里已经有真实数据了,说明运行是成功的。

4、用code节点处理一下信息

可以看到http节点output的是一个数组,这个数组里有5条信息,也就是5个视频。

我想把这5个视频的信息合并到一起统一让telegram的bot发送一条信息给我,应该如何处理?

我们配置一个code节点,简单写个js来满足我们的需求

const items = $node["HTTP Request"].json.items;
let message = '';

items.forEach((item, index) => {
  const title = item.snippet.title;
  const description = item.snippet.description;
  const videoId = item.id.videoId;
  const videoUrl = `https://www.youtube.com/watch?v=${videoId}`;
  
  message += `Video ${index + 1}:\nTitle: ${title}\nDescription: ${description}\nLink: ${videoUrl}\n\n`;
});

return [
  {
    json: {
      message
    }
  }
]

运行后可以看到output里,我们的信息都合并成一条了

5、配置telegram节点

(1)我们先去telegram创建个机器人

如何配置?

①在Telegram中搜索“BotFather”,然后单击“开始”

②在BotFathe输入 /newbot的指令,即新建一个bot

③输入机器人的名称(以后可以更改)

④获得了bot的token,这个token保留好

到此机器人就创建好了。

(2)在n8n里添加telegram节点

选择send message

这里主要是配chatid 和 text

①chat id如何获取:给机器人发条消息,然后打开链接:https://api.telegram.org/bottoken/getUpdates,注意token这里要换成你机器人的实际token

打开链接之后,红框里的id ,就是chat id了

②text就是消息内容的配置,就是在bot里你的消息是什么样子的。我们直接把上个节点的output内容字段拖拽到text框内即可

那么所有的配置就完成了,可以试着点下test workflow,看看你能不能正常收到消息。

看样子是正常的了~

6、发布

点击active的开关,这个自动化流程就可以开始执行了。

是不是非常的简单?

以上就是一个简单的案例,之后也会找一个遇到的实际案例用自动化流程工具实现,看看利用工具是如何提效的。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部