Back to Skills

granola

verified

Query and sync Granola meetings to Obsidian vault. Use when user mentions Granola, meeting transcripts, or wants to sync meeting notes. Reads from local cache - no API needed.

View on GitHub

Marketplace

personal-os-skills

ArtemXTech/personal-os-skills

Plugin

tasknotes-skill

Repository

ArtemXTech/personal-os-skills
40stars

skills/granola/SKILL.md

Last Verified

January 23, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/ArtemXTech/personal-os-skills/blob/main/skills/granola/SKILL.md -a claude-code --skill granola

Installation paths:

Claude
.claude/skills/granola/
Powered by add-skill CLI

Instructions

# Granola Skill

Query and sync Granola AI meeting notes to Obsidian vault.

## How It Works

Granola stores everything locally at `~/Library/Application Support/Granola/cache-v3.json`:
- Documents (meetings with title, notes, people)
- Transcripts (real-time, with timestamps and source)
- Updates in real-time as you record

No API calls needed - reads directly from local cache.

## Quick Start

```bash
# List all meetings
python3 .claude/skills/granola/scripts/granola.py list

# Get specific meeting with transcript
python3 .claude/skills/granola/scripts/granola.py get <id>

# Sync new meetings to vault
python3 .claude/skills/granola/scripts/granola.py sync

# Sync specific meeting
python3 .claude/skills/granola/scripts/granola.py sync --id <id>
```

## Commands

### list

List all Granola meetings with sync status.

```bash
python3 .claude/skills/granola/scripts/granola.py list
python3 .claude/skills/granola/scripts/granola.py list --limit 5
```

Output:
```
[✓] 2026-01-09  Team Sync - Weekly
    ID: abc123...
    Transcript: 450 segments, ~86 min

[ ] 2026-01-10  Team Standup
    ID: def456...
    Transcript: 120 segments, ~15 min
```

- `[✓]` = already synced to vault
- `[ ]` = not synced yet

### get

View full meeting details and transcript.

```bash
python3 .claude/skills/granola/scripts/granola.py get <id>
python3 .claude/skills/granola/scripts/granola.py get <id> --no-transcript
```

### sync

Sync meetings to `Meetings/` as structured Markdown.

```bash
# Sync new meetings only
python3 .claude/skills/granola/scripts/granola.py sync

# Sync specific meeting
python3 .claude/skills/granola/scripts/granola.py sync --id <id>

# Re-sync all (overwrites existing)
python3 .claude/skills/granola/scripts/granola.py sync --all
```

## Output Format

Synced meetings are saved to `Meetings/` with this structure:

```markdown
---
type: granola-meeting
date: 2026-01-09
time: "19:30"
duration_min: 86
granola_id: abc123...
people:
  - "[[Sarah Chen]]"
topics: []
status: raw

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3330 chars