How to Build an AI Podcast Show-Notes Workflow with Whisper and Notion
Why Build It in Small, Public Steps
Shipping a workflow in small steps and showing it to the people it serves exposes wrong assumptions early, before you polish something nobody needs. For an AI-generated show-notes pipeline, the friction points to watch are transcript accuracy, formatting consistency, and how easily listeners can find past episodes. Tackle them one at a time.
Core Components of the Pipeline
| Component | Role | Typical Tool | Free / Low‑Cost Alternative |
|---|---|---|---|
| Audio capture | Record episode | Any recorder (phone, USB mic) | Smartphone voice memos |
| Speech‑to‑text | Generate raw transcript | OpenAI Whisper (local) | Whisper.cpp, Vosk |
| Speaker diarization (optional) | Label who said what | PyAnnote, WhisperX | Manual tagging in transcript |
| Clean‑up & summarization | Remove filler, create bullet points | GPT‑4 via API, Claude | Local LLMs (Llama 2 7B) via Ollama |
| Knowledge‑base entry | Store notes, links, timestamps | Notion database | Airtable, Coda |
| Automation | Move files between steps | Zapier, Make (Integromat) | n8n (self‑hosted) |
| Publishing | Export to blog or newsletter | Notion → Web‑share, RSS | Ghost, Substack |
The free alternatives are functional but may require more setup time or accept slightly lower accuracy. Choose based on your tolerance for maintenance versus upfront cost.
Step‑by‑Step Workflow
-
Record and Upload
- Save the episode as an MP3/WAV file in a dedicated folder (e.g.,
podcast/raw/). - Use a naming convention:
YYYY-MM-DD_episode-title.ext. Consistency makes later automation reliable.
- Save the episode as an MP3/WAV file in a dedicated folder (e.g.,
-
Transcribe with Whisper
- Run locally:
whisper audio.mp3 --model medium --language en. - Output:
audio.txt(plain text) andaudio.vtt(timed subtitles). - Tip: Keep the model on a GPU if possible; otherwise, the
tinymodel runs on CPU in ~2‑3x real‑time and is sufficient for clean speech.
- Run locally:
-
Optional Diarization
- If you need speaker labels, feed the VTT into WhisperX or PyAnnote.
- For most indie podcasts, a single‑speaker assumption works; you can manually add
[Host]or[Guest]tags later.
-
Clean‑up with LLM
- Prompt example:
You are a podcast editor. Convert the following transcript into concise show notes: - Remove filler words (um, uh, like). - Group related sentences into bullet points. - Add timestamps (MM:SS) for each major topic. - Include a 2‑sentence summary at the top. - Send the raw text to the LLM API (temperature 0.2 for deterministic output).
- Store the LLM response as
shownotes.md.
- Prompt example:
-
Import to Notion
- Create a Notion database with properties:
Episode Title,Date,Audio File(file),Transcript(text),Show Notes(text),Tags(multi‑select),Published?(checkbox). - Use Zapier/Make: trigger on new file in
podcast/processed/→ create Notion page → map fields. - Free alternative: n8n workflow watching a Google Drive folder and using the Notion API node.
- Create a Notion database with properties:
-
Link and Tag
- Add relevant tags (e.g.,
#AI,#Startup,#Tooling). - Insert links to mentioned tools, articles, or GitHub repos directly in the Notion page.
- Use Notion’s relation feature to connect episodes to a “Resources” database for cross‑episode discoverability.
- Add relevant tags (e.g.,
-
Publish / Share
- Enable public sharing on the Notion page or export as HTML via Notion’s export.
- If you maintain a blog, set up a simple RSS feed from the Notion database using a service like Super.so or Fruition.
What to Watch For
1. Bigger Whisper models give diminishing returns
Each step up in Whisper model size improves accuracy but costs more CPU time, and the gains shrink as you go up. Test small and medium on two or three of your own episodes and stop at the smallest model whose transcript you would not have to fix by hand.
2. Speaker labels may not be worth automating
Automatic diarization adds processing time and still mislabels speakers in crosstalk. For a show with one host and one guest, adding [Host]/[Guest] tags by hand is often faster and more reliable. Keep diarization optional for interview-heavy episodes.
3. Fix the prompt, not the output
If you keep editing the generated notes by hand, put that editing into the prompt instead: remove filler, add timestamps, write a summary, match your house style. A prompt you refine once saves you cleanup on every later episode.
4. Plan for Notion at scale
Large Notion databases get slower to load and to query through the API. Archive old episodes to a separate database, use filtered views instead of loading every row, and consider Airtable or Coda if the show grows large.
5. Make the automation idempotent
A re-uploaded file or a retried run can create duplicate pages. Add a "processed" flag, or check Notion for an existing page with the same title before creating one. This matters most when the pipeline runs on a schedule.
6. Ask readers what they want from the notes
Share a live notes page with your audience and ask what they want. Additions worth offering: a TL;DR block at the top (an LLM summary does this), links to timestamped audio, and a downloadable version (Notion can export to PDF).
Checklist for Replicating the Workflow
- Choose transcription model (Whisper
mediumrecommended). - Set up a folder hierarchy:
raw/,processed/,archive/. - Write LLM prompt for show‑notes generation; test on 2‑3 episodes.
- Create Notion database with needed properties.
- Build automation (Zapier/Make/n8n) to move file → transcript → notes → Notion.
- Add idempotency check (title lookup).
- Enable public sharing or export for distribution.
- Schedule a weekly review to prune old files and update prompts.
FAQ
- Do I need a GPU to run Whisper effectively?
- No. The `tiny` and `base` models run on CPU in real‑time or slightly slower; `medium` works on CPU but may take 2‑3× audio length. A GPU speeds it up but isn’t required for episodic podcasting.
- How much does the LLM API cost per episode?
- Very little: a 15-minute episode is a few thousand tokens in and a few hundred out, so even a large model costs cents per episode. Multiply your token counts by the current per-token rate on your provider's pricing page, since rates change often.
- Can I replace Notion with a free tool?
- Yes. Airtable’s free tier offers similar database and view capabilities, or you can use a self‑hosted solution like Baserow. Export/import steps will differ but the core logic stays the same.
- What if my podcast has multiple overlapping speakers?
- Consider using WhisperX for diarization, then manually correct any mislabels in the transcript before the LLM step. For low‑overlap conversations, manual tagging remains faster and more reliable.
- How do I avoid duplicate Notion pages when re‑processing an episode?
- Before creating a page, query the Notion database for an existing entry with the same episode title. If found, update the existing page instead of creating a new one. Most automation platforms provide a “find record” step for this.
More in Build in Public
- From Zero to Launch: Publicly Iterating an AI‑Driven Social Proof Widget for a Solo Founder’s Landing PageA step‑by‑step guide to building, testing, and releasing a real‑time social proof widget using open‑source AI models and public feedback loops.
- Technical Lessons from Integrating LLMs into Marketing Automation StacksPractical engineering guidelines for combining AI models with traditional CRMs and marketing platforms without breaking data schemas or inflating costs.
- Step‑by‑Step Guide to Building a Public Automation Project for a Small E‑Commerce BusinessA practical, no‑fluff walkthrough for solo founders to design, implement, and open‑source an automation pipeline for a small online store.
Questions & answers
Ask anything about this post — you'll get a reply here.
- No questions yet — be the first.
One concrete AI-automation tip a week
No hype. Unsubscribe anytime.