Skip to content
Back to skills

Granola

ASecurity

Access Granola meeting transcripts and notes.

  • 665 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added February 8, 2026
developmentjavascriptpythonjavabashapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 3 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add openclaw/skills --skill granola --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Granola?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Granola
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/openclaw-granola/badge)](https://www.skillsdirectory.com/skills/openclaw-granola)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Files in this skill

  • SKILL.md2.3 KB
  • _meta.json285 B
  • scripts/sync.py7.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.