From sundial-org-awesome-openclaw-skills-4
Search YouTube videos, get channel info, fetch video details and transcripts using YouTube Data API v3 via MCP server or yt-dlp fallback.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sundial-org-awesome-openclaw-skills-4:youtubeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Search YouTube, get video/channel info, and fetch transcripts using YouTube Data API v3.
Search YouTube, get video/channel info, and fetch transcripts using YouTube Data API v3.
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
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:
UCSHZKyawb77ixDdsGog4iWATo find a channel ID:
"channelId": or "externalId"Or use search and extract from results.
YouTube Data API v3 has daily quotas:
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:
googleapis.comHowever:
# 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
/tmp/youtube-mcp-server/dist/cli.jsYOUTUBE_API_KEY="key" node ...--extract-audio --audio-format mp3)npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4Fetches YouTube transcripts, searches videos, browses channels, and extracts playlists via TranscriptAPI. Works from any cloud server without yt-dlp or Google API key.
Fetches YouTube videos, channels, transcripts, comments, stats, and trending/related content via Data API v3. Use for searches, analysis, or data extraction in Python scripts.
Searches YouTube for videos and channels, analyzes video transcripts for highlights, explores channels, and researches topics. Use for YouTube-related tasks like finding coding tutorials.