Generar automáticamente presentaciones de ventas con GPT-4o y Google Slides basadas en llamadas de Claap
Este es unCRM, Multimodal AIflujo de automatización del dominio deautomatización que contiene 20 nodos.Utiliza principalmente nodos como If, Set, Code, Slack, Switch. Usar GPT-4o y Google Slides para generar automáticamente presentaciones de ventas a partir de llamadas de Claap
- •Bot Token de Slack o URL de Webhook
- •Clave de API de HubSpot
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Clave de API de OpenAI
Nodos utilizados (20)
Categoría
{
"meta": {
"instanceId": "d3e4902970aa37f340c04e2f2a31d62f0faafec176f1cad2990afef1086b6b99",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "45c60520-7937-4ccb-95e7-6805ee8e2f0a",
"name": "Duplicar presentación",
"type": "n8n-nodes-base.httpRequest",
"position": [
1872,
2240
],
"parameters": {
"url": "=https://www.googleapis.com/drive/v3/files/{{ $('Set presentation id').item.json.presentationId }}/copy",
"method": "POST",
"options": {},
"jsonBody": "={\n \"name\": \"Claap x {{ $('Extract call info').item.json.client }} - Demo\"\n} ",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"nodeCredentialType": "googleDriveOAuth2Api"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "udvmM2IU9jsvADPe",
"name": "Google Drive account"
}
},
"typeVersion": 4.2
},
{
"id": "8b92b5d8-00c7-4394-b45f-ef925a943600",
"name": "Publicar presentación",
"type": "n8n-nodes-base.httpRequest",
"position": [
2080,
2240
],
"parameters": {
"url": "=https://www.googleapis.com/drive/v3/files/{{ $json.id }}/permissions?supportsAllDrives=true",
"method": "POST",
"options": {},
"jsonBody": "{\n \"role\": \"reader\",\n \"type\": \"anyone\",\n \"allowFileDiscovery\": true\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleDriveOAuth2Api"
},
"typeVersion": 4.2
},
{
"id": "f594056f-b564-4ae8-b771-962640de5c8a",
"name": "Establecer usuario como editor",
"type": "n8n-nodes-base.httpRequest",
"position": [
2304,
2240
],
"parameters": {
"url": "=https://www.googleapis.com/drive/v3/files/{{ $('Duplicate presentation').item.json.id }}/permissions?supportsAllDrives=true",
"method": "POST",
"options": {},
"jsonBody": "{\n \"role\": \"writer\",\n \"type\": \"user\",\n \"emailAddress\": \"editor@example.com\"\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleDriveOAuth2Api"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "udvmM2IU9jsvADPe",
"name": "Google Drive account"
}
},
"typeVersion": 4.2
},
{
"id": "0ce4dd64-60b6-42f4-a21e-836ad013a0b2",
"name": "Seleccionar plantilla de presentación",
"type": "n8n-nodes-base.switch",
"position": [
560,
2528
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Discovery",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6767bda7-f501-42d5-b70f-fbc427366c84",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $('On new sales call recording').item.json.body.event.recording.labels.includes('Discovery') }}",
"rightValue": "Discovery"
}
]
},
"renameOutput": true
},
{
"outputKey": "Proposal",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d15a1cd6-f173-4f19-b126-56023ff972fc",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $('On new sales call recording').item.json.body.event.recording.labels.includes('Proposal') }}",
"rightValue": "={{ $('On new sales call recording').item.json.body.event.recording.labels.includes('Discovery') }}"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "28a66a03-b46b-4101-9228-cdb1f0c1a137",
"name": "Extraer información de la llamada",
"type": "n8n-nodes-base.set",
"position": [
352,
2528
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7d00c768-11f8-4e88-a72d-09f4680e6db5",
"name": "client",
"type": "string",
"value": "={{ $json.body.event.recording.companies[0].name }}"
},
{
"id": "899afd83-f493-4bf8-baa3-0af1357ba784",
"name": "domain",
"type": "string",
"value": "={{ $json.body.event.recording.meeting.participants.find(p => p.email && p.email !== $json.body.event.recording.recorder.email)?.email.split(\"@\")[1] }}"
},
{
"id": "53f353b3-8cbb-40d4-bd2f-13bf56554d7a",
"name": "dealId",
"type": "string",
"value": "={{ $json.body.event.recording.crmInfo.crmDealId === undefined ? \"\" : $json.body.event.recording.crmInfo.crmDealId}}"
},
{
"id": "61906ec6-d325-4e07-b05c-824a1d7e8c52",
"name": "language",
"type": "string",
"value": "={{ $json.body.event.recording.transcripts[0].langIso2 === \"fr\" ? \"french\" : \"english\" }}"
},
{
"id": "64575c62-a4bf-4748-854b-d31e1f9fc904",
"name": "actionItems",
"type": "string",
"value": "={{ $json.body.event.recording.actionItems.join('\\n') }}"
},
{
"id": "1e4964eb-11bc-40be-ae2d-acc3756f2f9c",
"name": "keyTakeways",
"type": "string",
"value": "={{ $json.body.event.recording.keyTakeaways.join('\\n') }}"
},
{
"id": "0594c03d-fbdb-4770-a3d7-f2793b90ac08",
"name": "outlines",
"type": "string",
"value": "={{ $json.body.event.recording.outlines.join('\\n') }}"
},
{
"id": "f632c9df-66ba-4b61-a3af-07a8ced06bb2",
"name": "insights",
"type": "string",
"value": "={{ $json.body.event.recording.insightTemplates[0].insights[0].sections.map(section => `${section.title}:\\n${section.description}`).join('\\n\\n') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "dd22c7f0-6515-4c0e-ad2e-a84e6d3690b2",
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656,
2192
],
"parameters": {
"color": 2,
"width": 600,
"height": 240,
"content": "# Template presentation\n- This template generates a sales follow-up presentation in Google Slides after a sales call recorded in Claap.\n- The workflow is simplified to showcase the main use case.\n- You can customize and enrich this workflow by connecting to the CRM, researching data online or adding more files in the presentation.\n- This workflow runs when the meeting is labeled with \"Discovery\" or \"Proposal\" in Claap.\n- The presentation template used in this workflow is available [here](https://docs.google.com/presentation/d/1UZ0vGvHWwl1M0u_ThxJr6qLr-flIkIvCiVrg3fHPCFk/edit?slide=id.g33acd02fb35_0_0)."
},
"typeVersion": 1
},
{
"id": "5fc84ab3-2a83-4535-8d38-c271f87aa708",
"name": "Establecer ID de presentación",
"type": "n8n-nodes-base.set",
"position": [
1040,
2240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "70365c23-d99e-4975-8359-96f81968ebf1",
"name": "presentationId",
"type": "string",
"value": "1UZ0vGvHWwl1M0u_ThxJr6qLr-flIkIvCiVrg3fHPCFk"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6649d1d2-ce8b-4bb9-b473-ed0417249920",
"name": "Actualizar presentación",
"type": "n8n-nodes-base.httpRequest",
"position": [
2528,
2240
],
"parameters": {
"url": "=https://slides.googleapis.com/v1/presentations/{{ $('Duplicate presentation').item.json.id }}:batchUpdate",
"method": "POST",
"options": {},
"jsonBody": "={\n \"requests\": [\n {\n \"replaceAllText\": {\n \"containsText\": {\n \"text\": \"$client\",\n \"matchCase\": true\n },\n \"replaceText\": \"{{ $('Extract call info').item.json.client }}\"\n }\n },\n {\n \"replaceAllText\": {\n \"containsText\": {\n \"text\": \"$date\",\n \"matchCase\": true\n },\n \"replaceText\": \"{{ new Date().toLocaleDateString('fr-FR') }}\"\n }\n },\n {\n \"replaceAllText\": {\n \"containsText\": {\n \"text\": \"$ambition\",\n \"matchCase\": true\n },\n \"replaceText\": \"{{ $('Generate slide content').item.json.message.content.ambition }}\"\n }\n },\n {\n \"replaceAllText\": {\n \"containsText\": {\n \"text\": \"$challenges\",\n \"matchCase\": true\n },\n \"replaceText\": \"{{ $('Format challenges').item.json.challengesFormatted }}\"\n }\n },\n {\n \"createImage\": {\n \"url\": \"https://logo.clearbit.com/{{ $('Extract call info').item.json.domain }}\",\n \"elementProperties\": {\n \"pageObjectId\": \"g33acd02fb35_0_0\",\n \"size\": {\n \"height\": {\n \"magnitude\": 50,\n \"unit\": \"PT\"\n },\n \"width\": {\n \"magnitude\": 100,\n \"unit\": \"PT\"\n }\n },\n \"transform\": {\n \"scaleX\": 1,\n \"scaleY\": 1,\n \"translateX\": 0,\n \"translateY\": 330,\n \"unit\": \"PT\"\n }\n }\n }\n }\n ]\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleSlidesOAuth2Api"
},
"credentials": {
"googleSlidesOAuth2Api": {
"id": "4XvUdGjZmtZF34lR",
"name": "Google Slides account"
}
},
"typeVersion": 4.2
},
{
"id": "972a826c-781f-4fd1-92d5-ec2f53f4825d",
"name": "Al nuevo registro de llamada de ventas",
"type": "n8n-nodes-base.webhook",
"position": [
128,
2528
],
"webhookId": "f0ad896c-3d55-458b-b161-bd3d6cc4107f",
"parameters": {
"path": "claap-recordings",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "6dfdb4b2-5c74-41a7-9edd-8f0eba4264b5",
"name": "Nota adhesiva 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
2528
],
"parameters": {
"width": 320,
"height": 120,
"content": "If several presentations can be selected based on the type of call, it's possible to create other branches here. You'll just need to provide the id of the presentation you want to duplicate."
},
"typeVersion": 1
},
{
"id": "99b44269-6d1c-441d-b597-272597b1e1c8",
"name": "Nota adhesiva 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2464,
2432
],
"parameters": {
"height": 120,
"content": "Another option is to use the n8n built-in node, but it offers less control (no full text search and replace and no possibility to add images)"
},
"typeVersion": 1
},
{
"id": "8017b6bc-f516-4668-bf0a-cd708bb76ab8",
"name": "Formatear desafíos",
"type": "n8n-nodes-base.code",
"position": [
1648,
2240
],
"parameters": {
"jsCode": "return {\n challengesFormatted: $input.first().json.message.content.challenges.join('\\\\n')\n};"
},
"typeVersion": 2
},
{
"id": "5aee27e9-17f0-4b0a-9b0e-e6bf0b82062b",
"name": "Nota adhesiva 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1024,
3024
],
"parameters": {
"width": 200,
"height": 120,
"content": "This branch showcases how to connect with the CRM and personalize the presentation based on CRM data"
},
"typeVersion": 1
},
{
"id": "357ad95c-19ce-425a-b430-2e9cac0fe0a0",
"name": "Eliminar diapositiva de moneda incorrecta",
"type": "n8n-nodes-base.httpRequest",
"position": [
784,
3040
],
"parameters": {
"url": "=https://slides.googleapis.com/v1/presentations/{{ $('Duplicate presentation').item.json.id }}:batchUpdate",
"method": "POST",
"options": {},
"jsonBody": "={\n \"requests\": [\n {\n \"deleteObject\": {\n \"objectId\": \"{{ $json.slide_to_delete }}\"\n }\n }\n ]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleSlidesOAuth2Api"
},
"typeVersion": 4
},
{
"id": "f129f806-564c-4820-a8fb-1516959ee780",
"name": "Enviar a @usuario",
"type": "n8n-nodes-base.slack",
"position": [
2784,
2240
],
"webhookId": "1842e596-7b9f-4dc6-8331-58e7a6811afc",
"parameters": {
"text": "=",
"user": {
"__rl": true,
"mode": "username",
"value": "@user"
},
"select": "user",
"blocksUi": "={\n \"blocks\": [\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": \"*New presentation available for <https://docs.google.com/presentation/d/{{ $json.presentationId }}/edit#slide=id.g33acd02fb35_0_0|{{ $('Extract call info').item.json.client }}> 🔥*\"\n }\n }\n ]\n}",
"messageType": "block",
"otherOptions": {
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"id": "MFSWBbCvtN1Sk93E",
"name": "Slack First Claapers"
}
},
"typeVersion": 2.3
},
{
"id": "365237ff-823f-4b8c-928b-5b2bb8fc6bf7",
"name": "Si hay un acuerdo",
"type": "n8n-nodes-base.if",
"position": [
128,
3040
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "49b2504c-0426-4dda-8249-8b147db94e6a",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $('On new sales call recording').item.json.body.event.recording.deal.id }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "85c5809c-56f4-4648-b29e-ea4780634d75",
"name": "Obtener información del acuerdo",
"type": "n8n-nodes-base.hubspot",
"position": [
352,
3040
],
"parameters": {
"dealId": "={{ $('On new sales call recording').item.json.body.event.recording.crmInfo.deal.id }}",
"filters": {},
"resource": "deal",
"operation": "get",
"authentication": "appToken"
},
"credentials": {
"hubspotAppToken": {
"id": "mhuVEdo7ONjoZ1nP",
"name": "HubSpot App Token account"
}
},
"typeVersion": 2.1
},
{
"id": "253e418e-1282-4da1-8bd9-f9b2e013005e",
"name": "Seleccionar diapositiva para eliminar",
"type": "n8n-nodes-base.set",
"position": [
560,
3040
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d462ed0b-f883-4adf-adc9-baa7d67d632b",
"name": "slide_to_delete",
"type": "string",
"value": "={{ (!$json.properties.deal_currency_code.value || $json.properties.deal_currency_code.value === 'EUR') ? 'g3417703b8a7_0_3' : 'g3026f7d6b00_0_71' }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "65b78722-db75-4edc-ac9c-231cdb8e9336",
"name": "Generar contenido de diapositiva",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1264,
2240
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Your are a sales expert here to assist sales professionals in crafting follow-ups based on transcripts of discovery calls. Analyze the call summary to identify the following 2 elements:\n\n# Ambition: a summary of the prospect's goals or desired outcomes.\n# Challenges: list 3 key difficulties or obstacles discussed during the call.\n\nInstructions:\n- Use simple language and remain concise.\n- Output your answer in {{ $('Extract call info').item.json.language }}.\n- Structure your answer as a JSON:\n\n{ \n \"ambition\": \"\",\n \"challenges\": [\"\", \"\", \"\"]\n}\n\nCall summary below (within triple quotes):\n'''\n{{ $('Extract call info').item.json.insights }}\n'''"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "E7za96D8nwfE78qQ",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "dedfb07c-b450-4101-b7eb-7ff6a40aa5f5",
"name": "Nota adhesiva 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656,
2496
],
"parameters": {
"color": 3,
"width": 600,
"height": 240,
"content": "# Workflow configuration\n- Create a webhook in Claap, by following [this article](https://help.claap.io/en/articles/10395357-using-claap-s-webhooks).\n- Edit the labels that trigger the workflow and route on the relevant presentation.\n- Fill your Open AI credentials by creating an API Key in OpenAI Platform\n- Edit the presentation personalization details (user set as editor, content, title)\n- Fill your Slack credentials by following steps in [this video](https://www.youtube.com/watch?v=qk5JH6ImK0I&ab_channel=NateHerk%7CAIAutomation)."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"85c5809c-56f4-4648-b29e-ea4780634d75": {
"main": [
[
{
"node": "253e418e-1282-4da1-8bd9-f9b2e013005e",
"type": "main",
"index": 0
}
]
]
},
"28a66a03-b46b-4101-9228-cdb1f0c1a137": {
"main": [
[
{
"node": "0ce4dd64-60b6-42f4-a21e-836ad013a0b2",
"type": "main",
"index": 0
}
]
]
},
"8017b6bc-f516-4668-bf0a-cd708bb76ab8": {
"main": [
[
{
"node": "45c60520-7937-4ccb-95e7-6805ee8e2f0a",
"type": "main",
"index": 0
}
]
]
},
"365237ff-823f-4b8c-928b-5b2bb8fc6bf7": {
"main": [
[
{
"node": "85c5809c-56f4-4648-b29e-ea4780634d75",
"type": "main",
"index": 0
}
],
[]
]
},
"f594056f-b564-4ae8-b771-962640de5c8a": {
"main": [
[
{
"node": "6649d1d2-ce8b-4bb9-b473-ed0417249920",
"type": "main",
"index": 0
}
]
]
},
"5fc84ab3-2a83-4535-8d38-c271f87aa708": {
"main": [
[
{
"node": "65b78722-db75-4edc-ac9c-231cdb8e9336",
"type": "main",
"index": 0
}
]
]
},
"6649d1d2-ce8b-4bb9-b473-ed0417249920": {
"main": [
[
{
"node": "f129f806-564c-4820-a8fb-1516959ee780",
"type": "main",
"index": 0
}
]
]
},
"8b92b5d8-00c7-4394-b45f-ef925a943600": {
"main": [
[
{
"node": "f594056f-b564-4ae8-b771-962640de5c8a",
"type": "main",
"index": 0
}
]
]
},
"45c60520-7937-4ccb-95e7-6805ee8e2f0a": {
"main": [
[
{
"node": "8b92b5d8-00c7-4394-b45f-ef925a943600",
"type": "main",
"index": 0
}
]
]
},
"65b78722-db75-4edc-ac9c-231cdb8e9336": {
"main": [
[
{
"node": "8017b6bc-f516-4668-bf0a-cd708bb76ab8",
"type": "main",
"index": 0
}
]
]
},
"253e418e-1282-4da1-8bd9-f9b2e013005e": {
"main": [
[
{
"node": "357ad95c-19ce-425a-b430-2e9cac0fe0a0",
"type": "main",
"index": 0
}
]
]
},
"972a826c-781f-4fd1-92d5-ec2f53f4825d": {
"main": [
[
{
"node": "28a66a03-b46b-4101-9228-cdb1f0c1a137",
"type": "main",
"index": 0
}
]
]
},
"0ce4dd64-60b6-42f4-a21e-836ad013a0b2": {
"main": [
[
{
"node": "5fc84ab3-2a83-4535-8d38-c271f87aa708",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - CRM, IA Multimodal
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Robin Bonduelle
@robinbonduelleCompartir este flujo de trabajo