mcpField
Y
youtube-render-pdf

youtube-render-pdf

github.com/wdkns文档处理820334 次安装6 天前更新
代码仓库

关于 youtube-render-pdf

youtube-render-pdf 是一项面向学习者的技能,可将 YouTube 视频整理为中文讲义,并生成可编译的 LaTeX 文档和 PDF。它强调按教学逻辑重组内容,并结合封面与有助于讲解的关键画面。

主要功能

  1. 01生成中文教学讲义
  2. 02按教学逻辑重组视频内容
  3. 03将关键画面作为插图
  4. 04生成完整 LaTeX 文档
  5. 05编译并交付 PDF

适用场景

  1. 01把在线讲座整理为可读讲义
  2. 02将长视频内容分段整合
  3. 03用关键画面辅助解释公式或图表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wdkns/wdkns-skills --skill youtube-render-pdf

安装后在 Claude Code 中输入/youtube-render-pdf确认已加载。

附带文件agents/openai.yamlassets/notes-template.tex

详细介绍

YouTube Render PDF

使用此技能,将 YouTube 视频转换为完整、可编译的 .tex 笔记和渲染后的 PDF。

目标

根据 YouTube URL 生成一份专业的中文讲义。

输出必须:

  • 使用视频中实际讲授的内容,而不只是转录字幕
  • 如果有视频原始封面图,则将其放在 .tex 和渲染后 PDF 的首页
  • 将所有必要且有价值的关键帧作为插图,避免添加重复截图
  • 以最终总结章节收尾,其中既要包含讲者实质性的结语讨论,也要包含你提炼的要点
  • 使用 \section{...} 和 \subsection{...} 进行结构化组织
  • 是一份从 \documentclass 到 \end{document} 的完整 .tex 文档
  • 作为最终交付的一部分,成功编译为 PDF

教学标准

笔记应体现优秀教师引导读者学习材料的方式。

  • 组织每个主要章节,让读者先理解学习动机,再了解核心思想、运行机制、示例或证据,最后掌握要点
  • 耐心清晰地阐释逻辑过渡;说明讲者为何引入某个概念、它解决了什么问题,以及后续内容如何由此展开
  • 力求深入而易懂:保留技术深度,但先用直白的语言介绍直觉,再引入形式化表达
  • 内容较密集时,将其拆分为逐步构建理解的小节,而不是把所有内容压缩成冗长的推导
  • 不要按时间顺序堆砌字幕内容;应将其改写为有明确目的、对比和递进关系的教学内容

获取素材

  1. 先检查视频元数据。 优先获取标题、章节、时长、缩略图可用性和字幕可用性。

  2. 优先选择最适合提取插图的视频源。 探测可用格式,并选择当前环境中实际可下载的最高分辨率。

  3. 编写 .tex 之前,先获取视频原始封面图。 优先使用平台元数据中提供的最高分辨率缩略图。 将选定的封面图保存到本地,并在首页引用该本地素材。 如果有官方封面图,不要用随意截取的视频帧替代。

  4. 优先选择最匹配的字幕轨道。 如果手动字幕和自动生成字幕都可用,优先使用手动字幕。 优先选择与视频内容或用户要求语言最匹配的默认语言。 只有在必要时才使用最接近的可用字幕轨道。 保留字幕时间戳;在仍需定位插图时,不要过早将字幕整理成纯文本。

  5. 在实际可行的情况下,将所有素材文件保存在本地。 常见的工作素材包括元数据、下载的封面图、带时间戳的字幕文件、可选的清理后转录文本、本地视频文件和提取的视频帧。

长视频策略

处理较长的视频时,不要依赖一次性完成的单体处理流程。

  • 如果视频时长超过 20 分钟,或字幕文件包含超过 300 条字幕,则应将工作拆分为较小的片段。
  • 拆分时优先采用章节边界。如果没有章节,或章节长度差异过大,则按连贯的时间段或字幕范围拆分。
  • 如果有可用的子 Agent,应并行启动多个子 Agent 处理不同片段,以保持较高的覆盖率,避免丢失细节。
  • 为每个子 Agent 指定明确的片段边界,并要求其返回:该片段的教学目标、核心论点、重要公式或代码、附带时间出处的必要图示,以及需要在整合时解决的任何歧义。
  • 如果讲解跨越相邻片段的边界,应让片段之间保留少量重叠,然后在整合时去重。
  • 主 Agent 必须将各片段的输出整合成一份统一的大纲和连贯的最终叙述。最终 PDF 应读起来像一份完整的讲义,而不是若干片段摘要的拼接。

