Contacto
1. Concepto y Requisitos Previos

La automatización escucha cuándo se termina de procesar el resumen nativo de una reunión en Zoom, lo recoge mediante un webhook en Make/n8n y envía el contenido a Gamma a través de su API para generar una presentación automáticamente.

Requisitos en Zoom

  • Cuenta Zoom Business y Gamma Pro (obligatorio para usar la API de Server-to-Server OAuth y Meeting Summary).
  • Tener en la cuenta activa la opción AI Companion y el Meeting Summary with AI Companion.
2. Crear la App en Zoom

Para poder escuchar los eventos de Zoom, necesitamos una app interna que envíe los datos al webhook de nuestra automatización.

  • Ir a Zoom App Marketplace y pulsar en Develop > Build App.
  • Crear app de tipo Server-to-Server OAuth.
  • App credentials: Guardar el Account ID, Client ID y Client Secret.
  • Features (Event Subscriptions): Activar y añadir el Evento Meeting summary has been completed. Añadir la URL del Webhook de Make/n8n.
  • Scopes: Añadir el scope meeting_summary:read:admin.
  • Activar la app en la pestaña Activation.
3. Crear la automatización en Make/n8n

3.1 Crear el escenario y Webhook

Crear un módulo Custom webhook, copiar su URL y pegarla en Zoom. Al capturar el payload, llegarán campos vitales como payload.object.meeting_host_email o payload.object.summary_content.

Filtro recomendado: Usa un filtro tras el webhook (por ejemplo, meeting_topic contains WEBINAR) para solo generar presentaciones de ciertas reuniones.

3.2 Nodo OAuth a Zoom

Añadir un nodo HTTP (Make a request) para autenticarse:

  • Authentication type: Basic auth
  • Credentials: Username: ClientID, Password: Client Secret
  • URL: https://zoom.us/oauth/token?grant_type=account_credentials&account_id=TU_ACCOUNT_ID
  • Method: POST

3.3 Nodo de Gamma: Crear la presentación

Módulo HTTP para enviar datos a la API de Gamma (https://public-api.gamma.app/v1.0/generations):

  • Header: X-API-KEY: tu_api_key_de_gamma
  • Body input method: Usar "Data structure" (muy importante para evitar errores de sintaxis con JSON text).
  • Campos clave: inputText, additionalInstructions, format: presentation, cardOptions: Collection -> dimensions: 16x9.
4. Nodo Sleep

Gamma no devuelve la presentación finalizada al instante. Primero entrega un identificador de generación y luego hay que consultar su estado dependiendo del número de diapositivas puede tardar 1-3 minutos.

Añade un nodo Sleep con un retraso de 60 segundos para darle tiempo inicial a Gamma a crear la presentación.

5. Nodo para comprobar el estado

Este paso realiza el primer polling consultando el estado con el id generado previamente.

Añade un módulo HTTP GET a la URL: https://public-api.gamma.app/v1.0/generations/{{generationId}}.
No olvides añadir en el header X-API-KEY: tu API key de Gamma.

Los estados devueltos esperados serán pending (Gamma todavía está generando) o completed (lista).

6. Router

Después del nodo de comprobación de estado, añadir un Router con dos ramas mediante filtros de status = completed o status = pending:

  • Rama pending: Añadir un nuevo Sleep de 60 seconds y tras ello duplicar el nodo de comprobación de estado de nuevo. (polling)
  • Rama completed: Cuando el estado sea completed, ya se pueden usar directamente los campos de salida para descargar el archivo. {{gammaUrl}} (link online) y {{exportUrl}} (link de descarga PDF).
7. Email final con el resultado

En la rama completed del router, añade un módulo de email (Outlook o Gmail) y mapea directamente las URLs devueltas por Gamma en el nodo que comprobó el estado.

El cuerpo del email quedará por tanto con información útil incluyendo {{gammaUrl}} y {{exportUrl}}.

8. Errores y problemas típicos
  • Zoom envía el evento pero no llega summary_content: revisar que el evento elegido sea exactamente "Meeting summary has been completed".
  • Error al crear el JSON en Gamma: Siempre usar el modo Data structure en Make en lugar de JSON string.
  • Error con aspectRatio: en este endpoint no se usa aspectRatio; hay que usar cardOptions.dimensions = 16x9.
  • Gamma devuelve un error 404 al comprobar estado: Suele ocurrir si el generationId no se ha mapeado bien en la URL.
  • No aparecen gammaUrl o exportUrl: Solo aparecen esos campos cuando el estado sea completed.
  • El resumen sale raro o en otro idioma: suele deberse a una transcripción pobre en la reunión original de zoom.
9. Checklist final
  • Zoom Business con Meeting Summary activo.
  • App de Zoom creada como Server-to-Server OAuth.
  • Features: Event Subscriptions activo y evento "Meeting summary has been completed".
  • Scope configurado: meeting_summary:read:admin.
  • Webhook de Make validado correctamente y filtro definido.
  • Nodo de Gamma configurado con Data structure.
  • Polling cada 60 segundos con Router para pending/completed.
  • Email final con url e id de descarga listos.