在《选题挖掘第一弹》里,我们按关键词去 YouTube 搜视频、抓评论、用 DeepSeek 做洞察,写进多维表格;在《第二弹》里,对象换成了 Reddit,按版块抓热帖和评论。两篇都是「广撒网式」的选题情报。
https://xiaobot.net/post/fb1bfadb-61d6-47d4-b0f0-9994db838d1d
https://xiaobot.net/post/2705486a-5bc6-4589-9ef4-2a0dad51328c
这一篇是系列的第三弹,场景更垂直:你只关心一批「对标youtube频道主」这周有没有发新片。你要监控的名单放在一张多维表格里维护,每周日晚上固定时间自动跑一条 n8n 流程,来看看本周频道主更新的内容,如有新的内容,就拉去视频的基本信息,以及热门评论,把结果写到另外一张多维表格里。

*(你要定期监控的频道主名单)*

*(每周定时将本周更新的内容同步到表格中)*
如果你更认同「跟人不跟词」的选题方式,这条流和前两弹互补:第一、二弹解决「话题面上在吵什么」,第三弹解决「我盯的几个人这周说了什么、评论区在聊什么」。
一、这条自动化解决什么问题?
做内容的人常会盯几个 YouTube 对标账号,但人肉刷更新有几个痛点:
1.频道多的时候,很容易漏看或忘记谁发过片。
2.即使点进去,也要自己判断「是不是这几天发的」。
3.评论区里的真实反馈,要一条条翻,很难沉淀成可查的档案。
所以这一条自动化流程,可以每周日晚上自动跑一轮,把「本周有新视频的频道」的新片信息 + 热门评论合并起来,落到一张结果表里;我们平时只维护「监控名单表」,看结果表即可。
二、多维表格怎么建?
如上面所说的,我们可以建两张表,一张是监控名单表,一张是结果表
1. 监控名单表
把我们要监控的频道主的信息填写到表里。
记录频道姓名、频道链接和频道ID。

频道ID是必须的,我们就是通过这个ID来去获取视频信息的。其他两个字段,是为了咱们自己看起来方便维护的。
频道ID在哪看?在youtube的个人信息卡片里,点击分享频道,然后里面有一个频道ID就是了,不清楚的话可以搜一下在哪里。
2. 结果表(周更 + 评论)
记录监控的结果信息

这里我们可以设置这几个字段:视频链接、视频发布时间、视频描述、视频评论、视频内容、videoid
除了视频内容,其他信息我们都可以通过tikhub的接口直接获取到。视频内容,就是视频里到底讲了什么,可以把视频文案提取出来,放到表格里给AI进行总结分析,不过视频内容我们先留空,这期先不讲。
三、工作流的结构是怎样的

我们先对流程的整体思路进行一个概况。大概的逻辑就是我们挨个去获取到所监控的频道主的视频更新内容,然后判断本周内是否有更新,如果有更新,就获取视频的详细信息,写到表格里,如果没有,就继续查找下一个频道主。
先简单介绍下各节点的作用
1.触发:定时(每周日 20:00)或「手动测试」。
2.飞书鉴权:拿 tenant_access_token。
3.合并配置:把 Token、多维表格 token、两张 table id、TikHub Key 等收成一条「配置包」,后面节点统一引用。
4.拉监控表:通过查询飞书多维表格的接口,获取监控表的数据。
5.解析频道:将返回的转成「一行一个频道」的扁平结构。
6.外循环(Split In Batches):每次只放行 1 个频道往下游。
7.拉频道视频:通过TikHub的接口去获取到视频的信息。
8.筛本周:根据发布时间,来判断本周发布的视频有哪些。
9.IF:本周有没有新视频?没有则直接回到外循环下一个频道;有的话则进入内循环。
10.内循环:本周每条视频依次通过tikhub接口拉评论 → 对结果数据进行加工 → 写入结果表 → 回到内循环直到本周视频全部写完 → 再回到外循环下一个频道。
以上就是整体流程的逻辑,接下来我们就详细来说说每个节点的配置。
四、流程节点详解

1. 定时触发/手动触发
①定时触发(Schedule Trigger),按 Cron 触发工作流执行,适合周期性批任务。用大白话来说就是给流程设置一个闹钟,到点就「按闹钟」自动开始干活。
②手动触发(Manual Trigger),仅在手点「Test workflow」时产生一条执行。 简单来说就是如果你不想等到闹钟响的时候才执行的话,就直接先手动触发,把流程先跑一遍。
2. 获取飞书Token
HTTP Request节点,通过飞书的接口向飞书开放平台换取短期 tenant_access_token,后续所有多维表格 API 都要用到。这个是必须的步骤,简单来说就是要跟飞书「要一张临时通行证」,不然读表写表会被拒。
如何配置:
①Method:POST
②URL:https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
③Body:JSON,app_id、app_secret 填你的应用(勿泄露)。
成功时响应体里有 tenant_access_token,下一节点会读它。

3. 合并配置
这是一个code节点,专门维护配置信息的,比如上一步获取到的飞书的token、多维表格的token和表格id,以及tikhub的接口的key,我们都放在这个节点来维护好。这样的好处就是方便,后面需要要修改配置,就直接在这个节点修改就好了。

