home / skills / openclaw / skills / zoom-unofficial-community-skill

zoom-unofficial-community-skill skill

/skills/tanchunsiong/zoom-unofficial-community-skill

This skill enables you to manage Zoom meetings, calendar, recordings, and chat via REST API using Server-to-Server OAuth for automation.

npx playbooks add skill openclaw/skills --skill zoom-unofficial-community-skill

Review the files below or copy the command above to add this skill to your agents.

Files (6)
SKILL.md
5.1 KB
---
name: zoom-unofficial-community-skill
description: Zoom API integration for meetings, calendar, chat, and user management. Use when the user asks to schedule meetings, check Zoom calendar, list recordings, send Zoom chat messages, manage contacts, or interact with any Zoom Workplace feature. Supports Server-to-Server OAuth and OAuth apps.
---

# Zoom

Use `scripts/zoom.py` to interact with Zoom's REST API.

## Prerequisites

```bash
pip3 install requests PyJWT --break-system-packages
```

## Authentication

Set these in the skill's `.env` file (copy from `.env.example`):

- `ZOOM_ACCOUNT_ID` — Account ID (from Zoom Marketplace app)
- `ZOOM_CLIENT_ID` — OAuth Client ID
- `ZOOM_CLIENT_SECRET` — OAuth Client Secret
- `ZOOM_USER_EMAIL` — Email of the Zoom user to act as (required for S2S apps; defaults to `me` if unset)
- `ZOOM_RTMS_CLIENT_ID` — Client ID of the RTMS Marketplace app (required for `rtms-start`/`rtms-stop`; this is a separate app from the S2S OAuth app)

Create a **Server-to-Server OAuth** app at https://marketplace.zoom.us/ for full API access.
See [references/AUTH.md](references/AUTH.md) for detailed setup guide.

## Commands

### Meetings

```bash
# List upcoming meetings
python3 scripts/zoom.py meetings list

# List live/in-progress meetings (requires Business+ plan with Dashboard)
python3 scripts/zoom.py meetings live

# Start RTMS for a live meeting (requires ZOOM_RTMS_CLIENT_ID)
python3 scripts/zoom.py meetings rtms-start <meeting_id>

# Stop RTMS for a live meeting
python3 scripts/zoom.py meetings rtms-stop <meeting_id>

# Get meeting details
python3 scripts/zoom.py meetings get <meeting_id>

# Schedule a new meeting
python3 scripts/zoom.py meetings create --topic "Standup" --start "2026-01-28T10:00:00" --duration 30

# Schedule with options
python3 scripts/zoom.py meetings create --topic "Review" --start "2026-01-28T14:00:00" --duration 60 --agenda "Sprint review" --password "abc123"

# Delete a meeting
python3 scripts/zoom.py meetings delete <meeting_id>

# Update a meeting
python3 scripts/zoom.py meetings update <meeting_id> --topic "New Title" --start "2026-01-29T10:00:00"
```

### Calendar (upcoming schedule)

```bash
# Today's meetings
python3 scripts/zoom.py meetings list --from today --to today

# This week's meetings
python3 scripts/zoom.py meetings list --from today --days 7
```

### Recordings

```bash
# List cloud recordings
python3 scripts/zoom.py recordings list

# List recordings for date range
python3 scripts/zoom.py recordings list --from "2026-01-01" --to "2026-01-31"

# Get recording details
python3 scripts/zoom.py recordings get <meeting_id>

# Download recording files (video/audio)
python3 scripts/zoom.py recordings download <meeting_id>
python3 scripts/zoom.py recordings download <meeting_id> --output ~/Downloads

# Download transcript files only
python3 scripts/zoom.py recordings download-transcript <meeting_id>
python3 scripts/zoom.py recordings download-transcript <meeting_id> --output ~/Downloads

# Download AI Companion summary as markdown
python3 scripts/zoom.py recordings download-summary <meeting_uuid>
python3 scripts/zoom.py recordings download-summary <meeting_uuid> --output ~/Downloads

# Delete a recording
python3 scripts/zoom.py recordings delete <meeting_id>
```

### AI Meeting Summary (AI Companion)

```bash
# List meeting summaries
python3 scripts/zoom.py summary list
python3 scripts/zoom.py summary list --from "2026-01-01" --to "2026-01-31"

# Get AI summary for a specific meeting
python3 scripts/zoom.py summary get <meeting_id>
```

