n8n 全流程教程 | 一键实现从 YouTube 视频到公众号文案!
n8n 全流程教程 | 一键实现从 YouTube 视频到公众号文案!
n8n 全流程教程 | 一键实现从 YouTube 视频到公众号文案! n8n 全流程教程 | 一键实现从 YouTube 视频到公众号文案! Modified June 23, 2025 6. processTranscript(Function)– 清洗文本 ◦ 复制如下模板代码,核心逻辑: Code block JavaScript Copy } }); } else if (typeof data.transcript === 'string') { transcriptText = data.transcript; } } else if (data.text) { // Format for single transcript object with text property transcriptText = data.text; } // Clean up the transcript (remove extra spaces, normalize punctuation) const cleanedTranscript = transcriptText .replace(/\s+/g, ' ') .replace(/\s([.,!?])/g, '$1') .trim(); return { json: { success: true, videoUrl: $input.first().json.body?.videoUrl || 'From transcript', rawTranscript: data.text || data.transcript, cleanedTranscript, duration: data.duration, offset: data.offset, language: data.lang } }; 7. cleanedTranscript(Set)– 标准化数据 ◦ 把上一步的 cleanedTranscript 赋给统一字段 transcript,方便后续 LLM 调用。 8. Summarize & Analyze Transcript(LangChain LLM) • 节点:@n8n/n8n nodes langchain.chainLlm • 选择 DeepSeek Chat Model(或你常用的大模型) • Prompt Code block Markdown Copy 请基于用户输入的文本内容改写成适合微信公众号发布的文案,要求风格轻松易懂,逻辑清晰,符合新媒体阅读习惯,并以 markdown 格式输出(非代码块)。文案书写要求: 文案标题抓住读者注意力、制造情绪价值、传递明确利益或诱发好奇心 文案编写作者为芋头小宝 开头用提问或故事引入 文章结构清晰,有条理,逻辑严谨 文案合适位置可提供配图建议 结尾引导读者留言互动或者关注转发 内容完整,排版优美 用户输入文本内容如下: {{ $json.transcript }} • 轻松拿到润色后的公众号稿 9. Markdown 节点 – 渲染 HTML ◦ Mode 选 markdownToHtml ◦ markdown 字段取 LLM 输出 ◦ 得到公众号后台可直接粘贴的富文本 10. Respond to Webhook – 即时返回 ◦ respondWith: text ◦ responseBody: {{$json.text}} ◦ 前端Google sheet可随时接收LLM生成的改写文案 11. Gmail – 邮件备份 / 审稿 ◦ Send To: 你的邮箱 ◦ Subject: 微信公众号文案 ◦ Message: {{$json.data}}(就是刚才的 HTML) 三、测试工作流 点击 Execute workflow,在 Google sheet 粘贴 youtube 的 url,稍等片刻即可在 邮箱 和 Google sheet 的第二列收到微信公众号文案。 实现效果 No access 6月15日 00:00 结语 n8n 依靠 庞大的社区节点生态、所见即所得的工作流编排,再加上 开源且低门槛的自部署 优势,早已在 GitHub 斩获 107 k⭐️。放眼海外,n8n 正被开发者与 AI 场景深度结合——无论是 24 × 7 的 Slack 机器人,还是 Notion 自动写作助手,玩法层出不穷。 想把 n8n 接入更多工具,或有其他灵感(如 Slack 通知、Notion 同步、飞书群聊等……)?大胆在评论区告诉我,下期继续为你 解锁更多n8n的高级操作! 我是芋头小宝,关注我,持续带你探索GenAI的成长宇宙。 如果你觉得这篇文章对你有帮助,别忘了点赞+收藏+转发哦~ 微信原文:https://mp.weixin.qq.com/s/gQzTNljH3HK5CMMuJ64 dw 6. processTranscript(Function)– 清洗文本 ◦ 复制如下模板代码,核心逻辑: Code block JavaScript Copy } }); } else if (typeof data.transcript === 'string') { transcriptText = data.transcript; } } else if (data.text) { // Format for single transcript object with text property transcriptText = data.text; } // Clean up the transcript (remove extra spaces, normalize punctuation) const cleanedTranscript = transcriptText .replace(/\s+/g, ' ') .replace(/\s([.,!?])/g, '$1') .trim(); return { json: { success: true, videoUrl: $input.first().json.body?.videoUrl || 'From transcript', rawTranscript: data.text || data.transcript, cleanedTranscript, duration: data.duration, offset: data.offset, language: data.lang } }; ◦ 复制如下模板代码,核心逻辑: Code block JavaScript Copy } }); } else if (typeof data.transcript === 'string') { transcriptText = data.transcript; } } else if (data.text) { // Format for single transcript object with text property transcriptText = data.text; } // Clean up the transcript (remove extra spaces, normalize punctuation) const cleanedTranscript = transcriptText .replace(/\s+/g, ' ') .replace(/\s([.,!?])/g, '$1') .trim(); return { json: { success: true, videoUrl: $input.first().json.body?.videoUrl || 'From transcript', rawTranscript: data.text || data.transcript, cleanedTranscript, duration: data.duration, offset: data.offset, language: data.lang } }; 7. cleanedTranscript(Set)– 标准化数据 ◦ 把上一步的 cleanedTranscript 赋给统一字段 transcript,方便后续 LLM 调用。 ◦ 把上一步的 cleanedTranscript 赋给统一字段 transcript,方便后续 LLM 调用。 8. Summarize & Analyze Transcript(LangChain LLM) • 节点:@n8n/n8n nodes langchain.chainLlm • 选择 DeepSeek Chat Model(或你常用的大模型) • Prompt • 轻松拿到润色后的公众号稿 9. Markdown 节点 – 渲染 HTML ◦ Mode 选 markdownToHtml ◦ markdown 字段取 LLM 输出 ◦ 得到公众号后台可直接粘贴的富文本 ◦ Mode 选 markdownToHtml ◦ markdown 字段取 LLM 输出 ◦ 得到公众号后台可直接粘贴的富文本 10. Respond to Webhook – 即时返回 ◦ respondWith: text ◦ responseBody: {{$json.text}} ◦ 前端Google sheet可随时接收LLM生成的改写文案 ◦ respondWith: text ◦ responseBody: {{$json.text}} ◦ 前端Google sheet可随时接收LLM生成的改写文案 11. Gmail – 邮件备份 / 审稿 ◦ Send To: 你的邮箱 ◦ Subject: 微信公众号文案 ◦ Message: {{$json.data}}(就是刚才的 HTML) ◦ Send To: 你的邮箱 ◦ Subject: 微信公众号文案 ◦ Message: {{$json.data}}(就是刚才的 HTML) 三、测试工作流 点击 Execute workflow,在 Google sheet 粘贴 youtube 的 url,稍等片刻即可在 邮箱 和 Google sheet 的第二列收到微信公众号文案。 实现效果 No access 6月15日 00:00 No access 6月15日 00:00 结语 n8n 依靠 庞大的社区节点生态、所见即所得的工作流编排,再加上 开源且低门槛的自部署 优势,早已在 GitHub 斩获 107 k⭐️。放眼海外,n8n 正被开发者与 AI 场景深度结合——无论是 24 × 7 的 Slack 机器人,还是 Notion 自动写作助手,玩法层出不穷。 想把 n8n 接入更多工具,或有其他灵感(如 Slack 通知、Notion 同步、飞书群聊等……)?大胆在评论区告诉我,下期继续为你 解锁更多n8n的高级操作! 我是芋头小宝,关注我,持续带你探索GenAI的成长宇宙。 如果你觉得这篇文章对你有帮助,别忘了点赞+收藏+转发哦~ 微信原文:https://mp.weixin.qq.com/s/gQzTNljH3HK5CMMuJ64 dw 作者:芋头小宝 作者:芋头小宝 盆友,还在一字一句地敲公众号稿吗? 现在,把 YouTube 视频链接丢给 n8n,AI 就能帮你自动提取字幕、润色排版,甚至直接发到邮箱!今天就手把手教你,用几个简单节点做一个「视频 → 公众号文案」全自动流水线,连非技术同学也能轻松复刻。 核心思路 • 前端(如 Google 表格)POST 视频链接 → Webhook • 流水线提取字幕、清洗文本 • LLM 按公众号风格改写 → Markdown 渲染 • 即时返回结果并抄送邮箱,可一键复制到公众号后台 配置流程 一、Google apps script 配置 主要功能:借助 Apps Script,你只要在表格里填入 YouTube 链接,后台就会自动把整行数据打包 POST 到n8n的 Webhook 节点 1. 新建 Google sheet,命名为 video2text,首列字段名为 url 2. 创建 Apps Script ◦ 在表格顶部菜单点击 扩展程序 › Apps Script ◦ 删除默认 myFunction,粘贴下方完整代码 Code block JavaScript Copy function sendWebhookOnEdit(e) { const webhookUrl = ''; //替换为你 webhook 节点的 test url const editedRow = e.range.getRow(); const sheet = e.source.getSheetByName("video2text"); const rowData = sheet.getRange(editedRow, 1, 1, sheet.getLastColumn()).getValues()[0]; const payload = { row: editedRow, values: rowData }; const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload), muteHttpExceptions: true }; try { const response = UrlFetchApp.fetch(webhookUrl, options); // 获取 n8n 的返回文案内容(纯文本模式) const responseText = response.getContentText(); // 将返回内容写入第 2 列(你可以改成其他列索引) const writeColumn = 2; // 第 B 列 sheet.getRange(editedRow, writeColumn).setValue(responseText); } catch (err) { Logger.log("Webhook error: " + err.message); } } function installTrigger() { ScriptApp.newTrigger("sendWebhookOnEdit") .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) .onEdit() .create(); } ◦ onEdit 触发器:新增 trigger,事件类型选择 on edit,保存即可 ◦ 在表格顶部菜单点击 扩展程序 › Apps Script ◦ 删除默认 myFunction,粘贴下方完整代码 ◦ onEdit 触发器:新增 trigger,事件类型选择 on edit,保存即可 二、n8n工作流创建 小技巧:每配好一个节点就点 Execute Workflow (测试执行),随时定位问题。 小技巧:每配好一个节点就点 Execute Workflow (测试执行),随时定位问题。 n8n全流程工作流 1. Webhook 节点 – 接收外部触发 ◦ 新建 Webhook,HTTP 方法选 POST ◦ Path 地址按需设置,我是从 Google sheet 里获取更新数据,所以与功能匹配编写为"google sheet update" ◦ 点击 Listen for Test Event,在 Google sheet 的第一列粘贴 url 链接,确保webhook能接收到 youtubeUrl ◦ 新建 Webhook,HTTP 方法选 POST ◦ Path 地址按需设置,我是从 Google sheet 里获取更新数据,所以与功能匹配编写为"google sheet update" ◦ 点击 Listen for Test Event,在 Google sheet 的第一列粘贴 url 链接,确保webhook能接收到 youtubeUrl 2. Edit Fields(Set)– 提取链接 ◦ 新增字段 youtubeUrl ◦ 值填 {{$json["body"]["values"][0]}}(表格第 1 列存放视频链接) ◦ 测试节点效果,确保能成功获取 youtube 的视频链接 ◦ 新增字段 youtubeUrl ◦ 值填 {{$json["body"]["values"][0]}}(表格第 1 列存放视频链接) ◦ 测试节点效果,确保能成功获取 youtube 的视频链接 3. YouTube Video ID(Code)– 提炼视频 ID ◦ 选择 Code (JavaScript) ◦ 粘贴如下正则脚本,获取 video ID Code block JavaScript Copy const extractYoutubeId = (url) = { // Regex pattern that matches both youtu.be and youtube.com URLs const pattern = /(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|. [?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/; const match = url.match(pattern); return match ? match[1] : null; }; // Input URL from previous node const youtubeUrl = items[0].json.youtubeUrl; // Adjust this based on your workflow // Process the URL and return the video ID return [{ json: { videoId: extractYoutubeId(youtubeUrl) } }]; ◦ 选择 Code (JavaScript) ◦ 粘贴如下正则脚本,获取 video ID 4. Get YouTube Video – 拉取视频详情 ◦ 节点类型:YouTube → operation 选 get ◦ videoId 用 {{$json.videoId}} ◦ 该节点需要你去Google 云平台 console.cloud.google.com创建项目,获取 youtube 的clientID和 client secret,成功绑定 OAuth 凭证后才能正常使用(详细配置过程请自行 Google) console.cloud.google.com ◦ 节点类型:YouTube → operation 选 get ◦ videoId 用 {{$json.videoId}} ◦ 该节点需要你去Google 云平台 console.cloud.google.com创建项目,获取 youtube 的clientID和 client secret,成功绑定 OAuth 凭证后才能正常使用(详细配置过程请自行 Google) console.cloud.google.com 5. extractTranscript(HTTP Request)– 获取字幕 ◦ Method 选 GET ◦ URL 填 https://youtube transcript3.p.rapidapi.com/api/transcript ◦ Query 参数:videoId={{$json.id}} ◦ Headers: ▪ x rapidapi host: youtube transcript3.p.rapidapi.com ▪ x rapidapi key: <你的 RapidAPI Key (可以去 rapidapi 官网申请获取,有一定的免费额度) youtube transcript3.p.rapidapi.com ◦ Method 选 GET ◦ URL 填 https://youtube transcript3.p.rapidapi.com/api/transcript ◦ Query 参数:videoId={{$json.id}} ◦ Headers: ▪ x rapidapi host: youtube transcript3.p.rapidapi.com ▪ x rapidapi key: <你的 RapidAPI Key (可以去 rapidapi 官网申请获取,有一定的免费额度) youtube transcript3.p.rapidapi.com ▪ x rapidapi host: youtube transcript3.p.rapidapi.com youtube transcript3.p.rapidapi.com ▪ x rapidapi key: <你的 RapidAPI Key (可以去 rapidapi 官网申请获取,有一定的免费额度) ▪ 数组 → 纯文本 ▪ 去重空格、标点 ▪ 输出 cleanedTranscript