Scribe
OpenAIOfficialCreated by ZoomDistributed by OpenAI
- Skill
- Tool integration
- Automation and integrations
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured workflow for integrating Zoom Scribe AI services into your applications. It covers the end-to-end process of setting up transcription pipelines, from credential management and media ingestion to handling batch jobs and webhook callbacks. It distinguishes between synchronous fast-mode transcription and asynchronous batch processing, ensuring developers can select the appropriate mode for their specific latency and volume requirements.
What it does
- Guides the setup of authentication using JWT for Zoom AI services.
- Defines the workflow for both synchronous fast-mode and asynchronous batch transcription.
- Outlines requirements for media ingestion, chunking, and persistence.
- Provides instructions for implementing webhook callbacks for batch job notifications.
- Offers troubleshooting steps for common issues like credential drift or processing errors.
When to use it
- When you need to transcribe pre-recorded media files stored in cloud storage.
- When building automated transcription pipelines that require batch processing.
- When you need to integrate Zoom's AI transcription capabilities into an existing application.
- When you need to verify the status or manage the lifecycle of batch transcription jobs.
Advantages
- Provides a clear, step-by-step procedure for complex transcription integrations.
- Helps distinguish between different processing modes to optimize for latency.
- Includes essential guidance on security practices like webhook signature verification.
- Centralizes configuration requirements for S3-based batch processing.
Usage examples
- “How do I set up a batch transcription job for files in S3?”
- The agent will guide you through defining the input S3 URI, configuring the batch job parameters, and setting up a webhook to receive completion notifications.
- “What are the requirements for using the synchronous Scribe endpoint?”
- The agent will explain the POST /aiservices/scribe/transcribe endpoint, required file and config fields, and how to handle the immediate response.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/openai/scribe/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip scribe.zip -d .agents/skills
Documentation by Zoom
Zoom AI Services Scribe
Use this skill for Zoom Scribe transcription pipelines over uploaded or stored media. If the user needs live meeting media, compare against RTMS or Meeting SDK bot workflows first.
Workflow
Confirm the media source, size, language, expected latency, and whether fast mode or batch mode fits.
Set up Build-platform credentials and JWT handling separately from application transcription logic.
Design ingestion, chunking, retries, webhook callbacks, and persistence before connecting downstream AI workflows.
Implement a minimal transcription request and response parser, then add batching and operational monitoring.
Debug by checking credential audience, processing mode, media format, file size, backend timeout, and webhook delivery.
References
Full preserved guide: references/full-guide.md
Auth and processing modes: concepts/auth-and-processing-modes.md
High-level scenarios: scenarios/high-level-scenarios.md
Fast mode Node example: examples/fast-mode-node.md
Batch webhook pipeline: examples/batch-webhook-pipeline.md
API reference: references/api-reference.md
Common drift and breaks: troubleshooting/common-drift-and-breaks.md
Files
- ATTRIBUTION.mdAdded by AutoGineer859 B
- LICENSELicence file added by AutoGineer1.1 KiB
- RUNBOOK.md4.2 KiB
- SKILL.md1.5 KiB
- agents/openai.yaml138 B
- concepts/auth-and-processing-modes.md3.2 KiB
- examples/batch-webhook-pipeline.md1.6 KiB
- examples/fast-mode-node.md1.8 KiB
- references/api-reference.md2.6 KiB
- references/environment-variables.md1.5 KiB
- references/full-guide.md5.4 KiB
- references/samples-validation.md2.0 KiB
- references/versioning-and-drift.md2.0 KiB
- scenarios/high-level-scenarios.md3.1 KiB
- troubleshooting/common-drift-and-breaks.md4.6 KiB
troubleshooting/common-drift-and-breaks.md
Common Drift and Breaks
1. Auth fails even though credentials look correct
Likely causes:
wrong credential pair from the portal
expired JWT
mixing Build-platform credentials with non-Build Zoom app credentials
valid-looking key/secret pair that is not authorized for AI Services Scribe
Check:
issvalueexpwindowcurrent credential labels in portal
if the API responds with
{"code":124,"message":"Invalid Access token"}, treat that as a real upstream auth failure, not a transport problem
2. Fast mode request shape mismatch
Docs show JSON with file URL, but the official quickstart also proxies multipart upload and forwards a FormData request.
Use one clear model per service boundary:
client upload -> your backend multipart
backend upload proxy ->
multipart/form-datato/aiservices/scribe/transcribebackend URL-based submit -> JSON body with
fileURL
Symptoms:
browser request stays pending for a long time
backend eventually returns timeout or empty upstream reply
Preferred fix:
treat uploaded files and URL-based files as two separate request paths instead of forcing both through one JSON shape
3. Fast mode returns 413 Request Entity Too Large
Likely cause:
reverse proxy rejected the upload before the request reached your app
Known deployment check:
if nginx fronts the app, raise
client_max_body_sizeto match or exceed your server-side upload limit
Current Scribe fast-mode API limits:
maximum file size:
100 MBmaximum duration:
2 hours
4. Fast mode returns 504 Gateway time-out
Likely cause:
the request reached your backend, but synchronous processing took too long for the edge/proxy path
Observed deployment behavior:
public HTTPS can time out even when the same request path is valid and the backend is healthy
observed hosted sample timings:
~17.2 MB MP4: ~26s
~38.6 MB MP4: ~26-37s
~59.2 MB MP4: ~32-34s backend completion, but some browser requests still timed out first
Guardrail:
use fast mode for smaller, interactive files
use batch mode for large uploads or longer media where waiting synchronously through the web UI is brittle
add request-level logging for:
file name
file size
mime type
upstream elapsed time
response payload size and top-level keys so you can tell whether the origin completed successfully while the browser/edge timed out
for hosted UIs, wrap fast mode in an async request/polling flow instead of holding the browser open for the entire upstream response
if nginx access logs show
499while app logs later showzoom_request_finished status: 200, the transcription succeeded and only the browser-side request path was lost
5. Batch job accepted but outputs never appear
Likely causes:
S3 URI/auth mismatch
expired STS credentials
output layout/URI mismatch
webhook endpoint unreachable if you rely on callbacks
Check:
/jobs/{jobId}summary/jobs/{jobId}/filescloud storage permissions
6. Webhook verification fails
Current sample pattern uses:
x-zm-signaturex-zm-request-timestampHMAC-SHA256 with
sha256=prefix
If verification fails:
confirm raw body capture before JSON parsing
confirm timestamp header was included in the signed string
confirm the shared secret matches the job notification config
7. Health check says credentials exist, but API calls still fail
Likely cause:
environment file contains literal placeholders such as
${ZOOM_API_KEY}or${ZOOM_API_SECRET}
Guardrail:
only treat credentials as present if they are real values, not unresolved shell placeholders
fail fast with a clear credential error before attempting Zoom calls
8. Wrong product chosen
Symptoms:
trying to use Scribe for live in-meeting media
trying to use RTMS for offline archive transcription
Guardrail:
file/storage transcription ->
scribelive meeting media ->
rtms
9. Browser microphone chunk 1 works but later chunks are empty
Likely cause:
the browser emitted a valid first container chunk, but later
MediaRecordertimeslice blobs were partial WebM/Opus clusters without fresh container headers
Symptoms:
chunk 1 transcribes normally
chunk 2 onward returns empty transcript text or much weaker results
auth and request flow still look healthy
Preferred fix:
do not rely on one long
MediaRecorder.start(timeslice)session for standalone chunk uploadsrotate the recorder per chunk instead:
start recorder
record one chunk window
stop recorder
upload that blob
start a new recorder for the next chunk
Guardrail:
treat browser microphone pseudo-streaming as a file-container problem first, not a Scribe-language-model problem
Requirements and compatibility
Written for: OpenAI Codex
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Zoom
- Publisher
- OpenAI (Official)
- Distributed by
- OpenAI
- Source
- openai/plugins · plugins/zoom/skills/scribe · commit d420d13
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from plugins/zoom/LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Zoom or OpenAI.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download scribe.zip