Standalone Python utility for exporting meeting notes and transcripts from Granola into Markdown files you can archive, process, or publish into another workflow.
This repo does one thing: it pulls your Granola documents through Granola's authenticated API session and saves each meeting as a Markdown file.
Each export includes:
- YAML frontmatter with the meeting date and Granola document ID
- Meeting notes from
notes_markdown - Granola's generated summary when available
- Speaker-labeled transcript blocks when available
The script also deduplicates exports using the Granola document ID, so rerunning it will not keep writing the same meeting into the same export folder.
The script reads the local auth file created by the Granola macOS app:
~/Library/Application Support/Granola/supabase.json
It then:
- Fetches the document list from Granola
- Filters documents by lookback window,
--all, or--doc-id - Fetches transcript content for each selected document
- Writes one Markdown file per meeting into your chosen output directory
This means the tool is simple to set up, but it assumes:
- Granola is installed on the same machine
- You are logged into Granola
- Granola's local auth file format still exposes an access token
git clone <your-public-repo-url>
cd granola_repo
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtConfirm that Granola is installed and signed in, then run:
python3 export_granola_transcripts.pyBy default, files are written to ./exports.
# Export the last 7 days
python3 export_granola_transcripts.py
# Export the last 30 days
python3 export_granola_transcripts.py --days 30
# Export everything
python3 export_granola_transcripts.py --all
# Export a single meeting by full UUID or 8-char prefix
python3 export_granola_transcripts.py --doc-id 12345678
# Write to a custom folder
python3 export_granola_transcripts.py --output-dir ./my-transcriptsexport_granola_transcripts.py: standalone exporter CLISETUP.md: additional setup and troubleshooting notesREDDIT_POST.md: launch copy draft for RedditLINKEDIN_POST.md: launch copy draft for LinkedIn
- This project is unofficial and depends on Granola's local authenticated session.
- API behavior or local config structure may change over time.
- The exporter is intentionally narrow in scope. It does not include downstream AI processing, CRM filing, or opinionated personal knowledge management logic.