zoom

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Zoom Skill

Zoom 技能

Manage Zoom meetings and cloud recordings via the Zoom API.
通过Zoom API管理Zoom会议和云录制内容。

Features

功能特性

  • Meetings: List, create, update, delete scheduled meetings
  • Recordings: List cloud recordings with transcripts, summaries, and download links
Note: All times passed to create/update commands are interpreted as local time. The script auto-detects your timezone if not explicitly specified with
--timezone
.
  • 会议管理:列出、创建、更新、删除已安排的会议
  • 录制内容管理:列出包含文字转录、摘要和下载链接的云录制内容
注意: 传递给创建/更新命令的所有时间均被视为本地时间。如果未通过
--timezone
参数显式指定时区,脚本会自动检测你的时区。

Prerequisites

前置条件

This skill uses two authentication methods:
FeatureAuth TypeCredentials File
MeetingsServer-to-Server OAuth
~/.zoom_credentials/credentials.json
RecordingsUser OAuth (General App)
~/.zoom_credentials/oauth_token.json
Check status:
bash
python3 scripts/zoom_meetings.py setup
本技能使用两种认证方式:
功能认证类型凭证文件
会议Server-to-Server OAuth
~/.zoom_credentials/credentials.json
录制内容User OAuth (General App)
~/.zoom_credentials/oauth_token.json
检查状态:
bash
python3 scripts/zoom_meetings.py setup

Setup

配置步骤

Part 1: Server-to-Server OAuth (for Meetings)

第一部分:Server-to-Server OAuth(用于会议管理)

  1. Go to marketplace.zoom.us → Develop → Build App
  2. Select Server-to-Server OAuth
  3. Name it (e.g., "Claude Zoom Meetings")
  4. Copy Account ID, Client ID, Client Secret
  5. Add scopes:
    • meeting:read:meeting:admin
    • meeting:read:list_meetings:admin
    • meeting:write:meeting:admin
    • user:read:user:admin
  6. Activate the app
  7. Save credentials:
bash
mkdir -p ~/.zoom_credentials
cat > ~/.zoom_credentials/credentials.json << 'EOF'
{
  "account_id": "YOUR_ACCOUNT_ID",
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET"
}
EOF
  1. 访问 marketplace.zoom.us → Develop → Build App
  2. 选择 Server-to-Server OAuth
  3. 为应用命名(例如:"Claude Zoom Meetings")
  4. 复制 Account IDClient IDClient Secret
  5. 添加权限范围:
    • meeting:read:meeting:admin
    • meeting:read:list_meetings:admin
    • meeting:write:meeting:admin
    • user:read:user:admin
  6. 激活应用
  7. 保存凭证:
bash
mkdir -p ~/.zoom_credentials
cat > ~/.zoom_credentials/credentials.json << 'EOF'
{
  "account_id": "YOUR_ACCOUNT_ID",
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET"
}
EOF

Part 2: General App OAuth (for Recordings)

第二部分:通用应用OAuth(用于录制内容)

Server-to-Server apps cannot access cloud recordings. You need a separate General App:
  1. Go to marketplace.zoom.us → Develop → Build App
  2. Select General App
  3. Set redirect URL:
    http://localhost:8888/callback
  4. Copy Client ID and Client Secret
  5. Add scopes:
    • cloud_recording:read:list_user_recordings
    • cloud_recording:read:list_recording_files
  6. Activate the app
  7. Authorize (one-time browser flow):
bash
undefined
Server-to-Server应用无法访问云录制内容,你需要单独创建一个通用应用:
  1. 访问 marketplace.zoom.us → Develop → Build App
  2. 选择 General App
  3. 设置重定向URL:
    http://localhost:8888/callback
  4. 复制 Client IDClient Secret
  5. 添加权限范围:
    • cloud_recording:read:list_user_recordings
    • cloud_recording:read:list_recording_files
  6. 激活应用
  7. 授权(一次性浏览器流程):
bash
undefined

Open this URL in browser (replace CLIENT_ID):

在浏览器中打开此URL(替换CLIENT_ID):

After authorizing, you'll be redirected to:

授权后,你将被重定向到:

