Skip to content
cccskills
FreePublished on GitHub

granola

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.

The English summary is being prepared. Showing the original description.

ArtemXTech/personal-os-skills543 stars(GitHub 543 + cccskills 0)
Works withObsidian

Run score Not tested

See how to install

Files included (3)

  • SKILL.md3.6 KB
  • scripts/granola.py10.6 KB
  • templates/granola-meeting.md225 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

# 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.

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.

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.

# 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:

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

# Meeting Title

## Notes

(Your notes from Granola)

## Transcript

[19:30:45] 🎤 Hey, how's it going?
[19:30:48] 🎤 Great to meet you...

Transcript icons:

  • 🎤 = microphone (you)
  • 🔊 = system audio (others on call)

Workflow

  1. Record meeting in Granola (real-time transcription)
  2. Sync to vault: python3 .claude/skills/granola/scripts/granola.py sync
  3. Process meeting: Extract action items, update people notes
  4. Mark as processed: Change status: raw to status: processed

Querying with Bases

Use Granola.base to query synced meetings:

ViewFilter
RecentLast 7 days
Needs Processingstatus = raw
By PersonGrouped by people field

Data Structure

Local cache: ~/Library/Application Support/Granola/cache-v3.json

cache (JSON string) → state →
  ├── documents: {id: {title, notes_plain, notes_markdown, people, created_at}}
  └── transcripts: {id: [{text, source, start_timestamp, end_timestamp}]}

Transcript segment:

{
  "text": "Hey, how's it going?",
  "source": "microphone",
  "start_timestamp": "2026-01-09T19:30:45.123Z",
  "end_timestamp": "2026-01-09T19:30:48.456Z"
}

Tips

  • Real-time access: Cache updates as you record - can query mid-meeting
  • Free tier hack: Sync hourly to bypass 7-day history limit
  • No auth needed: Uses local files, not API

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Coordinate authorized work across persistent AI agents and existing tasks. Use when the user asks to route work, hand off a task, check agent status, or manage several ongoing responsibilities through one conversation.

The English summary is being prepared. Showing the original description.

ArtemXTech/personal-os-skills543Updated Oct 20, 2026

Turn expert podcasts into personalized protocols with cited experiments. Load 300 episodes from terminal, run an expert-informed interview, build experiments in your Obsidian morning routine. Use when user says "notebooklm", "load channel", "expert interview", "notebooklm ask", "health protocol", or wants to turn expert content into actionable experiments.

The English summary is being prepared. Showing the original description.

ArtemXTech/personal-os-skills543Updated Oct 20, 2026

Import NotebookLM notebooks into your Obsidian vault as linked knowledge graphs. Sources become wikilink-able files, Q&A answers get citations resolved to [[wikilinks]] with passage-level deep links. Use when user says "notebooklm import", "import notebook", "notebooklm sources", or wants to import NotebookLM data into vault files.

The English summary is being prepared. Showing the original description.

ArtemXTech/personal-os-skills543Updated Oct 20, 2026

recall

Free

Load context from vault memory. Temporal queries (yesterday, last week, session history) use native JSONL timeline. Topic queries use QMD BM25 search. "recall graph" generates interactive temporal graph of sessions and files. Every recall ends with "One Thing" - the single highest-leverage next action synthesized from results. Use when user says "recall", "what did we work on", "load context about", "remember when we", "prime context", "yesterday", "what was I doing", "last week", "session history", "recall graph", "session graph".

The English summary is being prepared. Showing the original description.

ArtemXTech/personal-os-skills543Updated Oct 20, 2026

Sync Claude Code sessions to Obsidian markdown. Export, resume, add notes, close sessions. USE WHEN user says "sync sessions", "export sessions", "resume session", "add session note", "close session", "log session".

The English summary is being prepared. Showing the original description.

ArtemXTech/personal-os-skills543Updated Oct 20, 2026

Manage tasks in Obsidian via TaskNotes plugin API. Use when user wants to create tasks, list tasks, query by status or project, update task status, delete tasks, or check what they need to do.

The English summary is being prepared. Showing the original description.

ArtemXTech/personal-os-skills543Updated Oct 20, 2026

See all skills by ArtemXTech

Report a problem with this skill