granola-to-obsidian — Claude Code skill: meeting import
Moves Granola meetings into an Obsidian vault while following the vault’s note format. Use it to add notes for a chosen date range.
npx skills add harperreed/dotfiles --skill granola-to-obsidian -a claude-codeWhat granola-to-obsidian does
The skill fetches meetings from Granola for a requested period, retrieves their details, and creates notes in Obsidian. Before writing, it checks recent files in Meeting Notes/ to learn the current format and searches for matching titles so it can ask before replacing an existing note.
New files use a date-and-title filename in the form YYYY-MM-DD-Title.md. Granola’s summary supplies the section headings and bullet structure; the skill assigns a meeting type only when it can classify the content confidently. Private Granola notes stay out of the Obsidian file unless the user asks to include them. Each details request handles up to 10 meetings, so a larger date range may need multiple requests.
What it helps with
- import Granola meetings for a selected date range
- create Obsidian notes from meeting summaries
- retain the source headings and bullet hierarchy
- check for existing notes with matching meeting titles
Example prompts for the agent
- Import my Granola meetings from last week into Obsidian.
- Find Granola meetings from 2026-01-28 through 2026-01-30 and create notes for them.
- Add my meetings from the selected dates to the Obsidian vault.
How to install granola-to-obsidian
1Skills CLI (Vercel)
npx skills add harperreed/dotfiles --skill granola-to-obsidian -a claude-code2Manually: put the files in place
~/.claude/skills/granola-to-obsidian/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/granola-to-obsidian/
1Skills CLI (Vercel)
npx skills add harperreed/dotfiles --skill granola-to-obsidian -a codex2Manually: put the files in place
.agents/skills/granola-to-obsidian/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add harperreed/dotfiles --skill granola-to-obsidian -a cursor2Manually: put the files in place
.cursor/skills/granola-to-obsidian/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install harperreed/dotfiles granola-to-obsidian2Manually: put the files in place
.github/skills/granola-to-obsidian/SKILL.md1Skills CLI (Vercel)
npx skills add harperreed/dotfiles --skill granola-to-obsidian -a gemini-cli2Platform CLI
gemini skills install https://github.com/harperreed/dotfiles --path .claude/skills-archive/granola-to-obsidianManually: put the files in place
.devin/skills/granola-to-obsidian/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add harperreed/dotfiles --skill granola-to-obsidian -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about granola-to-obsidian
How do I install granola-to-obsidian in Claude Code?
Run npx skills add harperreed/dotfiles --skill granola-to-obsidian -a claude-code. The skill file is available at ~/.claude/skills/granola-to-obsidian/SKILL.md.
What does granola-to-obsidian do?
It retrieves meetings and their details from Granola, then creates Obsidian notes using the vault’s existing conventions. It checks for title matches before writing.
Does the skill copy private Granola notes?
No, not by default. It asks the user whether private notes should be included.