AI PLAY玩法更新持续收录
← 回到更新流

2026-10-13 · 原文发布日

把YouTube教程自动整理成带截图的图文步骤手册

在n8n表单提交一个带字幕的公开YouTube教程链接,可指定起止时间和取帧间隔;Apify的Frameskim抓取带时间戳的截图和对应字幕片段,清洗编号后只保留图文齐全的项目,OpenAI根据每段字幕写出简短步骤标题和一句话操作说明,最终拼成含截图、步骤和可跳转时间戳链接的Markdown文档,转成guide.md在表单完成页直接下载。可配置取帧间隔、最大帧数、字幕语言和Apify费用上限。

原文要点

原工作流来自Frameskim发布在n8n模板库的免费模板:用n8n表单收集公开YouTube链接及可选起止时间与取帧间隔,调用Apify的Frameskim actor按间隔截取带时间戳的截图和字幕片段,清洗编号并丢弃缺图或缺字幕的条目,再由OpenAI(默认gpt-4o-mini)为每段字幕生成简短步骤标题和一句话说明,拼成含截图和时间戳跳转链接的Markdown,转成guide.md在表单完成页下载。可配置取帧间隔、最大帧数、字幕语言和Apify费用上限。Apify凭据用HTTP Header Auth(Authorization: Bearer)。

这次做成什么

在自有n8n里搭一条流程:提交一个带字幕的公开YouTube教程链接,自动产出一份带截图、步骤标题和可点击时间戳链接的Markdown图文手册,并能在表单完成页直接下载。本站提供独立的提示词、测试数据和字段映射,供你按原模板节点逐项核对搭建。

准备什么

  • 一个可自托管或云端的n8n实例,且能使用表单触发器(Form Trigger)
  • Apify账号及API token,账户内需可运行Frameskim actor并有余额
  • OpenAI API凭据,且账号可用gpt-4o-mini或同等聊天模型
  • 一个带字幕(CC)的公开YouTube教程视频链接用于测试
  • n8n中能创建HTTP Header Auth与OpenAI两类凭据的权限

具体怎么做

  1. 配置两类凭据

    在n8n凭据页新建HTTP Header Auth,Name填Authorization,Value填Bearer 加你的Apify token(注意Bearer后有一个空格);再新建OpenAI凭据粘贴API Key。Apify的actor调用会按运行计费,先在Apify控制台确认Frameskim的计费方式和账户余额,并在流程设置里保留费用上限参数。

  2. 搭表单入口收集参数

    使用Form Trigger节点,添加四个字段:video_url(必填,文本)、start_time与end_time(可选,如00:02:10格式)、interval(数字,表示每隔多少秒取一帧,默认参考值30)。将表单响应模式设为在完成页返回文件下载,这样最后生成的guide.md能直接给提交者。具体表单选项名称以原模板为准,导入模板后逐项核对。

  3. 调用Frameskim取帧

    用HTTP Request节点以POST方式调用Apify的Frameskim actor运行接口并轮询结果,请求体传入视频URL、起止时间、取帧间隔、字幕语言和费用上限。返回数据是一组分段,每段含截图URL、时间戳和字幕文本。先用下方测试数据在Code节点里模拟返回结构,确认下游逻辑通了再接真实Apify。

  4. 清洗并编号分段

    在Code节点中过滤:只保留screenshot与transcript均非空的条目,丢弃缺图或无字幕的段,然后按时间戳排序并重新从1编号,得到steps数组。注意空字幕在教程无声片段很常见,不过滤会导致Markdown里出现只有图的坏条目。

  5. 用OpenAI生成步骤文案

    对每个保留的分段调用OpenAI聊天节点,使用下方材料中的提示词,只依据该段字幕生成一个不超过15字的步骤标题和一句不超过40字的操作说明。逐条循环处理并合并回原条目。模型名、温度等参数以原模板默认值为准,本站未实测。

  6. 拼装Markdown并转为文件下载

    用Code节点拼接Markdown:文档标题、每个步骤的标题、一句话说明、截图图片语法、以及形如https://youtu.be/视频ID?t=秒数的时间戳跳转链接。再用Convert to File类节点把文本转成guide.md,连回表单完成页输出下载。完成后用真实短视频跑一次端到端验证。

可直接复制的材料

分段转步骤的OpenAI提示词

本站独立编写的提示词,{{ $json.transcript }}为n8n表达式占位,需在节点中确认实际字段名;原模板的具体提示词未公开,此为替代实现。

