Du trycker på ”record”, du avslutar samtalet – och sedan börjar det riktiga jobbet. Transkribering, titlar, shownotes, Buzzsprout-uppladdningar, sociala promos, spåra vad som publicerats. Det är mycket för något du redan har skapat.
Podcast managers känner av det först. Men marknadsansvariga som försöker återanvända varje avsnitt och byråteam som driver kundpoddar dras in i samma röriga loop. Den här podcast publishing automation gör en uppladdning i Google Drive till ett publicerat Buzzsprout-avsnitt plus innehåll som är redo att använda.
Nedan ser du exakt vad workflowet automatiserar, vilka resultat du kan förvänta dig och vad du behöver för att köra det utan att barnvakta varje release.
Så fungerar den här automatiseringen
Hela n8n-workflowet, från trigger till slutlig output:
n8n Workflow Template: Google Drive + Buzzsprout: publicera poddar handsfree
flowchart LR
subgraph sg0["Trigger: New Audio File Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Trigger: New Audio File", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Download Raw Audio", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "AI Transcription", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "AI Transcript Cleaning & QA", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse Cleaned Transcript JSON"]
n5@{ icon: "mdi:robot", form: "rounded", label: "AI Episode Metadata Generator", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse Episode Metadata JSON"]
n7@{ icon: "mdi:robot", form: "rounded", label: "AI Blog Article Generator", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse Blog Article JSON"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Create Episode Draft Record"]
n10@{ icon: "mdi:robot", form: "rounded", label: "AI Social Media Content Gene..", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse Social Content"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Update Social Content"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Save Thumbnail URL"]
n14@{ icon: "mdi:robot", form: "rounded", label: "AI Thumbnail Generator (YouT..", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Buzzsprout Episode P..", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Download Audio for Buzzsprou..", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Upload Episode"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Save Buzzsprout Episode Data"]
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Marketing Team"]
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Slack Message", pos: "b", h: 48 }
n17 --> n18
n2 --> n3
n1 --> n2
n13 --> n15
n11 --> n12
n20 --> n19
n12 --> n14
n8 --> n9
n0 --> n1
n7 --> n8
n3 --> n4
n9 --> n10
n6 --> n7
n18 --> n20
n5 --> n6
n4 --> n5
n10 --> n11
n15 --> n16
n16 --> n17
n14 --> n13
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2,n3,n5,n7,n10,n14 ai
class n9,n12,n13,n18 database
class n17 api
class n4,n6,n8,n11 code
classDef customIcon fill:none,stroke:none
class n4,n6,n8,n9,n11,n12,n13,n17,n18,n19 customIcon
Problemet: poddpublicering blir till rutinjobb
Att publicera en podd låter enkelt tills du gör det varje vecka. Någon måste ladda ner ljudet, ladda upp det igen, vänta på bearbetning och sedan skriva det som gör avsnittet sökbart: en tydlig titel, en korrekt beskrivning, riktiga shownotes, taggar, kanske ett blogginlägg, plus social copy som inte känns som utfyllnad. Och om du hanterar flera poddar är den mentala belastningen värre än själva skrivandet. Missar du ett steg får du ”Avsnitt 42” live utan anteckningar, utan promo och utan spårbarhet kring vad som hände.
Det blir snabbt mycket. Här brukar det oftast fallera.
- Att ladda upp ljud till Buzzsprout och sedan mata in titlar och beskrivningar manuellt är repetitivt och lätt att göra fel.
- Shownotes och bloggutkast blir försenade eftersom ”vi gör det senare” tyst blir ”vi gjorde det inte”.
- Sociala inlägg blir inkonsekventa, så avsnitt lanseras utan momentum även när innehållet är starkt.
- Det finns ingen single source of truth, vilket gör att du letar i Drive, Slack och Buzzsprout för att bekräfta vad som publicerats.
Lösningen: Drive-till-Buzzsprout-publicering med Airtable-spårning
Det här workflowet gör din Google Drive-mapp till en ”dropbox” för poddpublicering. När du laddar upp en MP3/WAV/M4A hämtar n8n filen, transkriberar den med OpenAI Whisper och städar sedan upp transkriptionen så att nästa steg inte jobbar med rörig text. Från den korrigerade transkriptionen genererar det ett komplett avsnittspaket: en stark titel, en tydlig beskrivning, detaljerade shownotes, föreslaget publiceringsdatum och taggar. Det tar också fram en komplett bloggartikel i Markdown och skapar kanalredo social copy (LinkedIn-inlägg, Instagram-caption, en X-tråd och ett kort manus för TikTok/Shorts). Till sist genererar det en URL till en YouTube-thumbnail, loggar allt i Airtable, laddar upp ljudet till Buzzsprout via API, sparar Buzzsprout-detaljerna tillbaka i Airtable och meddelar teamet i Slack att avsnittet är live.
Workflowet startar när en ny ljudfil landar i en specifik Drive-mapp. AI hanterar transkribering och innehållsskapande, sedan blir Airtable avsnittsdatabasen. Buzzsprout får den färdiga uppladdningen och metadata, och Slack får ”publicerat”-meddelandet så att ingen behöver kontrollera manuellt.
Det här får du: automatisering vs. resultat
| Vad detta workflow automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du publicerar ett veckovis avsnitt och behöver 6 manuella steg: ladda upp till Buzzsprout (cirka 15 minuter), skriva titel och beskrivning (cirka 20 minuter), skriva shownotes (cirka 30 minuter), ta fram ett blogginlägg (cirka 45 minuter), skapa 4 sociala varianter (cirka 30 minuter) och sedan logga allt någonstans (cirka 10 minuter). Det är ungefär 2,5 timmar varje vecka, per podd. Med det här workflowet laddar du upp filen till Drive (en minut), väntar på bearbetning och granskar den genererade texten när det passar. Du får tillbaka din eftermiddag.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Drive för att övervaka en mapp för uppladdningar.
- Buzzsprout för att publicera avsnitt via API.
- OpenAI API-nyckel (hämta den i din OpenAI API-dashboard)
- Airtable för avsnittsloggning och lagring av innehåll.
- Slack för att meddela teamet när publiceringen är klar.
Kompetensnivå: Medel. Du kopplar konton, skapar Airtable-fälten en gång och klistrar in några ID:n/tokens på rätt ställen.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En ny ljuduppladdning triggar allt. Lägg en MP3/WAV/M4A i en specifik Google Drive-mapp så hämtar n8n filen direkt för att kunna bearbeta den.
Transkribering och upprensning sker därefter. OpenAI Whisper omvandlar ljudet till text, och sedan gör en andra AI-pass en genomgång som städar upp så att namn, skiljetecken och formatering inte ser slarviga ut i de slutliga anteckningarna.
Innehåll genereras från den korrigerade transkriptionen. Workflowet skapar avsnittsmetadata (titel, beskrivning, shownotes, taggar, föreslaget publiceringsdatum) och tar sedan fram ett blogginlägg i Markdown samt skriver socialt innehåll för LinkedIn, Instagram, X och korta manus för videoformat.
Publicering och spårning automatiseras. n8n bygger Buzzsprout-uppladdningspayloaden, laddar upp ljudet via HTTP request, sparar Buzzsprout avsnitts-ID, GUID, ljud-URL och publiceringstid i Airtable och postar sedan en sammanfattning i Slack.
Du kan enkelt justera prompts och output-fält så att de matchar din tonalitet och kanal-mix utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Google Drive-triggern
Det här arbetsflödet startar när en ny ljudfil laddas upp till en specifik Google Drive-mapp.
- Lägg till noden Audio Upload Trigger och ställ in Event på
fileCreated. - Ställ in Trigger On på
specificFolderoch välj målmappen under Folder to Watch (värde som[YOUR_ID]). - Inloggning krävs: Anslut era googleDriveOAuth2Api-uppgifter i Audio Upload Trigger.
⚠️ Vanlig fallgrop: Om mapp-ID:t är fel kommer triggern inte att köras. Verifiera mappvalet i Google Drive.
Steg 2: Anslut Google Drive för att hämta ljudfilen
Efter triggern laddar arbetsflödet ner ljudfilen för transkribering och publicering.
- I Fetch Source Audio ställer ni in Operation på
downloadoch File ID på{{ $json.webViewLink }}. - Inloggning krävs: Anslut era googleDriveOAuth2Api-uppgifter i Fetch Source Audio.
- I Retrieve Audio for Upload ställer ni in Operation på
downloadoch File ID på{{ $('Audio Upload Trigger').item.json.webViewLink }}. - Inloggning krävs: Anslut era googleDriveOAuth2Api-uppgifter i Retrieve Audio for Upload.
Steg 3: Sätt upp AI-transkribering och generering av metadata
Arbetsflödet använder OpenAI för att transkribera, rensa och generera strukturerad avsnittsmetadata och innehåll.
- I AI Audio Transcriber låter ni Resource vara
audiooch Operation varatranscribe. - Inloggning krävs: Anslut era openAiApi-uppgifter i AI Audio Transcriber.
- I Transcript Cleanup QA ställer ni in systemprompten enligt konfigurationen och säkerställer att användarmeddelandet använder
{{ $json.text }}. - Inloggning krävs: Anslut era openAiApi-uppgifter i Transcript Cleanup QA.
- I Extract Clean Transcript klistrar ni in angiven JS Code för att tolka
$json.output[0].content[0].text. - I Generate Episode Metadata behåller ni systemprompten och skickar JSON-payloaden med uttrycksblocket med
{{ $json['summary'] }},{{ $json.transcript['Speaker 1'] }},{{ $json.transcript["Speaker 2"] }}och{{ $json.key_takeaways }}. - Inloggning krävs: Anslut era openAiApi-uppgifter i Generate Episode Metadata.
Steg 4: Tolka AI-utdata och skapa avsnittsposten
Strukturerad data extraheras från AI-svar och lagras i Airtable för spårning och återanvändning.
- I Parse Metadata Output behåller ni den angivna JS Code som tar bort kodblock och tolkar JSON.
- I Draft Blog Article säkerställer ni att systemprompten innehåller
{{ $json.show_notes }}och returnerar JSON. - Inloggning krävs: Anslut era openAiApi-uppgifter i Draft Blog Article.
- I Parse Blog Draft behåller ni den angivna koden för att slå ihop metadata med
blog_draft_markdownochepisode_tags_string. - I Create Episode Record ställer ni in Operation på
create, väljer er Airtable-Base och Table, och mappar fält till uttryck som{{ $json.episode_title }},{{ $json.blog_draft_markdown }}och{{ $json.suggested_publish_date }}. - Inloggning krävs: Anslut era airtableTokenApi-uppgifter i Create Episode Record.
⚠️ Vanlig fallgrop: Säkerställ att er Airtable-tabell innehåller fälten som visas i mappningen (t.ex. episode_title, blog_draft_markdown, suggested_publish_date), annars misslyckas skapandet av posten.
Steg 5: Generera och lagra socialt innehåll + miniatyr
Sociala tillgångar och en YouTube-miniatyr genereras, tolkas och sparas tillbaka till Airtable.
- I Generate Social Posts behåller ni prompten som återanvänder
{{ $json.fields.blog_draft_markdown }}till JSON-utdata. - Inloggning krävs: Anslut era openAiApi-uppgifter i Generate Social Posts.
- I Parse Social Output behåller ni den angivna koden för att tolka JSON, slå ihop data och formatera
twitter_thread_string. - I Update Social Fields ställer ni in Operation på
updateoch mappar fält som{{ $json.record_id_data }},{{ $json.linkedin_post }}och{{ $json.twitter_thread_string }}. - Inloggning krävs: Anslut era airtableTokenApi-uppgifter i Update Social Fields.
- I Create Thumbnail Image ställer ni in Model på
dall-e-2och behåller prompten som använder{{ $json.fields.episode_title }}. - Inloggning krävs: Anslut era openAiApi-uppgifter i Create Thumbnail Image.
- I Store Thumbnail Link ställer ni in Operation på
updateoch mappar record_Id till{{ $('Update Social Fields').item.json.fields.record_Id }}och youtube_thumbnail_url till{{ $json.url }}. - Inloggning krävs: Anslut era airtableTokenApi-uppgifter i Store Thumbnail Link.
Steg 6: Publicera till Buzzsprout och logga detaljer
Arbetsflödet sätter ihop payloaden, laddar upp avsnittet till Buzzsprout och lagrar returnerade detaljer i Airtable.
- I Assemble Buzzsprout Payload mappar ni episode_title till
{{ $json.fields.episode_title }}och final_description till{{ $json.fields.episode_description + "\n\nThumbnail: " + $json.fields.youtube_thumbnail_url }}. - I Publish Episode Upload ställer ni in URL på
https://www.buzzsprout.com/api/{your_podcast_id}/episodes.jsonoch Method påPOST. - Ställ in Body Parameters så att de inkluderar title
{{ $('Assemble Buzzsprout Payload').item.json.episode_title }}, description{{ $('Assemble Buzzsprout Payload').item.json.final_description }}och file som binär formulärdata med Input Data Field Namedata. - Ställ in Authorization-headern till
Token token=[CONFIGURE_YOUR_TOKEN]. - I Record Buzzsprout Details ställer ni in Operation på
updateoch mappar fält inklusive{{ $json.guid }},{{ $json.audio_url }},{{ $json.published_at }}och{{ $json.id }}medrecord_Idfrån{{ $('Store Thumbnail Link').item.json.fields.record_Id }}. - Inloggning krävs: Anslut era airtableTokenApi-uppgifter i Record Buzzsprout Details.
Steg 7: Konfigurera Slack-notis
När avsnittet har publicerats skickas ett Slack-meddelande som notifierar marknadsteamet.
- I Compose Slack Notice bekräftar ni att fälten är satta med uttryck som
{{ $json.fields.episode_title }}och{{ $json.fields.youtube_thumbnail_url }}. - I Send Marketing Alert väljer ni Channel och behåller meddelandemallen som använder
{{ $json["Episode Title"] }},{{ $json["Buzzsprout episode Id"] }},{{ $json["Published at"] }}och{{ $json["Youtube thumbnail url"] }}. - Inloggning krävs: Anslut era slackApi-uppgifter i Send Marketing Alert.
Steg 8: Testa och aktivera ert arbetsflöde
Validera end-to-end-körning innan ni slår på automatiseringen.
- Ladda upp en exempel-ljudfil i mappen som övervakas av Audio Upload Trigger.
- Kör arbetsflödet manuellt och bekräfta att data flödar från Fetch Source Audio till Publish Episode Upload utan fel.
- Verifiera att Airtable-poster skapas/uppdateras och att Slack-notisen dyker upp i vald kanal.
- När allt fungerar växlar ni arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Airtable-inloggningar kan löpa ut eller så kan din token sakna åtkomst till rätt base. Om något slutar fungera, kontrollera först n8n:s Airtable-credential och bekräfta behörigheterna för basen.
- Om du använder Wait-noder eller extern rendering varierar processing-tiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Buzzsprout-uppladdningar misslyckas när det binära ljudfältet inte är mappat korrekt i HTTP-requesten. Om du ser fel i stil med ”missing audio”, verifiera att filfältet verkligen är binärt och kommer från Google Drive-nedladdningssteget.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du redigera outputs för alltid.
Vanliga frågor
Cirka en timme om din Airtable-tabell och dina konton är klara.
Nej. Du kopplar främst konton och klistrar in några ID:n och API-tokens. Den enda ”tekniska” delen är att matcha Airtable-fältnamn exakt.
Ja. n8n har ett gratis alternativ för self-hosting och en gratis testperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in OpenAI API-användning för transkribering och innehållsgenerering.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och klarar n8n bra. Self-hosting ger obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, men då vill du justera Buzzsprout-uppladdningsrequesten så att den sätter värdet episode published_at baserat på ditt önskade schema. Många team mappar det föreslagna publiceringsdatumet från AI-metadata till Buzzsprout-payloaden och sparar sedan det slutliga published_at som Buzzsprout returnerar tillbaka i Airtable. Du kan också justera OpenAI-prompten så att den föreslår datum som matchar din release-kadens (till exempel ”nästa tisdag morgon”).
Oftast beror det på en ogiltig API-token eller fel podcast-ID, så att HTTP-requesten avvisas. En annan vanlig orsak är att ljudfilen inte skickas som binär i uppladdningssteget, vilket gör att Buzzsprout svarar som om det inte finns ”någon fil”. Om du nyligen ändrade din Drive-mapp, bekräfta att workflowet fortfarande hämtar samma fil som uppladdningsnoden förväntar sig.
Väldigt många.
För en ”ljud-till-publicerad-podd”-pipeline är n8n oftast ett bättre val eftersom du kan köra AI-generering i flera steg, parsing och villkorslogik utan att slåss med task-begränsningar. Self-hosting är också viktigt, särskilt om du publicerar ofta eller hanterar flera poddar. Zapier eller Make kan fungera för enkla flöden av typen ”Drive-uppladdning → Slack-meddelande”, men de blir dyra och otympliga när du lägger till transkribering, långformstext och databasuppdateringar. Om du är osäker, tänk på felmoderna: du vill ha retries, loggning och en plats att spara outputs (Airtable) även när publicering misslyckas. Prata med en automationsexpert så får du en rak rekommendation baserat på volym och budget.
När det här väl rullar blir publicering tråkigt på bästa sätt. Workflowet tar hand om det repetitiva arbetet så att du kan lägga tiden på bättre gäster, bättre stories och bättre distribution.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.