zoom-meeting-admin

SKILL效率
效率 未标注权限 许可证不明确 已核验
安装这个技能

# SKILL of Zoom Server-to-Server OAuth REST API 用 Server-to-Server OAuth 直接调 Zoom meeting REST API,不需要 VPS,不需要 MCP 协议,管理和安排ZOOM会议。 > [EN](README.md) | 中文 ## 配置步骤 1. 需要先手动登录 https://marketplace.zoom.us/ 2. 在 "Develop" 下拉菜单选 "build app", 创建一个 `Server-to-Server OAuth`类型的APP 3. 添加必要的OAuth Scope。 4. 获取相关凭证密码 5. 激活APP 6. 在AI agent中调用此 SKILL ## 凭证配置 > ⚠️ **`.env` 中的 `ZOOM_CLIENT_SECRET` 等同于账户管理员口令。** 持有 `ACCOUNT_ID + CLIENT_ID + CLIENT_SECRET` 三元组即可换取 1 小时有效的账户级访问令牌,**能读取该账户下所有会议元数据、云录像,并执行删除等破坏性操作**。 > > - 千万不要把 `.env` 提交到 git。确认你的 IDE、备份工具、文件同步服务(iCloud / Dropbox / OneDrive / 坚果云)没有自动上传该文件。 > - `chmod 600 .env`。脚本缓存的 token 文件 `~/.zoom-s2s-token.json` 由脚本自动 `chmod 600`。 > - **按需开通最小 scope**(见下表)。未用到的功能不要勾选对应权限;不要轻易开启 `meeting:write:delete`、`cloud_recording:read:*`、`user:read:list_users`。 > - 为本 Skill **单独创建一个** Server-to-Server App,不要复用其他业务 App 的凭据。 > - 一旦泄露:在 Zoom Marketplace 删除该 App → 重新创建并轮换四项值 → `rm -f ~/.zoom-s2s-token.json` 强制重新认证。 编辑 `.env` 文件,填入你的 Zoom Server-to-Server OAuth App 凭证: ```env ZOOM_ACCOUNT_ID=你的AccountID ZOOM_CLIENT_ID=你的ClientID ZOOM_CLIENT_SECRET=你的ClientSecret ZOOM_USER_ID=你的用户邮箱或user_id ``` ## 需要的 OAuth Scope 在 Zoom Marketplace 你的 Server-to-Server OAuth App 里开通: | Scope | 用途 | |-------|------| | `meeting:read:list_meetings` | 列出会议 | | `meeting:write:create` | 创建会议 | | `meeting:write:delete` | 删除会议 | | `cloud_recording:read:list_user_recordings` | 查看云录像 | | `user:read:list_users` | 列出用户 | | `user:read:user` | 获取用户信息 | ## 快速开始 ```bash cd ~/.agents/skills/zoom-s2s-oauth/scripts # 列出最近5个会议 python3 zoom-s2s.py list_meetings service@uperform.cn 5 upcoming # 创建会议 (start_time 格式: YYYY-MM-DDTHH:MM:SS) python3 zoom-s2s.py create_meeting "煎饼果子讨论会" "2026-05-05 10:00:00" 60 Asia/Shanghai # 获取云录像 python3 zoom-s2s.py recordings service@uperform.cn 10 ``` ## 目录结构 ``` zoom-s2s-oauth/ ├── SKILL.md # AI Agent 调用说明 ├── README.md # 本文件 ├── .env # 凭证配置 (不要提交到 git!) └── scripts/ └── zoom-s2s.py # 主脚本 (纯 Python3,无外部依赖) ``` ## 对比:MCP vs Server-to-Server REST | | MCP 方式 | Server-to-Server REST | |---|---|---| | 需要 VPS | ✅ 需要 (OAuth 回调) | ❌ 不需要 | | 协议 | MCP (JSON-RPC) | 标准 REST (Python 无外部依赖) | | Token | User-Managed OAuth | Server-to-Server OAuth | | 复杂度 | 高 (代理+OAuth) | 低 (直接调) | | 功能 | Zoom MCP 工具集 | 7 个白名单 CLI action(list/get/create/delete meeting、get/list user、list recordings) | 如果你只需要调用 Zoom 会议/录像等核心功能,Server-to-Server REST 方式更简单。

一句话选型结论

按资料字段整理

zoom-meeting-admin是效率类的 Agent Skill,安装方式:ClawHub 市场,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式ClawHub 市场 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