const tok = $('获取飞书Token').first().json.tenant_access_token;
if (!tok) throw new Error('未获取到 tenant_access_token,请检查 app_id / app_secret');
return [{
json: {
feishuToken: tok,
feishuAppToken: '【飞书多维表格token】',
monitorTableId: '【飞书多维表格数据表id】',
outputTableId: '【飞书多维表格数据表id】',
tikhubBaseUrl: 'https://api.tikhub.io',
tikhubApiKey: '【tikhub接口api key】',
}
}];
4. 拉取频道监控表
这个节点主要是调用飞书的查询结构,把监控表里的记录都拉取出来,后面做循环时使用。
如何配置:
①method:post
②url:https://open.feishu.cn/open-apis/bitable/v1/apps/{{ \$(‘合并配置’).first().json.feishuAppToken }}/tables/{{ \$(‘合并配置’).first().json.monitorTableId }}/records/search
③header
Authorization:Bearer {{ $('合并配置').first().json.feishuToken }}Content-Type:application/json; charset=utf-8

5. 解析频道记录
这是一个code节点,主要目的是对获取到的数据进行格式的加工。用大白话来讲,接口直接获取到的数据格式都很绕,这个节点就是为了帮我们「扒平」成:这一行是谁、链接是啥、频道 ID 是啥;并且一行变一条,后面才能一个一个频道处理。
具体的配置:
function cellText(f) {
if (f == null || f === '') return '';
if (typeof f === 'string' || typeof f === 'number') return String(f);
if (Array.isArray(f) && f[0] != null && f[0].text != null) return f.map(x => x.text).join('');
if (typeof f === 'object' && Array.isArray(f.value)) return f.value.map(x => (x && x.text) || '').join('');
if (typeof f === 'object' && f.link) return String(f.link);
return '';
}
const root = $input.first().json;
const items = (root.data && root.data.items) || [];
const out = [];
for (const it of items) {
const f = it.fields || {};
const channelId = cellText(f.ID != null ? f.ID : f.id).trim();
if (!channelId) continue;
out.push({ json: {
record_id: it.record_id,
channelId,
channelName: cellText(f.name != null ? f.name : f.Name),
channelUrl: cellText(f.url != null ? f.url : f.URL),
}});
}
if (!out.length) throw new Error('频道监控表中无有效 channelId,请检查字段名 ID');
return out;

6. 外循环-逐个频道

这里主要就是为了依次去获取频道主的视频信息,所以需要一个循环节点。将上游 N 条频道拆成每次 1 条输出到「循环分支」,全部处理完后从「完成分支」结束。
7. TikHub获取频道视频
HTTP Request节点,调用 TikHub的获取youtube视频信息的接口,用 channel_id 拉取频道视频列表。
简单来说这里就是我们去 问 TikHub:这个频道主页上最近有哪些视频、标题链接播放量以及发布时间都是啥。
配置方法:
①Method:GET
②URL:https://api.tikhub.io/api/v1/youtube/web_v2/get_channel_videos
③Query:
channel_id:{{ $json.channelId }}(来自外循环当前批次)need_format:truelanguage_code:zh-CNcountry_code:US
④Header:Authorization = Bearer {{ $('合并配置').first().json.tikhubApiKey }}

8. 筛选本周视频
我们用code节点做一个过滤,按视频的published_time也就是发布时间来进行判断,只筛出来最近一周内发布的视频。如果一个都没有,后面就不用进内循环写表了。
function isThisWeek(s) {
if (!s) return false;
const t = String(s).trim();
if (/刚刚|^\d+\s*分钟前|^\d+\s*小时前|今天|昨天|前天/.test(t)) return true;
const m = t.match(/^(\d+)\s*天前/);
if (m) return parseInt(m[1], 10) <= 7;
if (/本周|本星期/.test(t)) return true;
return false;
}
const channel = $('外循环-逐个频道').item.json;
const body = $input.item.json;
const videos = (body.data && body.data.videos) || [];
const week = videos.filter(v => isThisWeek(v.published_time));
if (!week.length) {
return [{ json: { __hasVideos: false, channelName: channel.channelName } }];
}
return week.map(v => ({ json: {
__hasVideos: true,
video_id: v.video_id,
title: v.title || '',
url: v.url || '',
description: (v.description || '').slice(0, 8000),
duration: v.duration || '',
view_count: v.view_count || v.short_view_count || '',
published_time: v.published_time || '',
channelName: channel.channelName,
channelUrl: channel.channelUrl,
channelId: channel.channelId,
}}));

9. 本周有新视频?
这里我们用if判断节点,来判断是否有视频更新,如果有就走「有视频」分支,否则走「无视频」分支。

10. 内循环-逐个视频

