Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

YouTube till Google Docs: rensade transkript

Rickard Andersson Partner, Nodenordic.se

Dina YouTube-undertexter innehåller redan guld. Men att exportera dem är ett kaos: tidskoder överallt, slumpmässiga ”[Music]”-markörer, dubbla rader och ibland helt fel språk. Sedan klistrar du in, städar och formaterar om tills du ärligt talat inte vill titta på texten igen.

Den här YouTube-transkript-automationen drabbar content marketers hårdast, eftersom ditt nästa blogginlägg sitter fast i en VTT-fil. Byråoperatörer känner också av det när kunder ber om ”transkriptet i ett dokument innan arbetsdagen är slut”. Och om du driver en liten kanal är den manuella städningen fortfarande samma irriterande jobb.

Det här flödet hämtar undertexter från din egen YouTube-kanal, rensar dem till ett läsbart transkript och skickar resultatet vidare så att du kan lägga in det i Google Docs och börja återanvända det direkt.

Så fungerar den här automatiseringen

Hela n8n-flödet, från trigger till slutlig output:

n8n Workflow Template: YouTube till Google Docs: rensade transkript

Problemet: felfria transkript tar för lång tid

Att göra en YouTube-video till användbar text borde gå snabbt. I praktiken är det en tidstjuv. Du laddar ner undertexter, inser att de är i VTT-format, klistrar in dem någonstans och nu stirrar du på tidskoder, radnummer och hakparentes-markörer som inte hör hemma i något kundnära material. Ännu värre: om din video har flera undertextspår kan du enkelt råka hämta fel språk och inte märka det förrän du är halvvägs in i redigeringen. Kostnaden är inte bara 30–60 minuter av städning. Det är försenad publicering, mental belastning av repetitiv formatering och att dina bästa idéer blir liggande oanvända.

Friktionen växer. Här är var det faller isär i verkligheten.

  • Du slutar med att rensa samma tidskods- och markörmönster varje gång du exporterar undertexter.
  • Nedladdade undertexter kan innehålla fel språkspår, vilket innebär bortkastad redigering och pinsam copy.
  • Manuell transkriptförberedelse gör att ”batchbearbetning” känns omöjlig, så äldre videor återanvänds aldrig.
  • Om en video saknar undertexter lägger du ändå tid på att undersöka innan du kan gå vidare.

Lösningen: extrahera, rensa och återanvänd undertexter automatiskt

Det här n8n-flödet tar ett YouTube-video-ID från din egen kanal och gör om undertexterna till ett korrekt formaterat transkript som du faktiskt kan använda. Det börjar med att ta emot två enkla indata: youtubeVideoId och ditt preferredLanguage. Därifrån anropar det YouTube Data API v3 för att lista vilka undertextspår som finns för videon, kontrollerar om undertexter finns och väljer bästa spår (ditt föredragna språk när det är möjligt, annars ett fallback-alternativ). Sedan laddar det ner undertextfilen (VTT), konverterar den till text och kör en rensningspass som tar bort tidskoder, tar bort markörer som ”[Music]” och avduplicerar upprepade rader. Om undertexter inte finns får du ett strukturerat felsvar så att ditt system kan hantera det snyggt i stället för att misslyckas tyst.

Flödet startar med en n8n-trigger (som ett subflöde, eller bytt till en webhook om du vill). Det hämtar och rensar transkriptet i en körning. Sedan kan du skicka den rensade outputen till Google Docs, Google Drive eller direkt till AI-sammanfattning, beroende på vad du vill göra härnäst.

Vad du får: automation vs. resultat

Exempel: så här ser det ut

Säg att du återanvänder 5 videor i veckan till blogginlägg och e-postutkast. Manuellt tar det lätt cirka 30 minuter per video att hämta undertexter, klistra in VTT-text, ta bort tidskoder, rensa markörer och fixa dubletter, alltså cirka 2–3 timmar per vecka. Med det här flödet skickar du in ett video-ID och språk på under en minut, väntar på att API-hämtning och rensning ska bli klara (oftast ett par minuter) och jobbar sedan från ett korrekt formaterat transkript. Det är ungefär 2 timmar tillbaka varje vecka, utan att ändra din publiceringstakt.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • YouTube Data API v3 för listning och nedladdning av undertexter
  • Google Drive för att lagra transkript och exporter
  • YouTube OAuth2-inloggningsuppgifter (skapa i Google Cloud Console)

Kunskapsnivå: Medel. Du kopplar OAuth, klistrar in ett video-ID och uppdaterar ett par noder med rätt inloggningsuppgifter.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