### Users

```bash
# Get my profile
python3 scripts/zoom.py users me

# List users (admin)
python3 scripts/zoom.py users list
```

### Team Chat

```bash
# List chat channels
python3 scripts/zoom.py chat channels

# List messages in a channel
python3 scripts/zoom.py chat messages <channel_id>

# Send a message to a channel
python3 scripts/zoom.py chat send <channel_id> "Hello team!"

# Send a direct message
python3 scripts/zoom.py chat dm <email> "Hey, are you free?"

# List contacts
python3 scripts/zoom.py chat contacts
```

### Phone (Zoom Phone)

```bash
# List call logs
python3 scripts/zoom.py phone calls --from "2026-01-01" --to "2026-01-31"
```

## Scopes Required

For Server-to-Server OAuth, enable these scopes in your Zoom Marketplace app.
Only add the scopes you need — each command group requires specific scopes:

| Command Group | Scopes Needed |
|---|---|
| `users me` / `users list` | `user:read:admin` |
| `meetings list/get/create/update/delete` | `meeting:read:admin`, `meeting:write:admin` |
| `recordings list/get/delete` | `recording:read:admin`, `recording:write:admin` |
| `chat channels/messages/send/dm` | `chat_channel:read:admin`, `chat_message:read:admin`, `chat_message:write:admin` |
| `chat contacts` | `contact:read:admin` |
| `summary list/get` | `meeting_summary:read:admin` |
| `phone calls` | `phone:read:admin` (requires Zoom Phone enabled on account) |

**If you get a scope error**, go to https://marketplace.zoom.us/ → your app → Scopes, and add the missing scope listed in the error message.

## Rate Limits

Zoom API has rate limits (varies by endpoint, typically 30-100 req/sec). The script handles 429 responses with automatic retry.

Overview

This skill integrates with Zoom to manage meetings, calendar entries, cloud recordings, AI meeting summaries, team chat, users, and phone call logs. It supports Server-to-Server OAuth and standard OAuth apps so you can automate scheduling, retrieval, messaging, and admin tasks programmatically. The skill is designed for admins and automation workflows that need broad Zoom Workplace access.

How this skill works

The skill calls Zoom’s REST API to list, create, update, and delete meetings, fetch calendars, download recordings and transcripts, and post or read team chat messages. Authentication is handled via Server-to-Server OAuth or OAuth app credentials stored in environment variables, and the skill requires specific Zoom scopes for each feature. It respects Zoom rate limits and includes retry logic for 429 responses.

When to use it

  • Schedule, update, or cancel Zoom meetings programmatically
  • Fetch upcoming calendar entries or show today/this-week schedules
  • List, download, or delete cloud recordings and transcripts
  • Retrieve AI Companion meeting summaries or list summary records
  • Send messages or DMs in Zoom Team Chat and manage contacts
  • Pull user profiles, list users, or query Zoom Phone call logs

Best practices

  • Use Server-to-Server OAuth for admin-level automation to avoid interactive authentication
  • Only enable the Zoom Marketplace scopes you need to minimize permissions
  • Store client credentials and account IDs in environment variables, not in source control
  • Throttle bulk operations and respect rate limits; implement retries for 429 responses
  • Test actions like create/update/delete in a staging Zoom account before running against production

Example use cases

  • Automated scheduler: create recurring standups and post confirmations to a chat channel
  • Post-meeting pipeline: download recordings and transcripts, then generate summaries or archive files
  • Admin dashboard: list live meetings, active recordings, and user profiles for support teams
  • Chat automation: send reminders or notifications to channels and DM users about upcoming meetings
  • Compliance/archive: periodically download and back up cloud recordings and transcripts to external storage

FAQ

Which authentication method should I use for full API access?

Use Server-to-Server OAuth for full admin access and non-interactive automation; set account/client IDs and secrets in environment variables.

What scopes are required to manage meetings and recordings?

Enable meeting:read:admin and meeting:write:admin for meetings, and recording:read:admin plus recording:write:admin for recordings. Only add scopes you actually need.

How does the skill handle rate limits?

The integration handles 429 responses with automatic retries and backoff. Still, you should batch requests and avoid large bursts to reduce throttling.