这里添加一个循序节点,对「本周视频」多条 item 每次放行 1 条,供评论接口与写表复用。 简单来说就是这个频道这周发了 3 条,就循环三次:一条一条拉评论、一条一条写入多维表格。
11. TikHub获取视频评论
这里是tikhub的另外一个接口,这个接口是用来获取视频评论的。把这条视频下面点赞高的评论抓一批回来。
我们用HTTP Request节点类型调用tikhub接口来实现
如何配置:
①URL:https://api.tikhub.io/api/v1/youtube/web_v2/get_video_comments
②Query:video_id = {{ $json.video_id }};sort_by = top;language_code / country_code 与频道接口可保持一致。
③Header:同上,Bearer {{ \$(‘合并配置’).first().json.tikhubApiKey }}

这个接口我们就把视频的热门评论都拉取到了。
12. 组装写入字段
因为我们上面的节点,获取到的评论数据,格式非常复杂并且有很多无关的信息,但是我们要把里面评论的内容拿出来,并且组装成飞书多维表格接口看得懂的格式,所以,就需要进行一次加工。
我们用code节点来实现
const cfg = $('合并配置').first().json;
const vid = $('内循环-逐个视频').item.json;
const raw = $input.item.json;
const comments = (raw.data && raw.data.comments) || [];
const lines = comments.slice(0, 50).map((c, i) => {
const who = (c.author && c.author.display_name) || '匿名';
const text = String(c.content || '').replace(/\r\n/g, '\n');
const likes = c.like_count != null ? c.like_count : '';
return `#${i+1} [赞:${likes}] ${who}\n${text}`;
});
const 视频内容 = lines.length ? lines.join('\n\n---\n\n') : '(无评论数据)';
const link = vid.url || `https://www.youtube.com/watch?v=${vid.video_id}`;
return [{ json: {
feishuToken: cfg.feishuToken,
feishuAppToken: cfg.feishuAppToken,
outputTableId: cfg.outputTableId,
feishuFields: {
'视频作者': vid.channelName || '',
'视频链接': { link, text: link },
'视频发布时间': vid.published_time || '',
'观看次数': String(vid.view_count || ''),
'视频时长': vid.duration || '',
'视频标题': vid.title || '',
'视频描述': vid.description || '',
'视频评论': 视频内容.slice(0, 49000),
'videoid': vid.video_id || '',
}
}}];
节点运行后,我们就提取出来我们想要的内容,并且将格式变成飞书多维表格看得懂的结构了。

13. 写入结果表
这个节点就是用HTTP Request,调用飞书多维表格「新增记录」接口。也就是把上一节点打包好的那一行,真正插进结果表。
如何配置:
①Method:POST
②URL:
https://open.feishu.cn/open-apis/bitable/v1/apps/{{ $json.feishuAppToken }}/tables/{{ $json.outputTableId }}/records
③Headers:Authorization: Bearer {{ $json.feishuToken }},Content-Type: application/json; charset=utf-8
④Body:JSON,使用表达式:
{{ JSON.stringify({ fields: $json.feishuFields }) }}
另外注意节点的连线:输出接回「内循环-逐个视频」,表示「这一条视频写完了,继续下一条」。

以上就是整个流程的配置了,配置完成后,点击启用,我们就可以实现最后的效果了。
有几个注意点提醒一下:
1、获取本周数据:因为接口返回的数据,published_time并不是一个时间戳,而是文字描述,比如「N 天前」之类的,所以我们只能换一种方式来实现,当前逻辑是把「≤7 天前」「今天/昨天/小时前」等视为可能属于近一周。
2、费用问题:涉及到的费用只有tikhub的接口费用,虽然单次调用不贵,但是我们还是得清楚逻辑,这个是按次计费:约等于「频道数 × 1 次频道列表」+「本周每条视频 × 1 次评论」。所以我们心里要有个数,控制监控行数与执行频率。
五、总结
简单做个总结
我们这三期都写了什么
| 维度 | 第一弹 | 第二弹 | 第三弹(本篇) |
|---|---|---|---|
| 信号来源 | YouTube 关键词搜索 | Reddit 版块热帖 | 指定 YouTube 频道列表 |
| 典型问题 | 话题面上大家在搜什么 | 社区里最近在吵什么 | 对标博主这周更了什么、评论怎么说 |
| 表结构 | 视频+评论+AI 洞察 | 帖子+评论+AI 洞察 | 视频元数据 + 视频评论长文本(无 DeepSeek,可自加) |
若你希望第三弹也带「DeepSeek 一句话选题洞察」,可在「组装写入字段」与「写入结果表」之间插入与第一弹同结构的 HTTP 节点,并把洞察写入新列(例如「AI 选题要点」)。
通过这三弹,会发现我们的信息来源越来越丰富了开始。
其实还有更多的渠道可以去获取,并且获取到之后,我们还需要对内容进行监控和加工。
这个我们后续持续来分享。欢迎关注\~
📋 这套频道监控相关模板,我整理成模板了
跟着上面步骤搭要花点时间。想直接拿现成的改,加我微信备注「频道监控」,我发你。
🤔 卡在某一步了?
搭建过程里如果哪一步卡住了,如果你照着做没跑通,或者你们公司情况不太一样,可以找我聊聊,我免费帮你看看怎么调。不合适我也会直说。
扫码加我,备注「频道监控」领模板
想看更多这类方案,我都整理在 吨师傅工具箱 里了:客户管理、进销存、工单报修……按场景分好类,可以直接抄。