ClawHub 市场
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_46180358/zoom-meeting-admin
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_46180358仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式ClawHub 市场安装包 clawhub
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791723478
正文体量12.6 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 已做过站内核验,页面字段与仓库对得上。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
zoom-meeting-admin当前 未标注权限 ClawHub 市场 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

12.6 KB
模型实际读到的说明书原文,来自技能仓库

> ⚠️ 安全提示 — 凭证等同于账户管理员口令
>
> 本 Skill 通过 .env 中的 ZOOM_CLIENT_SECRET 等 Server-to-Server OAuth 凭证访问 Zoom 账户。
> ACCOUNT_ID + CLIENT_ID + CLIENT_SECRET 三元组可换取 1 小时有效的账户级访问令牌,能够读取该账户下所有会议元数据、云录像,并执行删除等破坏性操作。
>
> 使用前请先完整阅读 ## 凭证安全,遵守 .gitignore、chmod 600、最小 scope、专用 App、泄露应急等要求。
> 任何修改脚本、import 内部函数、构造任意 payload 调用 api_call 的尝试都构成越权,会被本文档明确禁止。

Zoom Server-to-Server OAuth REST API

权限与约束

本 Skill 通过 scripts/zoom-s2s.py 调用 Zoom Server-to-Server OAuth REST API,不实现"通用 REST 代理"。

  • 声明的工具:Bash(python3:*)(执行 scripts/zoom-s2s.py)、Bash(ls:*) / Bash(cat:*)(查看脚本输出与缓存)、Read(读取凭证文件与文档)。
  • 网络访问:向 https://zoom.us/oauth/token 与 https://api.zoom.us/v2/* 发起 HTTPS 请求,传输头包含 Authorization: Bearer <token>。
  • 文件写入:在 ~/.zoom-s2s-token.json 缓存访问令牌(已自动 chmod 600)。
  • 凭证读取:从仓库根目录的 .env 读取 ZOOM_ACCOUNT_ID / ZOOM_CLIENT_ID / ZOOM_CLIENT_SECRET / ZOOM_USER_ID。
  • 允许的 Action(白名单)——禁止构造任意 Zoom REST 请求或调用未列出的端点:
  • 会议:list_meetings / get_meeting / create_meeting / delete_meeting
  • 用户:get_user / list_users
  • 录像:recordings
  • 越权防护:脚本内部包含一个 api_call 函数供 CLI action 复用,但这是私有实现细节,不是对外可调用的接口。Agent 不得通过以下任何方式旁路调用白名单外的 Zoom 端点(如 DELETE /users/{id}、PATCH /accounts/{id} 等高风险端点):
  • 修改 scripts/zoom-s2s.py、新增 CLI action、暴露 api_call;
  • from zoom_s2s import api_call 或以其他方式直接调用脚本内部函数;
  • 在调用本 Skill 的同时另起进程用相同凭证调任意 Zoom REST API(如 curl 直接打 api.zoom.us);
  • 注入参数、拼接 URL、构造任意 JSON payload 绕过 CLI 校验逻辑。
    脚本遵循"最小暴露面"原则:CLI 只暴露 7 个白名单 action,任何其他调用路径都视为越权。
  • 强人类确认:create_meeting 与 delete_meeting 在执行前必须获得用户显式确认;delete_meeting 命令还需附加 --yes 参数。

凭证配置

在 .env 文件中配置(仅 chmod 600,不要提交到任何 Git 仓库):

ZOOM_ACCOUNT_ID=你的AccountID
ZOOM_CLIENT_ID=你的ClientID
ZOOM_CLIENT_SECRET=你的ClientSecret
ZOOM_USER_ID=你的用户邮箱或user_id

> ⚠️ 完整的安全规范见下一节 ## 凭证安全。

Token 获取方式:Server-to-Server OAuth,机器对机器,无需用户交互授权。

凭证安全

