关于 granola
granola 是通过 MCP 服务访问 Joel 的 Granola 会议笔记的命令行技能,支持查找会议、获取详情和逐字稿以及搜索,并以附有后续操作建议的 JSON 输出结果。
主要功能
- 01按日期范围列出会议
- 02获取会议详情和参会者
- 03获取完整会议逐字稿
- 04搜索会议笔记
- 05返回包含后续操作的 JSON
适用场景
- 01查找指定时间范围内的会议
- 02查看会议摘要和参会者
- 03获取或搜索会议逐字稿
MCP 相关
granola 命令行通过 mcporter 连接 Granola MCP 服务,而非直接调用 API。它封装会议搜索、列表、详情和逐字稿获取工具。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ joelhooks/ joelclaw --skill granola安装后在 Claude Code 中输入/granola确认已加载。
详细介绍
Granola 会议智能
通过 granola CLI 访问 Joel 的 Granola 会议记录,该 CLI 通过 mcporter 封装 Granola MCP 服务。
设置
- 二进制文件:
~/.local/bin/granola - 源代码:
~/Code/joelhooks/granola-cli - 配置:
~/.config/granola-cli/mcporter.json - 传输方式:通过 mcporter 使用 MCP(不是直接调用 API,也不是 npm 包)
- 身份验证:自动使用 Granola 的本地凭据
CLI 命令
列出会议
granola meetings [--range this_week|last_week|last_30_days|custom] [--start YYYY-MM-DD] [--end YYYY-MM-DD]
获取会议详情(摘要、参与者)
granola meeting <meeting-id>
获取完整转录文本
granola meeting <meeting-id> --transcript
搜索会议
granola search "<query>"
检查身份验证/连接状态
granola --help
如果 MCP 传输正常工作,将返回 "connected": true。
输出格式
所有命令都会返回以 Agent 为先的 JSON,并包含 HATEOAS next_actions:
{
"ok": true,
"command": "granola meetings",
"result": { ... },
"next_actions": [
{ "command": "granola meeting <id>", "description": "Get details" }
]
}
重要说明
- 时间戳为 UTC。 Granola 返回的所有日期均为 UTC。2 月 26 日显示为“5:01 PM”的会议,实际时间是 PST 上午 9:01。向 Joel 展示时间或写入 Vault 文件时,务必进行时区转换。
- 确认实际访问能力: 使用 Executor 保存的 Granola 连接和当前集成契约。历史沙盒中的 EPERM 错误并不代表普遍的能力限制。先从摘要开始;原始证据需要提供所需的限定范围下钻凭据。
已知限制
- 速率限制:
get_meeting_transcript端点有严格的速率限制。不要批量拉取转录文本;请间隔一段时间再拉取。 - 并发:获取转录文本时,并发数保持为 1。原先的并发数为 3,导致 API 不堪重负。
- 本地无需运行 Granola 应用:MCP 服务会通过已存储的凭据处理身份验证,无需运行 Granola 桌面应用。
MCP 工具(底层)
granola CLI 封装了以下 MCP 工具:
query_granola_meetings— 带引用的自然语言搜索list_meetings— 按时间范围列出会议get_meetings— 按 ID 数组获取详情get_meeting_transcript— 按 ID 获取逐字转录文本
工作流集成
检测到新会议时,触发一个 Inngest 事件:
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— 每小时运行的 cron(7 * * * *),用于轮询新会议granola-backfill— 批量回填所有会议
相关内容
- 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
评论
支持 Markdown