8
n8n 한국어amn8n.com

VEXA, OpenAI 및 Mem0를 사용한 회의 인텔리전스 분석 자동화

고급

이것은Document Extraction, AI Summarization분야의자동화 워크플로우로, 26개의 노드를 포함합니다.주로 Set, Code, Merge, Redis, Switch 등의 노드를 사용하며. VEXA, OpenAI 및 Mem0를 사용한 자동화된 회의 대화 인사이트 분석

사전 요구사항
  • Redis 서버 연결 정보
  • HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
  • 대상 API의 인증 정보가 필요할 수 있음
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "834bc6c387a1c56d0622a24b912577f9e6d66c5873f4e6426166054eb488d8fc",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "ff74078e-4506-4750-80ec-6df095b3344d",
      "name": "작업 없음, 아무것도 하지 않음",
      "type": "n8n-nodes-base.noOp",
      "position": [
        340,
        1440
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e02d44ca-fe4e-414e-80bd-38890b129022",
      "name": "Baserow: 행 ID 설정",
      "type": "n8n-nodes-base.redis",
      "position": [
        560,
        1000
      ],
      "parameters": {
        "key": "=setMem0-userId",
        "ttl": 3600,
        "value": "={{ $json['meeting with']}}",
        "expire": true,
        "operation": "set"
      },
      "credentials": {
        "redis": {
          "id": "AiUKJfkEA9bDF1g3",
          "name": "Redis account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d3b157f5-c60c-4475-b5ac-2bda2422ad8e",
      "name": "vexa-start",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -320,
        1260
      ],
      "webhookId": "39142ea2-8192-4a0c-b506-4677fad0c4ce",
      "parameters": {
        "path": "vexa-API",
        "options": {
          "allowedOrigins": "*"
        },
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "49fe574d-3b08-42f6-8f25-3c6bc123db8a",
      "name": "Baserow: 상태를 '진행 중'으로 업데이트",
      "type": "n8n-nodes-base.baserow",
      "position": [
        340,
        1000
      ],
      "parameters": {
        "rowId": "={{ $('vexa-start').item.json.body.items[0].id}}",
        "tableId": 630917,
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": 5143180,
              "fieldValue": "In Progress"
            }
          ]
        },
        "operation": "update",
        "databaseId": 268764
      },
      "credentials": {
        "baserowApi": {
          "id": "HadM27Hzjj2CaqeH",
          "name": "Baserow account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "18de75e4-6d24-4f6b-8481-cb18f034e932",
      "name": "Baserow: 상태를 '중지됨'으로 업데이트",
      "type": "n8n-nodes-base.baserow",
      "position": [
        340,
        1200
      ],
      "parameters": {
        "rowId": "={{ $('vexa-start').item.json.body.items[0].id}}",
        "tableId": 630917,
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": 5143180,
              "fieldValue": "Stop Request"
            }
          ]
        },
        "operation": "update",
        "databaseId": 268764
      },
      "credentials": {
        "baserowApi": {
          "id": "HadM27Hzjj2CaqeH",
          "name": "Baserow account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e042c9b4-81c5-4852-b405-a7e346483eec",
      "name": "HTTP: VEXA 봇 시작",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "maxTries": 2,
      "position": [
        80,
        1020
      ],
      "parameters": {
        "url": "https://gateway.dev.vexa.ai/bots",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "platform",
              "value": "google_meet"
            },
            {
              "name": "native_meeting_id",
              "value": "={{ $json.body.items[0][\"Meeting Link\"].extractUrlPath().replace('/',\"\")}}"
            },
            {
              "name": "language",
              "value": "en"
            },
            {
              "name": "bot_name",
              "value": "={{ $json.body.items[0][\"Bot Name\"] }}"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "UqKQMj1xtlK4u3Q9",
          "name": "VEXA-"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "waitBetweenTries": 5000
    },
    {
      "id": "d6097c2d-5acb-41ec-b468-e93ef9693b89",
      "name": "HTTP: VEXA 봇 중지",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        120,
        1260
      ],
      "parameters": {
        "url": "=https://gateway.dev.vexa.ai/bots/google_meet/{{ $json.body.items[0]['Meeting Link'].extractUrlPath().slice(1)}}",
        "method": "DELETE",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "UqKQMj1xtlK4u3Q9",
          "name": "VEXA-"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4183ab08-ddca-4489-8358-dec530778d28",
      "name": "경로: 봇 작업(시작/중지)",
      "type": "n8n-nodes-base.switch",
      "position": [
        -100,
        1260
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Start_Bot",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "31e88a02-32ed-4407-bcf2-f6aed6079397",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.body.items.first()['Send Bot'].value}}",
                    "rightValue": "Start_Bot"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Stop_Bot",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "be0fb069-7bf0-4a4c-8231-00ba70eb6da8",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.body.items.first()['Send Bot'].value}}",
                    "rightValue": "Stop_Bot"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "renameFallbackOutput": "no_action"
        },
        "looseTypeValidation": true
      },
      "typeVersion": 3.2
    },
    {
      "id": "40f2c644-6fad-473f-bc17-273b4106d45a",
      "name": "웹훅: 기록본 준비 완료",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -280,
        1960
      ],
      "webhookId": "d6ac3751-20bc-4b70-89a3-e7121b95350c",
      "parameters": {
        "path": "luffy",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "981f41f0-b5aa-4524-a6c1-60c526ed2131",
      "name": "VEXA: 기록본 가져오기",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        -60,
        2060
      ],
      "parameters": {
        "url": "=https://gateway.dev.vexa.ai/transcripts/google_meet/{{ $json.body.native_meeting_id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "UqKQMj1xtlK4u3Q9",
          "name": "VEXA-"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "alwaysOutputData": false,
      "waitBetweenTries": 5000
    },
    {
      "id": "8e62e7c4-7307-4a65-a9c8-c9e77ec87b43",
      "name": "처리: 기록본 세그먼트 분할",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        160,
        1960
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "segments"
      },
      "typeVersion": 1
    },
    {
      "id": "6d690e78-8a51-4b45-82b3-febc02d8a752",
      "name": "준비: 기록본 데이터 선택",
      "type": "n8n-nodes-base.set",
      "position": [
        380,
        1940
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9dad0189-4fce-4945-8828-894dcf92a0e5",
              "name": "speaker",
              "type": "string",
              "value": "={{ $json.speaker }}"
            },
            {
              "id": "6aa88e65-6cfc-43b0-90d9-7675f37097f1",
              "name": "meeting_transcript",
              "type": "string",
              "value": "={{ $json.text }}"
            },
            {
              "id": "e1725954-5701-4ec6-8e11-2cd39ed69810",
              "name": "created_at",
              "type": "string",
              "value": "={{ $json.created_at }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d0912b45-fe4e-4380-bcb9-be9b0365dad3",
      "name": "병합",
      "type": "n8n-nodes-base.merge",
      "position": [
        600,
        1860
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3
    },
    {
      "id": "8e838252-400b-4019-a22e-a3268f654db1",
      "name": "준비: 분석을 위한 집계",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        740,
        1860
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "summary "
      },
      "typeVersion": 1
    },
    {
      "id": "6224428f-723c-4024-bab9-483edcf777fa",
      "name": "AI: 기록본 분석",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        880,
        1860
      ],
      "parameters": {
        "text": "={{ JSON.stringify ($json)}} ",
        "options": {
          "systemPromptTemplate": "=<role>\nYou are a Senior Business Analyst specializing in Conversation Intelligence.\n</role>\n\n<task>Your task is to review the provided meeting notes and create a concise summary that captures the essential information, focusing on key takeaways and action items assigned to specific individuals or departments during the meeting. Use clear and professional language, and organize the summary in a logical manner using appropriate formatting such as headings, subheadings, and bullet points. Ensure that the summary is easy to understand and provides a comprehensive but succinct overview of the meeting’s content, with a particular focus on clearly indicating who is responsible for each action item.\n</task>\n\n### tip : Identifying entities and their context to better understand the sentiment"
        },
        "attributes": {
          "attributes": [
            {
              "name": "summary",
              "required": true,
              "description": " A concise, 2-3 sentence executive summary of the entire conversation, capturing the main goal, key findings, and overall outcome of the call."
            },
            {
              "name": "overallSentiment",
              "description": "Your task is to analyze a conversation transcript and provide a structured breakdown of the sentiment associated with each key entity, followed by a final, conclusive summary."
            },
            {
              "name": "potential red flags",
              "required": true,
              "description": "=Identify and list any potential risks, deal-breakers, or significant negative signals from the prospect. This includes mentions of serious budget freezes, internal politics, distrust in the proposed solution, or strong preference for a competitor. If no red flags are identified, return an empty array []."
            },
            {
              "name": "nextSteps",
              "required": true,
              "description": "A list of all agreed-upon action items and next steps for both sides."
            },
            {
              "name": "socialChatter",
              "description": " List any non-business, rapport-building topics discussed. If the conversation is strictly business, return an empty array []."
            },
            {
              "name": "user_id",
              "required": true,
              "description": "=the property name is the user_id. \"propertyName\":\"{{ $json['summary '][0].propertyName }}\""
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "78614e07-62af-4cec-8f7f-d35d9814d615",
      "name": "OpenAI 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        980,
        2080
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "gpt-4o"
        },
        "options": {
          "temperature": 0.7
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "TKQcXt7XlrfyymWn",
          "name": "OpenAI Free"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "724eb262-e53c-4aad-8050-6feb8eea7236",
      "name": "Mem0: 기록본 메모리 추가",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        1620,
        1860
      ],
      "parameters": {
        "url": "https://api.mem0.ai/v1/memories/",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json.mem0Payload }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "r4QUfrE3liJp4KMR",
          "name": "Mem0"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "15125ec1-3ece-4a0e-8221-1d3359c71f7a",
      "name": "Redis: 사용자 ID 가져오기",
      "type": "n8n-nodes-base.redis",
      "position": [
        380,
        1760
      ],
      "parameters": {
        "key": "=setMem0-userId",
        "options": {
          "dotNotation": true
        },
        "operation": "get"
      },
      "credentials": {
        "redis": {
          "id": "AiUKJfkEA9bDF1g3",
          "name": "Redis account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5a32f034-8afe-4747-9581-52d5e2360b3c",
      "name": "중지 및 오류",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        240,
        2100
      ],
      "parameters": {
        "errorMessage": "error"
      },
      "typeVersion": 1
    },
    {
      "id": "e4435a20-ac5d-4047-bf44-111175034913",
      "name": "웹훅 설정",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1140,
        1400
      ],
      "parameters": {
        "url": "https://gateway.dev.vexa.ai/user/webhook",
        "method": "PUT",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "webhook_url",
              "value": "https://stuctstunter.zeabur.app/webhook/luffy"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "UqKQMj1xtlK4u3Q9",
          "name": "VEXA-"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b6715064-6c07-44a0-9545-5d9cd8a29f9d",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1000,
        880
      ],
      "parameters": {
        "width": 480,
        "height": 1620,
        "content": "### How it works\n\nThis workflow has two distinct parts that work together to manage a meeting's entire lifecycle.\n\n* **Part 1: Bot Management.** A command is received from your CRM (Baserow) to either deploy or remove an AI bot from a Google Meet. This ensures the bot is present only when needed. The workflow instantly updates the status in your Baserow table to `In Progress` or `Stopped`.\n* **Part 2: AI-Powered Analysis.** Upon meeting completion, a separate webhook from VEXA triggers the second part of the workflow. It automatically retrieves the full transcript and uses a powerful AI model (OpenAI) to analyze the conversation. The AI extracts key details like a **summary**, **next steps**, and **potential risks**. This structured output is then logged into a memory layer (Mem0) for a persistent, queryable record of all conversations.\n\n\n### Who's it for\n\nBuilt for non-technical solopreneurs and small business owners who want to effortlessly add conversation intelligence to their workflow. Get a single source of truth for all your meeting data without manual transcription or analysis.\n\n\n### Setup Steps\n\nRapid deployment. Your action plan:\n\n1.  **Register Webhook:** First, run the manual trigger in this workflow to send your n8n webhook URL to VEXA. This is a crucial one-time setup step that tells VEXA where to send meeting transcripts after a call.\n2.  **Connect Your CRM:** Copy the `vexa-start` webhook URL from n8n and paste it into your Baserow automation. For example, trigger it when you set the \"Send Bot\" field to `Start_Bot` in your table.\n3.  **Integrate Platforms:** Set up your VEXA, Mem0, and OpenAI API credentials in n8n.\n4.  **Use the Baserow Template:** We provide a free Baserow template that serves as your bot control panel. You can access it here: [https://baserow.io/public/grid/t5kYjovKEHjNix2-6Rijk99y4SDeyQY4rmQISciC14w](https://baserow.io/public/grid/t5kYjovKEHjNix2-6Rijk99y4SDeyQY4rmQISciC14w). This template contains the necessary fields like `Meeting Link`, `Bot Name`, and the `Send Bot` command field that triggers this workflow.\n\n\n### Requirements\n\n* Active n8n instance (self-hosted/cloud).\n* **VEXA.ai** account.\n* **Mem0.ai** account.\n* **Baserow** account for bot management.\n* **OpenAI** account.\n* **Redis Account:** A Redis database is required to temporarily store user IDs.\n* Your Baserow table must include specific fields:\n    * **`Meeting Link`**: The URL of your Google Meet.\n    * **`Bot Name`**: The name you want your AI bot to have.\n    * **`Send Bot`**: A single-select field with `Start_Bot` and `Stop_Bot` as options.\n    * **`Status`**: A single-select field for the workflow to update.\n\n### Next Steps\n\nThis workflow provides a powerful foundation. Here are a few ways to extend its value:\n\n* **Automate Follow-ups:** Trigger an automated email or task in your CRM based on AI-identified next steps or red flags.\n* **Integrate Email & Engagements:** Connect your email or other communication platforms to a workflow that uses Mem0 to parse and store all engagements, building a holistic client memory.\n* **Build a Headless CRM:** Use these combined workflows to create a fully AI-powered, headless CRM that handles everything from initial contact to proactive client management without any manual data entry."
      },
      "typeVersion": 1
    },
    {
      "id": "bdb077ab-ba7e-4145-bed5-4241b09d31ba",
      "name": "웹훅 등록",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        920,
        1400
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c7406080-b022-4d12-8344-7bf4b97e822c",
      "name": "스티커 노트5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        1280
      ],
      "parameters": {
        "color": 6,
        "width": 420,
        "height": 80,
        "content": "## Register Your Webhook\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0b1fe396-bfa7-410d-91bb-5939337c6100",
      "name": "스티커 노트6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        1140
      ],
      "parameters": {
        "color": 6,
        "width": 260,
        "height": 80,
        "content": "## BOT Management "
      },
      "typeVersion": 1
    },
    {
      "id": "c1a973db-26c6-4731-8d02-54785a93cec1",
      "name": "스티커 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -280,
        1820
      ],
      "parameters": {
        "color": 6,
        "width": 280,
        "height": 80,
        "content": "## The Notetaking Magic"
      },
      "typeVersion": 1
    },
    {
      "id": "7d181d4b-fd87-438a-b164-326c5a9a8638",
      "name": "Mem0를 위한 정리",
      "type": "n8n-nodes-base.code",
      "position": [
        1240,
        1860
      ],
      "parameters": {
        "jsCode": "// N8N Code Node: Verwerkt LLM output en assembleert de Mem0 payload.\n// Deze code is ontworpen om de output van een AI-model te structureren voor Mem0.\n\n// ===================================================================\n// I. CONFIGURATION\n// ===================================================================\nconst APP_ID = \"vexa_baserow_project\";\nconst AGENT_ID = \"vexa_baserow_ingestor\";\nconst AGENT_CONTACT_NAMES = [\n    { name: \"Stephan\", keywords: [\"stephan\", \"stephan koning\"] },\n    // Voeg hier andere agent namen toe\n];\n\n// ===================================================================\n// II. HELPER FUNCTIONS\n// ===================================================================\n\n// Helper: Vertaalt een datumstring naar een Unix timestamp (seconden sinds de epoch).\nfunction getUnixTimestamp(dateString) {\n    if (!dateString) return null;\n    try {\n        const dateObj = new Date(dateString);\n        if (isNaN(dateObj.getTime())) return null;\n        return Math.floor(dateObj.getTime() / 1000);\n    } catch (e) {\n        return null;\n    }\n}\n\n// Helper: Zoekt naar bekende agentnamen in de tekst.\nfunction determineAgentContactPerson(text) {\n    if (!text) return '';\n    const searchableText = String(text).toLowerCase();\n    for (const agent of AGENT_CONTACT_NAMES) {\n        if (agent.keywords.some(keyword => searchableText.includes(keyword))) {\n            return agent.name;\n        }\n    }\n    return '';\n}\n\n// Helper: Escaped een string voor JSON-compatibiliteit.\nfunction escapeJsonString(str) {\n    if (typeof str !== 'string') return str;\n    return JSON.stringify(str).slice(1, -1);\n}\n\n// Helper: Haalt een waarde op uit een object met een fallback voor als de key niet bestaat.\nfunction getWithFallback(obj, key, fallback = null) {\n    if (obj && obj.hasOwnProperty(key)) {\n        return obj[key] !== null ? obj[key] : fallback;\n    }\n    return fallback;\n}\n\n// ===================================================================\n// III. MAIN EXECUTION\n// ===================================================================\nconst output_items = [];\n\n// Dit script verwerkt een enkel LLM output-item dat als input wordt gegeven.\ntry {\n    const llm_output_item = items[0]; // De LLM output is het eerste item\n    const llm_output = llm_output_item.json.output || {};\n\n    const meeting_summary = getWithFallback(llm_output, 'summary', \"No summary provided.\");\n    const meeting_sentiment = getWithFallback(llm_output, 'overallSentiment', \"Neutral\");\n    const meeting_red_flags = getWithFallback(llm_output, 'potential red flags', \"None\");\n    const meeting_next_steps = getWithFallback(llm_output, 'nextSteps', \"None\");\n    const social_chatter = getWithFallback(llm_output, 'socialChatter', \"None\");\n    const client_id = getWithFallback(llm_output, 'user_id', \"unknown_client@example.com\");\n\n    const agent_contact_person_name = determineAgentContactPerson(meeting_summary);\n\n    // --- Samenstellen van de 'content' voor Mem0 ---\n    const mem0_content_raw = `Klant had een vergadering met ${agent_contact_person_name || 'een agent'}.\n\nSamenvatting: ${meeting_summary}\nVolgende Stappen: ${meeting_next_steps}`;\n\n    const mem0_content = escapeJsonString(mem0_content_raw);\n\n    // --- Samenstellen van de 'metadata' ---\n    const mem0_metadata = {\n        \"type\": \"meeting\",\n        \"summary\": escapeJsonString(meeting_summary),\n        \"sentiment\": escapeJsonString(meeting_sentiment),\n        \"red_flags\": escapeJsonString(meeting_red_flags),\n        \"next_steps\": escapeJsonString(meeting_next_steps),\n        \"social_chatter\": escapeJsonString(social_chatter),\n        \"agent_contact_person_name\": escapeJsonString(agent_contact_person_name),\n        \"native_meeting_id\": getWithFallback(llm_output, 'native_meeting_id', 'no_id')\n    };\n\n    const mem0_categories = [\"meeting\", \"summary\"];\n    if (meeting_red_flags.toLowerCase() !== \"none\" && meeting_red_flags.length > 2) {\n        mem0_categories.push(\"red_flag\");\n    }\n    if (meeting_next_steps.toLowerCase() !== \"none\") {\n        mem0_categories.push(\"action_items\");\n    }\n\n    // --- Definitieve Mem0 Payload ---\n    const mem0_payload = {\n        \"messages\": [\n            {\n                \"role\": \"user\",\n                \"content\": mem0_content\n            }\n        ],\n        \"user_id\": client_id,\n        \"agent_id\": AGENT_ID,\n        \"app_id\": APP_ID,\n        \"run_id\": `meeting_${client_id}_${Date.now()}`,\n        \"metadata\": mem0_metadata,\n        \"infer\": true,\n        \"categories\": mem0_categories,\n        \"version\": \"v2\",\n        \"output_format\": \"v1.1\",\n        \"timestamp\": getUnixTimestamp(new Date().toISOString())\n    };\n    \n    output_items.push({\"json\": {\"mem0Payload\": mem0_payload}});\n\n} catch (error) {\n    console.error(`Fout bij verwerken van LLM output:`, error.message, error);\n    output_items.push({\"json\": {\"error\": true, \"message\": String(error), \"originalItem\": items[0].json}});\n}\n\nreturn output_items;"
      },
      "typeVersion": 2
    }
  ],
  "pinData": {},
  "connections": {
    "d0912b45-fe4e-4380-bcb9-be9b0365dad3": {
      "main": [
        [
          {
            "node": "8e838252-400b-4019-a22e-a3268f654db1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d3b157f5-c60c-4475-b5ac-2bda2422ad8e": {
      "main": [
        [
          {
            "node": "4183ab08-ddca-4489-8358-dec530778d28",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7d181d4b-fd87-438a-b164-326c5a9a8638": {
      "main": [
        [
          {
            "node": "724eb262-e53c-4aad-8050-6feb8eea7236",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "78614e07-62af-4cec-8f7f-d35d9814d615": {
      "ai_languageModel": [
        [
          {
            "node": "6224428f-723c-4024-bab9-483edcf777fa",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "15125ec1-3ece-4a0e-8221-1d3359c71f7a": {
      "main": [
        [
          {
            "node": "d0912b45-fe4e-4380-bcb9-be9b0365dad3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d6097c2d-5acb-41ec-b468-e93ef9693b89": {
      "main": [
        [
          {
            "node": "18de75e4-6d24-4f6b-8481-cb18f034e932",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ff74078e-4506-4750-80ec-6df095b3344d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e042c9b4-81c5-4852-b405-a7e346483eec": {
      "main": [
        [
          {
            "node": "49fe574d-3b08-42f6-8f25-3c6bc123db8a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "981f41f0-b5aa-4524-a6c1-60c526ed2131": {
      "main": [
        [
          {
            "node": "8e62e7c4-7307-4a65-a9c8-c9e77ec87b43",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5a32f034-8afe-4747-9581-52d5e2360b3c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bdb077ab-ba7e-4145-bed5-4241b09d31ba": {
      "main": [
        [
          {
            "node": "e4435a20-ac5d-4047-bf44-111175034913",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6224428f-723c-4024-bab9-483edcf777fa": {
      "main": [
        [
          {
            "node": "7d181d4b-fd87-438a-b164-326c5a9a8638",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "40f2c644-6fad-473f-bc17-273b4106d45a": {
      "main": [
        [
          {
            "node": "981f41f0-b5aa-4524-a6c1-60c526ed2131",
            "type": "main",
            "index": 0
          },
          {
            "node": "15125ec1-3ece-4a0e-8221-1d3359c71f7a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4183ab08-ddca-4489-8358-dec530778d28": {
      "main": [
        [
          {
            "node": "e042c9b4-81c5-4852-b405-a7e346483eec",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "d6097c2d-5acb-41ec-b468-e93ef9693b89",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ff74078e-4506-4750-80ec-6df095b3344d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8e838252-400b-4019-a22e-a3268f654db1": {
      "main": [
        [
          {
            "node": "6224428f-723c-4024-bab9-483edcf777fa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6d690e78-8a51-4b45-82b3-febc02d8a752": {
      "main": [
        [
          {
            "node": "d0912b45-fe4e-4380-bcb9-be9b0365dad3",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "8e62e7c4-7307-4a65-a9c8-c9e77ec87b43": {
      "main": [
        [
          {
            "node": "6d690e78-8a51-4b45-82b3-febc02d8a752",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "49fe574d-3b08-42f6-8f25-3c6bc123db8a": {
      "main": [
        [
          {
            "node": "e02d44ca-fe4e-414e-80bd-38890b129022",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급 - 문서 추출, AI 요약

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수26
카테고리2
노드 유형16
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

저자
Stephan Koning

Stephan Koning

@reklaim

Account Executive by day , Noco builder for fun at night and always a proud dad of Togo the Samoyed.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34