{"skill":{"slug":"percept-meetings","displayName":"Percept Meetings","summary":"Give your OpenClaw agent context from meetings captured by Zoom, Granola, or Omi wearables. Search transcripts, extract action items, identify speakers, and...","description":"---\nname: percept-meetings\ndescription: \"Give your OpenClaw agent context from meetings captured by Zoom, Granola, or Omi wearables. Search transcripts, extract action items, identify speakers, and act on meeting outcomes. Use when the user asks about meetings, what was discussed, action items, follow-ups, who said what, meeting summaries, or when the agent needs meeting context to complete a task. Also triggers for: what did we talk about, meeting notes, transcript, action items, follow up on, schedule based on our meeting, what did [person] say.\"\n---\n\n# Percept Meetings\n\nGive your OpenClaw agent ears. This skill connects meeting data from **Zoom**, **Granola**, and **Omi wearables** into your agent's context — searchable transcripts, speaker identification, entity extraction, and actionable follow-ups.\n\n## Quick Start\n\n### 1. Install Percept\n\n```bash\npip install getpercept   # or: git clone https://github.com/GetPercept/percept\ncd percept && pip install -e .\n```\n\n### 2. Connect a Source\n\n**Granola** (zero config — reads local cache):\n```bash\npercept granola-sync\n```\n\n**Zoom** (needs OAuth app):\n```bash\nexport ZOOM_ACCOUNT_ID=xxx ZOOM_CLIENT_ID=xxx ZOOM_CLIENT_SECRET=xxx\npercept zoom-sync --days 7\n```\n\n**Omi wearable** (real-time):\n```bash\npercept serve --port 8900\n# Configure Omi webhook → https://your-host:8900/webhook/transcript?token=YOUR_TOKEN\n```\n\n### 3. Use Meeting Context\n\nSearch what was discussed:\n```bash\npercept search \"budget approval\"\n```\n\nList recent transcripts:\n```bash\npercept transcripts --today\n```\n\nCheck who was in meetings:\n```bash\npercept speakers\n```\n\nGet action items from latest meeting:\n```bash\npercept actions\n```\n\n## How to Use in Agent Workflows\n\n### Finding Meeting Context\n\nWhen the user asks about meetings or you need context from a past conversation:\n\n```bash\n# Search by topic\npercept search \"VectorCare API migration\"\n\n# Search by person\npercept search \"what did Sarah say\"\n\n# Recent meetings\npercept transcripts --limit 5\n```\n\nOutput is JSON — parse it for structured data.\n\n### Acting on Meetings\n\nWhen meetings produce action items or follow-ups:\n\n1. Search for the relevant meeting: `percept search \"<topic>\"`\n2. Extract action items from the transcript\n3. Use other OpenClaw tools to execute (send emails, create tasks, schedule follow-ups)\n\nExample flow: User says \"follow up on what we discussed with the sales team\"\n→ `percept search \"sales team\"` → find action items → draft follow-up email\n\n### Importing New Data\n\n**Granola** auto-discovers meetings from `~/Library/Application Support/Granola/cache-v3.json`.\nRun `percept granola-sync` to pull latest. Supports `--since YYYY-MM-DD` for date filtering.\n\n**Zoom** requires a Server-to-Server OAuth app from marketplace.zoom.us:\n- Scopes needed: `recording:read`, `user:read`\n- Run `percept zoom-sync` to batch-import, or start webhook server for auto-import\n- See [references/zoom-setup.md](references/zoom-setup.md) for detailed setup\n\n**Omi** streams in real-time via webhook. See [references/omi-setup.md](references/omi-setup.md).\n\n## Configuration\n\nPercept stores data in `percept/data/percept.db` (SQLite with FTS5 full-text search).\n\nKey env vars:\n- `PERCEPT_DB_PATH` — custom database location\n- `PERCEPT_API_TOKEN` — bearer token for API endpoints\n- `ZOOM_ACCOUNT_ID`, `ZOOM_CLIENT_ID`, `ZOOM_CLIENT_SECRET` — Zoom OAuth\n- `GRANOLA_API_KEY` — Granola Enterprise API (optional; local cache works without it)\n\n## Pipeline Health\n\n```bash\npercept status\n```\n\nReturns: server status, live stream status, today's conversation count, database stats.\n","topics":["Meeting Notes","Schedule"],"tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":299,"installsAllTime":11,"installsCurrent":0,"stars":0,"versions":1},"createdAt":1772029215343,"updatedAt":1779077349142},"latestVersion":{"version":"1.0.0","createdAt":1772029215343,"changelog":"Initial release","license":null},"metadata":null,"owner":{"handle":"jarvis563","userId":"s17c02rxwhw8sdc0f5mfvyb945884kpq","displayName":"jarvis563","image":"https://avatars.githubusercontent.com/u/258515214?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779959375761}}