跳转至

Granola Import (research, not implemented)

目标:将较旧的 Granola 会议导入 Hex 的会议格式,以便 hex mcp 能在搜索 Hex 录音的同时搜索这些会议。本调研基于 2026-10-15 的 Granola 公开文档;未登录、未调用、未解密任何内容。

官方途径

Granola desktop
├── CSV export                    // Settings > Profile > Generate CSV
│   ├── Emailed link, valid 24 h, opened while signed in; 1 export / 24 h
│   ├── Title, summary, transcript, basic details; full history, including
│   │   notes older than 30 days on Basic (free)
│   ├── Only notes you own that have a summary; no deleted notes
│   └── On by default for Basic and Business; Enterprise admins may disable
├── Personal API                  // https://public-api.granola.ai/v1
│   ├── Bearer grn_ key from Settings > Connectors > API keys
│   ├── Business plan members (Enterprise: admin-gated scopes)
│   ├── GET /v1/notes (created_after, cursor), GET /v1/notes/{not_…}
│   └── GET /v1/notes/{id}/transcript: items with speaker.source
│       microphone|speaker, attribution, optional name, start_time/end_time
└── Granola MCP                   // https://mcp.granola.ai/mcp, OAuth
    ├── Basic: personal notes from the last 30 days; transcript tool paid only
    └── Business: full history, get_meeting_transcript

来源:导出历史笔记、Granola API、获取转录、Granola MCP。Granola 还记录了转录自动删除;在假定旧转录仍存在之前,请先检查该设置。

Pro 上的本地缓存(cache-v6.json.enc、granola.db)已加密。不要对其进行逆向工程;这样做的第三方脚本是非官方的。

映射到 Hex

Granola 的 macOS 转录来源直接映射:microphone -> You(MeetingSource::Microphone),speaker -> Them(System)。绝对 start_time/end_time 转换为相对于第一个条目的偏移量。一条笔记变成一个文件夹 meetings/granola-<not_id>/,其中包含 manifest.json(状态 complete,created_at_ms 取自会议开始时间,app: "Granola import",标题)、transcript.ndjson 和 transcript.md,使该文件夹在读取时呈现为已发布状态。Granola 摘要不是 Hex 笔记;请将它们放在单独的字段或 Markdown 文件中,而不是冒充 Apple Intelligence notes。

建议

  1. Kit 运行一次 CSV 导出(在其套餐上免费,完整历史,无需 API 密钥)。
  2. 一次性导入器(hex meeting import-granola <csv>,先进行调试)以原子方式写入文件夹,跳过已存在的 id,并且绝不覆盖。CSV 转录可能缺少时间戳或说话人来源;在设计解析器之前,先检查一行真实数据;如果确实缺少,则回退到偏移量全为零的单个 Them 流。
  3. 仅当 CSV 缺少说话人来源或时间且 Kit 使用 Business 套餐时,才使用 Personal API;该 API 需要存储的 grn_ 密钥,因此请先询问 Kit。

待解决问题:Kit 的 Granola 套餐、CSV 转录列是否保留 microphone/speaker 说话人归属和时间信息,以及自动删除是否清除了较旧的转录。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 hex19/hex