home / skills / openclaw / skills / granola

granola skill

/skills/scald/granola

This skill helps you access Granola meeting transcripts, summaries, and notes by syncing and organizing them for quick search.

npx playbooks add skill openclaw/skills --skill granola

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
2.3 KB
---
name: granola
description: Access Granola meeting transcripts and notes.
homepage: https://granola.ai
metadata: {"clawdbot":{"emoji":"🥣","requires":{"bins":["python3"]}}}
---

# granola

Access Granola meeting transcripts, summaries, and notes.

## Setup

Granola stores meetings in the cloud. To access them locally:

1. **Install dependencies:**
```bash
pip install requests
```

2. **Run initial sync:**
```bash
python ~/path/to/clawdbot/skills/granola/scripts/sync.py ~/granola-meetings
```

3. **Set up automatic sync via clawdbot cron:**
```javascript
clawdbot_cron({
  action: "add",
  job: {
    name: "Granola Sync",
    description: "Sync Granola meetings to local disk",
    schedule: { kind: "cron", expr: "0 */6 * * *", tz: "America/New_York" },
    sessionTarget: "isolated",
    wakeMode: "now",
    payload: {
      kind: "agentTurn",
      message: "Run the Granola sync: python {skillsDir}/granola/scripts/sync.py ~/granola-meetings",
      deliver: false
    }
  }
})
```

The sync script reads auth from `~/Library/Application Support/Granola/supabase.json` (created when you sign into Granola on macOS).

## Data Structure

After sync, each meeting is a folder:
```
~/granola-meetings/
  {meeting-id}/
    metadata.json   - title, date, attendees
    transcript.md   - formatted transcript  
    transcript.json - raw transcript data
    document.json   - full API response
    notes.md        - AI summary (if available)
```

## Quick Commands

**List recent meetings:**
```bash
for d in $(ls -t ~/granola-meetings | head -10); do
  jq -r '"\(.created_at[0:10]) | \(.title)"' ~/granola-meetings/$d/metadata.json 2>/dev/null
done
```

**Search by title:**
```bash
grep -l "client name" ~/granola-meetings/*/metadata.json | while read f; do
  jq -r '.title' "$f"
done
```

**Search transcript content:**
```bash
grep -ri "keyword" ~/granola-meetings/*/transcript.md
```

**Meetings on a specific date:**
```bash
for d in ~/granola-meetings/*/metadata.json; do
  if jq -e '.created_at | startswith("2026-01-03")' "$d" > /dev/null 2>&1; then
    jq -r '.title' "$d"
  fi
done
```

## Notes

- Sync requires the Granola desktop app to be signed in (for auth tokens)
- Tokens expire after ~6 hours; open Granola to refresh them
- macOS only (auth file path is macOS-specific)
- For multi-machine setups, sync on one machine and rsync the folder to others

Overview

This skill provides local access to Granola meeting transcripts, summaries, and notes by syncing cloud-stored meetings to a local folder. It lets you browse metadata, read formatted transcripts, and use standard shell tools to search or filter meetings. The sync is driven by a Python script and integrates with scheduled tasks for automatic updates.

How this skill works

The sync script reads Granola auth tokens created by the Granola macOS app and downloads meeting data into a per-meeting folder structure. Each meeting folder contains metadata.json, transcript.md, transcript.json, document.json, and optional notes.md (AI summary). Once synced, you can use jq, grep, and other CLI tools to list, search, and process meeting content locally.

When to use it

  • You need offline access to meeting transcripts and summaries.
  • You want to index or search meetings with standard command-line tools.
  • You need a local archive or backup of Granola meetings.
  • You want to automate periodic syncs from Granola to a shared storage.
  • You need to extract metadata for reporting or analytics.

Best practices

  • Install the required Python dependency (requests) before running the sync script.
  • Run an initial manual sync to populate the local store, then enable scheduled syncs via your cron/automation system.
  • Keep the Granola desktop app signed in to refresh short-lived tokens (tokens expire in ~6 hours).
  • For multi-machine access, sync on one host and replicate the folder via rsync or similar tools.
  • Treat the local archive as read-only for automated workflows; run updates via the sync script to avoid inconsistencies.

Example use cases

  • Quickly list the most recent meetings and their titles for status updates.
  • Search across all transcripts for client names, decisions, or keywords using grep and jq.
  • Generate weekly reports of attendees and meeting counts by parsing metadata.json files.
  • Feed transcript.md files into other tools (summarizers, ticket creators, knowledge bases).
  • Maintain a durable backup of all meetings by syncing to a central NAS or cloud file store.

FAQ

Does this work on Linux or Windows?

The current auth file path and token handling are macOS-specific, so native sync requires macOS with the Granola desktop app signed in. You can rsync the synced folder to other OSes afterward.

How often should I run the sync?

A 6-hour cron is a reasonable default because Granola tokens expire around six hours; adjust frequency based on team needs and token refresh behavior.