教学内容规则

在可用的情况下,综合以下所有内容来编写笔记:

  • 视频标题和章节结构
  • 视频原始封面图和关键元数据
  • 屏幕上展示的图表、公式、表格、绘图和架构幻灯片
  • 字幕中的讲解、示例和口头强调
  • 访谈、圆桌讨论、播客或对话类视频中简短且信息密度高的原始对话片段,前提是原话能增添临场感、幽默感、直觉理解或特别精炼的信息
  • 演讲中展示或描述的代码片段

跳过对实际课程内容没有帮助的部分:

  • 问候语
  • 闲聊
  • 不增添信息、张力、幽默感、直觉理解或教学价值的常规对话
  • 赞助内容
  • 频道相关事务
  • 结束寒暄

如果演讲者在结尾的讨论包含实际教学价值,例如总结、局限性、未来工作、权衡、建议或开放问题,则应予以保留。

写作规则

  1. 除非用户明确要求使用其他语言,否则笔记应使用中文撰写。

  2. 使用 \section{...} 和 \subsection{...} 组织文档。 必要时重构教学流程;不要盲目照搬字幕顺序。 在适用时,每个部分都应依次回答:要解决什么问题、更简单的视角为何不足、核心思路是什么、它如何运作,以及读者应记住什么。

    避免过度使用“不是……而是……”的句式。 仅当视频本身确立了真实的对比,且该对比能实质性地帮助解释机制时才使用。

    避免含糊或过于抽象的表述。 尽可能用具体机制、示例、变量、步骤、观察到的现象、时间戳、图示或演讲者提供的证据来支撑论述。

  3. 从 assets/notes-template.tex 开始。 填写元数据块,包括本地封面图片路径,并用生成的笔记替换正文内容块。

  4. 如果有视频原始封面图,首页必须包含该图片。 将封面图放在第一页,不要埋在文档后面的部分。 封面图应与正文教学图示在视觉上有所区分。

  5. 在图示能显著改善讲解效果时使用图示。 为确保教学清晰,应按需添加足够数量的图示,即使这意味着文档中会包含许多图示。 不要为了减少图示数量而优化;应优先保证讲解覆盖面和可读性。 合适的图示包括关键公式、示意图、表格、绘图、视觉对比、流水线调度、架构视图以及分阶段的视觉演进图。

  6. 不要将图片放在自定义消息框内。

  7. 出现数学公式时: 先用通俗的中文解释公式要表达什么,以及为什么会出现该公式 使用 $$...$$ 以独立公式的形式展示 然后紧接着用一个扁平列表解释每个符号

  8. 出现代码示例时: 在代码清单前说明代码的作用;如有帮助,在清单后概述预期行为 使用 lstlisting 包裹代码 添加描述性 caption

  9. 当内容确实值得强调时,有意识地、反复突出教学重点: 对读者必须掌握的核心概念使用 importantbox,包括正式定义、核心论点、关键机制概述、类似定理的陈述、关键算法步骤,以及对复杂解释中主要思想的简洁重述 对有助于理解但并非主线的背景和补充知识使用 knowledgebox,包括前置知识提醒、历史脉络、工程背景、设计权衡、术语对比,以及帮助建立直觉的类比 对常见误解和易出错之处使用 warningbox,包括符号混淆、隐含假设、容易误导的经验法则、容易犯的实现错误、因果混淆、类似差一错误的推理失误,以及讲者对比错误直觉与正确理解之处 仅在对话较多的视频中使用 dialoguebox,且仅当简短的原始对话片段信息量大、有趣、生动或特别直观,并且保留讲者原话能让读者更有身临其境之感时使用 dialoguebox 可以包含一轮对话,也可以包含几轮紧密相连的对话,例如提问、追问、质疑、澄清和回答 保持 dialoguebox 片段简短:保留说话者标签和具体时间戳或时间范围;只有在确信的情况下才轻微修正明显的 ASR 错误;并在文本框后用正文说明该对话片段的重要性 不要将 dialoguebox 用于问候、填充语、长篇转录内容,或用普通概述更清楚的对话 每个章节的文本框数量不设上限;如果内容包含多个不同的教学重点,就添加多个文本框 每个文本框都应承载具体的教学价值,而非泛泛强调 尽量将文本框放在引出它的段落、推导或示例之后 常规讲解应保留为普通正文;文本框用于突出高价值内容,而非装饰 图示必须置于 importantbox、knowledgebox、warningbox 和 dialoguebox 之外

  10. 每个主要章节末尾都添加 \subsection{本章小结}。 如果有一两个值得推荐的外部链接,则添加 \subsection{拓展阅读}。

  11. 文档末尾添加一个最终顶层章节,例如 \section{总结与延伸}。 该最终章节必须包括:

  • 讲者实质性的收尾讨论,不包括常规告别语
  • 你对核心论点、机制和实际影响的结构化提炼
  • 扩展性的综合总结,包括概念压缩、章节间的联系,以及忠实于视频内容的谨慎概括
  • 有依据时提出具体的要点、开放问题或后续步骤
  1. 不要在 LaTeX 中输出任何 [cite] 形式的占位符。

