silverstein/minutes · 上手攻略

  • 仓库:silverstein/minutes
  • 链接:https://github.com/silverstein/minutes
  • 分类:productivity · 本地优先 · MCP
  • 作者:spark
  • 更新:2026-09-03

是什么

minutes 是一个开源、本地优先的会议 / 通话 / 语音备忘录记录工具,对标 Granola 和 Otter.ai,但把数据所有权完全留在用户手里:转写和说话人分离全部在本地完成,会议产物以带 YAML frontmatter 的 Markdown 落到 ~/meetings/,可以被 Claude Code、Codex、Cursor、OpenCode、Pi、Gemini CLI、Claude Desktop 等任意 MCP 客户端直接查询,也可以用 Obsidian / Logseq / grep 检索。

仓库给自己的定位是 "Open-source, local-first Granola/Otter alternative that Claude Code, Codex, Cursor, and any MCP client can query",同时强调 "Nothing is uploaded",并把自家交付面列成五件套:桌面 app、CLI(58 命令)、MCP server(34 工具)、Claude Code plugin(23 skills)、TypeScript SDK。Mat Silverstein 在 README 末尾明确 "MIT — staying that way: no relicensing, no paid tier for anything in this repo",是少见敢在 README 写永久 MIT 承诺的开源项目。

解决什么问题

会议记录工具的两难:本地方案要么不能用 AI、要么难集成到 agent;云方案(Granola / Otter / Fireflies / Fathom)好用但你交出音频、字幕、行动项给第三方服务器,按月付费且导出受 API 限制。minutes 想两个都要:

  • 录音 + 转写 + 说话人标注都在本机:不需要 Zoom/Meet/Teams 装 bot、不入会捕获系统音频,转写在 Apple Silicon / 主流 Mac 上 on-device 跑。
  • 数据是 Markdown + YAML:Obsidian、Logseq、grep、rg、rg --type md 全能直接读;不存在"被某家云数据库锁定"的问题。
  • AI 接入面是文件 + MCP:Claude Code / Cursor / Codex 等 agent 可以直接 search_meetings({"query":"..."}),跨会议上下文聚合不再靠某家云 chat。
  • 导 Granola / Otter 老数据:从 Granola 退出后 minutes import granola 把归档数据迁到本地 Markdown,迁移路径文档化。
  • 合规留痕:每条会议记录都内嵌"consent provenance"——谁同意被录、什么时候同意的,写在文件 frontmatter 里。

适合"既要用 AI 整理会议、又不想把客户对话音频上云"的独立顾问、合规要求严格的团队、agent-first 工作流的开发者,以及任何被 Granola $18/月吓退的个人用户。

快速安装

环境:macOS(菜单栏 app 主战场,README 在 Apple Silicon 优先提及;CLI/MCP 跨平台可用 Rust 工具链),Rust(cargo)+ Node(npx)。

# 桌面 app(推荐入口)
brew install --cask silverstein/tap/minutes

# 或者只装 CLI
brew install silverstein/tap/minutes
# 或
cargo install minutes-cli

# MCP server(任何 MCP 客户端都能用)
npx minutes-mcp
# 配 Claude Code(最常见)
claude mcp add minutes -- npx -y minutes-mcp

⚠️ Homebrew 第一次拉个人 tap 时会报 "untrusted tap"——按 README 提示跑一次 brew trust silverstein/tap 即可,不要永久绕过来源校验。

跑通冒烟:

# 装五个示例会议(不开麦克风也能玩)
minutes demo --full

# 在 Claude Code 里问
# > "What did we decide about monthly billing, and did it stick?"
# 答案会跨两条间隔一个月的会议

# 直 MCP 调用同一份本地数据
# tool: search_meetings({"query":"monthly billing decision"})

# 清掉样例
minutes demo --clean

录真会议:minutes record 起 → minutes stop 停,文件落到 ~/meetings/

核心用法

CLI 八面玲珑(58 条命令)

minutes 不只是一个转写器——文档把 CLI 拆成五大类:

  • 本地录音 / 处理minutes recordminutes stopminutes process <file>minutes diarizeminutes transcribe
  • 搜索 / 检索minutes search "Q2 pricing"(policy-safe)、minutes listminutes recent
  • 导入 / 迁移minutes import granola(读 ~/.granola-archivist/output/)、minutes import otterminutes import fireflies
  • 自动化 / summarizationminutes summarizeminutes extract-actionsminutes decisions
  • 配置 / 维护minutes doctorminutes doctor --audiominutes doctor --modelsminutes update

每条命令都支持 --help,新手可以从 minutes doctor 起步——它会顺次检查麦克风权限、模型是否下载、~/meetings/ 写入权限、MCP 注册状态,把第一个失败点指出来。

MCP server(34 工具)

注册到任意 MCP 客户端后,agent 能用的最小工具集包括:

# 跨会议检索
search_meetings({"query": "monthly billing decision"})

# 按人查
list_meetings_by_person({"person": "Alex", "since": "2026-01-01"})

# 取 frontmatter
get_meeting({"id": "2026-03-17-q2-pricing-alex"})

# 追加行动项 / 决议
append_action_item({"meeting_id": "...", "assignee": "mat", "task": "...", "due": "Friday"})

# 受同意策略保护的导出
export_with_consent({"meeting_id": "...", "destination": "vault/notes/"})

完整 MCP 工具索引在 useminutes.app/docs/mcp/tools——README 把它当作 "agent index",可以直接喂给 LLM(useminutes.app/llms.txtllms-full.txt)。

Claude Code plugin(23 skills)

