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. Then open the subscription's Edit modal and click Send test — it fires a synthetic payload at the webhook URL right away, confirming your n8n Webhook node responds correctly before you activate the workflow in step 3.
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 filters 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.
{ event: "test", test: true, ... } with placeholder video and subscription data) at the webhook URL immediately, even before you've saved the subscription. It goes through the same delivery path as a real webhook, but it's a single attempt with no retry, so you get an instant pass/fail without waiting for a real video to publish.
{{ $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.
subscription.label. AI enrichment (summary, key takeaways, topic tags) is generated on Pro and Agency only; on the other plans the enrichment key is absent from the payload, which is worth a guard in any node that reads it.
Free tier includes 1 channel and webhook delivery. Up and running in minutes.
No credit card · Free tier forever