automations / n8n · updated 2026-07-20
YouTube videos → transcript text
Paste video IDs, get one item per video with the full transcript joined to plain text. Captionless and unplayable videos exit on the false branch as typed rows instead of crashing the execution.
A 50-video batch costs about $0.15 (50 × $0.003 plus a $0.00005 start fee) — videos that can't deliver a transcript are $0.
What's inside
- 1.Run workflow (manual trigger — swap for a schedule, webhook, or sheet trigger)
- 2.Get transcripts (HTTP Request → run-sync-get-dataset-items, one item per video)
- 3.Split by success (IF on {{ $json.success }})
- 4.Transcript text (true branch: video_id, title, and the segments joined to plain text)
- 5.Failure row (false branch: video_id, code, request_id — not billed)
Set it up
Open the workflow on GitHub (button above), click Raw and copy that URL, then in n8n: Workflow → Import from URL. Open Get transcripts and replace YOUR_APIFY_TOKEN in the Authorization header. Put your own IDs in videoIds (up to 50). The token comes from Apify Console → Settings → API tokens; the free tier works, and the run bills per delivered row on your Apify account.
Ways to extend it
- Replace Transcript text's downstream with Notion, Google Sheets, or a vector store node — the text field is ready to embed.
- Add an OpenAI node after the true branch to summarize each transcript before saving.
- Swap the manual trigger for a Schedule node to process a standing ID list.
Going deeper: the n8n transcripts guide — the full HTTP-node walkthrough, the async pattern for big batches, and the community-node alternative. Actor pricing: what a YouTube Transcript Scraper run costs. Error codes the failure branch can carry: the error-code reference.