.env 中的 ZOOM_CLIENT_SECRET 是长期有效的账户级凭据,等同于账户管理员口令。必须遵守:

  • 加入 .gitignore:本仓库 .gitignore 已包含 .env;同步确保 IDE、备份工具、文件同步(iCloud / Dropbox / OneDrive / 坚果云)不会自动上传该文件。
  • 限制文件权限:chmod 600 .env;scripts/zoom-s2s.py 缓存的 ~/.zoom-s2s-token.json 同样敏感(已自动 chmod 600),不要复制到剪贴板、聊天窗口、终端截图、报错工单、AI 对话上下文或第三方日志服务。
  • 不要在共享环境复用:CI runner、公用跳板机、容器镜像、共享开发机中复用同一份凭据 ≈ 凭据公开。Account ID + Client ID + Client Secret 三元组可换得 1 小时有效的访问令牌。
  • 最小权限:按 ## 最小权限配置建议 表按需开启 Scope;不需要的 Action 不要勾选对应权限;delete_meeting 之外的写权限(meeting:write:update、user:write:*、account:write:*)默认不要开。
  • 独立 App:为此 Skill 单独创建一个 Zoom Server-to-Server App,不要复用其他业务 App 的凭据;一旦泄露,旋转该 App 的凭据即可,不影响其他业务。
  • 凭据泄露应急:在 Zoom Marketplace 删除该 App → 重新创建并轮换 ACCOUNT_ID / CLIENT_ID / CLIENT_SECRET / USER_ID 四项 → rm -f ~/.zoom-s2s-token.json 强制下次重新认证 → 复盘泄露路径。

核心脚本

scripts/zoom-s2s.py — 纯 Python,无外部依赖,兼容 Python 3.7+。

cd ~/.agents/skills/zoom-meeting-admin/scripts

# 获取帮助
python3 zoom-s2s.py help

# 列出即将到来的会议
python3 zoom-s2s.py list_meetings <user> <page_size> upcoming

# 获取单个会议详情
python3 zoom-s2s.py get_meeting <meeting_id>

# 创建会议 (start_time: YYYY-MM-DDTHH:MM:SS)
python3 zoom-s2s.py create_meeting "<主题>" "<start_time>" <时长分钟> [时区] [密码]
# 创建周期性会议(每周一,7次,每次120分钟;weekly_days="2" = Zoom 编码周一)
python3 zoom-s2s.py create_meeting "CSM公开课" "2026-05-23T08:00:00" 120 Asia/Shanghai "" 2 1 2 7
python3 zoom-s2s.py create_meeting "煎饼果子讨论会" "2026-05-05T10:00:00" 60 Asia/Shanghai

# 删除会议
python3 zoom-s2s.py delete_meeting <meeting_id>

# 获取云录像
python3 zoom-s2s.py recordings <user> <page_size>

# 获取用户信息
python3 zoom-s2s.py get_user [user]

# 列出账户下所有用户
python3 zoom-s2s.py list_users [page_size]

Token 缓存

脚本自动缓存 Token 到 ~/.zoom-s2s-token.json(有效期约 50 分钟),重复调用无需每次重新认证。

常用操作快速参考

操作 命令
列出最近5个会议 list_meetings <user> 5 upcoming
列出最近10个历史会议 list_meetings <user> 10 past
创建明天10点会议 create_meeting "主题" "YYYY-MM-DDT10:00:00" 60 Asia/Shanghai
创建周期性会议(每周一) create_meeting "主题" "YYYY-MM-DDT20:00:00" 120 America/New_York "" 2 1 2 7
创建月度会议(每月15号) create_meeting "主题" "YYYY-MM-15T10:00:00" 60 Asia/Shanghai "" 3 1 15 12
创建月度会议(第N个周二) create_meeting "主题" "..." 60 ... "" 3 1 3 6 "" "" 2
获取会议详情 get_meeting <id>
删除会议 delete_meeting <id> --yes
获取云录像 recordings <user> 10

最小权限配置建议

根据实际使用场景按需开通 scope,不需要的功能不要授权:

功能 所需 Scope 建议
列出会议 meeting:read:list_meetings ✅ 核心
查看会议详情 meeting:read:meeting ✅ 核心
创建会议 meeting:write:create 按需开启
删除会议 meeting:write:delete ⚠️ 谨慎开启
读取云录像 cloud_recording:read:list_user_recordings ⚠️ 谨慎开启
列出账户用户 user:read:list_users ⚠️ 谨慎开启

> 建议为此 Skill 单独创建一个 Zoom Server-to-Server App,不要复用已有 App 的凭证。

Agent 调用规范

  • 创建会议前:向用户确认主题、时间、时长,再执行。
  • 删除会议前:必须向用户明确展示会议信息并获得确认,命令需附加 --yes 参数。
  • 禁止超范围调用:仅允许文档中列出的 Action,不得构造任意 Zoom REST API 请求。

创建周期性会议

create_meeting 通过位置参数直接支持周期性会议(无需绕过 CLI):

python3 zoom-s2s.py create_meeting "<主题>" "<start_time>" <duration> [timezone] [password] \
  [recurrence_type] [repeat_interval] [weekly_days] [end_times] [end_date_time] \
  [monthly_day] [monthly_weeks]
