Transcripción y Resumen de Llamadas
El problema
Una llamada de ventas de 45 minutos genera información crítica: necesidades del cliente, objeciones mencionadas, acuerdos verbales, próximos pasos comprometidos. Todo eso vive en la memoria del comercial, o en notas incompletas que nunca llegan al CRM. Cuando el comercial enferma, tiene vacaciones, o simplemente olvida, esa información desaparece. Y el CRM sigue en blanco.
Este flujo recibe el audio cuando termina una llamada, transcribe con Whisper, extrae los datos estructurados con Claude, actualiza HubSpot automáticamente, y notifica al equipo en Slack.
Herramientas necesarias
- n8n (self-hosted o cloud)
- Webhook — recibe evento "llamada terminada" de tu sistema de telefonía (Aircall, Ringover, Twilio, CallRail, etc.)
- HTTP Request (OpenAI Whisper API) — transcripción del audio
- HTTP Request (Claude API) — extracción de datos estructurados
- HubSpot (node nativo n8n) — actualizar contacto y crear nota
- Slack (node nativo n8n) — notificar al equipo
- Credenciales: OpenAI API key, Anthropic API key, HubSpot API key, Slack Bot Token
- Requisito: tu sistema de telefonía debe poder enviar un webhook al final de cada llamada con la URL de descarga del audio
Configuración paso a paso
Nodo 1 — Webhook (call.ended)
- Method:
POST - Path:
llamada-terminada - Body esperado (ejemplo Aircall):
{
"event": "call.ended",
"data": {
"id": "call_123",
"recording": "https://storage.aircall.io/recordings/call_123.mp3",
"contact": { "id": "ct_456", "phone_number": "+34600000000" },
"duration": 2700,
"agent": { "email": "comercial@empresa.com" }
}
}
Nodo 2 — HTTP Request (descargar audio)
- Method:
GET - URL:
{{ $json.data.recording }} - Response Format:
File - Esto descarga el archivo MP3 en memoria para pasarlo a Whisper
Nodo 3 — HTTP Request (Whisper API — transcripción)
- Method:
POST - URL:
https://api.openai.com/v1/audio/transcriptions - Authentication: Bearer Token → tu OpenAI API key
- Body Format:
Form Data(multipart) - Campos:
file:{{ $binary.data }}(el archivo descargado)model:whisper-1language:esresponse_format:text
- Nota: Whisper admite archivos hasta 25MB. Para llamadas largas, comprime el audio primero o usa la versión via URL si tu proveedor lo soporta.
Nodo 4 — HTTP Request (Claude API — extracción)
- Method:
POST - URL:
https://api.anthropic.com/v1/messages - Headers:
x-api-key,anthropic-version: 2023-06-01 - Body:
{
"model": "claude-opus-4-5",
"max_tokens": 600,
"messages": [{ "role": "user", "content": "{{ $json.prompt_extraccion }}" }]
}
Nodo 5 — HubSpot (Create Note on Contact)
- Resource:
Engagement - Operation:
Create - Type:
NOTE - Contact ID: busca por teléfono primero con HTTP Request a HubSpot API
- Body: transcripción completa + resumen estructurado de Claude
Nodo 6 — HubSpot (Update Contact Properties)
- Actualiza propiedades del contacto según lo extraído:
hs_lead_statussegún el estado identificadonext_activity_datecon la fecha del próximo pasodeal_stagesi corresponde
Nodo 7 — Slack (Send)
- Channel:
#ventas-seguimientos - Message: resumen de la llamada con próximos pasos destacados
Ejemplo de prompt IA
Analiza la siguiente transcripción de una llamada de ventas y extrae información estructurada para actualizar el CRM.
TRANSCRIPCIÓN:
{{ $node['HTTP Request Whisper'].json.text }}
DURACIÓN: {{ Math.floor($node['Webhook'].json.data.duration / 60) }} minutos
AGENTE: {{ $node['Webhook'].json.data.agent.email }}
Devuelve ÚNICAMENTE este JSON:
{
"resumen_ejecutivo": "2-3 frases resumiendo la llamada",
"interes_nivel": "alto|medio|bajo|no_cualificado",
"presupuesto_mencionado": "valor o null",
"plazo_decision": "fecha o plazo mencionado o null",
"objeciones": ["lista de objeciones mencionadas"],
"proximos_pasos": ["lista de compromisos y acciones acordadas"],
"fecha_siguiente_contacto": "fecha en formato YYYY-MM-DD o null",
"estado_deal": "prospecto|calificado|propuesta_enviada|negociacion|cerrado_ganado|cerrado_perdido"
}
Ahorro estimado
- Toma de notas post-llamada: 10-15 min/llamada eliminados
- Actualización de CRM: prácticamente automática (de 0% a 100% de llamadas registradas)
- Con 10 llamadas/semana: 1.5-2.5 horas ahorradas semanalmente
- Pérdida de información entre comerciales: prácticamente eliminada