🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

YouTube to Google Sheets, transcripts logged clean

Lisa Granqvist Partner Workflow Automation Expert

You grab a YouTube link, paste it into a doc, hunt for the transcript, copy it, fix timestamps, then realize you forgot the channel name and publish date. Again. It’s not hard work. It’s just endless.

This is where YouTube transcript logging becomes a real advantage for marketers building content briefs, researchers collecting quotes, and agency owners turning videos into reusable assets. You get a clean transcript plus useful metadata in one place, without babysitting the process.

This workflow gives you two ways to capture transcripts: a Google Sheets “drop links here” approach and a webhook for instant, on-demand extraction. You’ll see what it does, what you need, and how to avoid the common setup traps.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: YouTube to Google Sheets, transcripts logged clean

The Problem: Transcripts Are Useful, but Getting Them Is a Time Sink

Transcripts are gold for content, research, accessibility, and SEO. The frustrating part is that collecting them is weirdly fragile. One person pastes a youtu.be link, another uses a full youtube.com URL with tracking parameters, someone shares an embed link, and suddenly your “simple” process breaks. Even when you do get the transcript, it lands in the wrong place, without the title, without the channel, and with no consistent formatting. Then you waste time cleaning it up before you can do anything valuable with it.

It adds up fast. Here’s where it usually breaks down in real teams.

  • Copy-pasting transcripts for a handful of videos can burn about 2 hours a week, and it’s hard to even notice where that time went.
  • Different YouTube URL formats cause silent failures, so you think you captured a transcript when you didn’t.
  • Metadata gets lost, which means your “transcript library” is basically a pile of anonymous text.
  • Some videos simply don’t have transcripts, and your process needs to handle that without derailing everything.

The Solution: Automatic Transcript + Metadata Capture in Google Sheets

This workflow turns transcript capture into a simple input-output system. You give it a YouTube URL, and it extracts the video ID even if the link is messy (youtu.be, embed links, long URLs with extra parameters). From there, it calls a YouTube Transcript API to pull the transcript text, plus rich metadata like video title, channel, publish date, duration, and category. Finally, it logs everything to Google Sheets in a consistent format so your library stays searchable and reusable. If a transcript isn’t available, the workflow handles that gracefully and still records what happened, so you don’t chase ghosts.

You can run it two ways. The “automated” path watches a Google Sheet for new URLs and appends the transcript results to your results sheet. The “instant” path accepts a webhook request, fetches the transcript, then responds right away with the compiled payload.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you collect transcripts for 20 competitor videos each week. Manually, it’s maybe 6 minutes to open the video, find or generate the transcript, copy it, then paste it into your spreadsheet with the title and channel, which is about 2 hours total. With this workflow, you paste 20 URLs into Google Sheets in a few minutes and let n8n extract everything in the background. You end up doing a quick scan for the handful of videos that have no transcript, and you’re done.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for URL intake and transcript storage.
  • YouTube Transcript API to fetch transcripts and metadata.
  • YouTube Transcript API key (get it from your provider dashboard, like youtube-transcript.io).

Skill level: Beginner. You’ll connect accounts, map a few columns, and paste in an API key.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A new YouTube link appears. You can trigger the workflow by adding a URL to Google Sheets, or by sending a POST request to the webhook endpoint when you want an instant transcript response.

The workflow extracts the video ID. A small parsing step handles common URL formats (youtube.com, youtu.be, embed links), so your team doesn’t need “perfect” inputs to get consistent outputs.

n8n requests the transcript and metadata. Using HTTP Request, the workflow calls your transcript provider, then compiles the transcript text into a clean field alongside title, channel, publish date, duration, and category.

Results get saved or returned. In the Sheets path, the transcript row is appended to your results sheet. In the webhook path, n8n responds immediately with a payload you can pass into another tool.

You can easily modify where transcripts are stored (Sheets vs. Docs vs. Drive) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Google Sheets Trigger

This workflow starts when a new URL is added to your Google Sheet. Configure Track Sheet URLs so it watches the correct spreadsheet and tab.

  1. Add the Track Sheet URLs node and set Event to rowAdded.
  2. Set Sheet Name to urls.
  3. Set Document ID to your sheet URL, replacing [YOUR_ID] with the actual Google Sheets URL.
  4. In Poll Times, confirm it runs everyMinute.
  5. Credential Required: Connect your googleSheetsTriggerOAuth2Api credentials.

Tip: The sheet tab named urls should include a column called url so Derive Video ID from Sheet can parse it.

Step 2: Connect Google Sheets

Transcripts are written back to a separate tab in the same spreadsheet. Configure Append Transcript to Sheet for the output destination.

  1. Add the Append Transcript to Sheet node and set Operation to append.
  2. Set Sheet Name to transcripts.
  3. Set Document ID to the same Google Sheets URL used in Track Sheet URLs.
  4. In Columns, map video title to ={{ $('Request Transcript via Sheet').item.json.microformat.playerMicroformatRenderer.title.simpleText }}.
  5. Map transcript to ={{ $json.fullTranscript }}.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials.

⚠️ Common Pitfall: If the transcripts tab does not have columns named video title and transcript, the append operation will fail.

Step 3: Set Up Transcript Retrieval via Sheet

