Enviar automáticamente registros de reuniones de Telegram a Airtable, Slack y Gmail
Este es unAI Summarization, Multimodal AIflujo de automatización del dominio deautomatización que contiene 29 nodos.Utiliza principalmente nodos como If, Code, Wait, Gmail, Slack. Usar GPT-4.1 para crear actas de reuniones desde mensajes de Telegram y enviarlas a Airtable, Slack, Gmail
- •Cuenta de Google y credenciales de API de Gmail
- •Bot Token de Slack o URL de Webhook
- •Clave de API de Airtable
- •Bot Token de Telegram
- •Clave de API de OpenAI
Nodos utilizados (29)
Categoría
{
"id": "VbaVgnhJ7phMHTY9",
"meta": {
"instanceId": "18b0d04ad5030054be4ab49562e84ea4a079ab4cb036003697394140227c7e76",
"templateCredsSetupCompleted": true
},
"name": "Automatic meeting records sent from Telegram to Airtable, Slack and Gmail",
"tags": [],
"nodes": [
{
"id": "af08414c-6227-4af0-831a-5832d7a2833c",
"name": "GPT-4 Modelo Generador de Correos",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-560,
1552
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "UaZZMb9MgNQPJ0Sn",
"name": "OpenAi account 2"
}
},
"typeVersion": 1.2
},
{
"id": "98f24854-770a-45c7-b2b4-4be331d64ecc",
"name": "Enviar Correo",
"type": "n8n-nodes-base.gmail",
"position": [
752,
1456
],
"webhookId": "e367edf9-5bc0-474c-9b96-d694a2660ee2",
"parameters": {
"sendTo": "={{ $('Create a record').item.json.fields.Email }}",
"message": "={{ $('Create a record').item.json.fields.Report }}",
"options": {},
"subject": "={{ $('Create a record').item.json.fields.subject }}"
},
"credentials": {
"gmailOAuth2": {
"id": "h1ZY21K9DQNwgOhO",
"name": "GMAIL BAPTISTE FORT"
}
},
"typeVersion": 2.1
},
{
"id": "dfd67f2c-f977-4ef6-98c2-1433eca110dc",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-1888,
1280
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5c15ee72-c6b1-438e-aa5c-97d268cbb2cb",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{$json.type}}",
"rightValue": "voice"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "118fc989-2485-4e53-b2d3-17dfed0afe2a",
"name": "Esperar",
"type": "n8n-nodes-base.wait",
"position": [
-1472,
1184
],
"webhookId": "df3b70ed-d349-4901-af35-3e5b4525fa97",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "b1c2fa2b-2d71-40c4-a36f-a086cce865ff",
"name": "Telegram Disparador",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-2304,
1280
],
"webhookId": "8ad3fa54-7a0b-4af8-a781-bfa13addd189",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "hX6Qe2gkicVdj0xP",
"name": "Telegram account 3"
}
},
"typeVersion": 1.2
},
{
"id": "dbc0240b-13ef-49ba-8da4-4677a27b8a0a",
"name": "Nota de voz",
"type": "n8n-nodes-base.telegram",
"position": [
-1696,
1184
],
"webhookId": "ed77be89-0c45-4e0c-9fb1-533baaa650a4",
"parameters": {
"fileId": "={{$json.file_id}}",
"resource": "file",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "hX6Qe2gkicVdj0xP",
"name": "Telegram account 3"
}
},
"typeVersion": 1.2
},
{
"id": "5ba230a3-bebe-4ee8-b160-8d0108adb6a8",
"name": "Descarga de nota de voz",
"type": "n8n-nodes-base.telegram",
"position": [
-1280,
1184
],
"webhookId": "bce6d473-545e-4411-bd00-4b62e75e2d40",
"parameters": {
"fileId": "={{$json.result.file_id}}",
"resource": "file",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "hX6Qe2gkicVdj0xP",
"name": "Telegram account 3"
}
},
"typeVersion": 1.2
},
{
"id": "8cfbe3e0-aad3-4ca8-95cd-654b9ad29605",
"name": "Transcripción de notas de voz a texto",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-1072,
1184
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"id": "cfxaRAuEstHmL61i",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "0ec4455b-d8c7-433d-abb6-9767fdc0f0b4",
"name": "ESPERAR",
"type": "n8n-nodes-base.wait",
"position": [
-880,
1184
],
"webhookId": "4f6a1490-a64f-4176-a342-83ba6accaeb4",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "7b77efa8-1a8b-48f5-a821-e0e7a6d57a41",
"name": "Contenido",
"type": "n8n-nodes-base.code",
"position": [
-1696,
1376
],
"parameters": {
"jsCode": "return [{ text: $json.content }]\n"
},
"typeVersion": 2
},
{
"id": "9626d70e-4123-4f13-b77c-dadb936669e5",
"name": "¿Mensaje o Voz?",
"type": "n8n-nodes-base.code",
"position": [
-2096,
1280
],
"parameters": {
"jsCode": "const updates = $json;\n\nif (updates.message?.text) {\n\treturn [\n\t\t{\n\t\t\tjson: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tcontent: updates.message.text\n\t\t\t}\n\t\t}\n\t];\n}\n\nif (updates.message?.voice) {\n\treturn [\n\t\t{\n\t\t\tjson: {\n\t\t\t\ttype: \"voice\",\n\t\t\t\tfile_id: updates.message.voice.file_id\n\t\t\t}\n\t\t}\n\t];\n}\n\nreturn [];\n"
},
"typeVersion": 2
},
{
"id": "8cbf2f84-adfa-4877-b59d-31dad7a4a23d",
"name": "Generar Mensaje de Reunión",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-480,
1264
],
"parameters": {
"text": "==You are an assistant specialized in writing **meeting minutes to be sent by email**.\n\nFrom the text provided below (coming from a voice note or message): \n\n{{ $json.input.text }}\n\n**Goals:**\n1) **Detect the recipient's email address** in the text (or a similar form like \"send to firstname.lastname\"). \n - If the address is incomplete, complete it with `@gmail.com`. \n - If no address is found, use `contact@gmail.com`.\n\n2) **Understand the meeting context** and extract structured elements: \n - **Title/Topic** (project, client, subject) \n - **Date** (if missing, use today’s date in Europe/Paris timezone) \n - **Participants** (names or roles if mentioned) \n - **Decisions made** \n - **Action items** (with owners + deadlines if available) \n - **Next steps** \n - **Risks / blockers** (if present) \n - **Open questions / follow-ups** (if present)\n\n3) **Generate a clear and informative email subject**, for example: \n - \"Meeting Minutes — {Topic} — {Date}\" \n - \"Summary {Project/Client} — {Date}\"\n\n4) **Write the email body in HTML**, professional and easy to read: \n - Greeting \n - Context reminder (date, topic, participants) \n - Sections with bold titles: Decisions, Action Items (with owners & deadlines), Next Steps, Risks/Blockers, Open Questions/Follow-up \n - Conclusion + invitation to reply if corrections are needed \n - Signature with \"Best regards,\" (do not sign with a specific name)\n\n**Output constraints:** \n- No spelling or grammar mistakes. \n- Always return the result in the **strict JSON format below**, without any text around it:\n\n```json\n{\n \"email\": \"address@gmail.com\",\n \"subject\": \"Email subject\",\n \"body\": \"<p>Email body in HTML</p>\"\n}\n\n{{ $json.input.text }}",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "70d6a4e6-3197-4f9b-9fd5-dea831e0dc21",
"name": "Crear un registro",
"type": "n8n-nodes-base.airtable",
"position": [
256,
1456
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "app71jEl2tmr4VBrJ",
"cachedResultUrl": "https://airtable.com/app71jEl2tmr4VBrJ",
"cachedResultName": "Call report"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblcHaHToALXG4qjH",
"cachedResultUrl": "https://airtable.com/app71jEl2tmr4VBrJ/tblcHaHToALXG4qjH",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"Email": "={{ $json.Email }}",
"Report": "={{ $json.Report }}",
"subject": "={{ $json.subject }}"
},
"schema": [
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "subject",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "subject",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Report",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Report",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "dateTime",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "vKZ5Wl43rmNFe0My",
"name": "Airtable Personal Access Token account 3"
}
},
"typeVersion": 2.1
},
{
"id": "bb193e7c-6511-453f-a782-5ab19119d3b7",
"name": "Código",
"type": "n8n-nodes-base.code",
"position": [
16,
1504
],
"parameters": {
"jsCode": "const src = $json.output ?? $json;\nconst email = String(src.email || \"contact@gmail.com\").trim();\nconst subject = String(src.subject || \"Compte rendu de réunion\").trim();\nconst body = String(src.body || \"\").trim();\n\n// Nettoyer le HTML et le transformer en texte lisible\nconst clean = body\n .replace(/<br\\s*\\/?>/gi, \"\\n\")\n .replace(/<\\/p>/gi, \"\\n\\n\")\n .replace(/<\\/?[^>]+(>|$)/g, \"\")\n .trim();\n\nreturn [{\n Email: email,\n subject: subject,\n Report: clean\n}];\n"
},
"typeVersion": 2
},
{
"id": "45d090e1-1ba9-4324-bf34-3f3fe1a1b0a3",
"name": "Enviar un mensaje",
"type": "n8n-nodes-base.slack",
"position": [
496,
1424
],
"webhookId": "3175a971-3530-4ab8-ab98-e91ea486676b",
"parameters": {
"text": "={{ $json.fields.subject}}\n\n{{ $json.fields.Report }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "=YOUR CHANNEL"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"id": "ERqGlDjoRRcGe4Qj",
"name": "Slack account 2"
}
},
"typeVersion": 2.3
},
{
"id": "830ff5e8-0dd7-4167-9878-b0c4826f5b56",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2368,
896
],
"parameters": {
"width": 1792,
"height": 864,
"content": "## Message sent to Telegram as voice note or text? "
},
"typeVersion": 1
},
{
"id": "fbe9a6e9-f37f-4099-9795-320d96bea14d",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2384,
1504
],
"parameters": {
"width": 336,
"height": 288,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "7aa66a3d-6731-4e4f-9145-2ca40b4240d1",
"name": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-592,
1072
],
"parameters": {
"color": 2,
"width": 544,
"height": 688,
"content": "## Generate meeting minutes\n- **Node**: Agent (“Generate Meeting Message”) \n- **Prompt**: specialized for “meeting minutes” \n- **Model**: GPT-4.1-mini \n- **Output**: `{ email, subject, body }` \n👉 GPT creates a clean and structured meeting report. "
},
"typeVersion": 1
},
{
"id": "dc3f7261-2467-403a-be7c-11c5b696f209",
"name": "Nota Adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-432,
1504
],
"parameters": {
"width": 384,
"height": 256,
"content": "## Enforce clean JSON\n\n- **Node**: Output Parser Structured \n- **JSON Example**: \njson {\"email\": \"address@gmail.com\",\"subject\":\"Subject\",\"body\":Email\"}\n\n👉 Ensures the output is always valid JSON."
},
"typeVersion": 1
},
{
"id": "3901f82e-b400-424a-9a51-bff0212e0a04",
"name": "Forzar Correo JSON",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-176,
1536
],
"parameters": {
"jsonSchemaExample": "{\n \"email\": \"address@gmail.com\",\n \"subject\": \"Email subject\",\n \"body\": \"<p>Email body in HTML</p>\"\n}"
},
"typeVersion": 1.3
},
{
"id": "ab43f248-cef7-4591-8b15-37faa102f8bd",
"name": "Nota Adhesiva4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
1216
],
"parameters": {
"color": 4,
"height": 544,
"content": "## Cleanup / Airtable mapping\n- **Node**: Code \n- **Return**: `{ Email, subject, Report }` \n👉 Prepares the correct fields aligned with your Airtable table. "
},
"typeVersion": 1
},
{
"id": "076f6b32-e788-4bb7-85c4-0afb0caff168",
"name": "Nota Adhesiva5",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
1136
],
"parameters": {
"color": 6,
"height": 624,
"content": "## Store in Airtable\n- **Node**: Airtable (Create Record) \n- **Mapping**: \n - Email = `{{$json.Email}}` \n - subject = `{{$json.subject}}` \n - Report = `{{$json.Report}}` \n👉 Archives each meeting report in your Airtable base. "
},
"typeVersion": 1
},
{
"id": "e8bd763c-58de-458a-961b-96d66536dff0",
"name": "Nota Adhesiva6",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
1232
],
"parameters": {
"color": 7,
"height": 528,
"content": "## Notify in Slack\n- **Node**: Slack (Send Message) \n- **Channel**: your team channel \n- **Message**: {{$json.fields.subject}}{{$json.fields.Report}}"
},
"typeVersion": 1
},
{
"id": "3e97aa2f-e270-4896-842d-f0db6bdf713e",
"name": "Nota Adhesiva7",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
1120
],
"parameters": {
"color": 5,
"height": 640,
"content": "## Send the email\n- **Node**: Gmail (Send Email) \n- **sendTo**: `{{$('Create a record').item.json.fields.Email}}` \n- **subject**: `{{$('Create a record').item.json.fields.subject}}` \n- **message**: `{{$('Create a record').item.json.fields.Report}}` \n👉 Sends the complete meeting minutes to the recipients. "
},
"typeVersion": 1
},
{
"id": "2d6d9fdf-9473-42ea-ab9e-4ac1993e9648",
"name": "Nota Adhesiva8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-592,
912
],
"parameters": {
"color": 2,
"width": 182,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "46a6e02b-bc0e-43fa-925c-7165a0153d42",
"name": "Nota Adhesiva9",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
1600
],
"parameters": {
"color": 5,
"width": 246,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "3a92f0d9-8221-4c53-931a-0745bd76eef7",
"name": "Nota Adhesiva10",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
1600
],
"parameters": {
"color": 7,
"width": 198,
"height": 192,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "f934e87f-2486-4701-b3f3-38fd1fa37c2f",
"name": "Nota Adhesiva11",
"type": "n8n-nodes-base.stickyNote",
"position": [
736,
1616
],
"parameters": {
"color": 7,
"width": 150,
"height": 144,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "2f570729-0e5a-4b3a-aaff-4fd182ad5b2f",
"name": "Estructura de Código",
"type": "n8n-nodes-base.code",
"position": [
-768,
1376
],
"parameters": {
"jsCode": "const text = String($json.text || \"\").trim();\nconst lower = text.toLowerCase();\n\n// 1) Direct email in message\nconst emailMatch = text.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}/i);\nlet email = emailMatch ? emailMatch[0].toLowerCase() : null;\n\n// 2) Extract a domain hint from the message (fallback for building email)\nlet domainHint = null;\nconst domainRegex = /\\b([a-z0-9][a-z0-9-]{0,63}\\.)+[a-z]{2,}\\b/i;\nconst domainMatch = text.match(domainRegex);\nif (domainMatch) {\n const parts = domainMatch[0].toLowerCase().split('.').filter(Boolean);\n if (parts.length >= 2) {\n domainHint = `${parts[parts.length - 2]}.${parts[parts.length - 1]}`;\n }\n}\n\n// 3) If no direct email, try to build one from a \"send to / envoyer à\" style mention\nif (!email) {\n // Capture after signals like \"envoyer à\", \"envoie à\", \"à envoyer à\", \"send to\", \"to\"\n const toCue =\n /(à envoyer à|envoyer à|envoie à|envois à|envoi à|send to|to)\\s+([^\\n,;:]+)/i;\n const labelCue = /(mail|email|courriel|adresse)\\s*[:\\-]\\s*([^\\n,;:]+)/i;\n\n let target = null;\n const m1 = lower.match(toCue);\n const m2 = lower.match(labelCue);\n if (m1 && m1[2]) target = m1[2];\n else if (m2 && m2[2]) target = m2[2];\n\n if (target) {\n target = target\n .replace(/^[«\"'\\(\\[]+|[»\"'\\)\\]]+$/g, \"\") // trim quotes/brackets\n .trim();\n\n // If target already contains an email, use it\n const tEmail = target.match(/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}/i);\n if (tEmail) {\n email = tEmail[0].toLowerCase();\n } else {\n // If target looks like \"firstname.lastname\" or \"firstname lastname\", normalize it\n // Remove common filler words\n target = target\n .replace(/\\b(chez|à|au|pour|de|du|la|le|l'|mr|mme|m\\.)\\b/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n\n // Keep only letters, spaces, dots, hyphens, underscores\n target = target.replace(/[^a-zàâäçéèêëîïôöùûüÿ\\s._-]/g, \"\");\n\n // Build local part\n const ascii = target\n .normalize(\"NFD\")\n .replace(/\\p{Diacritic}/gu, \"\")\n .toLowerCase();\n\n // Split by spaces, dots, underscores, hyphens\n const tokens = ascii.split(/[\\s._-]+/).filter(Boolean);\n\n let local = null;\n if (tokens.length >= 2) {\n local = `${tokens[0]}.${tokens[tokens.length - 1]}`;\n } else if (tokens.length === 1) {\n local = tokens[0];\n }\n\n if (local) {\n // If target contains something like \".com\" we treat it as a domain hint\n let domainFromTarget = null;\n const tDomain = target.match(domainRegex);\n if (tDomain) {\n const p = tDomain[0].split(\".\").filter(Boolean);\n if (p.length >= 2)\n domainFromTarget = `${p[p.length - 2]}.${p[p.length - 1]}`.toLowerCase();\n }\n\n const finalDomain = domainFromTarget || domainHint || \"gmail.com\";\n email = `${local}@${finalDomain}`.replace(/\\.{2,}/g, \".\");\n }\n }\n }\n}\n\n// 4) Final fallback\nif (!email) {\n email = \"contact@gmail.com\";\n}\n\n// Preserve your previous outputs too\nlet foundDomain = null;\nif (domainHint) foundDomain = domainHint;\n\nreturn [{\n input: { text },\n email,\n domain: foundDomain,\n domainUrl: foundDomain ? `https://${foundDomain}` : null\n}];\n"
},
"typeVersion": 2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "f3969a89-1668-4520-9ea6-9d66642ada23",
"connections": {
"dfd67f2c-f977-4ef6-98c2-1433eca110dc": {
"main": [
[
{
"node": "dbc0240b-13ef-49ba-8da4-4677a27b8a0a",
"type": "main",
"index": 0
}
],
[
{
"node": "7b77efa8-1a8b-48f5-a821-e0e7a6d57a41",
"type": "main",
"index": 0
}
]
]
},
"bb193e7c-6511-453f-a782-5ab19119d3b7": {
"main": [
[
{
"node": "70d6a4e6-3197-4f9b-9fd5-dea831e0dc21",
"type": "main",
"index": 0
}
]
]
},
"0ec4455b-d8c7-433d-abb6-9767fdc0f0b4": {
"main": [
[
{
"node": "2f570729-0e5a-4b3a-aaff-4fd182ad5b2f",
"type": "main",
"index": 0
}
]
]
},
"118fc989-2485-4e53-b2d3-17dfed0afe2a": {
"main": [
[
{
"node": "5ba230a3-bebe-4ee8-b160-8d0108adb6a8",
"type": "main",
"index": 0
}
]
]
},
"7b77efa8-1a8b-48f5-a821-e0e7a6d57a41": {
"main": [
[
{
"node": "2f570729-0e5a-4b3a-aaff-4fd182ad5b2f",
"type": "main",
"index": 0
}
]
]
},
"dbc0240b-13ef-49ba-8da4-4677a27b8a0a": {
"main": [
[
{
"node": "118fc989-2485-4e53-b2d3-17dfed0afe2a",
"type": "main",
"index": 0
}
]
]
},
"2f570729-0e5a-4b3a-aaff-4fd182ad5b2f": {
"main": [
[
{
"node": "8cbf2f84-adfa-4877-b59d-31dad7a4a23d",
"type": "main",
"index": 0
}
]
]
},
"45d090e1-1ba9-4324-bf34-3f3fe1a1b0a3": {
"main": [
[
{
"node": "98f24854-770a-45c7-b2b4-4be331d64ecc",
"type": "main",
"index": 0
}
]
]
},
"70d6a4e6-3197-4f9b-9fd5-dea831e0dc21": {
"main": [
[
{
"node": "45d090e1-1ba9-4324-bf34-3f3fe1a1b0a3",
"type": "main",
"index": 0
}
]
]
},
"b1c2fa2b-2d71-40c4-a36f-a086cce865ff": {
"main": [
[
{
"node": "9626d70e-4123-4f13-b77c-dadb936669e5",
"type": "main",
"index": 0
}
]
]
},
"3901f82e-b400-424a-9a51-bff0212e0a04": {
"ai_outputParser": [
[
{
"node": "8cbf2f84-adfa-4877-b59d-31dad7a4a23d",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"9626d70e-4123-4f13-b77c-dadb936669e5": {
"main": [
[
{
"node": "dfd67f2c-f977-4ef6-98c2-1433eca110dc",
"type": "main",
"index": 0
}
]
]
},
"5ba230a3-bebe-4ee8-b160-8d0108adb6a8": {
"main": [
[
{
"node": "8cfbe3e0-aad3-4ca8-95cd-654b9ad29605",
"type": "main",
"index": 0
}
]
]
},
"8cbf2f84-adfa-4877-b59d-31dad7a4a23d": {
"main": [
[
{
"node": "bb193e7c-6511-453f-a782-5ab19119d3b7",
"type": "main",
"index": 0
}
]
]
},
"af08414c-6227-4af0-831a-5832d7a2833c": {
"ai_languageModel": [
[
{
"node": "8cbf2f84-adfa-4877-b59d-31dad7a4a23d",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8cfbe3e0-aad3-4ca8-95cd-654b9ad29605": {
"main": [
[
{
"node": "0ec4455b-d8c7-433d-abb6-9767fdc0f0b4",
"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 - Resumen de IA, 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
Compartir este flujo de trabajo