你是一名软件教程改写助手。下面是一段YouTube教程视频在某时间点的字幕摘录。请只根据这段字幕(不要编造字幕之外的操作),输出两项内容:
1. title:不超过15个字的步骤标题,动宾结构,例如「新建画布并设置尺寸」。
2. instruction:一句不超过40个字的操作说明,说明观众此刻应该做什么。
严格用JSON格式回复:{"title":"...","instruction":"..."},不要输出任何其他文字。
字幕摘录:
{{ $json.transcript }}

模拟Frameskim返回的测试数据

本站虚构的合成测试数据:含一条空字幕(30秒)和一条空截图(120秒),用于验证清洗逻辑会丢弃这两条,最终只保留0、60、90秒三条。

{"frames":[{"timestamp":0,"screenshot":"https://example.com/f0.png","transcript":"大家好,今天我们用五分钟学会做一张信息图"},{"timestamp":30,"screenshot":"https://example.com/f30.png","transcript":""},{"timestamp":60,"screenshot":"https://example.com/f60.png","transcript":"首先打开设计工具,点击左上角的新建按钮,选择信息图模板"},{"timestamp":90,"screenshot":"https://example.com/f90.png","transcript":"然后双击标题文本框,把它改成你的主题,比如周报数据概览"},{"timestamp":120,"screenshot":"","transcript":"最后点击右上角导出,选择PNG格式下载到本地"}]}

Markdown拼装片段(n8n Code节点逻辑)

本站独立编写的示例逻辑,formatTime为自行实现的秒转mm:ss函数;变量名需与你流程中实际字段对应,原模板代码未公开。

// 输入:items为已清洗并带title/instruction的分段,videoId为解析出的视频ID
const lines = ['# 教程图文步骤手册', ''];
for (const it of items) {
  lines.push(`## 步骤${it.no}:${it.title}`);
  lines.push(it.instruction);
  lines.push(`![步骤${it.no}截图](${it.screenshot})`);
  lines.push(`[跳转到视频 ${formatTime(it.timestamp)}](https://youtu.be/${videoId}?t=${it.timestamp})`);
  lines.push('');
}
return [{ json: { markdown: lines.join('\n') } }];

输入与输出示例

本站虚构演示,未实际运行Apify与OpenAI,截图链接为占位示例。

输入

video_url=https://www.youtube.com/watch?v=abc123XYZ,start_time留空,end_time留空,interval=30;视频为一段约2分钟、带中文字幕的公开设计工具教程

对应输出

guide.md节选:
## 步骤1:开场与课程介绍
观看者了解本教程将在五分钟内完成一张信息图。
![步骤1截图](https://example.com/f0.png)
[跳转到视频 00:00](https://youtu.be/abc123XYZ?t=0)
## 步骤2:新建信息图模板
打开设计工具,点击左上角新建按钮并选择信息图模板。
![步骤2截图](https://example.com/f60.png)
[跳转到视频 01:00](https://youtu.be/abc123XYZ?t=60)
(30秒与120秒分段因缺字幕或缺图被丢弃)

做完检查这些

  • 表单提交后能在完成页直接下载到名为guide.md的文件,无需手动复制文本
  • Markdown中每个步骤同时包含截图图片语法和带?t=参数的时间戳跳转链接
  • 空字幕或空截图的分段不出现在最终文档中,编号从1连续无跳号
  • OpenAI输出为合法JSON,解析失败的分段有兜底处理或明确报错
  • 用约2分钟短视频测试时Apify单次运行费用在你设置的上限内

容易卡住的地方

  • 视频无字幕或字幕语言与设置不符时,Frameskim返回的transcript可能为空,导致整条流程产出很少或为空,测试视频务必确认有CC字幕
  • Apify actor是异步运行,直接同步请求可能只拿到运行ID,需要轮询取结果,具体调用方式以Apify文档和原模板为准
  • 起止时间格式错误(如写成2:10而非00:02:10)可能导致actor拒绝运行,表单端建议加格式校验
  • 长视频配小间隔会产生大量帧,既推高Apify与OpenAI费用也会撑大文档,先用默认间隔和最大帧数限制试跑
  • YouTube链接格式多样(youtu.be短链、带播放列表参数),需先统一解析出视频ID再拼时间戳链接

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Create step-by-step Markdown guides from YouTube with Apify and OpenAI
原作者
Frameskim
原始发布日期
2026-10-13T15:04:27.127Z
来源
https://n8n.io/workflows/20886