Overview
Architecture-level workflow for video tools facing YouTube anti-bot blocks. Split the data type: metadata + transcripts via Scavio (no firewall fight); bytes (rare) via edge worker + residential proxy.
Trigger
Per video URL
Schedule
Per video URL
Workflow Steps
Classify need: metadata or bytes?
Most clip-tool UX needs metadata + transcript only.
Metadata path: Scavio YouTube endpoint
Returns title, duration, transcript_segments, chapters in typed JSON.
Bytes path (only if needed): edge worker + residential proxy
Cloudflare Workers / Vercel Edge + Bright Data or Oxylabs proxy rotation.
UX: iframe playback + transcript-driven clip moments
Avoids byte download in many cases — user-facing UX still local-first.
Cache aggressively per video URL
Many clip tools re-process the same video; cache transcripts.
Python Implementation
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def yt_metadata(url):
return requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'platform': 'youtube', 'url': url, 'include_transcript': True}).json()JavaScript Implementation
// Same shape in TS — POST to Scavio YouTube endpoint with the video URL.Platforms Used
YouTube
Video search with transcripts and metadata