参数 适用 type 说明 示例
recurrence_type 全部 1=每日, 2=每周, 3=每月 2
repeat_interval 全部 每几周/天/月重复 1
weekly_days type=2, type=3+monthly_weeks 周几字符串(Zoom 编码:1=周日, 2=周一, 3=周二, ..., 7=周六) "2" = 周一, "3,5" = 周二+周四
end_times 全部 总共几次 7
end_date_time 全部 结束日期(二选一) "2026-10-06T00:00:00Z"
monthly_day type=3 每月第几天字符串(1-31,单值或逗号分隔) "15" 或 "1,15"
monthly_weeks type=3 每月第几个周次(-1=最后, 1-4),配合 weekly_days 2

> ⚠️ 重要:weekly_days 是 Zoom 编码,不是 ISO 编码。 1=周日(不是周一)。常见误用:
> - 想约周一 → weekly_days="2"(不是 "1")
> - 想约周六 → weekly_days="7"(不是 "6")
> - 想约周日 → weekly_days="1"

示例:每周一 20:00(EDT),共 7 次,每次 2 小时

python3 zoom-s2s.py create_meeting "每周一的产品同步" \
  "2026-08-24T20:00:00" 120 America/New_York "" 2 1 2 7
# weekly_days="2" = Zoom 编码 2 = 周一

示例:每月 15 号 10:00,共 12 次

python3 zoom-s2s.py create_meeting "月度复盘" \
  "2026-08-15T10:00:00" 60 Asia/Shanghai "" 3 1 15 12
# positional: topic, start_time, duration, tz, password, type=3, repeat=1, weekly_days=15, end_times=12
# 解释: monthly_day="15"(每月 15 号)

示例:每月第 2 个周二 20:00,共 6 次

python3 zoom-s2s.py create_meeting "月度董事会" \
  "2026-08-25T20:00:00" 60 America/New_York "" 3 1 3 6 "" "" 2
# positional: ..., type=3, repeat=1, weekly_days="3", end_times=6, end_date_time="", monthly_day="", monthly_weeks=2
# 解释: monthly_weeks=2 + weekly_days="3" = 每月第 2 个周二(Zoom 编码 3 = 周二)

⚠️ 关键避坑:weekly_days / monthly_day 必须是字符串,不是数组!

错误写法 正确写法
"weekly_days": [6] "weekly_days": "6"(单日)
"weekly_days": ["6"] "weekly_days": "6"
"weekly_days": "6,7"(多日,周五+周六——Zoom 编码)
"weekly_days": "2,3,5"(周一+周二+周四——Zoom 编码)
"weekly_days": "1,7"(周日+周六——Zoom 编码两端)
"monthly_day": [15] "monthly_day": "15"
"monthly_day": "1,15"(每月 1 号和 15 号)

weekly_days Zoom 编码:1=周日,2=周一,3=周二,4=周三,5=周四,6=周五,7=周六。

> ❗ 禁止:当 CLI 参数不够用时,不得构造任意 payload 直接调用 api_call 或另起 curl 调用 Zoom API。如确需新参数,应扩展 scripts/zoom-s2s.py 中的 CLI action 并在 PR 中说明。

踩坑记录

  1. scope 错误 (4711):某些 API(如 get_user)需要在 App 里开通对应 scope,又如 list_meetings 需要在 App 里开通 meeting:read:list_meetings 权限
  2. Token 有效期:Server-to-Server Token 有效期 1 小时,脚本自动刷新并缓存
  3. 用户 ID:可用邮箱,也可用 list_users 查 user_id
  4. weekly_days / monthly_day 必须为字符串:Zoom API 要求 weekly_days、monthly_day 是 "6" / "15" 这样的字符串,而非 [6] / [15] 数组,传数组会报 300 错误(CLI 已自动 str(),但调用方传入时仍需注意)。weekly_days 是 Zoom 编码(1=周日, 2=周一, ..., 7=周六),不是 ISO 编码。
  5. 月度循环的两种写法:monthly_day 表示"每月第几天",monthly_weeks + weekly_days 表示"每月第几个周几"。两者二选一,不要同时给;同时给会让 Zoom 拒绝(300 错误)

常见问题

5 问
答案由本站依据条目字段整理
zoom-meeting-admin怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_46180358/zoom-meeting-admin。安装方式为ClawHub 市场。装完刷新技能列表或重开客户端。

zoom-meeting-admin支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

zoom-meeting-admin权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

zoom-meeting-admin收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

zoom-meeting-admin用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。