This path converts the YouTube URL from the sheet into a video ID, requests the transcript, and assembles the full text.

  1. Connect Track Sheet URLs to Derive Video ID from Sheet to extract videoId from the incoming url.
  2. Connect Derive Video ID from Sheet to Request Transcript via Sheet.
  3. In Request Transcript via Sheet, set URL to https://www.youtube-transcript.io/api/transcripts and Method to POST.
  4. Set JSON Body to ={ "ids": [ "{{ $json.videoId }}" ]} .
  5. Set the Authorization header value to ={{ $credentials.youtubeTranscriptApi.token }}.
  6. Credential Required: Connect your youtubeTranscriptApi credentials.
  7. Connect Request Transcript via Sheet to Assemble Transcript Text to build fullTranscript.

Step 4: Configure the Webhook Trigger

This workflow also supports on-demand transcript retrieval via a webhook request.

  1. Add the Incoming Webhook Trigger node and set HTTP Method to POST.
  2. Set Path to extract-youtube-transcript.
  3. Set Response Mode to responseNode so Respond with Transcript returns the payload.
  4. Connect Incoming Webhook Trigger to Derive Video ID from Webhook.

Tip: Your POST body must include video_url in body so Derive Video ID from Webhook can parse it.

Step 5: Set Up Transcript Retrieval via Webhook

This path fetches the transcript and returns a structured response directly to the caller.

  1. Connect Derive Video ID from Webhook to Request Transcript via Webhook.
  2. In Request Transcript via Webhook, set URL to https://www.youtube-transcript.io/api/transcripts and Method to POST.
  3. Set JSON Body to ={ "ids": [ "{{ $json.videoId }}" ]} .
  4. Set the Authorization header value to ={{ $credentials.youtubeTranscriptApi.token }}.
  5. Credential Required: Connect your youtubeTranscriptApi credentials.
  6. Connect Request Transcript via Webhook to Compile Transcript Payload.
  7. Connect Compile Transcript Payload to Respond with Transcript and keep Respond With set to json.
  8. In Respond with Transcript, set Response Body to ={ "success": true, "video": { "id": "{{ $json.id }}", "title": "{{ $json.title }}", "channel": "{{ $json.channel }}", "duration": "{{ $json.duration }}", "hasTranscript": {{ $json.hasTranscript }} }, "transcript": "{{ $json.fullTranscript }}"} .

Step 6: Configure Output Actions

Finalize the execution flow from parsing to output for the sheet-based path.

  1. Verify the execution flow: Track Sheet URLsDerive Video ID from SheetRequest Transcript via SheetAssemble Transcript TextAppend Transcript to Sheet.
  2. Confirm the webhook flow: Incoming Webhook TriggerDerive Video ID from WebhookRequest Transcript via WebhookCompile Transcript PayloadRespond with Transcript.

Step 7: Test and Activate Your Workflow

Run a manual test for both the sheet and webhook paths, then activate the workflow for continuous use.

  1. Click Execute Workflow and add a test URL to the urls sheet to trigger Track Sheet URLs.
  2. Confirm that Append Transcript to Sheet adds a new row with video title and transcript.
  3. Test the webhook by sending a POST request to /webhook/extract-youtube-transcript with {"video_url":"https://youtu.be/VIDEO_ID"}.
  4. Verify that Respond with Transcript returns a JSON payload with success, video, and transcript.
  5. Toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • YouTube Transcript API credentials can expire or be tied to billing and quota. If things break, check your transcript provider dashboard first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Google Sheets permissions can be deceptively strict. If rows aren’t being appended, confirm the connected Google account has edit access to the exact spreadsheet and tab.

Frequently Asked Questions

How long does it take to set up this YouTube transcript logging automation?

About 30 minutes if your accounts are ready.

Do I need coding skills to automate YouTube transcript logging?

No. You’ll mostly connect accounts and paste in an API key. The “video ID extraction” logic is already included.

Is n8n free to use for this YouTube transcript logging workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in YouTube Transcript API costs (many providers charge a small monthly plan or per-request fee).

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this YouTube transcript logging workflow for saving transcripts to Google Docs instead?

Yes, but you’ll swap the destination step. Keep the same extraction pieces (the “Derive Video ID” code node and the HTTP Request transcript call), then replace the “Append Transcript to Sheet” Google Sheets node with a Google Docs or Google Drive file-creation step. Common customizations include adding speaker labels (if your provider supports it), storing raw JSON for auditing, and adding a “status” column for videos with no transcript.

Why is my Google Sheets connection failing in this workflow?

Usually it’s permissions or the wrong spreadsheet/tab selection in the Google Sheets nodes. Reconnect your Google account in n8n, then confirm that account can edit the spreadsheet you’re writing to. Also check that your sheet has the expected columns (for example, an input “url” column and output columns like “video title” and “transcript”), because mismatched headers can cause mapping errors that look like credential issues.

How many videos can this YouTube transcript logging automation handle?

For most small teams, hundreds of videos per month is realistic, and the real limit is your n8n execution quota (if on Cloud) plus whatever rate limits your transcript API enforces.

Is this YouTube transcript logging automation better than using Zapier or Make?

Often, yes, especially if you care about reliability with messy URLs and you want two entry points (Sheets monitoring plus webhook). n8n makes it easier to keep the parsing logic close to the workflow, which means fewer “mystery failures” when someone pastes a different link format. It’s also much simpler to add fallbacks for “no transcript available” without creating a maze of separate automations. Zapier or Make can be fine for basic two-step setups, but this workflow benefits from branching and custom processing. If you’re on the fence, Talk to an automation expert and we’ll help you pick the least painful route.

Once this is running, transcripts stop being a chore and start being an asset you can actually use. Set it up once, keep dropping links, and let your library grow on its own.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal