Instalación
Instala zm y empieza con acceso API o archivos de transcripción descargados.
Instala la herramienta Zoom en el equipo donde trabaja tu agente, conecta la cuenta y obtén una
primera reunión. El paquete es @wirecat/zoom-cli y la orden, zm. Puedes reutilizar una app
configurada, crear la tuya o importar texto sin app ni login.
Requisitos
- Node.js 22.16 o posterior en 22.x, o Node.js 24 o posterior, con npm. También funciona con Bun.
Instala Node.js desde nodejs.org si falta
node --version. - Linux, macOS o Windows. Abre un terminal de ese equipo para las órdenes siguientes.
- Para login API, un almacén de contraseñas operativo. macOS usa Keychain, Windows Credential Manager y Linux necesita un servicio de secretos de escritorio accesible. Un servidor sin él no puede guardar la sesión; sigue disponible importar archivos.
- Una cuenta Zoom autorizada a instalar la app. Tu organización puede exigir aprobación del administrador.
Instalar
npm install -g @wirecat/zoom-cli
zm --version
zm --help
zm doctorVersión y ayuda aparecen sin login. Doctor comprueba entorno y ajustes públicos sin contactar con
Zoom ni abrir la base. Si falta zm, vuelve a abrir el terminal y comprueba que el directorio global
de ejecutables npm esté en PATH, la lista de carpetas donde se buscan órdenes.
Elige cómo conectar
| Situación inicial | Siguiente acción |
|---|---|
| Ya creaste una app Zoom | Abre credenciales, activa Public Client OAuth y copia Public Client ID; revisa la lista inferior |
| Tu equipo facilita una app, incluida WireCat | Obtén Public Client ID del dueño y confirma que tu usuario puede autorizarla; sigue el mismo login |
| Necesitas una app | Crea la tuya y vuelve con el Public Client ID |
| Solo tienes transcripciones | Omite el login y usa importación sin app |
Una app Zoom es un registro de permisos en Marketplace, distinto de tu cuenta y la aplicación de
llamadas. No hay archivo de credenciales: configura Public Client ID y autoriza tu cuenta en el navegador. zm necesita un ID explícito; instalarlo no selecciona una app. Una app en desarrollo
puede estar limitada a la cuenta del desarrollador. Un ID solo no da acceso a datos ajenos.
Antes del login, el dueño comprueba ajustes en el mismo entorno Development o Production que el ID elegido:
| Ajuste | Valor necesario |
|---|---|
| Tipo / gestión | General app / User-managed |
| Use Public Client OAuth | Activado; copia Public Client ID, no Client ID normal ni Client Secret |
| OAuth Redirect URL | https://wirecat.dev/zoom-callback |
| OAuth Allow Lists | Incluye https://wirecat.dev/zoom-callback |
| Scopes | Permisos de lectura; archivo/gestión solo para esas tareas |
Primera ejecución
Sustituye <public-client-id> por el valor copiado sin signos angulares. Ejecuta una orden cada vez;
mantén abierto el terminal mientras apruebas en el navegador:
zm config set zoom.clientId <public-client-id>
zm config set source api
zm login- Entra en la cuenta correcta en el navegador y revisa los permisos.
- Pulsa Allow. Zoom abre el retorno WireCat, que envía la autorización al proceso
zmesperando. - Vuelve al terminal. El login termina cuando
zminformaloggedIn: truey vuelve al indicador. Aprobar en el navegador solo no basta. - Si espera, copia
code=…&state=…o la URL completa, pégalo en ese mismo terminal y pulsa Enter antes del límite de cinco minutos. Si ya terminó, ejecutazm loginotra vez y aprueba el intento nuevo.
Comprueba la sesión guardada y elige un perfil, una etiqueta local de las reuniones:
zm session status --json
zm config set account.profile personal
zm pull --lookback-days 7
zm meetings list --jsonLa sesión debe informar loggedIn: true. La obtención guarda reuniones disponibles del anfitrión;
la lista devuelve sus ID locales. Abre una con el ID de esa lista:
zm meetings show <meeting-id> --json
zm meetings transcript <meeting-id> --jsonLa lista puede estar vacía si no hay reuniones disponibles del anfitrión en ese periodo. Texto vacío significa que Zoom no lo proporcionó; el permiso no lo crea. Revisa retención y descarga un periodo anterior si hace falta. El error de scope nombra el permiso; autoriza otra vez tras añadirlo el dueño.
Un perfil local no cambia la cuenta elegida en el navegador. Para separar cuentas, consulta sesiones, y si no termina la aprobación, recuperación del login.
Importar sin una app Zoom
Usa un VTT que tengas permiso de descargar o un archivo del anfitrión. Ponlo en una carpeta y nómbralo
por fecha, hora y título, por ejemplo 2026-10-01_1000_example-planning.vtt. La hora del nombre se
interpreta en la zona configurada:
zm config set account.profile personal
zm config set files.timezone Europe/Madrid
zm import ./downloaded-transcripts
zm meetings list --jsonNo necesitas app, login ni token OAuth. La importación lee archivos .vtt normales directamente en
la carpeta, sin recursión ni deducir asistentes por nombres. Consulta transcripciones descargadas.
Da acceso a tu agente
Tras guardar la primera reunión, instala las instrucciones para un agente de terminal:
zm skill install --for agentsSe elige el directorio Codex/Gemini; usa --for claude para Claude Code u omite --for para ambos.
Para una app con MCP, consulta MCP e instrucciones. Prueba a pedir:
Busca la reunión que acabo de importar o descargar. Muestra fecha, discusión principal y un pasaje que la apoye. Indica si falta texto o información de participantes.Dónde se guardan los archivos
La herramienta crea config.json público al configurar; no es un archivo de credenciales descargado. zm doctor --json muestra su ubicación. La configuración usa el directorio de aplicaciones de tu plataforma. ZM_CONFIG_DIR elige otro
y cambia el servicio del almacén de login. Las reuniones usan wirecat.db compartida;
MESSAGING_STORE elige otra base. Las grabaciones van solo al destino indicado. Consulta configuración.
Actualizar o quitar la herramienta
npm install -g @wirecat/zoom-cli
zm --versionPara quitar la orden:
npm uninstall -g @wirecat/zoom-cliDesinstalar el paquete no borra la base compartida ni carpetas de grabaciones. Revoca acceso en Marketplace si quieres retirar la autorización. No existe orden de logout; sesiones explica los controles disponibles.
Completar comandos
zm complete -- <words...> responde a peticiones de completado, pero no lo instala en el intérprete.
zm commands --json enumera órdenes y opciones para agentes y scripts.
Cuando veas la primera reunión, busca su texto y conserva referencias.