Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Search YouTube videos, get channel info, fetch video details and transcripts using YouTube Data API v3 via MCP server or yt-dlp fallback.
Search YouTube videos, get channel info, fetch video details and transcripts using YouTube Data API v3 via MCP server or yt-dlp fallback.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Search YouTube, get video/channel info, and fetch transcripts using YouTube Data API v3.
๐น Video details (title, description, stats, publish date) ๐ Transcripts with timestamps ๐บ Channel info and recent videos ๐ Search within YouTube ๐ฌ Playlist info
MCP Server (primary method): npm install -g zubeid-youtube-mcp-server Fallback tool (if MCP fails): # yt-dlp for transcript extraction pip install yt-dlp
Go to Google Cloud Console Create/select a project (e.g., "YouTube Research") Enable the API: Menu โ "APIs & Services" โ "Library" Search: "YouTube Data API v3" Click "Enable" Create credentials: "APIs & Services" โ "Credentials" "Create Credentials" โ "API Key" Copy the key Optional - Restrict: Click the created key "API restrictions" โ Select only "YouTube Data API v3" Save
Option A: Clawdbot config (recommended) Add to ~/.clawdbot/clawdbot.json: { "skills": { "entries": { "youtube": { "apiKey": "AIzaSy..." } } } } Option B: Environment variable export YOUTUBE_API_KEY="AIzaSy..."
The skill will use mcporter to call the YouTube MCP server: # 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
mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ search_videos query="ClawdBot AI" maxResults:5 Returns video IDs, titles, descriptions, channel info.
mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ channels_info channelId="UCSHZKyawb77ixDdsGog4iWA"
mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ channels_listVideos channelId="UCSHZKyawb77ixDdsGog4iWA" maxResults:5
mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ videos_details videoId="Z-FRe5AKmCU"
mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ transcripts_getTranscript videoId="Z-FRe5AKmCU"
If MCP transcript fails (empty or unavailable), use yt-dlp: 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" Then read the .vtt file from /tmp/. Or get transcript directly: 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"
Example: Lex Fridman Podcast # Get channel ID (Lex Fridman: UCSHZKyawb77ixDdsGog4iWA) mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ channels_listVideos channelId="UCSHZKyawb77ixDdsGog4iWA" maxResults:1 Returns most recent video with title, ID, publish date.
# 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
mcporter call --stdio "node /tmp/youtube-mcp-server/dist/cli.js" \ search_videos query="Laravel AI productivity 2025" maxResults:10 Filter results for relevant channels or dates.
Keep frequently used channels here for quick access: Lex Fridman Podcast: UCSHZKyawb77ixDdsGog4iWA Indie Hackers: (add when needed) Laravel: (add when needed) To find a channel ID: Go to channel page View page source Search for "channelId": or "externalId" Or use search and extract from results.
YouTube Data API v3 has daily quotas: Default: 10,000 units/day Search: 100 units per call Video details: 1 unit per call Transcript: 0 units (uses separate mechanism) Tip: Use transcript lookups liberally (no quota cost), be conservative with search.
Symptom: Connection closed or YOUTUBE_API_KEY environment variable is required Fix: Build from source: 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
Symptom: Transcript returned but content is empty Cause: Video may not have captions, or MCP can't access them Fix: Use yt-dlp fallback (see above)
pip install --user yt-dlp # or pipx install yt-dlp
The YouTube API key is safe to use with this MCP server: โ Key only used to authenticate with official YouTube Data API โ No third-party servers involved โ All network calls go to googleapis.com โ Code reviewed (no data exfiltration) However: ๐ Keep the key in Clawdbot config (not in code/scripts) ๐ Restrict API key to YouTube Data API v3 only (in Google Cloud Console) ๐ Don't commit the key to git repositories
# 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)
# 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 server path: /tmp/youtube-mcp-server/dist/cli.js Always pass API key via environment: YOUTUBE_API_KEY="key" node ... Or set globally in shell/Clawdbot config Transcripts may be auto-generated (check accuracy for quotes) yt-dlp can also download audio if you need it (--extract-audio --audio-format mp3)
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.