一键导入
granola-setup
Connect Granola to Dex via Granola's official API for automatic meeting sync and transcripts
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Connect Granola to Dex via Granola's official API for automatic meeting sync and transcripts
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Process synced Granola meetings to update person pages, extract tasks, and organize meeting notes
Capture solved problems as categorized documentation with YAML frontmatter for fast lookup
Personal career coach with 4 modes: weekly reports, monthly reflections, self-reviews, promotion assessments
Generate a DexDiff methodology document from your vault customisations: package how you use Dex so others can replicate it
Rigorous whole-system checkup — verifies every Dex feature honestly (working / off / broken / couldn't-check), self-heals what is provably safe, and guides the user only where Dex cannot fix itself. Replaces /health-check.
Interactive post-onboarding tour with adaptive pathways based on available data
| name | granola-setup |
| description | Connect Granola to Dex via Granola's official API for automatic meeting sync and transcripts |
| integration | {"id":"granola","name":"Granola","auth":"api_key","category":"meetings","sync_direction":"read","api":{"base_url":"https://public-api.granola.ai","key_env_var":"GRANOLA_API_KEY","key_format":"grn_...","requires_plan":"Granola Business or Enterprise"},"enhances":[{"skill":"process-meetings","capability":"Granola is the primary meeting source — notes and transcripts sync into 00-Inbox/Meetings/"},{"skill":"meeting-prep","capability":"Surfaces past Granola notes and summaries with each attendee"},{"skill":"week-review","capability":"Meeting counts and topics from Granola notes"}],"new_capabilities":[{"name":"Automatic Meeting Sync","trigger":"New Granola notes are pulled into 00-Inbox/Meetings/ for processing"},{"name":"Transcript Access","trigger":"During /process-meetings, fetch full speaker-labelled transcripts per note"}]} |
Connect your Granola account to Dex so your meetings sync automatically. Dex uses Granola's official API to read your notes, summaries, attendees, and transcripts — then files them into 00-Inbox/Meetings/ ready for /process-meetings.
This integration needs a Granola Business (or Enterprise) plan, because API keys can only be created on those plans. Granola Basic / free accounts can't create an API key, so this setup won't work on them.
Once connected, Dex can:
Read (via the official Granola API):
Skill Enhancements:
/process-meetings) uses Granola as the primary meeting source — notes sync into 00-Inbox/Meetings/, then get turned into structured meeting notes (decisions, actions, key points)/meeting-prep) surfaces your last Granola note and summary with each attendee/week-review) includes meeting counts and topics from GranolaNew Capabilities:
00-Inbox/Meetings/Dex reads your Granola data through Granola's official API using a key you create. The API key is stored locally in a .env file at your vault root — it is gitignored and never committed. Only YOUR Granola account is accessible (the key is scoped to your login). Nothing is sent anywhere except Granola's own API.
/granola-setup/integrate-mcp if Granola is mentionedThroughout this flow, Dex performs every file action for the user. Never ask the user to open, create, or hand-edit
.envor any other file. They only ever paste their key into the chat — Dex does the rest.
System/integrations/config.yaml for a granola section.GRANOLA_API_KEY is already configured:
process.env.GRANOLA_API_KEY..env file (at VAULT_ROOT) and parse a GRANOLA_API_KEY=... line from it.Set expectations conversationally:
Granola sync now uses Granola's official API.
That means Dex reads your meetings the supported way — your notes, summaries,
attendees, and transcripts — straight from Granola.
One thing to know up front: creating an API key requires a **Granola Business
(or Enterprise) plan**. The Basic / free plan can't create API keys, so if
you're on Basic this won't work yet.
Are you on a Granola Business or Enterprise plan? [Yes / Not sure / I'm on Basic]
/granola-setup again once they do. Stop here.Guide them, step by step, in plain language:
Let's create your Granola API key:
1. Open **Granola** and go to **Settings**.
2. Find the **API** section (the Granola API settings page).
3. Click **Create API key** (or "New API key").
4. Copy the key — it starts with `grn_`.
If there's no API section in Settings, your plan doesn't support API keys yet
(that's the Business-plan requirement). Otherwise, grab that `grn_...` key.
Paste your Granola API key here and I'll save it for you securely.
(It starts with grn_ — I'll store it locally and never commit it.)
Wait for the user to paste the key.
grn_.... If it clearly doesn't (e.g. they pasted something else), ask them to re-copy it from Granola's API settings.Store it (Dex does this — not the user):
.env file (VAULT_ROOT/.env). Create it if it doesn't exist.GRANOLA_API_KEY=<pasted key> in that file.
GRANOLA_API_KEY= line already exists, replace it; otherwise append it..env is gitignored (it is by convention — never commit it).Verify it with a real request:
Make a single test call against the official API:
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $GRANOLA_API_KEY" \
"https://public-api.granola.ai/v1/notes?page_size=1"
(Equivalently: GET https://public-api.granola.ai/v1/notes?page_size=1 with header Authorization: Bearer <key>.)
On success (HTTP 200):
Connected — I can see your Granola notes.
Continue to Step 6.
On 401 Unauthorized:
That key was rejected by Granola.
Two common reasons:
- the key was copied incompletely or has been revoked/expired, or
- the account isn't on a Granola Business plan (only Business/Enterprise
can create working API keys).
Want to paste it again, or create a fresh key in Granola → Settings → API?
Offer to retry (back to Step 4). Retry up to 2 times, then offer to come back later.
On HTTP 429 (rate limited): wait a short moment and retry the verification request once. The API has no documented limits, so stay gentle (one request at a time, single retry).
On other errors (network/5xx): report briefly and offer to retry.
Write to System/integrations/config.yaml — update (or add) the granola section. Preserve all other integration configs.
granola:
enabled: true
configured_at: YYYY-MM-DD
auth_type: api_key
api_base_url: https://public-api.granola.ai
key_env_var: GRANOLA_API_KEY # value lives in VAULT_ROOT/.env, never here
account: user@example.com # from the owner.email in the test response
features:
meeting_sync: true
transcripts: true
Never write the API key value itself into config.yaml or any committed file — only the env var name. The key lives solely in the gitignored .env.
Granola is connected!
Here's what just got enabled:
- **Automatic meeting sync** — your Granola notes flow into 00-Inbox/Meetings/,
ready to be turned into structured notes.
- **Transcripts** — full speaker-labelled transcripts are available per meeting.
- **Meeting Prep** (/meeting-prep) — surfaces your last Granola note and summary
with each attendee.
- **Week Review** (/week-review) — includes meeting counts and topics from Granola.
Next step: run **/process-meetings** to pull in and organise your recent meetings.
You can re-run /granola-setup anytime to rotate your key or disconnect.
These rules apply wherever Dex reads Granola data. The skill agent must follow them exactly so every Granola-aware workflow behaves consistently.
GRANOLA_API_KEY. Read process.env.GRANOLA_API_KEY first; if absent, load VAULT_ROOT/.env and parse GRANOLA_API_KEY=... from it.Granola not connected — run /granola-setup to add your Granola API key (requires a Granola Business plan).
supabase.json, supabase.json.enc, cache-v*.json(.enc), or use any spoofed User-Agent / X-Client-Version headers or granola-crypto. Use only the documented endpoints below with the Authorization: Bearer header.https://public-api.granola.aiAuthorization: Bearer <GRANOLA_API_KEY>GET /v1/notes
created_after, created_before, updated_after (ISO date/datetime), folder_id, cursor (string), page_size (int 1..30, default 10).{ "notes": [ { "id", "object", "title": string|null, "owner": {name,email}, "created_at", "updated_at" } ], "hasMore": boolean, "cursor": string|null }.cursor until hasMore is false.GET /v1/notes/{note_id}?include=transcript
web_url, calendar_event, attendees, folder_membership, summary_text, summary_markdown, and transcript (array of {speaker, text, start_time, end_time} or null).The key was rejected. Either:
Re-run /granola-setup to paste a new key.
The key works but Dex sees no notes. Check:
That means no GRANOLA_API_KEY is configured. Run /granola-setup to add one. (Dex never errors out when the key is missing — it just nudges you to set it up.)
Granola doesn't publish rate limits, so Dex fetches gently. If you hit a 429, Dex waits briefly and retries once. Persistent 429s are rare — wait a minute and try again.
If the user runs /granola-setup when already configured:
System/integrations/config.yaml.grn_... key; Dex updates VAULT_ROOT/.env.If the user wants to disconnect:
System/integrations/config.yaml:
granola:
enabled: false
GRANOLA_API_KEY=... line in VAULT_ROOT/.env for them./granola-setup anytime to reconnect."