A real-time transcript streaming service for Zoom meetings using the Zoom Real-Time Meeting Service (RTMS) API. This demo showcases live transcription capabilities and is designed to integrate with Groq Compound for advanced AI processing.
- Real-Time Transcription: Live transcript streaming from Zoom meetings
- WebSocket Integration: Direct connection to Zoom's RTMS WebSocket endpoints
- Server-Sent Events: Real-time UI updates for transcript display
- Webhook Handling: Automatic handling of Zoom RTMS lifecycle events
- Security Headers: OWASP-compliant security headers implementation
- Cross-Platform: Runs on Deno, compatible with Val Town deployment
- Future AI Integration: Planned integration with Groq Compound for intelligent transcript processing
- Deno runtime
- Zoom App Marketplace account with RTMS enabled
- Environment variables configured (see below)
-
Clone the repository
git clone <repository-url> cd zoom-rtms
-
Install dependencies
# Dependencies are automatically managed by Deno # No npm install required
-
Configure environment variables
Create a
.envfile in the project root:# Zoom RTMS Credentials (from Zoom App Marketplace) ZOOM_CLIENT_ID=your_zoom_client_id ZOOM_CLIENT_SECRET=your_zoom_client_secret ZOOM_SECRET_TOKEN=your_zoom_secret_token # Optional: Custom webhook path (defaults to /webhook) WEBHOOK_PATH=/webhook # Groq API Key GROQ_API_KEY=your_groq_api_key # Salesforce MCP Configuration SALESFORCE_MCP_URL=your_salesforce_mcp_url # AI Model Configuration (Optional - Override to test different models) # All default to their specified fallback models if not set # Intelligent routing decisions (default: openai/gpt-oss-20b) MODEL_ROUTER=openai/gpt-oss-20b # Discovery mode analysis (default: openai/gpt-oss-20b) MODEL_DISCOVERY=openai/gpt-oss-20b # Fact extraction from research (default: openai/gpt-oss-20b) MODEL_EXTRACTOR=openai/gpt-oss-20b # Text compression/distillation (default: openai/gpt-oss-20b) MODEL_COMPRESSOR=openai/gpt-oss-20b # Main inference with MCP tools (default: openai/gpt-oss-120b) MODEL_INFERENCE=openai/gpt-oss-120b # Direct answers without tools (default: openai/gpt-oss-120b) MODEL_DIRECT_ANSWER=openai/gpt-oss-120b # Multi-tool response synthesis (default: openai/gpt-oss-120b) MODEL_SYNTHESIS=openai/gpt-oss-120b
deno task print
# or directly:
deno serve --port 9995 --watch --allow-read --allow-env --allow-write --allow-net ./main.jsdeno task prodThe application will be available at:
- Main UI:
http://localhost:9995/ - Webhook Endpoint:
http://localhost:9995/webhook - SSE Stream:
http://localhost:9995/events
-
Webhook Handler (
/webhook)- Receives RTMS lifecycle events from Zoom
- Handles meeting start/stop notifications
- Validates webhook signatures
-
WebSocket Connections
- Signaling WebSocket: Establishes RTMS session
- Media WebSocket: Receives real-time transcript data
-
Server-Sent Events (
/events)- Streams transcript data to connected clients
- Cross-isolate broadcasting for Deno Deploy
-
Live UI (
/)- Real-time transcript display
- EventSource-based updates
- Dark theme with monospace font (Menlo)
Zoom Meeting → RTMS Webhook → Signaling WS → Media WS → Transcripts → SSE → UI
- Create a Zoom App in the Zoom App Marketplace
- Enable RTMS in your app settings
- Configure Webhook URL pointing to your deployed endpoint
- Set Event Types to include:
meeting.rtms_startedmeeting.rtms_stoppedendpoint.url_validation
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Live transcript viewer UI |
/webhook |
POST | Zoom RTMS webhook handler |
/events |
GET | Server-Sent Events stream |
This project is designed to integrate with Groq Compound for intelligent transcript processing:
- Real-time Analysis: Process transcripts as they're received
- Summarization: Generate meeting summaries automatically
- Action Items: Extract tasks and follow-ups
- Sentiment Analysis: Analyze participant engagement
- Translation: Real-time language translation
- Q&A: Answer questions about meeting content
- Live transcript enhancement
- Automated meeting minutes
- Keyword extraction and tagging
- Speaker identification improvements
- Content moderation and filtering
├── main.js # Main application
├── deno.json # Deno configuration
├── deno.lock # Dependency lock file
└── README.md # This file
- Runtime: Deno
- Framework: Hono
- WebSockets: Native WebSocket API
- Security: OWASP-compliant headers
- Deployment: Deno Deploy compatible
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
This is a demonstration project for educational and development purposes. Ensure compliance with Zoom's terms of service and data privacy regulations when handling meeting transcripts. </xai:function_call">README.md