granola
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGranola Meeting Intelligence
Granola 会议智能
Access Joel's Granola meeting notes via the CLI, which wraps the Granola MCP server through .
granolamcporter通过 CLI访问Joel的Granola会议笔记,该CLI通过封装了Granola MCP服务器。
granolamcporterSetup
配置说明
- Binary:
~/.local/bin/granola - Source:
~/Code/joelhooks/granola-cli - Config:
~/.config/granola-cli/mcporter.json - Transport: MCP via mcporter (NOT direct API, NOT npm package)
- Auth: Uses Granola's local credentials automatically
- 二进制文件:
~/.local/bin/granola - 源码路径:
~/Code/joelhooks/granola-cli - 配置文件:
~/.config/granola-cli/mcporter.json - 传输方式: 通过mcporter使用MCP(非直接API,非npm包)
- 认证: 自动使用Granola的本地凭证
CLI Commands
CLI 命令
List meetings
列出会议
bash
granola meetings [--range this_week|last_week|last_30_days|custom] [--start YYYY-MM-DD] [--end YYYY-MM-DD]bash
granola meetings [--range this_week|last_week|last_30_days|custom] [--start YYYY-MM-DD] [--end YYYY-MM-DD]Get meeting details (summary, participants)
获取会议详情(摘要、参会人员)
bash
granola meeting <meeting-id>bash
granola meeting <meeting-id>Get full transcript
获取完整转录文本
bash
granola meeting <meeting-id> --transcriptbash
granola meeting <meeting-id> --transcriptSearch meetings
搜索会议
bash
granola search "<query>"bash
granola search "<query>"Check auth/connection
检查认证/连接
bash
granola --helpReturns if MCP transport is working.
"connected": truebash
granola --help如果MCP传输正常,会返回。
"connected": trueOutput Format
输出格式
All commands return agent-first JSON with HATEOAS :
next_actionsjson
{
"ok": true,
"command": "granola meetings",
"result": { ... },
"next_actions": [
{ "command": "granola meeting <id>", "description": "Get details" }
]
}所有命令返回以Agent为核心的JSON格式,包含HATEOAS风格的字段:
next_actionsjson
{
"ok": true,
"command": "granola meetings",
"result": { ... },
"next_actions": [
{ "command": "granola meeting <id>", "description": "Get details" }
]
}Important Notes
重要说明
- Timestamps are UTC. Granola returns all dates in UTC. A meeting showing "5:01 PM" on Feb 26 is actually 9:01 AM PST. Always convert when displaying to Joel or writing to Vault files.
- Codex cannot run Granola. The MCP transport (mcporter) requires a local socket that Codex sandboxes can't open (). Always pull transcripts from pi/gateway sessions, not codex tasks.
EPERM
- 时间戳为UTC时区:Granola返回的所有日期均为UTC时区。例如显示为2月26日下午5:01的会议,实际为太平洋标准时间上午9:01。在向Joel展示或写入Vault文件时,务必进行时区转换。
- Codex无法运行Granola:MCP传输(mcporter)需要本地套接字,而Codex沙箱无法打开该套接字(错误码)。请始终从pi/gateway会话中提取转录文本,而非通过Codex任务。
EPERM
Known Limitations
已知限制
- Rate limiting: endpoint rate-limits aggressively. Don't batch transcript pulls — space them out.
get_meeting_transcript - Concurrency: Keep concurrency at 1 for transcript fetches. Original concurrency of 3 overwhelmed the API.
- Granola app not required locally: The MCP server handles auth via stored creds, Granola desktop app does NOT need to be running.
- 速率限制:接口的速率限制非常严格。请勿批量拉取转录文本,需间隔执行。
get_meeting_transcript - 并发限制:拉取转录文本时请将并发数保持为1。原并发数3会导致API过载。
- 无需本地运行Granola应用:MCP服务器通过存储的凭证处理认证,无需运行Granola桌面应用。
MCP Tools (underlying)
底层MCP工具
The granola CLI wraps these MCP tools:
- — NL search with citations
query_granola_meetings - — by time range
list_meetings - — details by ID array
get_meetings - — verbatim transcript by ID
get_meeting_transcript
granola CLI封装了以下MCP工具:
- — 带引用的自然语言搜索
query_granola_meetings - — 按时间范围列出会议
list_meetings - — 通过ID数组获取会议详情
get_meetings - — 通过ID获取逐字转录文本
get_meeting_transcript
Pipeline Integration
流水线集成
When a new meeting is detected, fire an Inngest event:
bash
curl -X POST "http://localhost:8288/e/$EVENT_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "meeting/noted",
"data": {
"meeting_id": "<id>",
"title": "<title>",
"date": "<YYYY-MM-DD>",
"source": "granola",
"participants": ["Person A", "Person B"]
}
}'Inngest functions that process meetings:
- — event-triggered check for new meetings
check/granola-meetings - — hourly cron (
granola-check-cron) polling for new meetings7 * * * * - — bulk backfill all meetings
granola-backfill
当检测到新会议时,触发一个Inngest事件:
bash
curl -X POST "http://localhost:8288/e/$EVENT_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "meeting/noted",
"data": {
"meeting_id": "<id>",
"title": "<title>",
"date": "<YYYY-MM-DD>",
"source": "granola",
"participants": ["Person A", "Person B"]
}
}'处理会议的Inngest函数:
- — 事件触发的新会议检查
check/granola-meetings - — 每小时定时任务(
granola-check-cron)轮询新会议7 * * * * - — 批量补录所有会议
granola-backfill
Related
相关资源
- ADR-0055: Granola Meeting Intelligence Pipeline
- Source repo:
~/Code/joelhooks/granola-cli - Inngest functions:
packages/system-bus/src/inngest/functions/check-granola.ts - Meeting analysis:
packages/system-bus/src/inngest/functions/meeting-analyze.ts - Transcript indexing:
packages/system-bus/src/inngest/functions/meeting-transcript-index.ts
- ADR-0055: Granola 会议智能流水线
- 源码仓库:
~/Code/joelhooks/granola-cli - Inngest函数:
packages/system-bus/src/inngest/functions/check-granola.ts - 会议分析:
packages/system-bus/src/inngest/functions/meeting-analyze.ts - 转录文本索引:
packages/system-bus/src/inngest/functions/meeting-transcript-index.ts