{
  "schemaVersion": "1.0",
  "item": {
    "slug": "zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "name": "Zoom Meeting Assistance Rtms Unofficial Community",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/tanchunsiong/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "canonicalUrl": "https://clawhub.ai/tanchunsiong/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "chatWithClawdbot.js",
      "convertMeetingMedia.js",
      "index.js",
      "muxMixedAudioAndActiveSpeakerVideo.js"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/zoom-meeting-assistance-with-rtms-unofficial-community-skill"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/zoom-meeting-assistance-with-rtms-unofficial-community-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/zoom-meeting-assistance-with-rtms-unofficial-community-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/zoom-meeting-assistance-with-rtms-unofficial-community-skill/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Zoom RTMS Meeting Assistant",
        "body": "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."
      },
      {
        "title": "Webhook Events Handled",
        "body": "This skill processes two Zoom webhook events:\n\nmeeting.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.\nmeeting.rtms_stopped — Zoom sends this when RTMS ends (meeting ended or RTMS disabled). Triggers cleanup: closes WebSocket connections, generates screenshare PDF, sends summary notification."
      },
      {
        "title": "Webhook Dependency",
        "body": "This skill needs a public webhook endpoint to receive these events from Zoom.\n\nPreferred: 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.\n\nOther webhook solutions (e.g. custom servers, cloud functions) will work but require additional integration to forward payloads to this service."
      },
      {
        "title": "Prerequisites",
        "body": "cd skills/zoom-meeting-assistance-rtms-unofficial-community\nnpm install\n\nRequires ffmpeg for post-meeting media conversion."
      },
      {
        "title": "Environment Variables",
        "body": "Set these in the skill's .env file:\n\nRequired:\n\nZOOM_SECRET_TOKEN — Zoom webhook secret token\nZOOM_CLIENT_ID — Zoom app Client ID\nZOOM_CLIENT_SECRET — Zoom app Client Secret\n\nOptional:\n\nPORT — Server port (default: 3000)\nAI_PROCESSING_INTERVAL_MS — AI analysis frequency in ms (default: 30000)\nAI_FUNCTION_STAGGER_MS — Delay between AI calls in ms (default: 5000)\nAUDIO_DATA_OPT — 1 = mixed stream, 2 = multi-stream (default: 2)\nOPENCLAW_NOTIFY_CHANNEL — Notification channel (default: whatsapp)\nOPENCLAW_NOTIFY_TARGET — Phone number / target for notifications"
      },
      {
        "title": "Starting the Service",
        "body": "cd skills/zoom-meeting-assistance-rtms-unofficial-community\nnode index.js\n\nThis starts an Express server listening for Zoom webhook events on PORT.\n\n⚠️ Important: Before forwarding webhooks to this service, always check if it's running:\n\n# Check if service is listening on port 3000\nlsof -i :3000\n\nIf nothing is returned, start the service first before forwarding any webhook events.\n\nTypical flow:\n\nStart the server as a background process\nZoom sends meeting.rtms_started webhook → service connects to RTMS WebSocket\nMedia streams in real-time: audio, video, transcript, screenshare, chat\nAI processing runs periodically (dialog suggestions, sentiment, summary)\nmeeting.rtms_stopped → service closes connections, generates screenshare PDF"
      },
      {
        "title": "Recorded Data",
        "body": "All recordings are stored organized by date:\n\nskills/zoom-meeting-assistance-rtms-unofficial-community/recordings/YYYY/MM/DD/{streamId}/\n\nEach stream folder contains:\n\nFileContentSearchablemetadata.jsonMeeting metadata (UUID, stream ID, operator, start time)✅transcript.txtPlain text transcript with timestamps and speaker names✅ Best for searching — grep-friendly, one line per utterancetranscript.vttVTT format transcript with timing cues✅transcript.srtSRT format transcript✅events.logParticipant join/leave, active speaker changes (JSON lines)✅chat.txtChat messages with timestamps✅ai_summary.mdAI-generated meeting summary (markdown)✅ Key document — read this first for meeting overviewai_dialog.jsonAI dialog suggestions✅ai_sentiment.jsonSentiment analysis per participant✅mixedaudio.rawMixed audio stream (raw PCM)❌ Binaryactivespeakervideo.h264Active speaker video (raw H.264)❌ Binaryprocessed/screenshare.pdfDeduplicated screenshare frames as PDF❌ Binary\n\nAll summaries are also copied to a central folder for easy access:\n\nskills/zoom-meeting-assistance-rtms-unofficial-community/summaries/summary_YYYY-MM-DDTHH-MM-SS_{streamId}.md"
      },
      {
        "title": "Searching & Querying Past Meetings",
        "body": "To find and review past meeting data:\n\n# List all recorded meetings by date\nls -R recordings/\n\n# List meetings for a specific date\nls recordings/2026/01/28/\n\n# Search across all transcripts for a keyword\ngrep -rl \"keyword\" recordings/*/*/*/*/transcript.txt\n\n# Search for what a specific person said\ngrep \"Chun Siong Tan\" recordings/*/*/*/*/transcript.txt\n\n# Read a meeting summary\ncat recordings/YYYY/MM/DD/<streamId>/ai_summary.md\n\n# Search summaries for a topic\ngrep -rl \"topic\" recordings/*/*/*/*/ai_summary.md\n\n# Check who attended a meeting\ncat recordings/YYYY/MM/DD/<streamId>/events.log\n\n# Get sentiment for a meeting\ncat recordings/YYYY/MM/DD/<streamId>/ai_sentiment.json\n\nThe .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."
      },
      {
        "title": "API Endpoints",
        "body": "# Toggle WhatsApp notifications on/off\ncurl -X POST http://localhost:3000/api/notify-toggle -H \"Content-Type: application/json\" -d '{\"enabled\": false}'\n\n# Check notification status\ncurl http://localhost:3000/api/notify-toggle"
      },
      {
        "title": "Post-Meeting Processing",
        "body": "When meeting.rtms_stopped fires, the service automatically:\n\nGenerates PDF from screenshare images\nConverts mixedaudio.raw → mixedaudio.wav\nConverts activespeakervideo.h264 → activespeakervideo.mp4\nMuxes mixed audio + active speaker video into final_output.mp4\n\nManual conversion scripts are available but note that auto-conversion runs on meeting end, so manual re-runs are rarely needed."
      },
      {
        "title": "Reading Meeting Data",
        "body": "After or during a meeting, read files from recordings/YYYY/MM/DD/{streamId}/:\n\n# List recorded meetings by date\nls -R recordings/\n\n# Read transcript\ncat recordings/YYYY/MM/DD/<streamId>/transcript.txt\n\n# Read AI summary\ncat recordings/YYYY/MM/DD/<streamId>/ai_summary.md\n\n# Read sentiment analysis\ncat recordings/YYYY/MM/DD/<streamId>/ai_sentiment.json"
      },
      {
        "title": "Prompt Customization",
        "body": "Want different summary styles or analysis? Customize the AI prompts to fit your needs!\n\nEdit these files to change AI behavior:\n\nFilePurposeExample Customizationssummary_prompt.mdMeeting summary generationBullet points vs prose, focus areas, lengthquery_prompt.mdQuery response formattingResponse style, detail levelquery_prompt_current_meeting.mdReal-time meeting analysisWhat to highlight during meetingsquery_prompt_dialog_suggestions.mdDialog suggestion styleFormal vs casual, suggestion countquery_prompt_sentiment_analysis.mdSentiment scoring logicCustom sentiment categories, thresholds\n\nTip: Back up the originals before editing, so you can revert if needed."
      }
    ],
    "body": "Zoom RTMS Meeting Assistant\n\nHeadless 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.\n\nWebhook Events Handled\n\nThis skill processes two Zoom webhook events:\n\nmeeting.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.\nmeeting.rtms_stopped — Zoom sends this when RTMS ends (meeting ended or RTMS disabled). Triggers cleanup: closes WebSocket connections, generates screenshare PDF, sends summary notification.\nWebhook Dependency\n\nThis skill needs a public webhook endpoint to receive these events from Zoom.\n\nPreferred: 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.\n\nOther webhook solutions (e.g. custom servers, cloud functions) will work but require additional integration to forward payloads to this service.\n\nPrerequisites\ncd skills/zoom-meeting-assistance-rtms-unofficial-community\nnpm install\n\n\nRequires ffmpeg for post-meeting media conversion.\n\nEnvironment Variables\n\nSet these in the skill's .env file:\n\nRequired:\n\nZOOM_SECRET_TOKEN — Zoom webhook secret token\nZOOM_CLIENT_ID — Zoom app Client ID\nZOOM_CLIENT_SECRET — Zoom app Client Secret\n\nOptional:\n\nPORT — Server port (default: 3000)\nAI_PROCESSING_INTERVAL_MS — AI analysis frequency in ms (default: 30000)\nAI_FUNCTION_STAGGER_MS — Delay between AI calls in ms (default: 5000)\nAUDIO_DATA_OPT — 1 = mixed stream, 2 = multi-stream (default: 2)\nOPENCLAW_NOTIFY_CHANNEL — Notification channel (default: whatsapp)\nOPENCLAW_NOTIFY_TARGET — Phone number / target for notifications\nStarting the Service\ncd skills/zoom-meeting-assistance-rtms-unofficial-community\nnode index.js\n\n\nThis starts an Express server listening for Zoom webhook events on PORT.\n\n⚠️ Important: Before forwarding webhooks to this service, always check if it's running:\n\n# Check if service is listening on port 3000\nlsof -i :3000\n\n\nIf nothing is returned, start the service first before forwarding any webhook events.\n\nTypical flow:\n\nStart the server as a background process\nZoom sends meeting.rtms_started webhook → service connects to RTMS WebSocket\nMedia streams in real-time: audio, video, transcript, screenshare, chat\nAI processing runs periodically (dialog suggestions, sentiment, summary)\nmeeting.rtms_stopped → service closes connections, generates screenshare PDF\nRecorded Data\n\nAll recordings are stored organized by date:\n\nskills/zoom-meeting-assistance-rtms-unofficial-community/recordings/YYYY/MM/DD/{streamId}/\n\n\nEach stream folder contains:\n\nFile\tContent\tSearchable\nmetadata.json\tMeeting metadata (UUID, stream ID, operator, start time)\t✅\ntranscript.txt\tPlain text transcript with timestamps and speaker names\t✅ Best for searching — grep-friendly, one line per utterance\ntranscript.vtt\tVTT format transcript with timing cues\t✅\ntranscript.srt\tSRT format transcript\t✅\nevents.log\tParticipant join/leave, active speaker changes (JSON lines)\t✅\nchat.txt\tChat messages with timestamps\t✅\nai_summary.md\tAI-generated meeting summary (markdown)\t✅ Key document — read this first for meeting overview\nai_dialog.json\tAI dialog suggestions\t✅\nai_sentiment.json\tSentiment analysis per participant\t✅\nmixedaudio.raw\tMixed audio stream (raw PCM)\t❌ Binary\nactivespeakervideo.h264\tActive speaker video (raw H.264)\t❌ Binary\nprocessed/screenshare.pdf\tDeduplicated screenshare frames as PDF\t❌ Binary\n\nAll summaries are also copied to a central folder for easy access:\n\nskills/zoom-meeting-assistance-rtms-unofficial-community/summaries/summary_YYYY-MM-DDTHH-MM-SS_{streamId}.md\n\nSearching & Querying Past Meetings\n\nTo find and review past meeting data:\n\n# List all recorded meetings by date\nls -R recordings/\n\n# List meetings for a specific date\nls recordings/2026/01/28/\n\n# Search across all transcripts for a keyword\ngrep -rl \"keyword\" recordings/*/*/*/*/transcript.txt\n\n# Search for what a specific person said\ngrep \"Chun Siong Tan\" recordings/*/*/*/*/transcript.txt\n\n# Read a meeting summary\ncat recordings/YYYY/MM/DD/<streamId>/ai_summary.md\n\n# Search summaries for a topic\ngrep -rl \"topic\" recordings/*/*/*/*/ai_summary.md\n\n# Check who attended a meeting\ncat recordings/YYYY/MM/DD/<streamId>/events.log\n\n# Get sentiment for a meeting\ncat recordings/YYYY/MM/DD/<streamId>/ai_sentiment.json\n\n\nThe .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.\n\nAPI Endpoints\n# Toggle WhatsApp notifications on/off\ncurl -X POST http://localhost:3000/api/notify-toggle -H \"Content-Type: application/json\" -d '{\"enabled\": false}'\n\n# Check notification status\ncurl http://localhost:3000/api/notify-toggle\n\nPost-Meeting Processing\n\nWhen meeting.rtms_stopped fires, the service automatically:\n\nGenerates PDF from screenshare images\nConverts mixedaudio.raw → mixedaudio.wav\nConverts activespeakervideo.h264 → activespeakervideo.mp4\nMuxes mixed audio + active speaker video into final_output.mp4\n\nManual conversion scripts are available but note that auto-conversion runs on meeting end, so manual re-runs are rarely needed.\n\nReading Meeting Data\n\nAfter or during a meeting, read files from recordings/YYYY/MM/DD/{streamId}/:\n\n# List recorded meetings by date\nls -R recordings/\n\n# Read transcript\ncat recordings/YYYY/MM/DD/<streamId>/transcript.txt\n\n# Read AI summary\ncat recordings/YYYY/MM/DD/<streamId>/ai_summary.md\n\n# Read sentiment analysis\ncat recordings/YYYY/MM/DD/<streamId>/ai_sentiment.json\n\nPrompt Customization\n\nWant different summary styles or analysis? Customize the AI prompts to fit your needs!\n\nEdit these files to change AI behavior:\n\nFile\tPurpose\tExample Customizations\nsummary_prompt.md\tMeeting summary generation\tBullet points vs prose, focus areas, length\nquery_prompt.md\tQuery response formatting\tResponse style, detail level\nquery_prompt_current_meeting.md\tReal-time meeting analysis\tWhat to highlight during meetings\nquery_prompt_dialog_suggestions.md\tDialog suggestion style\tFormal vs casual, suggestion count\nquery_prompt_sentiment_analysis.md\tSentiment scoring logic\tCustom sentiment categories, thresholds\n\nTip: Back up the originals before editing, so you can revert if needed."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tanchunsiong/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "publisherUrl": "https://clawhub.ai/tanchunsiong/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "owner": "tanchunsiong",
    "version": "0.1.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/zoom-meeting-assistance-with-rtms-unofficial-community-skill",
    "agentUrl": "https://openagent3.xyz/skills/zoom-meeting-assistance-with-rtms-unofficial-community-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/zoom-meeting-assistance-with-rtms-unofficial-community-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/zoom-meeting-assistance-with-rtms-unofficial-community-skill/agent.md"
  }
}