图示处理

根据必要性和教学价值选择图示,而不是依据任意配额或偏好让文档看起来更简洁。

查找候选帧时,应优先保证召回率,而非精确率。 一开始多检查一些附近的候选帧,总好过错过那张幻灯片、公式、表格或示意图终于完整显示且清晰可读的帧。

必须通过直接查看图像来理解帧的内容。

  • 在决定候选帧展示了什么、应如何描述以及是否足够完整以供纳入之前,使用 view image 工具检查候选帧和裁剪图。
  • 不要用 tesseract 等 OCR 工具代替对帧的视觉理解。
  • 不要只根据附近的字幕、文件名或时间戳推断帧的语义内容,而不检查图像本身。
  • 联系表、蒙太奇和拼接条有助于提高召回率,但最终的保留或舍弃决定以及语义命名必须基于使用 view image 对实际图像的检查。
帧选择检查清单

插入任何视频帧之前,先检查同一字幕对齐区间内的多个相邻候选帧,并按此清单进行评估。若有任何一项不符合要求,就舍弃该帧,继续查找附近的候选帧,而不是勉强使用近似匹配的帧。

  • 相关性:该帧必须直接支持周围段落或小节讨论的具体概念,而不仅仅是涉及同一宽泛主题。
  • 所需内容清晰可见:文本中提及的所有视觉元素都必须已在该帧中可见。
  • 完整呈现状态:如果幻灯片、白板、动画或仪表板是逐步呈现的,应使用内容完整、清晰可读的最终状态,而不是中间状态。
  • 附近最佳候选帧:比较多个相邻帧,优先选择内容最完整且最清晰可读的帧。
  • 可读性:文字、公式、标签和示意图结构必须清晰易辨,足以支持将其纳入。
帧命名
  • 为原始候选帧使用基于时间戳的中性名称。在检查实际帧内容之前,不要赋予语义名称。

  • 只有在通过视觉确认图像中完整可见的内容后,才为帧赋予语义名称。

  • 语义文件名必须描述帧中实际可见的内容,而不是根据字幕、附近的讲解或预期段落主题进行猜测。

  • 如果帧只显示了部分内容、处于过渡状态或含义不明确,就继续查找,不要过早确定语义名称。

  • 使用带时间戳的字幕文件作为搜索关键帧的主要定位依据。

  • 首先确定与所讨论的概念、示例、公式或视觉讲解对应的字幕时间段。

  • 然后在与字幕对齐的时间区间内搜索,必要时也稍微搜索区间边界附近,以找到最清晰易读的帧。

  • 不要直接从一个猜测的时间戳跳到一张提取的帧。 先在相关时间区间内密集生成一组候选帧,再检查并筛选。

  • 优先使用能一次查看多个相邻候选帧的工具,例如 magick montage、联系表、平铺帧条或同类工作流。 使用这些工具提高召回率,避免错过视觉内容完整呈现的帧。

  • 如果视觉内容是逐步展示的 PPT、动画构建、白板内容累积或仪表板状态变化,要明确搜索内容完全呈现的最终状态。 不要停留在第一张看起来大致正确的帧。

  • 如果多个相邻候选帧的差异只是逐步展示的状态,就继续检查,直到找到信息最完整且清晰易读的帧。

  • 如果同一讲解时段中较早的稀疏帧与较晚的密集帧难以取舍,且后者内容明显更完整、仍然清晰易读,则优先选择较晚的帧。

  • 纳入充分解释内容所必需的所有图示。

  • 在一个章节或小节中加入多张图示是可以接受的,而且在视频分阶段展开一个想法时通常更理想。

  • 省略重复或信息量低的帧。

  • 如果视频有章节边界,则在章节边界和讲解重点处提取帧,但仍须根据字幕时间进行验证。

  • 如果首次提取的帧捕捉到的是动画过渡状态,就搜索附近的时间戳。

  • 如果完整画面范围过大,就裁剪、放大或单独提取相关区域。

  • 如果幻灯片内容逐步呈现,截取最终清晰易读的状态;只有在中间帧展示了真正不同的步骤时,才添加中间帧。

  • 对于视觉内容密集的部分,可以先多采样,再进行删减。 不要过早控制候选帧数量,以免错过关键视觉状态。

  • 优先使用一组必要的图示,而不是一张标签难以辨认、信息过载的图示。

  • 确保公式和标签清晰易读。