Du anger ett YouTube-video-ID och föredraget språk. Flödet är byggt för att köras som ett subflöde (Execute Workflow Trigger), men du kan byta till en webhook om du vill anropa det från ett formulär, Airtable eller ett enkelt internt verktyg.

Det frågar YouTube vilka undertextspår som finns. En HTTP-request anropar YouTube Data API v3 för att lista undertexter för just den videon på din autentiserade kanal, och sedan styr en If-kontroll flödet beroende på om undertexter finns.

Språkvalet görs innan nedladdning. Ett litet kodsteg väljer din preferredLanguage när den finns, och faller annars tillbaka till första tillgängliga spår så att du slipper gissa.

VTT-filen konverteras och rensas. Flödet laddar ner undertextfilen, konverterar den till ren text och kör sanering för att ta bort tidskoder, markörer som ”[Music]” och dubletter. Outputen innehåller transkripttext och metadata, vilket gör det enkelt att mata in i Google Docs, lagring i Google Drive eller AI-steg senare.

Du kan enkelt modifiera outputen så att en ny Google Doc skapas automatiskt i stället för att skicka texten vidare. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera triggern Execute Workflow

Sätt upp startpunkten för underflödet så att andra arbetsflöden kan skicka in ett YouTube-video-ID och önskat språk till det här arbetsflödet.

  1. Lägg till eller öppna Subflow Execution Trigger.
  2. I Workflow Inputs lägger ni till två fält med namnen youtubeVideoId och preferredLanguage.
  3. Koppla Subflow Execution Trigger till Assign Input Variables.

Steg 2: Koppla hämtning av YouTube-data

Hämta undertextlistan från YouTube API med det inkommande video-ID:t.

  1. Öppna Assign Input Variables och ställ in youtubeVideoId till ={{ $json.youtubeVideoId }} och preferredLanguage till ={{ $json.preferredLanguage }}.
  2. Öppna Retrieve Caption List och ställ in URL till =https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId={{ $('Assign Input Variables').item.json.youtubeVideoId }}.
  3. Inloggning krävs: Anslut era youTubeOAuth2Api-inloggningsuppgifter i Retrieve Caption List.
  4. Säkerställ att Retrieve Caption List är kopplad till Validate Caption Availability.

⚠️ Vanlig fallgrop: Säkerställ att inkommande youtubeVideoId är ett giltigt YouTube-video-ID; ogiltiga ID:n returnerar en tom items-array och triggar felspåret.

Steg 3: Sätt upp val och hämtning av undertexter

Välj bästa undertextspråk och ladda ner den valda undertextfilen.

  1. I Validate Caption Availability säkerställer ni att villkoret kontrollerar leftValue ={{ $json.items.length }} gt 0.
  2. Öppna Select Caption Language och behåll standardlogiken som prioriterar det önskade språket och faller tillbaka till första tillgängliga undertext.
  3. Öppna Fetch Caption File och ställ in URL till =https://www.googleapis.com/youtube/v3/captions/{{ $('Select Caption Language').item.json.captionId }}.
  4. Inloggning krävs: Anslut era youTubeOAuth2Api-inloggningsuppgifter i Fetch Caption File.
  5. Bekräfta flödet Select Caption LanguageFetch Caption FileConvert Caption File.

Steg 4: Konfigurera bearbetning av undertexter

Konvertera undertextfilen till text och sanera den till ett rent transkript.

  1. I Convert Caption File ställer ni in Operation till text och Destination Key till content.
  2. Öppna Sanitize Transcript Text och behåll JavaScript-koden som tar bort tidsstämplar, rubriker och taggar inom hakparenteser, och som sedan slår ihop rader till en enda ren textsträng.
  3. Verifiera att Sanitize Transcript Text matar ut fälten text, wordCount, charCount och status.

Steg 5: Lägg till felhantering

Hantera fall där videon saknar undertexter och stoppa arbetsflödet med ett tydligt fel.

  1. Från Validate Caption Availability bekräftar ni att falsk-grenen går till No Captions Handler.
  2. Öppna No Captions Handler och behåll den strukturerade felutdata som inkluderar status no_captions och föreslagen fallback.
  3. Koppla No Captions Handler till Terminate With Error med meddelandet There's no captions in YouTube Video.

⚠️ Vanlig fallgrop: Om ni vill ha ett svar som inte misslyckas när undertexter saknas, ersätt Terminate With Error med en responsnod i stället för att stoppa exekveringen.

