ClawSkills logoClawSkills

Youtube

通过 MCP 服务器或 yt-dlp 备用方案使用 YouTube Data API v3 搜索 YouTube 视频、获取频道信息、获取视频详情和文字记录。

介绍

# YouTube Research & Transcription

搜索 YouTube,获取视频/频道信息,并使用 YouTube Data API v3 获取字幕。

## 功能

- 📹 视频详情(标题、描述、统计数据、发布日期) - 📝 带时间戳的字幕 - 📺 频道信息和最新视频 - 🔍 在 YouTube 内搜索 - 🎬 播放列表信息

## 设置

### 1. 安装依赖

**MCP 服务器(主要方法):** ```bash npm install -g zubeid-youtube-mcp-server ```

**备用工具(如果 MCP 失败):** ```bash # yt-dlp for transcript extraction pip install yt-dlp ```

### 2. 获取 YouTube API 密钥

1. 前往 [Google Cloud Console](https://console.cloud.google.com) 2. 创建/选择一个项目(例如,“YouTube Research”) 3. 启用 API: - 菜单 → “APIs & Services” → “Library” - 搜索:“YouTube Data API v3” - 点击“Enable”(启用) 4. 创建凭据: - “APIs & Services” → “Credentials” - “Create Credentials”(创建凭据) → “API Key”(API 密钥) - 复制密钥 5. 可选 - 限制: - 点击创建的密钥 - “API restrictions” → 仅选择“YouTube Data API v3” - 保存

### 3. 配置 API 密钥

**选项 A:Clawdbot 配置**(推荐) 添加到 `~/.clawdbot/clawdbot.json`: ```json { "skills": { "entries": { "youtube": { "apiKey": "AIzaSy..." } } } } ```

**选项 B:环境变量** ```bash export YOUTUBE_API_KEY="AIzaSy..." ```

### 4. 设置 MCP 服务器

该技能将使用 `mcporter` 调用 YouTube MCP 服务器:

```bash # Build from source (if installed package has issues) cd /tmp git clone https://github.com/ZubeidHendricks/youtube-mcp-server cd youtube-mcp-server npm install npm run build ```

## 用法

### 搜索视频

```bash mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ search_videos query="ClawdBot AI" maxResults:5 ```

返回视频 ID、标题、描述、频道信息。

### 获取频道信息

```bash mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ channels_info channelId="UCSHZKyawb77ixDdsGog4iWA" ```

### 列出频道的最新视频

```bash mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ channels_listVideos channelId="UCSHZKyawb77ixDdsGog4iWA" maxResults:5 ```

### 获取视频详情

```bash mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ videos_details videoId="Z-FRe5AKmCU" ```

### 获取字幕(主要方法)

```bash mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ transcripts_getTranscript videoId="Z-FRe5AKmCU" ```

### 获取字幕(使用 yt-dlp 的备用方法)

如果 MCP 字幕失败(空或不可用),请使用 `yt-dlp`:

```bash yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format vtt \ --output "/tmp/%(id)s.%(ext)s" \ "https://youtube.com/watch?v=Z-FRe5AKmCU" ```

然后从 `/tmp/` 读取 `.vtt` 文件。

**或者直接获取字幕:** ```bash yt-dlp --skip-download --write-auto-sub --sub-lang en --print "%(subtitles)s" \ "https://youtube.com/watch?v=VIDEO_ID" 2>&1 | grep -A1000 "WEBVTT" ```

## 常见工作流

### 1. 查找播客的最新一集

**示例:Lex Fridman Podcast**

```bash # Get channel ID (Lex Fridman: UCSHZKyawb77ixDdsGog4iWA) mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ channels_listVideos channelId="UCSHZKyawb77ixDdsGog4iWA" maxResults:1 ```

返回包含标题、ID、发布日期的最新视频。

### 2. 获取研究用字幕

```bash # Step 1: Get video ID from search or channel listing # Step 2: Try MCP transcript first mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ transcripts_getTranscript videoId="VIDEO_ID"

# Step 3: If empty, fallback to yt-dlp yt-dlp --skip-download --write-auto-sub --sub-lang en \ --output "/tmp/%(id)s.%(ext)s" \ "https://youtube.com/watch?v=VIDEO_ID"

cat /tmp/VIDEO_ID.en.vtt ```

### 3. 搜索主题

```bash mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ search_videos query="Laravel AI productivity 2025" maxResults:10 ```

筛选结果以获取相关的频道或日期。

## 频道 ID 参考

在此处保存常用频道以便快速访问:

- **Lex Fridman Podcast:** `UCSHZKyawb77ixDdsGog4iWA` - **Indie Hackers:** (需要时添加) - **Laravel:** (需要时添加)

要查找频道 ID: 1. 前往频道页面 2. 查看网页源代码 3. 搜索 `"channelId":` 或 `"externalId"`

或者使用搜索并从结果中提取。

## API 配额限制

YouTube Data API v3 有每日配额: - 默认:10,000 单位/天 - 搜索:每次调用 100 单位 - 视频详情:每次调用 1 单位 - 字幕:0 单位(使用单独的机制)

**提示:** 尽量多使用字幕查询(无配额成本),对搜索使用要保守。

## 故障排除

### MCP 服务器不工作

**症状:** `Connection closed` 或 `YOUTUBE_API_KEY environment variable is required`

**修复:** 从源代码构建: ```bash cd /tmp git clone https://github.com/ZubeidHendricks/youtube-mcp-server cd youtube-mcp-server npm install npm run build

# Test YOUTUBE_API_KEY="your_key" node dist/cli.js ```

### 字幕为空

**症状:** 返回了字幕但内容为空

**原因:** 视频可能没有字幕,或者 MCP 无法访问它们

**修复:** 使用 yt-dlp 备用方法(见上文)

### 未找到 yt-dlp

```bash pip install --user yt-dlp # or pipx install yt-dlp ```

## 安全说明

将 YouTube API 密钥与此 MCP 服务器一起使用是安全的: - ✅ 密钥仅用于通过官方 YouTube Data API 进行身份验证 - ✅ 不涉及第三方服务器 - ✅ 所有网络调用均前往 `googleapis.com` - ✅ 代码经过审查(无数据外泄)

但是: - 🔒 将密钥保存在 Clawdbot 配置中(不要放在代码/脚本中) - 🔒 在 Google Cloud Console 中将 API 密钥限制为仅 YouTube Data API v3 - 🔒 不要将密钥提交到 git 仓库

## 示例

### 研究播客以获取 LinkedIn 帖子创意

```bash # 1. Find latest Lex Fridman episode mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ channels_listVideos channelId="UCSHZKyawb77ixDdsGog4iWA" maxResults:1

# 2. Get video details mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ videos_details videoId="Z-FRe5AKmCU"

# 3. Get transcript mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ transcripts_getTranscript videoId="Z-FRe5AKmCU"

# If transcript empty, use yt-dlp yt-dlp --skip-download --write-auto-sub --sub-lang en \ --output "/tmp/%(id)s.%(ext)s" \ "https://youtube.com/watch?v=Z-FRe5AKmCU"

# 4. Analyze transcript for interesting topics # (read /tmp/Z-FRe5AKmCU.en.vtt and extract key themes) ```

### 查找关于热门话题的视频

```bash # Search for recent videos mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ search_videos query="ClawdBot security concerns" maxResults:10

# Pick relevant ones, get transcripts # Analyze sentiment and technical claims ```

## 注意事项

- MCP 服务器路径:`/tmp/youtube-mcp-server/dist/cli.js` - 始终通过环境传递 API 密钥:`YOUTUBE_API_KEY="key" node ...` - 或在 shell/Clawdbot 配置中全局设置 - 字幕可能是自动生成的(检查引用的准确性) - 如果需要,yt-dlp 也可以下载音频(`--extract-audio --audio-format mp3`)

更多产品