← All guides

How to Build an Automatic Podcast Transcriber

A step-by-step guide to setting up an agent that monitors your podcasts, transcribes new episodes, and saves the transcripts to Google Drive so you can chat with them in Claude.

How to Build an Automatic Podcast Transcriber

What You’ll Need

  • n8n (workflow automation tool) — free self-hosted or €20/month cloud at n8n.io
  • AssemblyAI account — pay-per-use transcription, roughly $0.10–0.15 per episode
  • Google Drive — where your transcripts will be saved

Total setup time: about 30 minutes.

Step 1: Get Your Accounts Ready

n8n:Sign up at n8n.io for the cloud version, or self-host on a $6/month DigitalOcean droplet if you’re comfortable with servers. The cloud version is the fastest way to get started.

AssemblyAI: Sign up at assemblyai.com and grab your API key from the dashboard. They give you free credits to start.

Google Drive: Create a folder called “Podcast Transcripts” (or whatever you want). This is where your transcripts will land.

Step 2: Find Your Podcast’s RSS Feed

Every podcast has an RSS feed URL. This is how n8n will know when a new episode comes out.

The easiest way to find it: go to listennotes.com, search for the podcast, and look for the RSS link on the podcast’s page. Copy that URL.

Alternatively, search “[podcast name] RSS feed” and you’ll usually find it.

Step 3: Build the Workflow in n8n

Create a new workflow with the following nodes connected in order:

1. Schedule Trigger

Set it to run every hour. This checks for new episodes regularly without hammering the feed.

2. RSS Feed Read

Paste in the RSS feed URL from Step 2. This pulls the latest episodes from the feed.

3. Filter for New Episodes (Code node)

Use n8n’s static data to track which episodes you’ve already processed. Compare the episode GUID against your stored list. If it’s new, continue. If not, stop. This prevents duplicate transcriptions.

Example logic:

const staticData = $getWorkflowStaticData('global');
const lastProcessedGuid = staticData.lastProcessedGuid || '';
const currentGuid = $input.first().json.guid;

if (currentGuid === lastProcessedGuid) return []; // Already processed

staticData.lastProcessedGuid = currentGuid; // Save for next run
return $input.all();

4. Submit to AssemblyAI (HTTP Request node)

Send a POST request to https://api.assemblyai.com/v2/transcript with:

  • Header: Authorization: YOUR_API_KEY
  • Body: { "audio_url": "...", "speaker_labels": true }

The audio URL comes from the RSS feed’s enclosure field.

5. Wait + Poll for Completion

AssemblyAI processes audio asynchronously. Add a Wait node (3 minutes), then poll https://api.assemblyai.com/v2/transcript/{id} until status is “completed.”

6. Format as Markdown (Code node)

Take the completed transcript and format it as readable markdown with speaker labels:

Speaker A: [text]
Speaker B: [text]

Add the episode title, podcast name, and date at the top of the file.

7. Save to Google Drive

Connect your Google Drive account in n8n and use the Google Drive node to save the formatted markdown file to your Podcast Transcripts folder.

Name the file something like: Episode Title (Podcast Name).md

Step 4: Activate and Test

Turn on the workflow. To test immediately, you can trigger it manually. Check your Google Drive folder. You should see the transcript appear within a few minutes of the episode being processed.

Step 5: Add More Podcasts

Duplicate the workflow for each podcast you want to monitor, swapping out the RSS feed URL. Or, if you want to get more advanced, maintain a list of RSS feeds and loop through them all in one workflow.

How to Use the Transcripts

When you’re listening to an episode and something sparks an idea:

  1. Open your Google Drive Podcast Transcripts folder
  2. Download the transcript for the episode you’re listening to
  3. Start a new Claude conversation and attach the transcript
  4. Ask your question with the full episode as context

Claude now has the complete conversation from the episode and can discuss any part of it with you in depth.

Tips

  • Speaker labels matter. Turning on speaker_labels: true in AssemblyAI makes transcripts much more readable and helps Claude understand who said what.
  • AssemblyAI’s universal-2 model is the best balance of quality and cost for podcast transcription. Their newer models are even better if you want to spend a bit more.
  • Don’t over-engineer it. Start with one podcast. Get it working. Then add more.

Thinking about integrating AI into your business?

Get in touch and we’ll show you what’s possible.