在信息爆炸的时代,高频跟进特定领域的视频内容(如极客硬件评测、AI 前沿资讯)极其耗费精力。传统的 RSS 订阅仅能提供标题,而直接使用爬虫往往会被 YouTube 等平台的防爬机制(Captcha)无情拦截。
本文记录了一套基于 HomeLab 本地算力闭环的“事件驱动型”信息摄取架构。我们通过 n8n 串联调度,结合 RSSHub 绕过接口封锁,最终利用 OpenClaw 智能体驱动 Browserless 进行无头浏览器的深度阅读,实现了从“信息订阅”到“深度解析”再到“精美推送”的 100% 全自动化。
架构概览与算力分布
为保证系统的稳定与高效,模块被合理分配在不同的本地节点上:
- 调度中枢 (n8n):负责串联工作流,处理批处理任务与逻辑判断。
- 防弹订阅源 (RSSHub):部署于本地 Docker,用于绕过 YouTube 对数据中心 IP 的 API 限制。
- 视觉破盾者 (Browserless):部署于算力充沛的节点(如 R730)。通过 CDP 协议被远程调用,负责渲染动态网页、提取长视频完整字幕及描述。
- 决策大脑 (OpenClaw):本地 AI 智能体网关(如部署在 J1900 等轻量节点)。接收 n8n 任务,主动遥控 Browserless 抓取内容,并调用底层大模型进行深度总结。
- 信息终端 (Telegram):接收排版精美的 HTML 格式每日内参。
![[实战指南] n8n + OpenClaw + RSSHub 构建 YouTube 全自动 AI 情报中心 2 完整工作流](https://photo.vgoods.top/wp-content/uploads/2026/04/processed_2026-04-19-095205-1024x219.webp)
核心配置步骤
步骤一:利用 RSSHub 破解 YouTube 原生接口 404 封锁
由于 YouTube 近期对机房 IP 抓取原生 /feeds/videos.xml 接口实施了严格的时间段封锁(经常报 404 Not Found 错误),我们放弃直接抓取,转而利用本地的 RSSHub 实例进行代理转换。
- 提取真实频道 ID:进入目标 YouTube 频道,查看网页源码,搜索并提取以
UC开头的真实channel_id。 - 构建频道数组 (Code 节点):在 n8n 中通过 JavaScript 切分任务流。
JavaScript
const myChannels = [
"UCI8iQa1hv7oV_Z8D35vVuSg", // 频道 A
"UCXGgrKt94gR6lmN4aN3mYTg", // 其他频道...
];
return myChannels.map(id => ({ json: { channelId: id } }));
- 调用 RSSHub (RSS Read 节点):在 URL 表达式中使用你本地部署的 RSSHub 地址,彻底解决抓取被拦截的问题:
http://<你的RSSHub_IP>:1200/youtube/channel/{{ $json.channelId }}
步骤二:规避数据类型陷阱的时间过滤器
在获取 RSS 数据后,需要过滤出 24 小时内的最新更新。 在 n8n 的 Filter (筛选) 节点中:
- 关键开关:必须开启
Convert types where required(需要时转换类型)。将 RSSHub 吐出的文本时间强制转为系统时间格式。 - 时间条件:设置比较符为
is after,表达式填入{{ $now.minus(1, 'days') }}。
![[实战指南] n8n + OpenClaw + RSSHub 构建 YouTube 全自动 AI 情报中心 3 processed 2026 04 19 095149](https://photo.vgoods.top/wp-content/uploads/2026/04/processed_2026-04-19-095149.webp)
步骤三:打通 OpenClaw 网关,进行智能体深度阅读
这是核心的 AI 处理节点。我们通过 HTTP Request 节点将视频参数传给智能体。
- 开启 OpenClaw 接口:确保在服务器终端执行过
openclaw config set gateway.http.endpoints.chatCompletions.enabled true并重启了服务。 - 配置鉴权:在节点中选择
Header Auth,键名为Authorization,键值为Bearer 你的API_KEY。 - 精准注入 JSON 提示词 (极其重要):
model必须填"openclaw",不能填底层模型名。- 必须在提示词末尾加上严格的排版限制,以防止后续 Telegram 节点解析崩溃。
JSON
{
"model": "openclaw",
"messages": [
{
"role": "system",
"content": "你是一个专业的科技与硬件分析师。遇到用户提供的网页链接时,请务必调用你的 browser 技能去抓取并阅读网页详情或字幕,然后再进行总结。"
},
{
"role": "user",
"content": "请根据最新发布的视频标题:【{{ $json.title }}】,以及链接:{{ $json.link }},写一份简短的中文简报。1. 核心看点是什么。 2. 结合硬件领域知识,评价它值不值得看。注意:请在输出时直接使用纯文本排版,绝对不要使用任何 Markdown 符号(如 ** 或 * 或 #)。"
}
]
}
步骤四:Telegram HTML 排版与静默容错 (解决 400 报错)
大语言模型生成的 Markdown 符号(如未闭合的 **)极易触发 Telegram API 的 Bad Request: can't parse entities 致命报错,导致推送中断。
1. 切换至 HTML 模式
在 Telegram 节点的 Additional Fields 中,将 Parse Mode 设定为 HTML。
2. HTML 表达式排版
使用标准的 HTML 标签(如 <b>)代替 Markdown 星号,并利用 n8n 的跨节点抓取语法 $('节点名') 还原视频标题和链接:
HTML
📺 <b>最新 YouTube 硬件简报</b>
<b>标题:</b> {{ $('Filter').item.json.title }}
<b>链接:</b> {{ $('Filter').item.json.link }}
💡 <b>小宝的深度解析:</b>
{{ $json.choices[0].message.content }}
3. 容错分支 (If 节点)
在 HTTP 和 Telegram 节点之间插入一个 If 节点。当 AI 返回的 content 包含 Agent couldn't generate a response(通常因网络波动或 YouTube 强力验证码导致抓取失败)时,走 False 分支静默丢弃,确保推送列表的极致纯净。
结语
通过这套架构,我们成功将 n8n 的工作流调度、RSSHub 的反封锁特性、Browserless 的动态渲染以及 OpenClaw 的智能体推理完美结合。这不仅是一个高效的 YouTube 监控工具,更是一套完全部署在 HomeLab 本地、数据高度私密可控的“数字员工”最佳实践方案。如果你对更多组建数字员工的内容感兴趣,可以查看我们另一篇文章《我给自己雇了 4 个不知疲倦的 AI 影视打工人》
常见问题解答 (FAQ)
1. 为什么使用 n8n 配合 YouTube 原生 XML 接口,而不是使用 RSSHub?
尽管 RSSHub 是强大的路由生成器,但 YouTube 的订阅列表路由 (/youtube/subscriptions) 强制要求完整的 Google OAuth 2.0 鉴权。这需要申请 API Key、Client ID 并定期维护 Refresh Token,维护成本极高。利用 n8n 的批处理(Item-based Execution)能力,直接循环抓取 YouTube 无鉴权的原生 XML 频道接口,既避开了权限封锁,又极大地提升了系统的稳定性与扩展性。
2. 在 n8n 中调用 OpenClaw API 时,频繁遇到 404 Not Found 或 Invalid model 报错该如何排查?
404 Not Found 通常是因为 OpenClaw 的 HTTP 服务未对外暴露。需要在服务端终端执行 openclaw config set gateway.http.endpoints.chatCompletions.enabled true 并重启网关服务。 Invalid model 报错则是因为在请求体 (JSON Body) 的 "model" 字段填入了底层的物理大模型名称。由于你是在调用 OpenClaw 的智能体调度服务,而非单纯的大语言模型推理接口,此处必须统一填写 "openclaw" 作为模型代号。
3. Telegram 推送中偶尔出现 Agent couldn't generate a response 提示是什么原因?
这并非 n8n 或推送节点的配置错误,而是 OpenClaw 智能体在执行任务时内部返回的结果。通常是因为远程遥控的 Browserless 容器在抓取目标 YouTube 网页时,遭遇了瞬时网络超时或被平台的反爬虫机制(如人机验证)拦截,导致 AI 无法获取足够的信息来进行总结。通过在 n8n 工作流中增加 If 节点进行关键字过滤,即可实现对该类偶发错误的静默处理,确保推送端内容的纯净度。