Skip to content
Back to skills

Zoom Meeting Assistance With Rtms Unofficial Community Skill

ASecurity

Zoom RTMS Meeting Assistant — start on-demand to capture meeting audio, video, transcript, screenshare, and chat via Zoom Real-Time Media Streams. Handles meeting.rtms_started and meeting.rtms_stopped webhook events. Provides AI-powered dialog suggestions, sentiment analysis, and live summaries with WhatsApp notifications. Use when a Zoom RTMS webhook fires or the user asks to record/analyze a meeting.

  • 10 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 30, 2026
content-marketinggobashnodeexpressapi

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumUses curl or wget to download content
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 20 files and shows the line behind each finding

Scanned May 30, 2026

npx -y skills add Demerzels-lab/elsamultiskillagent --skill zoom-meeting-assistance-with-rtms-unofficial-community-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Zoom Meeting Assistance With Rtms Unofficial Community Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Zoom Meeting Assistance With Rtms Unofficial Community Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/demerzels-lab-zoom-meeting-assistance-with-rtms-unofficial-commu/badge)](https://www.skillsdirectory.com/skills/demerzels-lab-zoom-meeting-assistance-with-rtms-unofficial-commu)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: zoom-meeting-assistance-rtms-unofficial-community
description: Zoom RTMS Meeting Assistant — start on-demand to capture meeting audio, video, transcript, screenshare, and chat via Zoom Real-Time Media Streams. Handles meeting.rtms_started and meeting.rtms_stopped webhook events. Provides AI-powered dialog suggestions, sentiment analysis, and live summaries with WhatsApp notifications. Use when a Zoom RTMS webhook fires or the user asks to record/analyze a meeting.
---

# Zoom RTMS Meeting Assistant

Headless capture service for Zoom meetings using Real-Time Media Streams (RTMS). Receives webhook events, connects to RTMS WebSockets, records all media, and runs AI analysis via OpenClaw.

## Webhook Events Handled

This skill processes two Zoom webhook events:

- **`meeting.rtms_started`** — Zoom sends this when RTMS is activated for a meeting. Contains `server_urls`, `rtms_stream_id`, and `meeting_uuid` needed to connect to the RTMS WebSocket.
- **`meeting.rtms_stopped`** — Zoom sends this when RTMS ends (meeting ended or RTMS disabled). Triggers cleanup: closes WebSocket connections, generates screenshare PDF, sends summary notification.

## Webhook Dependency

This skill needs a public webhook endpoint to receive these events from Zoom.

**Preferred:** Use the **ngrok-unofficial-webhook-skill** (`skills/ngrok-unofficial-webhook-skill`). It auto-discovers this skill via `webhookEvents` in `skill.json`, notifies the user, and offers to route events here.

Other webhook solutions (e.g. custom servers, cloud functions) will work but require additional integration to forward payloads to this service.

## Prerequisites

```bash
cd skills/zoom-meeting-assistance-rtms-unofficial-community
npm install
```

Requires `ffmpeg` for post-meeting media conversion.

## Environment Variables

Set these in the skill's `.env` file:

**Required:**
- `ZOOM_SECRET_TOKEN` — Zoom webhook secret token
- `ZOOM_CLIENT_ID` — Zoom app Client ID
- `ZOOM_CLIENT_SECRET` — Zoom app Client Secret

**Optional:**
- `PORT` — Server port (default: `3000`)
- `AI_PROCESSING_INTERVAL_MS` — AI analysis frequency in ms (default: `30000`)
- `AI_FUNCTION_STAGGER_MS` — Delay between AI calls in ms (default: `5000`)
- `AUDIO_DATA_OPT` — `1` = mixed stream, `2` = multi-stream (default: `2`)
- `OPENCLAW_NOTIFY_CHANNEL` — Notification channel (default: `whatsapp`)
- `OPENCLAW_NOTIFY_TARGET` — Phone number / target for notifications

## Starting the Service

```bash
cd skills/zoom-meeting-assistance-rtms-unofficial-community
node index.js
```

This starts an Express server listening for Zoom webhook events on `PORT`.

**⚠️ Important:** Before forwarding webhooks to this service, always check if it's running:

```bash
# Check if service is listening on port 3000
lsof -i :3000
```

If nothing is returned, start the service first before forwarding any webhook events.

**Typical flow:**
1. Start the server as a background process
2. Zoom sends `meeting.rtms_started` webhook → service connects to RTMS WebSocket
3. Media streams in real-time: audio, video, transcript, screenshare, chat
4. AI processing runs periodically (dialog suggestions, sentiment, summary)
5. `meeting.rtms_stopped` → service closes connections, generates screenshare PDF

## Recorded Data

All recordings are stored organized by date:
```
skills/zoom-meeting-assistance-rtms-unofficial-community/recordings/YYYY/MM/DD/{streamId}/
```

Each stream folder contains:

| File | Content | Searchable |
|------|---------|-----------|
| `metadata.json` | Meeting metadata (UUID, stream ID, operator, start time) | ✅ |
| `transcript.txt` | Plain text transcript with timestamps and speaker names | ✅ Best for searching — grep-friendly, one line per utterance |
| `transcript.vtt` | VTT format transcript with timing cues | ✅ |
| `transcript.srt` | SRT format transcript | ✅ |
| `events.log` | Participant join/leave, active speaker changes (JSON lines) | ✅ |
| `chat.txt` | Chat messages with timestamps | ✅ |
| `ai_summary.md` | AI-generated meeting summary (markdown) | ✅ Key document — read this first for meeting overview |
| `ai_dialog.json` | AI dialog suggestions | ✅ |
| `ai_sentiment.json` | Sentiment analysis per participant | ✅ |
| `mixedaudio.raw` | Mixed audio stream (raw PCM) | ❌ Binary |
| `activespeakervideo.h264` | Active speaker video (raw H.264) | ❌ Binary |
| `processed/screenshare.pdf` | Deduplicated screenshare frames as PDF | ❌ Binary |

All summaries are also copied to a central folder for easy access:
```
skills/zoom-meeting-assistance-rtms-unofficial-community/summaries/summary_YYYY-MM-DDTHH-MM-SS_{streamId}.md
```

## Searching & Querying Past Meetings

To find and review past meeting data:

```bash
# List all recorded meetings by date
ls -R recordings/

# List meetings for a specific date
ls recordings/2026/01/28/

# Search across all transcripts for a keyword
grep -rl "keyword" recordings/*/*/*/*/transcript.txt

# Search for what a specific person said
grep "Chun Siong Tan" recordings/*/*/*/*/transcript.txt

# Read a meeting summary
cat recordings/YYYY/MM/DD/<streamId>/ai_summary.md

# Search summaries for a topic
grep -rl "topic" recordings/*/*/*/*/ai_summary.md

# Check who attended a meeting
cat recordings/YYYY/MM/DD/<streamId>/events.log

# Get sentiment for a meeting
cat recordings/YYYY/MM/DD/<streamId>/ai_sentiment.json
```

The `.txt`, `.md`, `.json`, and `.log` files are all text-based and searchable. Start with `ai_summary.md` for a quick overview, then drill into `transcript.txt` for specific quotes or details.

## API Endpoints

```bash
# Toggle WhatsApp notifications on/off
curl -X POST http://localhost:3000/api/notify-toggle -H "Content-Type: application/json" -d '{"enabled": false}'

# Check notification status
curl http://localhost:3000/api/notify-toggle
```

## Post-Meeting Processing

When `meeting.rtms_stopped` fires, the service automatically:
1. Generates PDF from screenshare images
2. Converts `mixedaudio.raw` → `mixedaudio.wav`
3. Converts `activespeakervideo.h264` → `activespeakervideo.mp4`
4. Muxes mixed audio + active speaker video into `final_output.mp4`

Manual conversion scripts are available but note that auto-conversion runs on meeting end, so manual re-runs are rarely needed.

## Reading Meeting Data

After or during a meeting, read files from `recordings/YYYY/MM/DD/{streamId}/`:

```bash
# List recorded meetings by date
ls -R recordings/

# Read transcript
cat recordings/YYYY/MM/DD/<streamId>/transcript.txt

# Read AI summary
cat recordings/YYYY/MM/DD/<streamId>/ai_summary.md

# Read sentiment analysis
cat recordings/YYYY/MM/DD/<streamId>/ai_sentiment.json
```

## Prompt Customization

Want different summary styles or analysis? Customize the AI prompts to fit your needs!

Edit these files to change AI behavior:

| File | Purpose | Example Customizations |
|------|---------|----------------------|
| `summary_prompt.md` | Meeting summary generation | Bullet points vs prose, focus areas, length |
| `query_prompt.md` | Query response formatting | Response style, detail level |
| `query_prompt_current_meeting.md` | Real-time meeting analysis | What to highlight during meetings |
| `query_prompt_dialog_suggestions.md` | Dialog suggestion style | Formal vs casual, suggestion count |
| `query_prompt_sentiment_analysis.md` | Sentiment scoring logic | Custom sentiment categories, thresholds |

**Tip:** Back up the originals before editing, so you can revert if needed.

Files in this skill

  • README.md6.4 KB
  • SKILL.md7.3 KB
  • _meta.json957 B
  • chatWithClawdbot.js9.1 KB
  • convertMeetingMedia.js1.6 KB
  • index.js29.3 KB
  • muxMixedAudioAndActiveSpeakerVideo.js1.4 KB
  • package-lock.json50.4 KB
  • package.json243 B
  • query_prompt.md1.9 KB
  • query_prompt_current_meeting.md1.3 KB
  • query_prompt_dialog_suggestions.md1.4 KB
  • query_prompt_sentiment_analysis.md1.9 KB
  • saveRawAudioAdvance.js1.2 KB
  • saveRawVideoAdvance.js1.9 KB
  • saveSharescreen.js7.7 KB
  • skill.json954 B
  • summary_prompt.md5.3 KB
  • tool.js1 KB
  • writeTranscriptToVtt.js4.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.