install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/granola" ~/.claude/skills/sundial-org-awesome-openclaw-skills-granola && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/granola" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-granola && rm -rf "$T"
manifest:
skills/granola/SKILL.mdsource content
granola
Access Granola meeting transcripts, summaries, and notes.
Setup
Granola stores meetings in the cloud. To access them locally:
- Install dependencies:
pip install requests
- Run initial sync:
python ~/path/to/clawdbot/skills/granola/scripts/sync.py ~/granola-meetings
- Set up automatic sync via clawdbot cron:
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:
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:
grep -l "client name" ~/granola-meetings/*/metadata.json | while read f; do jq -r '.title' "$f" done
Search transcript content:
grep -ri "keyword" ~/granola-meetings/*/transcript.md
Meetings on a specific date:
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