文档

zoom-meeting-admin

试用

通过 Server-to-Server OAuth,在智能体工作流中管理 Zoom 会议、云录像与账户用户。

它能做什么

封装单一 Python 脚本,按 Server-to-Server OAuth 方式从本地 `.env` 读取凭证后调用 Zoom REST API。脚本只暴露白名单内的 CLI 动作(会议的增删查列、用户的查列、录像列表),未提供通用 REST 调用入口,也不允许构造任意端点请求。创建与删除会议前必须获得用户显式确认,删除还需命令行附带 `--yes`。在已文档化的范围内,支持云录像、周期性会议(每日/每周/每月)以及账户用户查询。

什么时候用它

  • 列出即将开始或历史的 Zoom 会议
  • 创建一次性或周期性会议
  • 查询某用户的云录像列表
  • 查找 Zoom 账户下的用户信息

技能文档

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/tokenhttps://api.zoom.us/v2/* 发起 HTTPS 请求,传输头包含 Authorization: Bearer
  • 文件写入:在 ~/.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 给上层调用;不得通过修改脚本、注入参数、拼接 URL 等方式旁路调用白名单外的 Zoom 端点(如 DELETE /users/{id}PATCH /accounts/{id} 等高风险端点)。
  • 强人类确认create_meetingdelete_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 .envscripts/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:updateuser: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   upcoming

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

# 创建会议 (start_time: YYYY-MM-DDTHH:MM:SS)
python3 zoom-s2s.py create_meeting "<主题>" "" <时长分钟> [时区] [密码]
# 创建周期性会议(每周二,7次,每次120分钟)
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 

# 获取云录像
python3 zoom-s2s.py recordings  

# 获取用户信息
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 5 upcoming
列出最近10个历史会议list_meetings 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
获取会议详情get_meeting
删除会议delete_meeting --yes
获取云录像recordings 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 请求。

创建周期性会议

CLI 方式

create_meeting 额外支持周期性参数(按位置传递):

python3 zoom-s2s.py create_meeting "<主题>" ""  [timezone] [password] \
  [recurrence_type] [repeat_interval] [weekly_days] [end_times] [end_date_time]
参数说明示例
recurrence_type1=每日, 2=每周, 3=每月2
repeat_interval每几周/天重复1
weekly_days周几(字符串,1=周一~7=周日)"2"
end_times总共几次7
end_date_time结束日期(二选一)"2026-10-06T00:00:00Z"

示例:每周二 20:00,共 7 次,每次 2 小时

python3 zoom-s2s.py create_meeting "北美龙虾 AI 数字员工系列第 2 期" \
  "2026-08-18T20:00:00" 120 America/New_York "" 2 1 2 7

API Payload 方式

创建 type=8(周期性会议)的 recurrence 参数说明:

recurrence.type说明可用字段是否可用
1每日循环(Daily)end_date_timecount
2每周循环(Weekly)weekly_days(字符串), end_date_timecount
3每月循环(Monthly)monthly_daymonthly_weeks + weekly_days

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

错误写法正确写法
"weekly_days": [6]"weekly_days": "6"
"weekly_days": ["6"]"weekly_days": "6"(单日)
"weekly_days": "6,0"(多日,周六+周日)

weekly_days 取值:1=周一 ~ 7=周日

示例:通过 api_call 直接 POST 创建周期性会议:

payload = {
    "topic": "CSM公开课",
    "type": 8,
    "start_time": "2026-05-23T08:00:00",
    "duration": 540,
    "timezone": "Asia/Shanghai",
    "recurrence": {
        "type": 2,
        "repeat_interval": 1,
        "weekly_days": "6,0",   # 周六+周日,字符串!
        "end_date_time": "2026-05-24T00:00:00Z"
    },
    "settings": {
        "host_video": True,
        "participant_video": True,
        "join_before_host": False,
        "mute_upon_entry": False
    }
}

多日示例(周一+周三+周五):

"weekly_days": "1,3,5"

踩坑记录

  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 必须为字符串:Zoom API 要求 weekly_days"6" 这样的字符串,而非 [6] 数组,传数组会报 300 错误

常见问题

需要准备哪些凭证?
需要在 Zoom Marketplace 创建一个 Server-to-Server OAuth 应用,并在仓库根目录的 `.env` 中配置 `ZOOM_ACCOUNT_ID`、`ZOOM_CLIENT_ID`、`ZOOM_CLIENT_SECRET`、`ZOOM_USER_ID`(邮箱或用户 ID),文件权限建议 chmod 600 且不要提交到任何 Git 仓库。脚本会自动换取访问令牌并缓存到 `~/.zoom-s2s-token.json`,约 50 分钟内复用。
智能体能直接调用任意 Zoom 接口吗?
不能。脚本仅暴露白名单中的动作:会议的增删查列、用户的查列、录像列表,未对外提供通用 `api_call`,也禁止通过修改脚本、注入参数或拼接 URL 绕过白名单去访问其他端点。
执行写操作前会做哪些确认?
`create_meeting` 必须先就主题、开始时间、时长获得用户确认;`delete_meeting` 必须先向用户展示会议信息并取得确认,同时命令行需附带 `--yes` 参数。建议按需开通对应 scope(如 `meeting:write:delete`、`cloud_recording:read:list_user_recordings`),未使用的权限不要勾选。

相关技能

通过托管 OAuth 调用 Zoom Admin API,管理用户、会议和 Webinar。

16 次安装

通过 OAuth 网关调度与管理 Zoom 会议、研讨会与云录制。

27 次安装1 星标

ClickMeeting (clickmeeting.com). Use this skill for ANY ClickMeeting request — reading, creating, updating, and deleting data. Whenever a task involves Click...

以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。

作者 johnpatternai21 次安装8 星标

通过托管 OAuth 网关读写 Zoho 日历的日历与事件。

486 次安装4 星标

Google Meet (workspace.google.com). Use this skill for ANY Google Meet request — reading, creating, and updating data. Whenever a task involves Google Meet, use this skill instead of calling the API directly.