Exchange the code for tokens (replace values):

交换授权码获取令牌(替换对应值):

python3 -c " import requests, json resp = requests.post('https://zoom.us/oauth/token', auth=('CLIENT_ID', 'CLIENT_SECRET'), data={'grant_type': 'authorization_code', 'code': 'AUTH_CODE', 'redirect_uri': 'http://localhost:8888/callback'}) data = resp.json() data['client_id'] = 'CLIENT_ID' data['client_secret'] = 'CLIENT_SECRET' data['expires_at'] = import('time').time() + data.get('expires_in', 3600) with open(import('pathlib').Path.home() / '.zoom_credentials/oauth_token.json', 'w') as f: json.dump(data, f, indent=2) print('Saved!') "
undefined
python3 -c " import requests, json resp = requests.post('https://zoom.us/oauth/token', auth=('CLIENT_ID', 'CLIENT_SECRET'), data={'grant_type': 'authorization_code', 'code': 'AUTH_CODE', 'redirect_uri': 'http://localhost:8888/callback'}) data = resp.json() data['client_id'] = 'CLIENT_ID' data['client_secret'] = 'CLIENT_SECRET' data['expires_at'] = import('time').time() + data.get('expires_in', 3600) with open(import('pathlib').Path.home() / '.zoom_credentials/oauth_token.json', 'w') as f: json.dump(data, f, indent=2) print('Saved!') "
undefined

Quick Start

快速开始

bash
undefined
bash
undefined

Check setup

检查配置状态

python3 scripts/zoom_meetings.py setup
python3 scripts/zoom_meetings.py setup

List upcoming meetings

列出即将召开的会议

python3 scripts/zoom_meetings.py list
python3 scripts/zoom_meetings.py list

Create a meeting

创建会议

python3 scripts/zoom_meetings.py create "Team Standup" --start "2025-01-15T10:00:00" --duration 30
python3 scripts/zoom_meetings.py create "Team Standup" --start "2025-01-15T10:00:00" --duration 30

List recordings

列出录制内容

python3 scripts/zoom_meetings.py recordings --start 2025-01-01
undefined
python3 scripts/zoom_meetings.py recordings --start 2025-01-01
undefined

Commands

命令说明

Meetings

会议相关命令

bash
undefined
bash
undefined

List meetings

列出会议

python3 scripts/zoom_meetings.py list # upcoming python3 scripts/zoom_meetings.py list --type previous # past python3 scripts/zoom_meetings.py list --limit 10 --json
python3 scripts/zoom_meetings.py list # 即将召开的会议 python3 scripts/zoom_meetings.py list --type previous # 已结束的会议 python3 scripts/zoom_meetings.py list --limit 10 --json

Get meeting details

获取会议详情

python3 scripts/zoom_meetings.py get MEETING_ID
python3 scripts/zoom_meetings.py get MEETING_ID

Create meeting (times are treated as LOCAL time)

创建会议(时间视为本地时间)

python3 scripts/zoom_meetings.py create "Topic" # instant python3 scripts/zoom_meetings.py create "Topic" --start "2025-01-15T14:00:00" # scheduled (local time) python3 scripts/zoom_meetings.py create "Topic" --duration 60 --timezone "Europe/Berlin" python3 scripts/zoom_meetings.py create "Topic" --agenda "Discussion points" --waiting-room python3 scripts/zoom_meetings.py create "Topic" --invite "user@example.com" # send invite python3 scripts/zoom_meetings.py create "Topic" --invite "a@x.com" --invite "b@x.com" # multiple
python3 scripts/zoom_meetings.py create "Topic" # 即时会议 python3 scripts/zoom_meetings.py create "Topic" --start "2025-01-15T14:00:00" # 预定会议(本地时间) python3 scripts/zoom_meetings.py create "Topic" --duration 60 --timezone "Europe/Berlin" python3 scripts/zoom_meetings.py create "Topic" --agenda "Discussion points" --waiting-room python3 scripts/zoom_meetings.py create "Topic" --invite "user@example.com" # 发送邀请 python3 scripts/zoom_meetings.py create "Topic" --invite "a@x.com" --invite "b@x.com" # 多个邀请对象