claude mcp add minutes -- npx -y minutes-mcp 之后,仓库还提供 23 个 skill:prep(会前预设)、capture(会中实时)、live-help(会中问答)、debrief(会后复盘)、memory(长期记忆)等。装上之后 Claude Code 自然会说"我看到你三月有这条会议,要我整理行动项吗?"——而不是每条会议都得手动喂。

从 Granola / Otter 迁过来

README 把"如何从 Granola 退出"单独写成 docs/switching-from-granola.md,提供两条路径:

  • minutes import granola~/.granola-archivist/output/(先要用 Granola Archiver 把本地缓存导出到这个目录)。⚠️ 新版 Granola 会加密本地缓存,老导出器可能读不到——README 明说这条 fallback 的局限性。
  • 如果上面那条路不通,改用 npm install -g granola-to-minutes(API 路径,读 Granola 自家 API + Claude 抽 action items / speaker attribution),直接写 ~/meetings/

Otter / Fireflies 同样有 minutes import otter / minutes import fireflies 入口。迁移时遇到的具体坑 README 都列了。

典型适用场景

  • agent-first 个人 / 小团队:Claude Code / Cursor / Codex 用户,希望 AI 助手能"跨会议记得客户说过什么",但不愿把音频上 Granola 云。
  • 合规 / 律师 / 咨询行业:客户对话、董事会纪要被录音,必须有 consent provenance 与本地存档;YAML frontmatter 把 action items / decisions / 同意字段都结构化,方便后续 e-discovery。
  • Granola 重度用户想省钱:自带 minutes import granola 迁移路径,月省 $18 且不丢失历史。
  • 远程会议 + 不想装 bot 的隐私偏好者:系统级音频捕获,没有第三方"会议机器人"出现在参会人列表。
  • iPhone 语音备忘录流水线:仓库提供 docs/phone-voice-memo-pipeline.md——把手机录音同步到 Mac 入 ~/meetings/,统一检索。
  • Obsidian / Logseq 重度用户:产物是 Markdown + YAML frontmatter,原生兼容两个最常见的本地笔记栈。

坑与注意

  1. macOS 是主战场:菜单栏 app、speaker diarization、on-device ASR 在 Apple Silicon 上体验最佳;CLI/MCP 跨平台,但桌面体验暂时不强调 Linux / Windows。
  2. 模型首次下载 + 磁盘:on-device 转写意味着要把 Whisper 或类似模型下到本地,磁盘占用数 GB 起;跑前 minutes doctor --models 看清楚。
  3. MCP 客户端版本兼容:34 个 MCP 工具名在不同客户端里显示不一样,README 给出对 Claude Code、Codex、Cursor、OpenCode、Pi、Claude Desktop、Gemini CLI、Mistral Vibe、Cowork、Dispatch 的分别配置;以 docs/integration/clients.md 为准。
  4. Granola 迁移会撞加密~/.granola-archivist/output/ 在新版 Granola 加密后可能没东西,不要死磕第一条路径,直接用 granola-to-minutes API 路径。
  5. consent provenance 不是法律背书:frontmatter 里写 "all attendees consented at 14:02" 是留痕工具,不是替用户做合规判断;正式场景仍需律师审。
  6. speaker labels 状态:对照表里 minutes 一格写 "Free, on-device",anarlog 一格写 "Not verified"——README 措辞是"公开文档抽样核对 2026 年 9 月",不是基准测试;跑前自己录一段双人对谈确认。
  7. 不在云端不等于不外发:YAML frontmatter 默认带 markdown,文本外发仍由用户自己决定——"local-first" 是基础设施承诺,不是合规终点。
  8. Stars 数字:抓取时搜索结果显示 1.5k stars,与选题榜的 1462 stars 量级一致;个别时段可能略滞后,以 GitHub 实时为准。
  9. commit 历史里仍有 npm/next/app 子目录:仓库从脚手架演化而来,不是大问题,但 agent 集成时建议按 docs/integration/clients.md 而非顶层 README 直接配。

与同类对比

仓库对照表(README 引用,"公开文档抽样核对 2026-09","修正请发 issue"):

能力 Granola Otter.ai Anarlog (ex-Hyprnote) minutes
本地转写 否(云) 否(云)
开源 MIT MIT
价格 Freemium Freemium 免费 免费
Agent 接入面 托管 MCP 托管集成 本地 app 本地文件 + 34 MCP 工具
跨会议智能 云 chat 云 chat policy-safe 搜索
同意留痕 每文件内嵌
听写模式
语音备忘录 iPhone 管线
人物画像 bounded profiles
数据所有权 他们服务器 他们服务器 本地 本地
数据格式 云 DB 云 DB 本地文件 Markdown + YAML
Agent 无关 部分
说话人标签 未核实 免费、本机

外加几个常被一并提起的:

  • Whisper 类纯转写(whisper.cpp、Insanely-fast-whisper):只做 ASR,不带会议结构、不带 agent 面、不带 frontmatter schema——minutes 是"包装 + 产品化"。
  • Fireflies.ai / Fathom:云 SaaS、强 CRM 集成,定位偏销售管线;和 minutes 的"本地优先 + agent 接入"基本相反。
  • Notion AI meeting notes:跟 Notion 工作区绑死,本地优先为零。

一句话区分:minutes 是 "Granola 的 UX + Anarlog 的本地 + MCP 的 agent 接入" 三合一,且承诺永久 MIT。

一句话推荐结论

如果你的核心痛点是"想用 Claude Code / Cursor 跨会议调出过去说过什么、又不愿为 Granola 月费 + 把音频交出去",minutes 是目前最完整、文档最工程化的本地优先替代——前提是你在 macOS(特别是 Apple Silicon)上、用 Claude Code 系 agent、愿意花几分钟装模型和 MCP。