林月半子:零下载、零成本,用 n8n 2.0 三步搞定视频提取
林月半子:零下载、零成本,用 n8n 2.0 三步搞定视频提取
林月半子:零下载、零成本,用 n8n 2.0 三步搞定视频提取 林月半子:零下载、零成本,用 n8n 2.0 三步搞定视频提取 Modified December 18, 2025 Audio or video is not supported Please download the file and open it with the appropriate software. Chat hub.mp4 · 76.84MB Chat hub 00:00 二)第一个实验:Hello World 环境配置好了,该验证一下是不是真的能用。 新建工作流,加个 Manual Trigger 和 Code 节点(选 Python Native): Code block Python Copy import yt dlp result = { 'json': { 'success': True, 'message': 'yt dlp 可用!', 'version': yt dlp.version. version } } return result 点击 Execute Node。 如果你看到这样的输出: Code block JSON Copy [ { "success": true, "message": "yt dlp 可用!", "version": "2025.12.08" } ] 🎉 恭喜!环境配置成功了。 三)第二个实验:获取视频信息 Hello World 跑通了,现在可以干点实际的。 我们先从简单的开始:获取视频的基本信息,不涉及字幕提取。 1、获取元数据的代码 Code block Python Copy import yt dlp import json url = items[0]["json"]["url"] ydl opts = { 'quiet': True, 'no warnings': True, 'skip download': True, } try: with yt dlp.YoutubeDL(ydl opts) as ydl: info = ydl.extract info(url, download=False) result = { 'json': { 'success': True, 'video id': info.get('id'), 'title': info.get('title'), 'description': info.get('description', ''), 'duration': info.get('duration'), 'duration string': info.get('duration string'), 'view count': info.get('view count', 0), 'like count': info.get('like count', 0), 'comment count': info.get('comment count', 0), 'channel': info.get('channel'), 'channel id': info.get('channel id'), 'channel url': info.get('channel url'), 'upload date': info.get('upload date'), 'thumbnail': info.get('thumbnail'), 'tags': info.get('tags', []), 'categories': info.get('categories', []), 'url': url, 额外有用信息 'webpage url': info.get('webpage url'), 'language': info.get('language'), 'age limit': info.get('age limit', 0), } } return result except Exception as e: error result = { 'json': { 'success': False, 'error': str(e), 'url': url } } return error result 2、代码解析 让我解释一下这段代码做了什么: 配置选项: Code block Python Copy ydl opts = { 'quiet': True, 不输出调试信息 'no warnings': True, 不显示警告 'skip download': True, 最关键:不下载视频 } skip download: True 这个参数非常重要。它告诉 yt dlp:"我只要元数据,不要下载视频文件"。 提取信息: Code block Python Copy info = ydl.extract info(url, download=False) download=False 再次确认不下载。这是双重保险。 3、测试结果 点击 Execute Node 返回: Code block JSON Copy [ { "success": true, "video id": "67BVIScAlbs", "title": "n8n 2.0 is Here (What You Need to Know)", "description": "Full courses + unlimited support: https://www.skool.com/ai automation society plus/about\nAll my FREE resources: https://www.skool.com/ai automation society/about\n14 day FREE n8n trial: https://n8n.partnerlinks.io/22crlu8afq5r\nCode NATEHERK to Self Host n8n for 10% off (annual plan): http://hostinger.com/nateherk\n\nI just walked through everything new in n8n version 2.0. This update brings a refreshed UI, smoother animations, and a few behavior changes that make building automations feel more intuitive. \n\nIn the video, I highlight the biggest improvements, show how they affect your workflows, and share what you should expect as you transition to the new version. If you want a quick overview of what’s changing and why it matters, this breakdown will get you up to speed.\n\nSponsorship Inquiries:\n📧 sponsorships@nateherk.com\n\nTIMESTAMPS \n00:00 UI/UX Improvements\n01:58 Side by Side Comparison\n03:45 What Else is Coming\n04:50 Behavior Change: Subworkflow Data\n08:30 2 Extra Features to Highlight\n09:56 v2 Migration\n10:31 Self Hosted v2\n10:50 Want to Master AI Automations?", "duration": 668, "duration string": "11:08", "view count": 83586, "like count": 2023, "comment count": 124, "channel": "Nate Herk | AI Automation", "channel id": "UC2ojq nuP8ceeHqiroeKhBA", "channel url": "https://www.youtube.com/channel/UC2ojq nuP8ceeHqiroeKhBA", "upload date": "20251208", "thumbnail": "https://i.ytimg.com/vi webp/67BVIScAlbs/maxresdefault.webp", "tags": [], "categories": [ "Film & Animation" ], "url": "https://www.youtube.com/watch?v=67BVIScAlbs", "webpage url": "https://www.youtube.com/watch?v=67BVIScAlbs", "language": "en US", "age limit": 0 } ] 四)把代码变成 AI 的工具 前面的实验都是在 Code 节点里写死 URL。但真正的生产环境不可能这样用。 你需要的是:动态接收 URL,根据用户需求灵活处理。 这就要用到 n8n 的另一个强大功能:AI Agent。 1、配置 Tool 的输入 Schema 这一步很关键。你需要告诉 AI Agent:"这个工具需要什么参数"。 在 Code 节点的设置里,找到 Specify Input Schema,填入: Audio or video is not supported Please download the file and open it with the appropriate software. Chat hub.mp4 · 76.84MB Chat hub 00:00 Audio or video is not supported Please download the file and open it with the appropriate software. Chat hub.mp4 · 76.84MB Chat hub 00:00 二)第一个实验:Hello World 环境配置好了,该验证一下是不是真的能用。 新建工作流,加个 Manual Trigger 和 Code 节点(选 Python Native): 点击 Execute Node。 如果你看到这样的输出: 🎉 恭喜!环境配置成功了。 恭喜!环境配置成功了。 三)第二个实验:获取视频信息 Hello World 跑通了,现在可以干点实际的。 我们先从简单的开始:获取视频的基本信息,不涉及字幕提取。 1、获取元数据的代码 2、代码解析 让我解释一下这段代码做了什么: 配置选项: skip download: True 这个参数非常重要。它告诉 yt dlp:"我只要元数据,不要下载视频文件"。 提取信息: download=False 再次确认不下载。这是双重保险。 3、测试结果 点击 Execute Node 返回: 四)把代码变成 AI 的工具 前面的实验都是在 Code 节点里写死 URL。但真正的生产环境不可能这样用。 你需要的是:动态接收 URL,根据用户需求灵活处理。 这就要用到 n8n 的另一个强大功能:AI Agent。 1、配置 Tool 的输入 Schema 这一步很关键。你需要告诉 AI Agent:"这个工具需要什么参数"。 在 Code 节点的设置里,找到 Specify Input Schema,填入: 这个视频主要讲了什么? https://www.youtube.com/watch?v=67BVIScAlbs 这就是 AI Agent 的威力。你不需要记住工具的参数格式,不需要手动调用,只要用自然语言说出需求。 三、Chat Hub:把工作流变成 AI 应用 这就是我在开头展示的那个对话界面。 一)什么是 Chat Hub? Chat Hub 是 n8n 2.1 新增的功能,它解决了一个很实际的问题 以前我们只能在工作流编辑器里测试对话,没办法直接把对话界面分享给其他人用。 现在不一样了。你可以把做好的工作流变成一个个类似于 GPTs 的应用,然后分享给别人使用。 用户只要在聊天界面里直接对话,就能调用你的工作流。而且: • 他们看不到背后的工作流逻辑 • 也改变不了你的配置 • 完全不需要了解技术细节 这意味着什么? 你的工作流不再局限在 n8n 界面里。它变成了一个可以随时调用的 AI 助理。 而且根据官方博客的说明,后续还会支持分配"仅聊天"权限。这样用户就只能用,不能改,更安全,门槛更低。 二)配置 Chat Hub 1、第一步:打开 Chat 配置 在 When chat message received 节点的 Parameters 标签页: 把 Make Available in n8n Chat 开关打开(变成绿色) 2、第二步:配置 Agent 名称和描述 Agent Name(必填): Agent Description(推荐填写): 3、第三步:发布工作流 配置完成后,必须点击右上角的 Publish 按钮发布工作流,Chat 功能才会生效 写在最后 n8n 2.0 的代码节点和任务运行器功能,真正打开了自动化工作流的新世界。 它让我们不再受限于预设的节点和 API,而是可以自由地运用整个 Python 生态系统的力量。 是的,初期配置可能有些复杂,你可能会遇到一些问题。但一旦你掌握了 query 参数模式,理解了任务运行器的工作原理,你就拥有了一个强大得令人难以置信的工具。 而 Chat Hub 的出现,让这一切的价值翻了一倍。 以前你做的工作流只能自己用,现在它可以变成一个独立的应用,分享给团队、朋友,甚至客户。 如果你在配置过程中遇到问题,欢迎在评论区留言。 我是林月半子,关注我,带你一起挖掘工作流自动化的无限可能。 🔗 原文链接:https://mp.weixin.qq.com/s/do2UMTFFuG Oj9dOA8iwQ ⏰ 发布时间:2025 12 18 19:46:00 (UTC+8) 作者:林月半子的AI笔记 如果你像我一样,经常需要从 YouTube 视频中提取内容做笔记或分析,你一定懂那种痛苦。 上周研究 n8n 2.0 的 Task Runners,我突然意识到一件事: 既然 Code 节点现在可以运行任何 Python 库,那我为什么还要下载视频?直接用 yt dlp 提取字幕不就完了? 于是我搭了这么个东西: 现在我只需要在对话框里扔个链接,AI 助理就会自动调用我写好的工作流,很快帮我提取字幕、分析内容。 零成本,零下载,零 Token。 这得益于 n8n 2.1 最新的 Chat Hub 功能——它能把你的工作流封装成类似 GPTs 的应用,用户根本不需要懂背后的逻辑,直接对话就能调用。 今天我要分享的,不只是怎么配置这套系统,还有我在过程中踩过的坑,如何利用 n8n 2.0 的代码执行自由,彻底解放双手的。 一、n8n 2.0 凭什么能做到这些? 一)Task Runner:魔法的根基 在讲具体实现之前,我想先聊聊 n8n 2.0 最大的更新——Task Runner。 以前 n8n 的 Python 代码节点有个致命限制:它使用的是 Pyodide(WebAssembly 版的 Python),只能用它预装的那些包,无法安装 yt dlp这些你想要的库。 JavaScript 节点倒是可以通过自定义 Docker 镜像装库,但配置起来比较麻烦。 2.0 的 Task Runner 改变了游戏规则。 它把代码执行单独抽离成一个容器,运行真正的 Python 环境(不再是 WebAssembly)。这意味着: • 你可以定制自己的 Docker 镜像 • 想装什么 Python 库就装什么 • 只要 Python 能做的事,n8n 就能做 这种分离式架构还带来了额外的好处: • 安全性:代码在隔离环境中运行,出错不会影响主工作流 • 可扩展性:可以启动多个运行器处理并发任务 • 灵活性:可以同时运行 Python 和 JavaScript 任务 二)打造自定义 Runner 镜像 说实话,这部分配置有点复杂。但搞懂了,你就拥有了 Python 生态的全部能力。 1、为什么要自己做镜像? 官方的 runner 镜像就像毛坯房:有 Python 环境,有基础库,但没有 yt dlp,也没有 pandas、numpy 这些常用库。 如果你在 Code 节点里直接 import yt dlp,会报错: 这就是为什么我们需要自己打镜像 2、三步搞定自定义镜像 在开始之前,先看看我们需要准备的文件: 就这三个文件,都在同一个目录下。 接下来我会逐个解释每个文件的作用。 1)写个 Dockerfile 我们需要创建了一个 Dockerfile 来扩展 n8n 的官方运行器镜像: 这个 Dockerfile 做了三件事: 1. 基于官方镜像:我们不是从头开始,而是在官方镜像基础上扩展 2. 安装需要的库:yt dlp 是主角,numpy 和 pandas 是配角 3. 复制配置文件:这个配置文件很关键,后面会详细说 💡 FROM n8nio/runners:2.1.0 这里的版本号,要和你的 n8n 主容器版本一致。 FROM n8nio/runners:2.1.0 这里的版本号,要和你的 n8n 主容器版本一致。 2)配置 n8n task runners.json 这个文件告诉 n8n 如何管理任务运行器。 💡 关键参数说明: • allowed env:允许哪些环境变量传递进来 • env overrides:强制覆盖某些环境变量 关键参数说明: • allowed env:允许哪些环境变量传递进来 • env overrides:强制覆盖某些环境变量 这一步很重要:没有这个配置文件,外部库无法使用 3)配置 docker compose.yml 最后用 docker compose.yml 把所有服务串联起来: 💡 关键配置说明: • N8N RUNNERS AUTH TOKEN 必须在两个容器中完全一致,这是它们之间通信的密钥 • build: . 表示使用当前目录的 Dockerfile 构建镜像 • N8N RUNNERS STDLIB ALLOW= :允许使用所有 Python 标准库 • N8N RUNNERS EXTERNAL ALLOW= :允许使用所有外部库 关键配置说明: • N8N RUNNERS AUTH TOKEN 必须在两个容器中完全一致,这是它们之间通信的密钥 • build: . 表示使用当前目录的 Dockerfile 构建镜像 • N8N RUNNERS STDLIB ALLOW= :允许使用所有 Python 标准库 • N8N RUNNERS EXTERNAL ALLOW= :允许使用所有外部库 运行命令很简单 另外我们可以看到本地构建了一个新的镜像 二、从 yt dlp 到 AI Agent 一)yt dlp 是什么?为什么选它? 在开始动手之前,我想先花点时间聊聊 yt dlp 这个神器。因为理解了它的能力边界,你才能更好地发挥它的价值。 它能做什么? 很多人以为 yt dlp 只是用来下载视频的。错了,大错特错。 yt dlp 是一个完整的视频平台数据提取工具。它能做的事情远不止下载,关键是全免费,不需要 API 密钥。 比如我们可以用它来提取视频元数据: description 很重要。AI 会根据这个描述判断什么时候该调用这个工具。 2、在代码中接收参数 在 Code 节点中,使用 query 获取参数,让它能接收来自 AI Agent 的参数。 就这么简单。 query 是 n8n 注入到 Code 环境中的特殊对象。 3、实际使用示例 现在你可以用自然语言对话了: 提取下 https://www.youtube.com/watch?v=67BVIScAlbs 这个视频的完整字幕文案