图示时间来源

每当 .tex 或 PDF 引用某个特定视频帧或由视频帧裁剪而来的图像时,都要在同一页的页脚注明其来源时间区间。

  • 页脚必须注明具体时间区间,例如 00:12:31--00:12:46。
  • 时间区间应取自用于定位图示的、与字幕对齐的片段,而不是模糊的章节级估算。
  • 如果图示是裁剪图,页脚仍应注明源帧或字幕片段在原视频中的时间区间。
  • 如果一张图示中的多个相邻帧都来自同一字幕区间,添加一个清晰的页脚说明即可。
  • 将图示和时间页脚固定在同一页;当普通浮动体可能导致两者分离时,优先使用 [H]、非浮动区块或其他稳定的排版方式。

可视化

对于仅靠截图和文字难以解释清楚的概念,请添加准确的可视化内容。

有两种可接受的方式:

  • 使用 TikZ 或 PGFPlots 生成原生 LaTeX 可视化内容
  • 使用脚本提前生成图示,并将其作为图片插入

对于通过脚本生成的插图,如果 matplotlib 和 seaborn 等 Python 工具是制作准确教学图示的最清晰方式,请优先使用这些工具。

如果可视化内容是通过外部工具生成,而非在 LaTeX 中原生绘制:

  • 将图示导出为 pdf,以便插入 .tex 时不会因栅格化而损失画质
  • 绘图、图表和示意图优先使用矢量输出
  • 除非内容本身具有栅格特性,否则避免使用 png 或 jpg 作为脚本生成的教学图示

如果源材料包含的关系、结果或方程式,通过重新绘制比截图展示更清晰,请优先使用原生 LaTeX 工具或 matplotlib / seaborn 重建。

以下内容适合使用可视化:

  • 流程、管线和架构概览
  • 曲线和图表,例如缩放定律、训练曲线、基准测试结果和消融对比
  • 用于说明数据关系的分布、相关性、热力图和其他图表
  • 复杂函数、曲面、等高线图和几何直觉图
  • 重新绘制成图表后更清晰的表格或对比内容
  • 能将某一节的核心机制或要点浓缩为一张图的总结示意图

不要添加没有教学作用的装饰性图形。

最终检查清单

交付前,请确认以下各项:

  • 没有遗漏重要的教学内容;在压缩、重组或总结过程中,没有丢失具体但关键的细节
  • 文字和图示相互对应:每个插入的帧都能支撑周围的说明,已裁剪必要内容,并且所选帧展示的是最完整的相关信息,而非过渡状态或不完整画面
  • 文档的视觉内容足以支持教学:检查是否应添加更多信息量高的关键帧,以及添加原生 LaTeX 或 Python 脚本生成的插图能否提升清晰度

交付

请交付以下所有内容:

  • 首页引用的已下载封面图片
  • 文档引用的所有提取或生成的图示素材
  • 最终 .tex 文件和编译后的 .pdf 文件(必须使用合理的中文文件名,例如 [中文视频标题]_notes.tex 和 [中文视频标题]_notes.pdf)

素材

  • assets/notes-template.tex:默认 LaTeX 模板,请复制并填写

评论

支持 Markdown