with one click
Access Granola meeting transcripts and notes.
npx skills add https://github.com/sundial-org/awesome-openclaw-skills --skill granolaCopy and paste this command into Claude Code to install the skill
Access Granola meeting transcripts and notes.
npx skills add https://github.com/sundial-org/awesome-openclaw-skills --skill granolaCopy and paste this command into Claude Code to install the skill
Scan HTML and JSX for accessibility issues with AI-powered fix suggestions
Multi-channel ABM automation that turns LinkedIn URLs into coordinated outbound campaigns. Scrapes profiles, enriches with Apollo (email + phone), gets mailing addresses via Skip Trace, then orchestrates email sequences, LinkedIn touches, and handwritten letters via Scribeless. The secret weapon for standing out in crowded inboxes.
Headless browser automation CLI optimized for AI agents with accessibility tree snapshots and ref-based element selection
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.
| name | granola |
| description | Access Granola meeting transcripts and notes. |
| homepage | https://granola.ai |
| metadata | {"clawdbot":{"emoji":"🥣","requires":{"bins":["python3"]}}} |
Access Granola meeting transcripts, summaries, and notes.
Granola stores meetings in the cloud. To access them locally:
pip install requests
python ~/path/to/clawdbot/skills/granola/scripts/sync.py ~/granola-meetings
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).
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)
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