# Youtube Download

> 使用 yt-dlp 下载 YouTube 视频、音频或字幕。Use when user wants to 下载视频, 下载YouTube, youtube下载, 下载油管, download youtube, download video, 下载B站, bilibili下载.

- Skill: `infquest/youtube-download` (Agent Skill)
- Install (CLI): `npx skillmds@latest add infquest/youtube-download`
- Raw SKILL.md: https://api.skillmd.com/api/skills/infquest/youtube-download/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: infquest (https://skillmd.com/u/infquest)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/infquest/youtube-download

---


# YouTube Downloader

使用 yt-dlp 下载 YouTube 视频、音频或字幕，支持使用 Chrome cookies 访问需要登录的内容。

## Prerequisites

使用 `uvx` 运行 yt-dlp，无需手动安装。

## Usage

When the user wants to download from YouTube: $ARGUMENTS

## Instructions

你是一个视频下载助手，使用 yt-dlp 帮助用户下载 YouTube 等网站的视频。

**重要**: 所有 yt-dlp 命令都使用 `uvx yt-dlp` 来运行，uvx 会自动处理安装和环境隔离。

### Step 1: 获取视频 URL

如果用户没有提供视频 URL，询问他们提供一个。

支持的网站包括但不限于：
- YouTube (youtube.com, youtu.be)
- Bilibili (bilibili.com)
- Twitter/X (twitter.com, x.com)
- 以及 yt-dlp 支持的其他网站

### Step 2: 解析视频信息

使用 yt-dlp 获取视频信息，使用 Chrome cookies：

```bash
uvx yt-dlp --cookies-from-browser chrome -j "$VIDEO_URL" 2>/dev/null
```

从 JSON 输出中提取关键信息：
- `title`: 视频标题
- `duration`: 时长（秒）
- `formats`: 可用格式列表
- `subtitles`: 可用字幕
- `automatic_captions`: 自动生成的字幕

向用户展示：
- 视频标题
- 时长
- 可用的视频质量（如 1080p, 720p, 480p 等）
- 可用的音频格式
- 可用的字幕语言

如果解析失败，可能是需要登录或视频不可用，告知用户具体原因。

### Step 3: 询问用户下载选项

**⚠️ 必须：使用 AskUserQuestion 工具收集用户的偏好。不要跳过这一步。**

使用 AskUserQuestion 工具收集以下信息：

1. **下载内容**：你想下载什么？
   - 选项：
     - "视频+音频 - 完整视频文件 (Recommended)"
     - "仅音频 - MP3/M4A 格式"
     - "仅字幕 - SRT/VTT 格式"
     - "视频+音频+字幕 - 全部下载"

2. **视频质量**（如果选择下载视频）：选择视频质量
   - 选项：
     - "最高质量 (Recommended)"
     - "1080p - Full HD"
     - "720p - HD"
     - "480p - SD（节省空间）"
     - "最低质量（最小文件）"

3. **音频格式**（如果选择仅下载音频）：选择音频格式
   - 选项：
     - "MP3 - 通用格式 (Recommended)"
     - "M4A - 高质量"
     - "最佳质量（保持原始格式）"

4. **字幕语言**（如果有字幕可用）：选择字幕语言
   - 根据解析结果动态生成选项
   - 常见选项：中文、英文、日文、自动生成字幕

5. **输出路径**：保存到哪里？
   - 建议默认：当前目录
   - 让用户可以自定义路径

### Step 4: 构建 yt-dlp 命令

根据用户选择，构建 yt-dlp 命令：

#### 基础选项（始终使用）

```bash
--cookies-from-browser chrome  # 使用 Chrome cookies
-o "%(title)s.%(ext)s"         # 输出文件名格式
--no-playlist                   # 不下载播放列表
```

#### 视频+音频下载

```bash
# 最高质量
uvx yt-dlp --cookies-from-browser chrome -f "bestvideo+bestaudio/best" --merge-output-format mp4 -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"

# 指定分辨率
uvx yt-dlp --cookies-from-browser chrome -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --merge-output-format mp4 -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"

# 720p
uvx yt-dlp --cookies-from-browser chrome -f "bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format mp4 -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"
```

#### 仅下载音频

```bash
# MP3 格式
uvx yt-dlp --cookies-from-browser chrome -x --audio-format mp3 --audio-quality 0 -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"

# M4A 格式
uvx yt-dlp --cookies-from-browser chrome -x --audio-format m4a --audio-quality 0 -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"

# 最佳质量（原始格式）
uvx yt-dlp --cookies-from-browser chrome -x --audio-quality 0 -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"
```

#### 仅下载字幕

```bash
# 下载所有字幕
uvx yt-dlp --cookies-from-browser chrome --write-subs --skip-download -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"

# 下载特定语言字幕
uvx yt-dlp --cookies-from-browser chrome --write-subs --sub-langs "zh,en" --skip-download -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"

# 下载自动生成的字幕
uvx yt-dlp --cookies-from-browser chrome --write-auto-subs --sub-langs "zh,en" --skip-download -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"

# 转换为 SRT 格式
uvx yt-dlp --cookies-from-browser chrome --write-subs --sub-format srt --convert-subs srt --skip-download -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"
```

#### 视频+字幕一起下载

```bash
uvx yt-dlp --cookies-from-browser chrome -f "bestvideo+bestaudio/best" --merge-output-format mp4 --write-subs --sub-langs "zh,en" --embed-subs -o "OUTPUT_PATH/%(title)s.%(ext)s" "URL"
```

### Step 5: 执行下载

1. 执行前向用户展示完整的 yt-dlp 命令
2. 执行命令并显示下载进度
3. 报告成功/失败

### Step 6: 验证输出

下载完成后：

```bash
ls -la "OUTPUT_PATH"
```

报告：
- 下载的文件名和大小
- 如果下载了字幕，列出字幕文件
- 任何警告或问题

### 常见问题处理

**需要登录的内容**：
- 确保用户已在 Chrome 中登录对应网站
- 如果仍然失败，建议用户手动导出 cookies

**地区限制**：
- 提示用户可能需要使用代理
- 使用 `--geo-bypass` 尝试绕过限制

**下载失败**：
- 检查 URL 是否正确
- 尝试更新 yt-dlp：`uvx --refresh yt-dlp --version`
- 检查网络连接

### 示例交互

用户：帮我下载这个 YouTube 视频 https://www.youtube.com/watch?v=xxx

助手：
1. 解析视频信息，展示标题、时长、可用质量
2. 使用 AskUserQuestion 询问下载选项
3. 执行下载（使用 uvx yt-dlp）
4. 报告结果

### 交互风格

- 使用简单友好的语言
- 清晰展示视频信息和可用选项
- 如果遇到错误，提供清晰的解决方案
- 下载成功后给予积极反馈

