Scriptube publishes an official n8n community node, n8n-nodes-scriptube, that wraps the transcript API in n8n-native nodes: one for actions (create a batch, check status, pull a transcript, check credits) and one trigger that receives Scriptube's webhooks directly in your workflow. This is the pillar guide for every Scriptube + n8n workflow â later articles build specific recipes on top of it.
Install the node
From n8n's Community Nodes panel:
- Go to Settings > Community Nodes
- Click Install
- Enter
n8n-nodes-scriptube - Click Install
Self-hosting without the Community Nodes UI, install it manually instead:
cd ~/.n8n/custom
npm install n8n-nodes-scriptube
Set up credentials
Create a Scriptube API key first: sign in, open Settings > API Keys, and create a key (give it full scope if this workflow will submit batches, not just read results â see api-keys-scopes-rotation-revocation for the difference).
In n8n, add a new Scriptube API credential with three fields:
| Field | What goes here |
|---|---|
| API Key | The key from Settings > API Keys |
| Webhook Secret | A dedicated random string, 16â256 characters â not your API key |
| Base URL | https://scriptube.me (the default) |
The Webhook Secret matters even if you're only using the action node right now: the trigger node registers every webhook with this secret, and Scriptube signs every delivery with it. Without a real secret here, anyone who discovers your n8n webhook URL could fire your workflow by sending it a fake payload.
The Scriptube action node
The main Scriptube node groups its operations under three resources:
| Resource | Operation | Calls |
|---|---|---|
| Batch | Create | POST /api/v1/transcripts |
| Batch | Get | GET /api/v1/transcripts/{batch_id} |
| Batch | Get Items | GET /api/v1/transcripts/{batch_id}?include_metadata=true |
| Batch | List | GET /api/v1/transcripts |
| Transcript | Get | GET /api/v1/transcripts/{batch_id}/export?format=... |
| Credits | Get Balance | GET /api/v1/credits/balance |
Create Batch takes a URLs field (one YouTube URL per line, or comma-separated â videos, playlists, channel URLs/@handles, or any mix), plus two optional fields under Options: Translate to English and External ID (your own id for the batch, max 128 characters, echoed back in every response and webhook â useful for matching a Scriptube batch to the row that triggered it). Transcript > Get takes the batch id returned by Create Batch and a format: JSON, Plain Text, SRT, VTT, CSV, or JSONL.
Build your first workflow: submit, wait, export
Start with the simplest useful shape â submit one video, wait for it, then fetch the transcript:
- Manual Trigger or Set node with a test URL, e.g.
https://www.youtube.com/watch?v=dQw4w9WgXcQ - Scriptube > Batch > Create â paste the URL into URLs
- Wait node, a few seconds (a single cached video is often already
completedin the create response; an uncached one needs processing time) - Scriptube > Batch > Get â batch id from the Create step's output (
{{$json.batch_id}}) - IF node â branch on
{{$json.status}} === "completed", looping back to Wait if not - Scriptube > Transcript > Get â once completed, pull the export in whatever format the next step needs
This is the polling shape. It works for one-off runs, but for anything production-grade, swap the Wait/Get/IF loop for the trigger node below â it's the same information, delivered the moment it's ready instead of guessed at with a timer.
The trigger node: react to events instead of polling
Add a Scriptube Trigger node to start a new workflow. Pick an event:
batch.created,batch.started,batch.completed,batch.faileditem.completed,item.failedtranscript.readycredits.low,credits.depletedsubscription.updated
Activate the workflow once and n8n calls Scriptube's POST /api/webhooks/register for you, using the node's webhook URL and the Webhook Secret from your credential. Deactivating the workflow unregisters it the same way.
Every delivery is verified before your workflow runs: the node checks X-Scriptube-Signature (an HMAC-SHA256 of the timestamp and raw request body, signed with your Webhook Secret) and rejects anything with a bad signature or a timestamp older than the Replay Window parameter (default 300 seconds, matching the 5-minute window Scriptube documents). An unverified delivery gets a 401 and never reaches your nodes â raise the replay window only if your n8n instance's clock drifts.
Example: notify Slack when a batch finishes
[Scriptube Trigger: Batch Completed] â [Slack: Send Message]
Map the trigger's output fields (data.batch_id, data.item_count, data.completed_count, data.failed_count) into the Slack message text. This pattern â trigger in, message out, no polling node anywhere â is the basic shape for most Scriptube workflows. A worked version with the exact Slack webhook setup is in slack-alert-transcript-batch-finished, and a Notion variant is in n8n-youtube-channel-to-notion.
Reading errors
If a node throws, the error message comes straight from Scriptube's API error envelope ({code, message, detail}). Common ones you'll hit while building: a 402 means the account is out of credits for the batch being created; a 429 means you've hit a rate limit (the response carries a Retry-After header â the Wait node can read this to back off correctly instead of guessing a delay). Turn on Continue On Fail on the Scriptube node if you want failed items to flow through as data instead of stopping the workflow.
Where this doesn't reach
There is no equivalent official app for Zapier, Make, or Pipedream â those platforms don't have a native Scriptube integration. You can still automate with them using the same webhooks and HMAC scheme this node uses under the hood; see zapier-make-youtube-transcripts-webhooks for the manual setup. If you're deciding between push and poll for a custom integration outside n8n entirely, webhooks-vs-polling-youtube-transcripts covers the trade-off in more depth.
Get your API key and start building: sign up for Scriptube, or check plans if you're estimating costs for a workflow that runs on a schedule.