Blog / Tutorials / n8n Recipe: Send New YouTube Transcripts to Notion Automatically
Tutorials 8 min read â€ĸ November 13, 2026

n8n Recipe: Send New YouTube Transcripts to Notion Automatically

Founder

This recipe creates a Notion page for every new transcript Scriptube produces from a channel you're tracking — no manual export, no copy-paste. It needs three nodes: a channel batch submission, the official Scriptube trigger, and n8n's Notion node.

It assumes you've already installed n8n-nodes-scriptube and set up the Scriptube API credential — if not, start with n8n-youtube-transcript-automation, the pillar guide for the node.

Step 1: Submit the channel once

Channel transcripts don't appear until you submit the channel as a batch — the trigger only fires on work Scriptube is actually doing. Build a small setup workflow:

  1. Manual Trigger
  2. Scriptube > Batch > Create — URLs field: https://www.youtube.com/@example-channel

Run it once. Channel URLs become their own background batch (available on every plan — see youtube-channel-transcripts-limits-and-costs for cost). You don't need to keep this workflow active; it's a one-time kickoff, or something you re-run manually when you want to pull a channel's new uploads.

Step 2: React to transcript.ready

Build the real automation as a separate, always-on workflow:

[Scriptube Trigger: Transcript Ready] → [Scriptube: Transcript > Get] → [Notion: Create Page]

Add a Scriptube Trigger node, set Event to Transcript Ready, and activate the workflow. n8n registers the webhook for you using the Webhook Secret on your Scriptube API credential — every delivery arrives signature-checked, so nothing fires unless it genuinely came from Scriptube.

The trigger's payload carries data.batch_id, data.item_id, data.video_id, and data.title, plus a short data.transcript_preview (up to 500 characters) — enough to populate a page title immediately without a second call.

Step 3: Pull the full transcript

The trigger's preview is intentionally short. For the full text, add a Scriptube > Transcript > Get node right after the trigger:

  • Transcript ID: {{$json.data.batch_id}} (the batch the item belongs to)
  • Format: Plain Text (or JSON if you want per-track metadata too)

This calls GET /api/v1/transcripts/{batch_id}/export?format=txt and returns the full transcript text for the batch. If the channel batch has several videos finishing independently, each transcript.ready event still points back at the same batch id — filter the export, or use GET /api/v1/transcripts/{batch_id}?include_metadata=true on the Batch > Get Items operation instead to pull just the one item by data.item_id.

Step 4: Create the Notion page

Add n8n's native Notion node, operation Create Page, pointed at your target database. Map fields from the upstream nodes:

Notion propertySource
Title{{$('Scriptube Trigger').item.json.data.title}}
Video URLhttps://www.youtube.com/watch?v={{$('Scriptube Trigger').item.json.data.video_id}}
Page bodyThe plain-text transcript from the Transcript > Get node

If you'd rather keep the Notion page scannable instead of one long block of text, convert the export to SRT/VTT first and extract just the timestamps you care about — see timestamped-show-notes-from-chapters for a pattern that turns timed segments into structured notes rather than a wall of text.

Keeping it running unattended

Use an API key with read scope for the Transcript > Get step if this workflow never submits new batches itself — only the one-time channel submission in Step 1 needs a full-scope key. Splitting the key like this means a leaked credential on the always-on workflow can't be used to spend credits. See api-keys-scopes-rotation-revocation for the full scope breakdown.

If the channel is large, new uploads will trigger several transcript.ready events close together. n8n queues them and the Notion node processes one item at a time by default, so pages won't collide — just be aware a big backlog (a freshly-submitted 300-video channel, for example) means a burst of pages landing in Notion at once rather than trickling in.

Tracking which channel a page came from

If you're running this recipe against more than one channel, tag each channel's submission with its own External ID in the Batch > Create step (for example notion-sync-example-channel). The value is echoed back in data.batch_id's parent batch and in every webhook for it, so you can filter or branch the Notion-creation workflow by channel instead of running a separate n8n workflow per channel you track.

Avoiding duplicate pages on a re-submit

Be careful about resubmitting the same channel to pick up new uploads: processing always charges, even for a video you already hold, so a repeat submission re-fires transcript.ready for every video in the channel, not just the new ones — and bills for it. Left unguarded, that means a second run of Step 1 creates a duplicate Notion page for every video you'd already synced.

Add an n8n Notion > Search step before Create Page, checking for an existing page with the same video URL, and branch with an IF node to skip creation when one already exists. It's one extra node and it's the difference between an idempotent sync and a channel resubmission silently doubling your Notion database and your credit spend.

Troubleshooting

  • No events arrive: confirm the workflow is active (inactive workflows don't hold a registered webhook) and that the channel batch actually has work to do — resubmitting a channel you already fully hold won't produce new transcript.ready events for videos you've already processed.
  • 401 on the webhook: the Webhook Secret in your credential doesn't match what was used at registration — delete and re-add the credential, then reactivate the workflow so it re-registers.
  • Notion page created but empty: check that the Transcript > Get node ran before the Notion node in the execution log — a failed export with Continue On Fail enabled will pass an empty item downstream silently.

Full node reference and more recipes: /docs.

Try Scriptube Free

Extract YouTube transcripts instantly. No credit card required.

Get Started

Related Articles

Tutorials

Your YouTube Transcript Library: Find Everything You've Already Processed

Every video you've ever submitted to Scriptube stays in your library — browsable by channel and playlist, searchable when you need to find something you...

Tutorials

Paginating Large YouTube Transcript Batches

A batch with hundreds of videos doesn't come back in one response. GET /api/v1/transcripts/{batch_id} pages its items with skip/limit, and tells you when...

Tutorials

How to Retry Failed YouTube Transcripts Without Resubmitting the Batch

A batch of 50 videos rarely comes back 50 for 50 — a couple of videos might have no captions, one might hit a rate limit, another might just need a second...