n8n has no native YouTube transcript node. VidProxy fills that gap: subscribe to any channel, set VidProxy's webhook to your n8n Webhook node URL, and the full transcript arrives in your workflow the moment a video posts.
n8n includes a YouTube node for channel metadata and video information. What it cannot do is give you the spoken content of a video. The YouTube node will tell you a video title, view count, and description — not the transcript. And there's no built-in way to trigger a workflow when a specific channel publishes something new, with the full text attached.
VidProxy is the missing YouTube transcript data source for n8n. It monitors channels on your behalf, fetches transcripts via a multi-tier extraction pipeline, and delivers a standard JSON webhook to your n8n workflow — no code, no API keys, no quota management.
No code required. Just configure the two services to point at each other.
In your n8n workflow, add a Webhook trigger node. Set the HTTP method to POST. Copy the webhook URL — it will look like https://your-n8n.domain/webhook/[uuid]. For local development, use the "Test URL" and keep the workflow active while testing.
In the VidProxy dashboard, click Add channel. Paste the YouTube channel URL or @handle. In the webhook field, paste the n8n Webhook URL you just copied. Add a label (used in the payload as subscription.label). Save.
Activate the n8n workflow. When the next video posts on the subscribed channel, VidProxy fires your webhook. In n8n, use {{ $json.transcript.text }} to access the transcript, {{ $json.video.title }} for the title, and {{ $json.enrichment.summary }} for the AI summary (Pro). Wire those to any downstream node.
Every field available in the VidProxy webhook payload, as n8n expression syntax.
// n8n expression paths for common fields // Video info {{ $json.video.title }} // "GPT-5 is Here and It's Remarkable" {{ $json.video.url }} // "https://youtube.com/watch?v=abc123" {{ $json.video.published }} // "2026-04-29T10:00:00Z" // Channel info {{ $json.subscription.channel_name }} // "Two Minute Papers" {{ $json.subscription.label }} // Your subscription label // Transcript {{ $json.transcript.available }} // true / false {{ $json.transcript.text }} // Full plain-text transcript {{ $json.transcript.segments }} // Array of {start, duration, text} // AI Enrichment (Pro + Agency only) {{ $json.enrichment.summary }} // AI-generated summary {{ $json.enrichment.key_takeaways }} // Array of strings {{ $json.enrichment.topics }} // Array of topic tags
Copy these patterns and adapt them for your use case.
Webhook node → IF node (check transcript.available = true) → Slack node (post to channel with video title, URL, and AI summary).
Webhook node → Notion node (create page in a database). Map video.title → Name, transcript.text → Content, enrichment.topics → Tags multi-select.
Webhook node → OpenAI node (summarize or generate blog post from transcript) → Gmail/SMTP node (send to your team or newsletter list).
Webhook node → Airtable node (create record). Map video metadata and transcript to fields. Use enrichment.topics to populate a multi-select category field automatically.
Use VidProxy's keyword alerts (Pro) to only fire when specific terms appear. The n8n workflow receives pre-filtered payloads — no IF node needed for keyword matching, VidProxy handles it upstream.
Webhook node → Code node (chunk transcript into 500-word segments) → OpenAI Embeddings node → Pinecone node (upsert vectors). Full RAG ingestion pipeline with no custom API server.
{{ $json.transcript.available }} equals true. Route the true path to your processing nodes and the false path to a logging step or just terminate it. VidProxy still fires the webhook even without a transcript so you have a complete event log.
subscription.label or subscription.channel_name.
Free tier includes 3 channels and webhook delivery. Up and running in minutes.
No credit card · Free tier forever