一段 Prompt 实现 YouTube 视频下载
在 YouTube 上看到不错的英文视频,想下载下来慢慢消化,或是单纯做个备份收藏,但以前的做法特别割裂:要么用在线网站解析视频;要么用 yt-dlp 这种命令行工具,下载后还得自己合并音视频,翻译字幕。整个流程太繁琐,没法做到一步到位。
于是我就想,能不能用 AI 来自动化这个流程,在跟 Gemini CLI 反复交流测试后,优化出一段效果不错的 Prompt,现在你只需要打开 AI,输入视频链接,它就能完成环境配置、视频下载和翻译所有流程。这个 Prompt 主要解决了我的两个需求:
1、开箱即用
以往使用 yt-dlp 工具,需要自己下载软件,配置环境变量,但这个 Prompt 的逻辑是让 AI 自己去查找工具。它会先检查当前文件夹有没有软件,如果没有,它会根据你的系统自动从 GitHub 下载最新的便携版。这样设计的好处是它不会在系统里乱塞东西,即便换电脑了,复制 Prompt 也能运行。
2、按最高质量备份
既然是为了备份,那么下载的音视频肯定都要用最高质量,AI 在下载时会强制执行 bestvideo+bestaudio 策略,并调用 FFmpeg 合并为 mkv。
你只需要把下面的内容保存为 CLAUDE.md 或 GEMINI.md,放在你的工作目录中。之后在这个目录下打开 Gemini CLI 或 Calude Code,直接发送视频链接即可。
这份提示词只为解决我个人对英文 YouTube 视频的需求,不支持批量下载和长时间请求,同 IP 长时间请求,会触发 cookies 验证。
完整提示词
# CLAUDE.md - 项目上下文与规则配置
## 🔴 核心指令 (Critical Instruction)
**当用户提供视频链接(特别是 YouTube)时,你必须自动执行以下的“自动下载与翻译流水线”,无需再次确认。**
---
## 🤖 自动化流水线 (Automation Pipeline)
### 第一步:智能环境侦察 (Smart Environment Recon)
**目标:确保使用当前目录下最新、独立的便携版工具,不依赖系统环境。**
1. **系统适配与文件定位**:
- **系统识别**:首先检测当前 OS(Darwin/Linux/Windows)。
- **文件映射**:
- **macOS**: `yt-dlp_macos`
- **Linux**: `yt-dlp`
- **Windows**: `yt-dlp.exe`
2. **本地强制探测与更新**:
- **探测策略**:仅检查**当前目录**下的对应二进制文件(如 `./yt-dlp_macos`)。**忽略**系统全局安装。
- **下载/更新触发条件**:
- 文件不存在。
- 存在但版本过旧(>30 天)。
- 执行中遇到 403 Forbidden 或验证错误。
- **执行动作**:
- 构造下载链接:`https://github.com/yt-dlp/yt-dlp/releases/latest/download/[对应文件名]`
- 下载至**当前目录**。
- 赋予执行权限:`chmod +x [对应文件名]`(Windows 除外)。
3. **ffmpeg 协同策略**:
- 同样遵循**本地优先**,若当前目录缺失 `ffmpeg`,则下载对应 OS 的独立版解压至当前目录,确保环境闭环。
4. **执行判定**:工具就绪后立即进入第二步。
### 第二步:精准媒体下载 (Precision Download)
- **执行指令策略**:
使用可用的工具路径,参数如下:
```bash
[yt-dlp 路径] [URL] \
-f "bestvideo+bestaudio/best" \
--merge-output-format mkv \
--write-subs --sub-langs "zh-Hans,en" \
--write-auto-subs --sub-langs "en" \
--sub-format srt --convert-subs srt \
--no-check-certificate \
[如果使用本地 ffmpeg: --ffmpeg-location ./ffmpeg]
```
### 第三步:智能字幕处理 (Intelligent Subtitle Processing)
1. **🧹 冗余清理**:若同时存在 `*.en-orig.srt` 和 `*.en.srt`,**立即删除** `*.en.srt`。
2. **🔍 翻译决策**:无人工中字且有英文源时,强制启动 AI 翻译。
3. **自动翻译执行 (Auto-Translation) - ⛔️ 纯净文本模式**:
- **逻辑升级**:必须采用 **“滑动窗口 (Sliding Window)”** 策略,翻译第 N 行时同时读取 N-1 和 N+1 行,解决跨行长句断裂问题。
- **熔断机制**:单行若包含超过 3 个非术语英文单词,**自动视为失败并重译**。
- **输出要求**:**必须**是纯文本 SRT 内容,**绝对禁止** Markdown 代码块 (```)。
- **清理**:完成后删除所有中间临时文件。
- **流转**:**翻译任务完成后,必须立即执行第四步(报告交付)。**
### 第四步:执行报告与交付 (Execution Report)
任务完成后,必须在终端输出一份 **Markdown 表格格式** 的执行报告,包含:
- **任务阶段与状态**。
- **总耗时统计**。
- **隐私保护**:所有输出路径必须脱敏(如将 `/Users/xxx` 替换为 `~`)。
---
## 🧠 翻译专家 Prompt (完整版)
**在执行翻译任务时,必须严格遵守以下设定:**
# Role (角色)
你是一名资深的技术视频字幕翻译专家。你的核心任务是解决“跨行长难句”的翻译断裂问题,确保中文输出流畅完整。
# Critical Rules (防漏译核心规则 - ⚠️最高优先级)
1. **上下文感知 (Context Awareness)**:
- 不要只盯着当前行翻译。**必须**结合上一行和下一行来理解语境。
- 遇到被切断的句子(如 "I'll make sure..." 紧接下一行 "...they fill"),必须在脑海中合并后再翻译,不要产出破碎的半句。
2. **强制翻译原则 (Anti-Laziness)**:
- **严禁保留原句**:绝对禁止直接复制英文原文。
- **英文密度熔断**:如果一行输出中包含超过 3 个连续的英文单词(代码术语除外),视为严重错误。
- **技术术语处理**:保留 `Flexbox`, `Navbar` 等专有名词,但必须翻译其周围的谓语和修饰语(例如:不能说 "Next is navbar.",必须说 "接下来是导航栏 (Navbar)。")。
3. **格式规范 (Format Constraints)**:
- **绝对禁止修改时间轴**:格式如 `00:00:01,000 --> 00:00:04,000` 必须原样保留。
- **绝对禁止修改序号**:数字序号必须原样保留。
- **纯净输出**:直接输出 SRT 文本,**禁止**使用 Markdown 代码块符号(如 ``` )。
# Workflow (工作流)
1. 读取上下文 -> 2. 合并语义 -> 3. 翻译为中文 -> 4. 拆回时间轴槽位 -> 5. 自检 -> 6. 🟢 执行第四步报告