mcpField
Z
zoom

zoom

github.com/glebis生産性401248 回インストール1 日前に更新
リポジトリ

zoom について

zoomは、Zoom APIを通じて会議とクラウドレコーディングを管理するスキルです。コマンドラインでの利用を想定し、会議と録画へのアクセスに別々のOAuth方式を使います。

主な機能

  1. 01会議の一覧表示、作成、更新、削除
  2. 02クラウドレコーディングと関連ファイルの取得
  3. 03録画の文字起こし、要約、ダウンロードリンクの確認
  4. 04MarkdownまたはJSONでの出力

活用シーン

  1. 01今後または過去の会議の確認
  2. 02予定済み会議の作成や変更
  3. 03録画、文字起こし、ダウンロードリンクの検索

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/glebis/claude-skills --skill zoom

インストール後、Claude Code で/zoomを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
.claude-plugin/
plugin.json
scripts/
zoom_meetings.py

詳細

Zoom スキル

Zoom API を使用して、Zoom ミーティングとクラウド録画を管理します。

機能

  • ミーティング:スケジュール済みミーティングの一覧表示、作成、更新、削除
  • 録画:文字起こし、要約、ダウンロードリンクを含むクラウド録画の一覧表示

注: 作成/更新コマンドに渡す時刻は、すべて現地時間として解釈されます。--timezone で明示的に指定しない場合、スクリプトがタイムゾーンを自動検出します。

前提条件

このスキルでは、2 種類の認証方法を使用します。

機能認証タイプ認証情報ファイル
ミーティングServer-to-Server OAuth~/.zoom_credentials/credentials.json
録画User OAuth (General App)~/.zoom_credentials/oauth_token.json

ステータスを確認します:

python3 scripts/zoom_meetings.py setup

セットアップ

パート 1:Server-to-Server OAuth(ミーティング用)
  1. marketplace.zoom.us にアクセス → Develop → Build App
  2. Server-to-Server OAuth を選択
  3. 名前を付けます(例:「Claude Zoom Meetings」)
  4. Account ID、Client ID、Client Secret をコピー
  5. スコープを追加します:
    • meeting:read:meeting:admin
    • meeting:read:list_meetings:admin
    • meeting:write:meeting:admin
    • user:read:user:admin
  6. アプリを有効化します
  7. 認証情報を保存します:
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
パート 2:General App OAuth(録画用)

Server-to-Server アプリではクラウド録画にアクセスできません。別途、General App が必要です:

  1. marketplace.zoom.us にアクセス → Develop → Build App
  2. General App を選択
  3. リダイレクト URL を設定します:http://localhost:8888/callback
  4. Client ID と Client Secret をコピー
  5. スコープを追加します:
    • cloud_recording:read:list_user_recordings
    • cloud_recording:read:list_recording_files
  6. アプリを有効化します
  7. 認証します(ブラウザーを使った初回のみのフロー):
# Open this URL in browser (replace CLIENT_ID):
https://zoom.us/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=http://localhost:8888/callback

# After authorizing, you'll be redirected to:
# http://localhost:8888/callback?code=AUTHORIZATION_CODE

# 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!')
"

クイックスタート

# Check setup
python3 scripts/zoom_meetings.py setup

# List upcoming meetings
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

# List recordings
python3 scripts/zoom_meetings.py recordings --start 2025-01-01

コマンド

ミーティング
# 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

# Get meeting details
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 "[email protected]"  # send invite
python3 scripts/zoom_meetings.py create "Topic" --invite "[email protected]" --invite "[email protected]"  # multiple

# 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"

# Delete meeting (requires meeting:delete:meeting:admin scope)
python3 scripts/zoom_meetings.py delete MEETING_ID
録画
# List all recordings (default: last 30 days)
python3 scripts/zoom_meetings.py recordings

# With date range
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

# Get specific meeting's recordings
python3 scripts/zoom_meetings.py recording MEETING_ID

# JSON output
python3 scripts/zoom_meetings.py recordings --json

出力形式

Markdown(デフォルト)
# Zoom Meetings (3 upcoming)

## Weekly Team Sync
**ID:** 123456789
**Start:** 2025-01-15 14:00:00 UTC
**Duration:** 60 minutes
**Join URL:** https://zoom.us/j/123456789

他のツールにパイプで渡すのに適した構造化出力を得るには、--json を追加します。

録画ファイルの種類

種類説明
MP4動画録画
M4A音声のみ
TRANSCRIPTテキストの文字起こし(VTT)
CHATチャットメッセージ
TIMELINE話者のタイムライン
SUMMARYAI ミーティング要約

ユーザーリクエストの例

ユーザーの発言コマンド
「Zoom ミーティングを一覧表示して」list
「過去のミーティングを表示して」list --type previous
「明日の午後 2 時にミーティングを作成して」create "Meeting" --start "2025-01-15T14:00:00"
「Zoom の録画を表示して」recordings --start 2025-01-01
「ミーティング X の録画を取得して」recording MEETING_ID

依存関係

pip install requests

ファイル

ファイル用途
~/.zoom_credentials/credentials.jsonS2S OAuth 認証情報
~/.zoom_credentials/token.jsonS2S キャッシュトークン
~/.zoom_credentials/oauth_token.jsonUser OAuth トークン(自動更新)

既知の注意点

  • join_before_host はアカウントレベルの設定です。 この設定は Zoom アカウントの管理者レベルでロックされています。アカウント設定によって上書きされる場合、API でミーティングごとに設定しても通知なく無視されます。まず Zoom の管理者設定(Security → 「Allow participants to join before host」)で変更すると、その後の API 呼び出しに反映されます。
  • 待機室の設定は、ホストより先の参加を上書きします。 アカウントレベルで待機室が有効になっている場合、API が join_before_host を受け付けても機能しません。

API リファレンス

コメント