zoom
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseZoom 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- 会议管理:列出、创建、更新、删除已安排的会议
- 录制内容管理:列出包含文字转录、摘要和下载链接的云录制内容
注意: 传递给创建/更新命令的所有时间均被视为本地时间。如果未通过参数显式指定时区,脚本会自动检测你的时区。
--timezonePrerequisites
前置条件
This skill uses two authentication methods:
| Feature | Auth Type | Credentials File |
|---|---|---|
| Meetings | Server-to-Server OAuth | |
| Recordings | User OAuth (General App) | |
Check status:
bash
python3 scripts/zoom_meetings.py setup本技能使用两种认证方式:
| 功能 | 认证类型 | 凭证文件 |
|---|---|---|
| 会议 | Server-to-Server OAuth | |
| 录制内容 | User OAuth (General App) | |
检查状态:
bash
python3 scripts/zoom_meetings.py setupSetup
配置步骤
Part 1: Server-to-Server OAuth (for Meetings)
第一部分:Server-to-Server OAuth(用于会议管理)
- Go to marketplace.zoom.us → Develop → Build App
- Select Server-to-Server OAuth
- Name it (e.g., "Claude Zoom Meetings")
- Copy Account ID, Client ID, Client Secret
- Add scopes:
meeting:read:meeting:adminmeeting:read:list_meetings:adminmeeting:write:meeting:adminuser:read:user:admin
- Activate the app
- 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- 访问 marketplace.zoom.us → Develop → Build App
- 选择 Server-to-Server OAuth
- 为应用命名(例如:"Claude Zoom Meetings")
- 复制 Account ID、Client ID、Client Secret
- 添加权限范围:
meeting:read:meeting:adminmeeting:read:list_meetings:adminmeeting:write:meeting:adminuser:read:user:admin
- 激活应用
- 保存凭证:
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"
}
EOFPart 2: General App OAuth (for Recordings)
第二部分:通用应用OAuth(用于录制内容)
Server-to-Server apps cannot access cloud recordings. You need a separate General App:
- Go to marketplace.zoom.us → Develop → Build App
- Select General App
- Set redirect URL:
http://localhost:8888/callback - Copy Client ID and Client Secret
- Add scopes:
cloud_recording:read:list_user_recordingscloud_recording:read:list_recording_files
- Activate the app
- Authorize (one-time browser flow):
bash
undefinedServer-to-Server应用无法访问云录制内容,你需要单独创建一个通用应用:
- 访问 marketplace.zoom.us → Develop → Build App
- 选择 General App
- 设置重定向URL:
http://localhost:8888/callback - 复制 Client ID 和 Client Secret
- 添加权限范围:
cloud_recording:read:list_user_recordingscloud_recording:read:list_recording_files
- 激活应用
- 授权(一次性浏览器流程):
bash
undefinedOpen 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!')
"
undefinedpython3 -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!')
"
undefinedQuick Start
快速开始
bash
undefinedbash
undefinedCheck 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
undefinedpython3 scripts/zoom_meetings.py recordings --start 2025-01-01
undefinedCommands
命令说明
Meetings
会议相关命令
bash
undefinedbash
undefinedList 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
undefinedpython3 scripts/zoom_meetings.py delete MEETING_ID
undefinedRecordings
录制内容相关命令
bash
undefinedbash
undefinedList 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
undefinedpython3 scripts/zoom_meetings.py recordings --json
undefinedOutput Formats
输出格式
Markdown (default)
Markdown(默认)
markdown
undefinedmarkdown
undefinedZoom 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
undefinedID: 123456789
Start: 2025-01-15 14:00:00 UTC
Duration: 60 minutes
Join URL: https://zoom.us/j/123456789
undefinedJSON
JSON
Add for structured output suitable for piping to other tools.
--json添加参数可获得结构化输出,适合传递给其他工具处理。
--jsonRecording File Types
录制文件类型
| Type | Description |
|---|---|
| MP4 | Video recording |
| M4A | Audio only |
| TRANSCRIPT | Text transcript (VTT) |
| CHAT | Chat messages |
| TIMELINE | Speaker timeline |
| SUMMARY | AI meeting summary |
| 类型 | 描述 |
|---|---|
| MP4 | 视频录制文件 |
| M4A | 仅音频文件 |
| TRANSCRIPT | 文字转录文件(VTT格式) |
| CHAT | 聊天消息记录 |
| TIMELINE | 发言者时间线 |
| SUMMARY | AI生成的会议摘要 |
Example User Requests
用户请求示例
| User says | Command |
|---|---|
| "List my Zoom meetings" | |
| "Show past meetings" | |
| "Create a meeting for tomorrow at 2pm" | |
| "Show my Zoom recordings" | |
| "Get the recording for meeting X" | |
| 用户指令 | 对应命令 |
|---|---|
| "列出我的Zoom会议" | |
| "显示已结束的会议" | |
| "创建明天下午2点的会议" | |
| "查看我的Zoom录制内容" | |
| "获取会议X的录制内容" | |
Dependencies
依赖安装
bash
pip install requestsbash
pip install requestsFiles
文件说明
| File | Purpose |
|---|---|
| S2S OAuth credentials |
| S2S cached token |
| User OAuth tokens (auto-refreshes) |
| 文件 | 用途 |
|---|---|
| Server-to-Server OAuth凭证 |
| Server-to-Server缓存令牌 |
| 用户OAuth令牌(自动刷新) |