Update meeting

更新会议

python3 scripts/zoom_meetings.py update MEETING_ID --topic "New Topic" python3 scripts/zoom_meetings.py update MEETING_ID --start "2025-01-16T10:00:00"
python3 scripts/zoom_meetings.py update MEETING_ID --topic "New Topic" python3 scripts/zoom_meetings.py update MEETING_ID --start "2025-01-16T10:00:00"

Delete meeting (requires meeting:delete:meeting:admin scope)

删除会议(需要meeting:delete:meeting:admin权限范围)

python3 scripts/zoom_meetings.py delete MEETING_ID
undefined
python3 scripts/zoom_meetings.py delete MEETING_ID
undefined

Recordings

录制内容相关命令

bash
undefined
bash
undefined

List all recordings (default: last 30 days)

列出所有录制内容(默认:最近30天)

python3 scripts/zoom_meetings.py recordings
python3 scripts/zoom_meetings.py recordings

With date range

按日期范围列出

python3 scripts/zoom_meetings.py recordings --start 2025-01-01 --end 2025-01-31
python3 scripts/zoom_meetings.py recordings --start 2025-01-01 --end 2025-01-31

Show download URLs

显示下载链接

python3 scripts/zoom_meetings.py recordings --show-downloads
python3 scripts/zoom_meetings.py recordings --show-downloads

Get specific meeting's recordings

获取特定会议的录制内容

python3 scripts/zoom_meetings.py recording MEETING_ID
python3 scripts/zoom_meetings.py recording MEETING_ID

JSON output

JSON格式输出

python3 scripts/zoom_meetings.py recordings --json
undefined
python3 scripts/zoom_meetings.py recordings --json
undefined

Output Formats

输出格式

Markdown (default)

Markdown(默认)

markdown
undefined
markdown
undefined

Zoom Meetings (3 upcoming)

Zoom Meetings (3 upcoming)

Weekly Team Sync

Weekly Team Sync

ID: 123456789 Start: 2025-01-15 14:00:00 UTC Duration: 60 minutes Join URL: https://zoom.us/j/123456789
undefined
ID: 123456789 Start: 2025-01-15 14:00:00 UTC Duration: 60 minutes Join URL: https://zoom.us/j/123456789
undefined

JSON

JSON

Add
--json
for structured output suitable for piping to other tools.
添加
--json
参数可获得结构化输出,适合传递给其他工具处理。

Recording File Types

录制文件类型

TypeDescription
MP4Video recording
M4AAudio only
TRANSCRIPTText transcript (VTT)
CHATChat messages
TIMELINESpeaker timeline
SUMMARYAI meeting summary
类型描述
MP4视频录制文件
M4A仅音频文件
TRANSCRIPT文字转录文件(VTT格式)
CHAT聊天消息记录
TIMELINE发言者时间线
SUMMARYAI生成的会议摘要

Example User Requests

用户请求示例

User saysCommand
"List my Zoom meetings"
list
"Show past meetings"
list --type previous
"Create a meeting for tomorrow at 2pm"
create "Meeting" --start "2025-01-15T14:00:00"
"Show my Zoom recordings"
recordings --start 2025-01-01
"Get the recording for meeting X"
recording MEETING_ID
用户指令对应命令
"列出我的Zoom会议"
list
"显示已结束的会议"
list --type previous
"创建明天下午2点的会议"
create "Meeting" --start "2025-01-15T14:00:00"
"查看我的Zoom录制内容"
recordings --start 2025-01-01
"获取会议X的录制内容"
recording MEETING_ID

Dependencies

依赖安装

bash
pip install requests
bash
pip install requests

Files

文件说明

FilePurpose
~/.zoom_credentials/credentials.json
S2S OAuth credentials
~/.zoom_credentials/token.json
S2S cached token
~/.zoom_credentials/oauth_token.json
User OAuth tokens (auto-refreshes)
文件用途
~/.zoom_credentials/credentials.json
Server-to-Server OAuth凭证
~/.zoom_credentials/token.json
Server-to-Server缓存令牌
~/.zoom_credentials/oauth_token.json
用户OAuth令牌(自动刷新)

API Reference

API参考