
Granola Daily Sync
A scheduled Python script that pulls my Granola meeting notes and full transcripts into local markdown files every day

A scheduled Python script that pulls my Granola meeting notes and full transcripts into local markdown files every day
A scheduled Python script that quietly pulls all new Granola meeting notes and full transcripts into a folder of local markdown files. It runs daily via launchd and uses the OAuth tokens the Granola desktop app already stores on my Mac. I built it to test out Claude Cowork and because I wanted my meeting notes to live alongside the rest of my local markdown files, searchable and accessible by any LLM app instead of being locked behind Granola's UI or limited MCP.
~/Library/Application Support/Granola/supabase.json (the same file the Granola desktop app maintains) and refreshes expired WorkOS tokens by extracting the client_id from the JWTlaunchd; if the Mac is asleep at that hour, it fires on wake.granola_sync_state.json so each run only fetches new meetings. Never overwrites existing files; collisions append _2, _3, etc.Claude Cowork running Opus 4.6 did the building, pointed at my prior manual-sync folder (combining scripts originally written with ChatGPT, YAML format, sample outputs) with instructions to research approaches before writing code. Runtime is Python 3 standard library only plus macOS launchd, so /usr/bin/python3 works out of the box with nothing to pip install. ChatGPT Images 2.0 generated hero image.