Free Meeting Transcription and Summarisation on a Mac

Table of Contents

A note before you read on

This pipeline should only be used with the full knowledge and consent of everyone on the call. Recording a conversation without consent is illegal in many jurisdictions and is a serious breach of trust regardless of legality. I do not use this for client meetings or any context where confidentiality is expected. Use it responsibly.

The Problem

I watch a lot of online content — YouTube talks, webinars, recorded presentations — and occasionally join general online sessions where I want to capture what was covered rather than scribble notes throughout. The value is rarely in the experience itself; it’s in being able to refer back to what was said.

For a long time I was taking notes manually, or half-paying attention while trying to type, or catching up from memory afterwards. All of it felt like a waste of time that I should be spending on actual thinking.

I looked at paid tools. Most of them are cloud-based, they sit in the meeting as a bot, and they cost a subscription. I wanted something local, free, and simple.

So I put together a pipeline using free tools that runs entirely on the Mac. No cloud audio processing, no recording bots, no subscriptions.

How It Works

The pipeline has three steps:

  1. RecordBlackHole is a free virtual audio driver. You set up a Multi-Output Device in macOS that routes your audio to both your speakers and BlackHole simultaneously. capture.sh then records the BlackHole channel using ffmpeg. You hear everything normally; the script captures it silently in the background.

  2. Transcribe — When you stop the recording, the script runs whisper.cpp locally on the audio file. Whisper is OpenAI’s speech recognition model; whisper.cpp is a fast C++ port that runs well on Apple Silicon. No audio leaves the machine.

  3. Summarise — The transcript is passed to Claude Code with a structured prompt that produces a meeting summary with decisions, action items, discussion threads, and open questions. Claude generates a descriptive title from the content, which becomes part of the filename — so you end up with something like 2026-04-08_1042 Lex Fridman Sam Altman AI Future of Work - Transcript Summary.md rather than a generic datestamp.

The whole thing is a pair of shell scripts. No Python environment to manage, no Docker, nothing running in the background when you’re not using it.

What You Get

Output lands in ~/Documents/MeetingSummaries/ as a Markdown file named after the meeting content:

2026-04-08_1042 Lex Fridman Sam Altman AI Future of Work - Transcript Summary.md
2026-03-25_1530 AWS re:Invent Keynote Serverless and AI Announcements - Transcript Summary.md
2026-03-18_0900 Community Call Urban Farming Permaculture Discussion - Transcript Summary.md

Each file follows a consistent structure: summary, decisions made, action items, discussion threads, open questions. Readable in any text editor, easy to paste into Confluence, Notion, or email.

Requirements

  • macOS (Apple Silicon recommended — Intel works, Whisper will just be slower)
  • Homebrew — if you don’t have it, the README covers installation
  • Node.js (for Claude Code) — brew install node
  • A free Anthropic account — Claude Code uses it for the summary step only

The setup script handles the rest: BlackHole, ffmpeg, whisper.cpp, and the Whisper medium model (~1.5 GB download).

Download

meeting-capture-pipeline.zip — contains capture.sh, setup.sh, and README.md with full setup instructions.

Run ./setup.sh once to install dependencies, then ./capture.sh to start and stop recordings. Everything else is automatic.


Part of an ongoing effort to stop spending time on things that should just happen automatically.