YouTube transcript node for n8n —
any URL, every format.
Map any YouTube URL into the YouTube operation and get back a clean transcript. Watch URLs, youtu.be share links, /shorts/, mobile, and live replays all resolve automatically. Need per-line timestamps? Flip Output Format to Raw.
n8n-nodes-transcriptmagic What the operation handles.
Every public YouTube URL format resolves automatically — the node parses the video ID internally. No regex node upstream, no URL cleanup. Just point at the URL field from your trigger.
youtube.com/watch?v=… — long-form, 30 seconds to multi-hour.youtube.com/shorts/… — vertical short-form. Great for hook analysis and TikTok cross-posting workflows.youtu.be/<id> — the format YouTube's share button copies. No URL cleanup needed before the node.m.youtube.com URLs and completed live streams with captions resolve out of the box. Useful for podcast and webinar archives.Two output modes — pick what your workflow needs.
The default Normalized output is identical-shaped across every platform, so one downstream chain handles YouTube, TikTok, Instagram, and Facebook. Switch to Raw when you need YouTube's per-line timestamps or platform-specific metadata.
{
"text": "We're no strangers to love...",
"platform": "youtube",
"url": "https://youtu.be/dQw4w9WgXcQ",
"credits": 482
} {{ $json.text }} downstream. Same shape on every platform.
{
"transcript": [
{ "start": 0.0, "end": 2.4, "text": "We're no strangers to love" },
{ "start": 2.4, "end": 4.8, "text": "You know the rules and so do I" }
],
"videoUrls": { ... },
"language": "en"
} start, end, text. Use for chapters, quote-mining, search-by-timestamp.
Recipes people actually build.
Each row is a chain of n8n nodes you can recreate in minutes. Bolded nodes are the TranscriptMagic node (Resource: Transcript, Operation: YouTube); the rest are stock n8n blocks (triggers, transformers, destinations).
Four fields, that's it.
Once the TranscriptMagic credential is set, the node has almost nothing to configure — pick the operation, point at the URL, run.
TranscriptYouTubeTranscriptMagic APIsk_live_… key and is reused across every TranscriptMagic node in the workflow.Normalized · RawNormalized ({ text, platform, credits, url }). Switch to Raw when you need per-line segments with timestamps or platform-specific metadata fields.Questions people ask.
For anything else, email [email protected] or open an issue on GitHub.
Which YouTube URL formats does the n8n node support?
All public formats: youtube.com/watch?v=<id>, youtu.be/<id> share links, youtube.com/shorts/<id>, m.youtube.com mobile, and completed live replays with captions. Map any of them straight from a previous node — the operation handles URL parsing internally.
What is the difference between Normalized and Raw output?
Normalized (default) returns { text, platform, credits, url } — a flat shape that's identical across YouTube, TikTok, Instagram, and Facebook, so the same downstream nodes work for any platform. Raw returns the upstream API response verbatim — for YouTube that includes the per-line transcript array with start, end, and text for every line, plus videoUrls and language metadata. Switch via Options → Output Format on the node.
How do I get per-line timestamps?
Set Options → Output Format to Raw. The response includes a transcript array where every item has start, end, and text in seconds. Use SplitInBatches on {{ $json.transcript }} to process line-by-line, or filter for keyword matches and post matching timestamps to Slack/Sheets.
How do I extract just the text in n8n?
On the default Normalized output, reference {{ $json.text }} in any downstream node. No parsing needed — that field is the full joined transcript string.
Can the n8n AI agent use this node as a tool?
Yes. Add the TranscriptMagic node alongside the AI Agent node and expose the YouTube operation as a tool. The agent reads URLs from user messages, decides when transcription is needed, and calls the operation on its own — no manual routing.
What about age-restricted or unlisted videos?
Unlisted works as long as your workflow has the full URL. Age-restricted videos that require sign-in to view are not supported — only publicly viewable captions can be fetched. Private videos are out by definition.
How fast is each call, and what is the rate limit?
A few seconds for most videos under an hour, slightly longer for multi-hour streams. Cached results return faster on repeat calls. The API rate limit is 120 requests/minute per key — for batch workflows, use SplitInBatches with a small batch size (4–8) so you stay under it comfortably.
How do I handle errors in the workflow?
In the node settings, set On Error → Continue (using error output). Pipe the error branch to a Slack/email notifier or a retry loop. Common errors are 4xx (private/deleted video, captions disabled by uploader) — those are not transient, so retrying won't help. Use the error output to log and move on.
Should I use this n8n node or the YouTube transcript REST API directly?
If your workflow lives in n8n, use the node — you skip credential management, URL parsing, error retries, and JSON shaping. If you are calling from your own code, use the YouTube transcript REST API instead. Same backend, same credits.
Other ways to get YouTube transcripts.
Build the workflow — under ten minutes.
Free credits on signup. The same key powers every TranscriptMagic node, the MCP server, the REST API, and the web app.