From oxylabs
Extracts YouTube video metadata, transcripts, subtitles, search results, and channel data as structured JSON via API, with high-bandwidth proxies for video/audio downloads via yt-dlp.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oxylabs:video-dataThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
YouTube data extraction via API and high-bandwidth proxies for video/audio downloading.
YouTube data extraction via API and high-bandwidth proxies for video/audio downloading.
| Method | Use Case |
|---|---|
| Video Data API | Metadata, transcripts, search results (structured data) |
| High-Bandwidth Proxies | Video/audio downloads with yt-dlp |
Uses the same endpoint as Web Scraper API with YouTube-specific sources.
POST https://realtime.oxylabs.io/v1/queries
Content-Type: application/json
curl -u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" ...
| Source | Description |
|---|---|
youtube_search | Search results (videos, channels, playlists) |
youtube_metadata | Video metadata (title, views, likes, description) |
youtube_transcript | Video transcripts |
youtube_subtitles | Closed captions/subtitles |
youtube_channel | Channel data and video lists |
Video metadata:
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \
-u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" \
-H 'Content-Type: application/json' \
-d '{
"source": "youtube_metadata",
"query": "dQw4w9WgXcQ"
}'
YouTube search:
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \
-u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" \
-H 'Content-Type: application/json' \
-d '{
"source": "youtube_search",
"query": "python tutorial"
}'
Video transcript:
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \
-u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" \
-H 'Content-Type: application/json' \
-d '{
"source": "youtube_transcript",
"query": "dQw4w9WgXcQ"
}'
Channel data:
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \
-u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" \
-H 'Content-Type: application/json' \
-d '{
"source": "youtube_channel",
"query": "@channelhandle"
}'
For actual video/audio file downloads using yt-dlp.
Contact Oxylabs sales team to get a dedicated high-bandwidth endpoint.
Default configuration:
60000curl -x "http://USERNAME-test:PASSWORD@YOUR_ENDPOINT:60000" \
"https://ip.oxylabs.io/location"
With session rotation (different IP per download):
yt-dlp --proxy "http://USERNAME-Random1Session2ID:PASSWORD@YOUR_ENDPOINT:60000" \
"https://www.youtube.com/watch?v=VIDEO_ID"
Change the session ID for each download to get a fresh IP.
import yt_dlp
import os
import uuid
username = os.environ["OXY_WSA_USERNAME"]
password = os.environ["OXY_WSA_PASSWORD"]
endpoint = os.environ["OXY_HB_ENDPOINT"] # Your dedicated endpoint
# Random session for unique IP
session_id = str(uuid.uuid4()).replace("-", "")
ydl_opts = {
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000",
"format": "best",
"outtmpl": "%(title)s.%(ext)s"
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"])
| Need | Method |
|---|---|
| Video metadata (title, views, likes) | Video Data API |
| Search results | Video Data API |
| Transcripts/subtitles | Video Data API |
| Channel information | Video Data API |
| Download video files | High-Bandwidth Proxies + yt-dlp |
| Download audio files | High-Bandwidth Proxies + yt-dlp |
For more examples, see examples.md.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub oxylabs/agent-skills --plugin oxylabs