Steg 6: Testa och aktivera ert arbetsflöde

Validera att arbetsflödet returnerar ett rent transkript för videor med undertexter och att det hanterar fel korrekt för videor utan undertexter.

  1. Klicka på Execute Workflow och skicka in ett exempel på youtubeVideoId och preferredLanguage till Subflow Execution Trigger.
  2. Bekräfta att lyckade körningar avslutas vid Sanitize Transcript Text med status success och ett ifyllt text-fält.
  3. Testa en video utan undertexter för att verifiera att No Captions Handler körs och att Terminate With Error stoppar arbetsflödet.
  4. Slå om arbetsflödet till Active för att använda det i produktionsunderflöden.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • YouTube OAuth2-inloggningsuppgifter kan löpa ut eller sakna rätt scope. Om listning av undertexter misslyckas, kontrollera inloggningsuppgiften som används i HTTP-requesten ”Retrieve Caption List” och bekräfta att du har åtkomst till youtube.captions.read.
  • Om du konverterar filer via extraktionsnoder kan svar ibland komma tillbaka tomma en kort stund. När ”Convert Caption File” ger tom output, försök igen en gång eller lägg in en kort väntan före sanering så att efterföljande noder inte bearbetar ingenting.
  • Saneringsreglerna är en avvägning. Om du vill behålla talaretiketter, ljudmarkörer eller radbrytningar för läsbarhet, justera koden i ”Sanitize Transcript Text” tidigt — annars kommer du att efterredigera varje transkript manuellt.

Vanliga frågor

Hur lång tid tar det att sätta upp den här YouTube-transkript-automationen?

Cirka 30 minuter om dina YouTube OAuth-inloggningsuppgifter är klara.

Behöver jag kunna koda för att automatisera rensning av YouTube-transkript?

Nej. Du kopplar främst konton och klistrar in rätt inloggningsuppgifter. Den befintliga rensningslogiken finns redan på plats, och du kan behålla den som den är.

Är n8n gratis att använda för det här flödet för YouTube-transkript-automation?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in användning av YouTube API (oftast försumbar för små batcher).

Var kan jag hosta n8n för att köra den här YouTube-transkript-automationen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsat antal körningar men kräver grundläggande serveradministration.

Kan jag anpassa det här flödet för YouTube-transkript-automation så att Google Docs skapas automatiskt?

Ja, men det är en liten justering. Lägg till ett Google Docs-steg (eller Google Drive ”Create file”) efter ”Sanitize Transcript Text” så att varje körning skapar ett nytt dokument från det rensade transkriptet. Vanliga anpassningar är att namnge dokumentet med videotiteln, spara i en specifik Drive-mapp och skriva in det föredragna språket i dokumenthuvudet.

Varför misslyckas min YouTube-anslutning i det här flödet?

Oftast beror det på utgångna OAuth-inloggningsuppgifter eller saknade behörigheter i Google Cloud-projektet som är kopplat till ditt YouTube-konto. Återanslut YouTube OAuth-inloggningsuppgiften som används i HTTP-request-noderna för undertextlistning och undertextnedladdning och bekräfta sedan att scope:et youtube.captions.read är tillåtet. Notera också den inbyggda begränsningen: det här flödet fungerar bara för videor på din autentiserade kanal, så externa/offentliga video-ID:n kommer att misslyckas även om de har undertexter.

Hur många videor klarar den här YouTube-transkript-automationen?

Många, så länge du respekterar API-gränser och din n8n-kapacitet för körningar. På n8n Cloud Starter begränsas du av månadsvisa körningar, så att batcha hundratals videor kan trycka dig till en högre plan. Om du self-hostar finns ingen körningsgräns, men servern måste fortfarande köra jobben. I praktiken kör de flesta team detta i batcher om 20–50 videor åt gången och låter det bli klart i bakgrunden.

Är den här YouTube-transkript-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Zapier och Make kan anropa YouTube API, men värdet i det här flödet är logiken kring val av undertextspår, konvertering och textrensning, vilket är enklare att styra i n8n. n8n ger dig också ett self-host-alternativ när körvolymen ökar, vilket gör kostnaderna mer förutsägbara. Nackdelen är uppsättning: du kan behöva lägga lite mer tid på att koppla OAuth och testa första körningen. Om du är osäker, prata med en automationsexpert och få en rak rekommendation.

När detta väl rullar slutar transkript vara ”ännu en syssla” och blir en input du kan lita på. Sätt upp det, mata in video-ID:n och få korrekt formaterad text som du faktiskt kan publicera.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal