n8n 配置 workflow

一、目标

在 n8n 平台配置自动化 workflow,实现 定时触发 -> 获取b站关键词为 AI 大模型的20个视频 -> 自定义热度算法进行排序 -> 生成 OpenAI 结构化输出报告 -> 发送邮箱

二、实现步骤

2.1 步骤一:创建定时触发器

点击 Add first step 添加第一个节点

由于我们想每天获取最新的资讯,因此需要设定定时触发器(schedule trigger)每天上午10:00定时触发

同时请注意时区需要选择 Asia/shanghai

2.2 步骤二:HTTP Request 获取B站视频

搜索节点,选择 HTTP Request

基础配置信息如下:

plain 复制代码
Method: GET
URL: https://api.bilibili.com/x/web-interface/search/type
Response Format: JSON

添加查询参数如下:

plain 复制代码
search_type = video
keyword = AI大模型 教程
order = pubdate
page = 1
page_size = 20

添加请求头信息如下:

plain 复制代码
User-Agent = Mozilla/5.0
Referer = https://search.bilibili.com/
  • 其中 order=pubdate 是按发布时间取最近视频。
  • 直接 order=click 按播放量搜更像"热度最高",但更容易触发 B 站 412 风控。
  • 所以后面会在 n8n 里按播放、点赞、收藏、弹幕、评论计算热度分。

2.3 步骤三:Code 对视频进行排序处理

搜索节点,选择 Code 节点

复制如下 JavaScript 代码

javascript 复制代码
const response = items[0].json;
const rows = response?.data?.result || [];

function stripHtml(text) {
  return String(text || '')
    .replace(/<[^>]*>/g, '')
    .replace(/&quot;/g, '"')
    .replace(/&amp;/g, '&')
    .replace(/&lt;/g, '<')
    .replace(/&gt;/g, '>')
    .trim();
}

function toNumber(value) {
  if (typeof value === 'number') return value;
  const text = String(value || '').trim();
  if (!text || text === '--') return 0;
  if (text.endsWith('万')) return Number.parseFloat(text) * 10000;
  return Number.parseFloat(text.replace(/,/g, '')) || 0;
}

const videos = rows
  .filter(v => v.type === 'video')
  .map(v => {
    const play = toNumber(v.play);
    const like = toNumber(v.like);
    const favorites = toNumber(v.favorites);
    const danmaku = toNumber(v.danmaku);
    const review = toNumber(v.review);

    return {
      title: stripHtml(v.title),
      author: v.author || '',
      bvid: v.bvid || '',
      url: v.bvid ? `https://www.bilibili.com/video/${v.bvid}` : v.arcurl,
      description: stripHtml(v.description),
      tags: v.tag || '',
      duration: v.duration || '',
      publishedAt: v.pubdate
        ? new Date(v.pubdate * 1000).toISOString().slice(0, 10)
        : '',
      play,
      like,
      favorites,
      danmaku,
      review,
      heatScore: play + like * 20 + favorites * 30 + danmaku * 10 + review * 15,
    };
  })
  .sort((a, b) => b.heatScore - a.heatScore)
  .slice(0, 10);

const reportInput = {
  date: new Date().toLocaleDateString('zh-CN', { timeZone: 'Asia/Shanghai' }),
  topic: 'Bilibili 最新 AI 教程视频热度 Top 10',
  videos,
};

return [{ json: reportInput }];

2.4 步骤四:OpenAI 生成结构化报告

搜索节点,选择 AI 节点,并选择 OpenAI 分组的 Message Model

模型选择gpt-4o-mini,系统提示词如下:

plain 复制代码
你是我的中文 AI 学习助理。下面是今天从 Bilibili 抓取到的"AI 教程"相关视频候选列表,请你生成一份结构化中文报告。

要求:
1. 不要编造视频里没有的信息,只能基于标题、描述、标签、作者、热度数据分析。
2. 先给出 150 字以内的总览。
3. 按排名列出 10 个视频,每个包含:标题、作者、链接、推荐理由、适合人群、可能能学到什么。
4. 最后给出"今天最值得优先看的 3 个"和理由。
5. 输出适合直接作为邮件正文阅读,使用清晰的小标题和列表。

今天日期:{{ $json.date }}
视频数据 JSON:
{{ JSON.stringify($json.videos, null, 2) }}

2.5 步骤五:发送报告到邮箱

搜索节点,选择 Send Email 节点

点击 setup credentials,配置如下内容

  • user:你的 163 邮箱账号
  • password:是你的 163 授权码,可以在163设置中查看
  • Host:smtp.163.com
  • Port:465

然后继续配置如下内容:

  • from email:发件人
  • to email:收件人
  • subject: 主题
  • email format:邮件格式(text 文本)
  • text:文本内容
plain 复制代码
{{ $json.output[0].content[0].text }}

三、测试

点击执行: execute workflow,如果没有报错说明执行成功

此时在邮件中也能看到发送成功,一切大功告成!

相关推荐
笨蛋©1 分钟前
[技术手册] 2026年全部尺寸检验报告编制标准:从图纸识别到数据自动化的实操指南
ai·数字化·质量管理·图纸识别·fai
j_xxx404_19 分钟前
MySQL数据库基础硬核解析:从 C/S 网络服务到磁盘文件与存储引擎
linux·运维·服务器·开发语言·数据库·mysql·ai
呆呆敲代码的小Y26 分钟前
Understand Anything入门指南: 代码库、知识库 转化为交互式知识图谱
人工智能·ai·知识图谱·知识库·代码库·understand
一切皆是因缘际会30 分钟前
从生成智能到自主智能:人工智能的技术重构与价值迭代
人工智能·深度学习·ai·重构
xingyuzhisuan30 分钟前
多模态聚合API核心技术:如何统一处理文本、图像与语音请求
人工智能·ai·语言模型·语音识别
Artech32 分钟前
[MAF预定义ChatClient中间件-04]ReducingChatClient——通过精减对话实施又不丢失基本语义
ai·agent·maf·reducingchatclient
weixin_468466859 小时前
大模型新手入门与实战指南
人工智能·深度学习·ai·大模型
菩提小狗9 小时前
每日极客日报 · 2026年06月06日
ai·开源·极客日报·it热点·技术资讯
装不满的克莱因瓶9 小时前
掌握 RNN 与 LSTM 模型结构
人工智能·python·rnn·深度学习·神经网络·ai·lstm
笨蛋©10 小时前
[实战] 2026年制造业FAI报告自动生成全流程解析与数字化提效指南
ai·数字化·cad·质量管理·制造业