关于 WireCat Zoom
WireCat Zoom(zm)是面向 AI Agent 的 Zoom 会议资料命令行工具,可在本机保存会议、转录文本和摘要,并提供带原文引用的检索结果。它支持通过 Zoom 官方 API 获取资料,也可导入 WebVTT 并归档云录制。
主要功能
- 01同步会议、参与者和转录文本
- 02本机存储与离线搜索
- 03带段落引用的会议证据
- 04导入 WebVTT 和归档录制
- 05命令行、Agent 技能与 MCP 服务
适用场景
- 01会前查找与参会者的历史讨论
- 02会后检索承诺及其原文出处
- 03归档云录制、转录文本和聊天
- 04将本地会议资料提供给 Agent
MCP 相关
提供本机 MCP 服务,将 zm 命令按个人资料权限开放给 MCP 客户端;也支持单个服务提供多个资料。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
zoom-cli
为你的 AI Agent 提供 Zoom 会议和转录文本。 通话前了解背景,通话后记住承诺。
zm 会将你的 Zoom 会议、转录文本和 AI 摘要保存在本地数据库中,并提供给 Claude Code、Codex、Gemini CLI 或任何 MCP 客户端。询问上次和某人聊了什么,或昨天的通话中承诺了什么,即可获得答案,并附上对应原文的精确引用。
示例 —— 虚构人物,仅供演示:
你: 我三点要和 Bob Sample 通话。我们上次达成了什么共识?我还欠他什么?
zm personal remote-meetings list --json # your upcoming meetings
zm personal meetings people "Bob Sample" --json # him among past participants
zm personal search meetings "quote" --since-time 2026-09-01 --json
zm personal meetings passage meeting:1/42/57/118 --format markdown # the line and its context
Agent: 你们上次是在 10 月 2 日的“定价评审”中交谈。你承诺周五前给 Bob 一份修订后的报价 (
meeting:1/42/57/118),他则询问年度套餐是否包含入门指导 (meeting:1/42/57/131)。在我搜索的已存会议中,没有找到之后的更新;缺失的历史记录可能会影响结论。
快速开始
你需要 Node 22.16+(22.x)或 24+、系统密钥环,以及已配置的用户自主管理 Zoom 应用。可以复用你已创建的应用,或团队提供给你使用的应用;否则请创建自己的应用。请使用其 Public Client ID,而不是常规的 Client ID 或密钥。安装指南介绍了应用设置、浏览器授权和回调完成流程。
npm install -g @wirecat/zoom-cli
zm config set zoom.client_id <public-client-id>
zm personal session start # "personal" is the profile; approve in your browser
zm personal meetings sync --lookback-days 7
zm personal meetings list
请先检查 Zoom 的转录生成和保留设置:API 会读取可用的托管会议文本,而获得权限并不会自动生成转录文本。对于你参加过的会议,请向主持人索取 VTT 文件,或在获准的情况下自行下载,然后运行 zm personal meetings import <folder>。完整指南:
安装。
更多信息:安装 · 你的 Zoom 应用 · wirecat.dev 上的 Zoom
你可以做什么
为通话做准备。 “我明天要见 Bob Sample。我们上次聊了什么?”
meetings scheduled 会查找可能的系列;meetings prepare <series-id> 会检查所选系列的下一次会议,并收集带引文的上下文。meetings people、search meetings(词语搜索,还会匹配英语、西班牙语和俄语词形)和 meetings context person:<id> 会找出与相同人员参加的过往会议。仅凭库存中的日期提示,无法证明下一次通话的安排。参与者发现支持 --limit、--scan-limit、--max-read-bytes 和 --cursor;即使扫描页面为空,也要继续读取 item.page.next_cursor。它会返回观测到的 identity_id 候选项,绝不会推断人物关联。已存储的会议列表支持元数据查询,例如:
zm personal meetings list 'started_at:[2026-09-01 TO 2026-10-01]' --json。
找到通话关联的项目。 “我保存的哪些项目可能与这次会议有关?”
meetings projects scan <ref> 会将一页范围受限的本地会议证据与现有项目名称、键和别名进行比较。它会返回带引文的建议和待审核的歧义,不会保存项目关联。Agent 也可以根据 Memo 现有的词汇检查建议标签。
会后跟进。 “我在今天的通话中答应了什么?” Agent 会读取 meetings transcript 和 meetings summary,通过 meetings evidence 引用相关段落,并用 meetings task-proposal --type promise 预览一项关联到该段落的跟进任务。
保存完整历史记录。 “备份从一月以来的所有录音。”
recordings download --since-time 2026-01-01 --until-time 2026-10-10 --output-dir ./zoom-archive --jsonl 会下载视频、音频、转录文本和聊天记录,并生成 SHA-256 清单;recordings schedule 会每天运行一次。
更多内容:本地存档 · 搜索与证据 · wirecat.dev 上的 Zoom
专为 AI Agent 打造
- 命令行 + 技能。
zm skill install会为 Claude Code、Codex 和 Gemini CLI 安装打包的指南。每条命令都支持--json或--jsonl,而zm commands --json会描述所有命令。 - MCP。
zm personal mcp serve会在个人资料权限允许的范围内,将 zm 的命令提供给 Claude Desktop、Cursor 和其他 MCP 客户端;zm mcp serve --profiles all则通过一个服务提供所有个人资料。 连接客户端。
你的 Agent。你的会议。你的规则。
更多内容:MCP 和技能 · 连接你的 AI Agent
为什么选择 zm
- 跨会议上下文。 搜索共享存储中可用的托管会议和导入的转录文本。归档的转录文本可以单独读取,也可以先导入,再与其他内容一起搜索。
- 本地优先。 会议存储在你设备上的 SQLite 数据库中。无需登录,即可离线读取和搜索归档的转录文本。
- 每个答案都有来源。
meeting:1/42/57/118之类的引用会指向某个转录版本中的一个段落;更正后的转录文本也会保留历史记录。 - 为 Agent 打造。 提供 JSON 输出、带明确完整性说明的范围受限读取、技能和 MCP 服务。
- 默认安全。 使用你自己的 Zoom 应用,令牌只保存在密钥环中,每个个人资料单独设置权限,且在终端中进行的所有 Zoom 更改都会先征求确认。通过 MCP 操作时没有终端,因此
ask会在不提问的情况下运行;使用deny或readonly可阻止更改。
更多内容:安全 · wirecat.dev 上的 Zoom
目前能做什么,以及尚不能做什么
zm 目前处于 0.x 版本;命令仍可能发生变化。现在,它可以通过 Zoom 官方 API 读取账号可用的托管会议、参会者、转录文本和 AI 摘要,导入已下载的 WebVTT 文件,归档云录制,使用已安装的语音模型转录本地音频,将会议关联到活动和人员,以及创建、更改或取消简单会议。
- 它不会自动发现承诺。 你的 Agent 会从转录文本中找出承诺;
task-proposal只会预览任务,不会创建任何内容。 - 人员需要手动关联。
zm绝不会根据发言者姓名猜测人员;人员上下文仅涵盖已关联到某个人的参会者,例如通过meetings link关联的参会者。 - 除已准备好的 WAV 文件外,本地转录需要
ffmpeg,还需要使用zm models download下载的模型;发言者仍会显示为未知。 - 参加过的会议需要手动从 Zoom 门户下载,然后运行
zm personal meetings import。 - 由公司管理的 Zoom 账号可能需要管理员批准你的应用。
- 每日归档任务仅能安装在 Linux 上。 其他平台可以预览这些任务。
- 目前仅支持 Zoom。 Google Meet 和 Microsoft Teams 已列入路线图。
更多信息:计划内容 · wirecat.dev 上的 Zoom
更多信息:与其他工具对比 · wirecat.dev 上的对比
按任务分类的命令
| 任务 | 命令 |
|---|---|
| 设置并登录 | config show、config set <key> <value>、config unset <key>、session start [--browser <program>]、session status [--check]、doctor |
| 导入会议 | meetings sync [--since-time <time>] [--lookback-days <days>]、meetings import <folder>、watch [api|files] [folder] --jsonl |
| 阅读已存储的会议 | meetings list、meetings show <meeting>、meetings transcript <meeting>、meetings summary <meeting>、meetings export <meeting> --format markdown|vtt、events list |
| 搜索 | search meetings <query>、meetings people <query>、search all <query> |
| 证据和人员 | meetings passage <reference>、meetings evidence <reference>、meetings context <person>、meetings link <reference>、meetings update <reference>、meetings task-proposal <reference> --type <type> |
| 一次执行多项读取 | batch <file> 根据 JSON 文件执行范围受限的 search meetings 和 meetings passage 请求 |
| 按含义搜索 | search meetings <query> --model <model>、meetings embeddings --model <model> |
| 本地转录 | meetings transcribe <meeting> <file> --model <model> |
| 云端录制 | recordings list、recordings show <meeting>、recordings download <meeting> --output-dir <dir>、recordings download --since-time <date> --until-time <date> --output-dir <dir> --jsonl、recordings schedule create|list|show|run|disable |
| 本地存档 | recordings archive show|check|locks|recover <directory>、recordings archive transcript|import <directory>、search recordings <directory> <query> |
| Zoom 会议 | remote-meetings list|show|invitation、remote-meetings create|update|cancel |
| Zoom 联系人 | contacts list [name:… email:… type:company|external]、contacts show <member id|email> |
| zm 执行的操作 | runs list [query]、runs show <run-id> [--problems]、runs path <run-id>;--record 也会保留成功的运行记录 |
| Zoom 自带的搜索 | zoom search:实时搜索 zm 未存档的聊天、文档和会议 |
| Agent | mcp serve、skill show、skill install [--for claude|agents|all]、commands --json、complete -- <words...> |
Zoom 会议变更、链接、转录、日程安排、显式的 meetings embeddings 生成和锁恢复默认会先预览,并使用 --yes 执行一次;--dry-run 会保留预览。词语搜索会自动更新索引。使用 --model 搜索时,会先生成缺失的向量,再进行排序;如果显式选择远程嵌入端点,这些转录片段和查询会发送到该端点。
更多内容:用法 · 所有命令和选项 · wirecat.dev 上的 Zoom
你的 Zoom 应用和登录
zm 通过 Zoom 官方 API 读取你的会议,使用的是已配置的、由用户管理的 Zoom 应用,并采用 Public Client OAuth。可以重复使用你的用户已有的应用,也可以创建一个。启用 Public Client OAuth,复制其 Public Client ID,配置重定向并手动添加所需的范围。可选的入门清单既不提供范围,也不提供 Public Client OAuth。Zoom 可能会显示 Client Secret,但 zm 不会使用它。录制档案和管理功能需要额外的范围。请参阅应用设置指南;无需下载凭据文件。
zm personal session start 会打开 Zoom 授权页面。Zoom 会重定向到静态页面
https://wirecat.dev/zoom-callback,该页面会将结果传递给你机器上的侦听器;如果无法传递,请粘贴页面显示的 code=…&state=… 参数。登录时会检查 state 和 PKCE verifier,并且只会将令牌存储在系统密钥环中。如果没有终端(例如在 Agent 的 shell 中),登录会将 URL 打印到 stderr,供 Agent 转发,并等待回调;--no-input 和 CI 环境会拒绝此操作。zm personal session status 会读取缓存状态,但不会刷新;--check 会请求 Zoom。
更多信息:你的 Zoom 应用 · 登录和会话 · wirecat.dev 上的 Zoom
配置文件和本地存储
第一个词是配置文件:zm personal meetings list。一个配置文件对应一个 Zoom 登录及其在存储中的会议;zm work session start 会创建第二个配置文件。ZM_PROFILE 用于在 shell 会话中指定配置文件,ZM_PROFILE_LOCK 则将进程固定到一个配置文件。系统不会替你选择配置文件:如果命令需要使用帐户,但未指定配置文件,就会停止并列出这台计算机上的配置文件。名称只能包含 1–64 个字母、数字、点、下划线或连字符。如果还没有配置文件,登录会创建一个;在没有配置文件的计算机上首次导入时也会创建一个。如果存在其他配置文件,却指定了未知配置文件进行导入或拉取,操作会被拒绝,因此拼写错误不会存储任何内容。
会议存储在共享的 WireCat 数据库 wirecat.db 中,与其他 WireCat 工具的数据放在一起。MESSAGING_STORE 用于指定其他路径。打开存储时会保留旧版 messages.db 文件及其旁置文件;请分别管理它们的保留策略。元数据、帮助、配置和登录操作都不会打开数据库。
更多信息:配置文件 · 会议的存储位置 · wirecat.dev 上的 Zoom
拉取、导入和监视
zm personal meetings sync --lookback-days 7 # hosted meetings, revisiting late transcripts
zm personal meetings import ./downloaded-transcripts # .vtt or zoom-searcher .txt files
zm personal watch api --lookback-days 7 --jsonl # keep pulling in the foreground
仅使用游标不会重新查找稍后才出现的转录;请使用 --lookback-days 或更早的 --since-time。某个会议实例拉取失败时,游标会保持不变,供下次拉取使用。导入的文件会采用导出工具的 YYYY-MM-DD_HHMM_topic-slug.vtt 文件名,或使用带有 zoom-searcher 标头的 .txt 文件;除非 files.timezone 指定了其他时区,否则系统会按这台计算机的时区读取文件时间,导入结果也会说明所用时区。.txt 文件中的发言人只会成为该会议的参与者;发言人姓名不会成为跨会议的身份标识。
更多信息:本地档案 · wirecat.dev 上的 Zoom
归档云录制
zm personal recordings download --since-time 2026-01-01 --until-time 2026-10-10 --output-dir ./zoom-archive --jsonl
zm personal recordings archive check ./zoom-archive --offline --json
zm personal search recordings ./zoom-archive "example plan" --offline --json
同步最多涵盖十年,按月请求并串行下载,同时流式写入磁盘。每个录制实例都会生成一份清单,包含文件大小和 SHA-256 校验和,绝不包含签名 URL 或令牌。绝不会覆盖已有文件;重复运行时会跳过已验证的文件。使用配置文件时,中断的下载可安全续传。recordings archive transcript 和 search recordings 无需数据库即可离线读取已验证的 WebVTT;recordings archive import 则会将它们追加到已存储的会议中。recordings schedule create --yes 会安装每日运行的 systemd 用户计时器(仅限 Linux)。
可下载的内容取决于 Zoom 权限、保留期限和套餐。你仅参加过的会议,其录制内容不一定能通过 API 获取。
更多内容:归档云录制 · 每日备份 · wirecat.dev 上的 Zoom
搜索与证据
zm personal search meetings "example plan" --limit 20 --json # word search with continuation
zm personal meetings evidence meeting:3/15/20/0 --cues 100 --json # the exact passage
zm personal meetings context person:7 --meetings 10 --json # meetings linked to a person
search meetings 会先为新会议建立索引,按前缀或已存储的英语、西班牙语和俄语词形匹配所有词,并通过不透明的 --cursor 分页。引用格式为
meeting:<account>/<meeting>[/<transcript>[/<cue-position>]],始终限定在所选账户内,并且即使内容更正后,仍指向同一修订版本。范围受限的读取会报告其覆盖范围和限制;归档是否完整可能仍然未知。search all --only meetings,notes 会添加全库范围的笔记搜索。search meetings --model 可使用你指定的模型进行语义搜索;不会为你下载任何内容。
更多内容:搜索与证据 · 主题搜索 · wirecat.dev 上的 Zoom
本地转录
没有 Zoom 转录文本?zm personal meetings transcribe 1 ./call.m4a --model <model> --yes 会识别录制内容——Zoom 的 MP4 或 M4A 文件(需安装 ffmpeg),或可直接使用的 16 或 48 kHz PCM16 WAV 文件——使用通过
zm models download <model> 下载的本地语音模型,并将其作为单独的转录文本追加。预览会检查文件,但不会加载模型。时间戳覆盖最长 30 秒的片段,发言者信息保持未知。
更多内容:转录本地音频 · wirecat.dev 上的 Zoom
MCP 与 Agent 设置
zm skill install 会将打包的指南写入 ~/.claude/skills/zoom-cli/(Claude Code)和
~/.agents/skills/zoom-cli/(Codex、Gemini CLI);--for 用于选择其中一个。MCP 客户端会使用对应配置文件启动服务:
{ "mcpServers": { "zoom": { "command": "zm", "args": ["personal", "mcp", "serve"] } } }
该服务会将 zm 的命令作为 WireCat CLI 都会提供的三个工具公开——zm_tools_search、zm_read、
zm_write——并像命令行一样执行每次调用。配置文件的权限
决定它提供哪些功能:{"remote-meetings": "readonly"} 可阻止 Agent 更改 Zoom 会议。桌面应用
可能需要 command -v zm(Linux/macOS)或 where.exe zm(Windows)返回的完整路径,并在条目的 env 中设置相同的 ZM_CONFIG_DIR
或 MESSAGING_STORE。
更多内容:MCP 与技能 · wirecat.dev 上的 MCP 与技能 · 连接你的 AI Agent
管理 Zoom 会议
zm personal remote-meetings create --title "Example planning" --start-time 2026-10-20T10:00:00Z --duration-minutes 30 --dry-run --json
zm personal remote-meetings cancel 123456789 --dry-run --json
创建、更新和取消操作都会先显示预览,直到你添加 --yes;这些操作绝不会自动重试。
如果结果不确定,程序会以代码 14 退出:重复操作前请先检查 Zoom。远程 ID 是 Zoom 的数字 ID;已存储的 meetings 命令使用本地 ID。
更多内容:管理 Zoom 会议 · wirecat.dev 上的 Zoom
输出、限制与截止时间
--json 会打印一个答案封装;--jsonl 会打印带类型的条目记录,并以最终结束记录收尾;管道输出默认采用 JSON,错误
会写入 stderr。--json=id,title 仅保留这些字段,--offline 会拒绝联网;除非另行指定
--max-output-bytes,否则输出上限为 4 MiB。默认截止时间为:读取 30 秒、登录 5 分钟,以及下载、同步和验证 1 小时;--timeout 5m
可修改这些时间。监视和 MCP 服务会持续运行,直到停止。所有格式中的时间均为 UTC;显示时间的文本输出会以
times in UTC 结尾。
更多信息:用法 · wirecat.dev 上的 Zoom
配置
| 设置 | 含义 |
|---|---|
zoom.client_id | 你的 Zoom 应用的 Public Client ID |
source | meetings sync 和 watch 使用的 api 或 files |
files.folder, files.timezone | 文字稿文件夹及其文件名所用的时区 |
ZM_CONFIG_DIR | 另一个配置目录(也会更改 keyring 条目) |
ZM_STATE_DIR, ZM_CACHE_DIR | 另一个状态目录(记录运行信息)或缓存目录 |
ZM_READ_ONLY | 1 仅允许读取和同步;其他更改会以退出码 5 结束(安全) |
WIRECAT_STATE_DIR | 另一个 WireCat 文件夹;默认数据库为 ~/.local/share/WireCat/wirecat.db |
MESSAGING_STORE | 另一个共享数据库路径 |
OPENAI_API_KEY | 仅用于你选择的 OpenAI 嵌入端点 |
更多信息:配置 · wirecat.dev 上的 Zoom
安全模型
- 配置了启用 PKCE 的 Zoom 公共客户端应用;不会使用客户端密钥。
- 令牌仅存储在系统 keyring 中,不会存入配置文件;缺少 keyring 时会报错。
- 网络访问:Zoom API,以及仅在你指定嵌入端点时访问该端点。
--offline会拒绝这两种访问。 - 清单和已保存的作业不会包含已签名 URL、令牌或凭据;诊断信息会省略提供方错误原文。
- MCP 服务针对一个固定配置提供读取和写入功能,并受其权限限制;
ask写入操作不会在终端中提问。 ZM_READ_ONLY=1会拒绝对 Zoom、登录状态、设置及你添加的所有内容(导入、链接、文字稿、导出、作业)进行更改,并以退出码 5 结束;此操作发生在任何网络调用之前。读取操作,以及将 Zoom 内容复制到存储库或归档中的同步操作仍会运行。将此设置提供给只能读取的 Agent。
更多信息:安全 · wirecat.dev 上的安全说明
故障排除
- **Zoom 显示“Invalid redirect”:**导入清单时没有设置重定向 URL 或 Public Client OAuth;请手动填写。
- **没有文字稿:**在应用指南中检查生成、保留和权限设置。
启用某项设置不会恢复已删除的文本;已参加的会议可能需要运行
zm personal meetings import。 - **缺少作用域错误:**在应用中添加提示的作用域,然后再次运行
zm personal session start。 - **浏览器未启动:**运行
zm personal session start --browser firefox,或粘贴回调参数。 - **崩溃后遗留锁:**运行
zm personal recordings archive locks,然后使用--yes执行recover。
更多信息:故障排除 · wirecat.dev 上的 Zoom
WireCat 的一部分
zm 是 WireCat 的一部分。WireCat 是面向 AI
Agent 的开源、本地优先上下文层。会议内容会与 Telegram、MAX 和 memo 数据存储在同一个本地存储库中;运行
zm personal search all "<query>" --only meetings,notes,即可将会议内容与 memo 笔记一起搜索。
从 Zoom 开始。需要时再添加更多上下文。你的上下文,任意 Agent 均可使用。
更多信息:wirecat.dev · 连接你的 AI Agent
技术文档
| 页面 | 内容 |
|---|---|
| 概览 | zm 是什么,以及一分钟快速上手 |
| 安装 | 要求、首次运行、文件存放位置、自动补全 |
| 你的 Zoom 应用 | 创建应用、权限范围、公司账户 |
| 登录、会话和配置文件 | OAuth 登录、密钥环、本地配置文件 |
| 用法 | 每个命令组、输出、截止时间 |
| 本地归档 | 拉取、导入、监视、录制、备份、转录 |
| 搜索与证据 | 词语搜索、证据、人员、链接、备忘录 |
| 主题搜索 | 使用你选择的模型按含义搜索 |
| MCP 和技能 | 技能、MCP 服务、可选工具 |
| 管理 Zoom 会议 | 即将举行的会议、创建、更新、取消 |
| 命令 | 每条命令、选项和退出代码(生成) |
| 配置 | 设置和环境变量 |
| 故障排除 | 按症状查找 |
| 安全 | 哪些内容会写入磁盘并发送到网络 |
| 架构 · 测试 · 发布 | 面向贡献者 |
wirecat.dev 上的 Zoom 指南包含设置、搜索和归档说明。
开发
Node 22.16 或更高的 22.x 版本,或 Node 24 或更高版本:
pnpm install
pnpm lint && pnpm typecheck && pnpm test:coverage && pnpm docs:check
pnpm build && pnpm smoke:bun
测试夹具使用虚构的人员和会议。测试使用注入的密钥环、脚本化的 HTTP 响应、临时配置文件夹和内存会议存储。pnpm generate:check 会检查生成的命令参考;pnpm test:matrix 会测量命令和选项的覆盖率。
Licence
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。