8
n8n 한국어amn8n.com

GPT-4, Telegram, 연락처 데이터베이스를 사용하여 전문 이메일 초안 생성

고급

이것은Miscellaneous, AI RAG, Multimodal AI분야의자동화 워크플로우로, 17개의 노드를 포함합니다.주로 Code, Gmail, Telegram, GoogleDocs, ManualTrigger 등의 노드를 사용하며. GPT-4, Telegram 및 연락처 데이터베이스를 사용하여 전문 이메일 초안 생성

사전 요구사항
  • Google 계정 및 Gmail API 인증 정보
  • Telegram Bot Token
  • OpenAI API Key
  • Pinecone API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "cf4d575edce4b7d398f7313598b706cceaba685fe3a0bb5bf06e3c97727abb23",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "b662d7e0-efcf-4810-a14a-9fe24a9d3ce0",
      "name": "워크플로우 실행 시",
      "type": "n8n-nodes-base.manualTrigger",
      "disabled": true,
      "position": [
        -144,
        336
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "22e31736-6723-4e44-adc9-a5e5fb38a093",
      "name": "Pinecone Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        272,
        192
      ],
      "parameters": {
        "mode": "insert",
        "options": {
          "pineconeNamespace": "contacts"
        },
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "gmailagent",
          "cachedResultName": "gmailagent"
        }
      },
      "credentials": {
        "pineconeApi": {
          "id": "VoL22Vm4vFVB0tEG",
          "name": "PineconeApi account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "9f412fb3-5fbf-4e85-ba54-1a990d12a7cc",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        384,
        416
      ],
      "parameters": {
        "options": {
          "dimensions": 512
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "2bHK8I9Y4KDhH8Qn",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ac2eaead-317c-4c66-a621-903074fdb137",
      "name": "기본 데이터 로더",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        224,
        416
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "0f0a1c99-29a8-4fe3-bdc5-815fe53e55ea",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        96
      ],
      "parameters": {
        "color": 4,
        "width": 928,
        "height": 576,
        "content": "##  Send data to vector database \n**connect** the trigger node when you ready to push your contacts data to the database "
      },
      "typeVersion": 1
    },
    {
      "id": "5014fbe1-e8b4-48c7-9585-6452bd1b8dc1",
      "name": "AI 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        160,
        944
      ],
      "parameters": {
        "text": "={{ $json.message.text }}",
        "options": {
          "systemMessage": "=You are an AI assistant that drafts professional emails.  \nYou **must always write formal emails**. \n\nYou have access to the tool \"Pinecone Vector Store1\", which retrieves user data (including email addresses).  \nIf the user specifies a name (e.g., \"Hoger\", \"Professor John\"), you **must call Pinecone Vector Store1** to fetch the correct email address.  \nNever leave the `sendTo` field empty — if Pinecone returns nothing, return `\"sendTo= \"`.  \n\n## Context\n- Input comes from a chat message.  \n- Always output in the required format below.  \n\n## Required Output Format\n[\n  {\n    \"query\": \"sendTo=<recipient email from Pinecone>&subject=<short subject line>&emailType=text&message=<formal email body>&bccList=<comma separated emails if any>&ccList=<comma separated emails if any>&senderName=<name of sender>\"\n  }\n]\n\n## Rules\n- `sendTo` must come from Pinecone if not explicitly given.  \n- `emailType=text` unless explicitly told otherwise.  \n- If Pinecone fails, put `\"sendTo= \"`.  \n- Always keep email language formal (university tone).  \n- Output must be strict JSON, no markdown, no extra text.  \nalywya set the sender name as Abbas Alaa"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "038e2d41-65bf-4abd-85e2-cd525c000644",
      "name": "Pinecone Vector Store1",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        208,
        1184
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "options": {
          "pineconeNamespace": "contacts"
        },
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "gmailagent",
          "cachedResultName": "gmailagent"
        },
        "toolDescription": "Call this to retrieve information about contacts like email address."
      },
      "credentials": {
        "pineconeApi": {
          "id": "VoL22Vm4vFVB0tEG",
          "name": "PineconeApi account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "471b39e4-48b2-4766-b8c2-de422cf20211",
      "name": "Embeddings OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        320,
        1360
      ],
      "parameters": {
        "options": {
          "dimensions": 512
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "2bHK8I9Y4KDhH8Qn",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3a9e5c26-76dc-48f3-bfa8-fa337ba98e44",
      "name": "코드",
      "type": "n8n-nodes-base.code",
      "position": [
        544,
        1136
      ],
      "parameters": {
        "jsCode": "// Get model output from previous node\nconst rawOutput =$input.first().json.output ;\n\n// 1. Remove code fences if present\nlet cleaned = rawOutput.replace(/```json|```/g, \"\").trim();\n\n// 2. Parse into JSON\nlet parsed;\ntry {\n  parsed = JSON.parse(cleaned);\n} catch (e) {\n  throw new Error(\"Failed to parse model output: \" + e.message);\n}\n\n// 3. Extract query string\nconst queryString = parsed[0].query;\n\n// 4. Convert query string into key-value pairs\nconst params = {};\nqueryString.split(\"&\").forEach(pair => {\n  const [key, value] = pair.split(\"=\");\n  params[key] = decodeURIComponent(value || \"\");\n});\n\n// Return usable fields for Gmail node\nreturn [\n  {\n    json: {\n      sendTo: params.sendTo,\n      subject: params.subject,\n      message: params.message,\n      bccList: params.bccList,\n      ccList: params.ccList,\n      senderName: params.senderName,\n      emailType: params.emailType\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "66cc9bc2-71eb-4fa0-b9a1-c61c7a497676",
      "name": "초안 생성",
      "type": "n8n-nodes-base.gmail",
      "position": [
        800,
        1136
      ],
      "webhookId": "0c76b19c-09cf-45b9-86a5-03581d8cd40e",
      "parameters": {
        "message": "={{ $json.message }}",
        "options": {
          "ccList": "={{ $json.ccList }}",
          "sendTo": "={{ $json.sendTo }}",
          "bccList": "={{ $json.bccList }}"
        },
        "subject": "={{ $json.subject }}",
        "resource": "draft"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "JwEaiUptSaLJovzC",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "9f71e612-ac1d-4c16-9b95-fe454dfae55b",
      "name": "문서 가져오기",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        32,
        192
      ],
      "parameters": {
        "operation": "get",
        "documentURL": "19DYlWxxKJanvRwMnQp0tyxt2Z5H7AheKA3WEegR9YDI"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "C25e8r7V7i2AN6GO",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c88bbd3a-6d96-49a5-a54c-58f66f826a06",
      "name": "스티커 전송",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1248,
        1136
      ],
      "webhookId": "8e63d08c-6b04-41ae-b79f-cac04782e978",
      "parameters": {
        "file": "CAACAgIAAxkBAANEaL7Y0gABEcXooA-abKgPERguErxVAAIHRwAC839wS2T25-Ght_GiNgQ",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "operation": "sendSticker",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "K26HYeLzDiVqdMpZ",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "dd1ae099-477d-49be-b443-d3b76147f65a",
      "name": "Telegram 트리거",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -240,
        1088
      ],
      "webhookId": "dc3fa5b7-b65d-4151-89d5-b4229379dc4b",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "K26HYeLzDiVqdMpZ",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f1ce527e-329d-4272-81b1-a90985ce111e",
      "name": "텍스트 메시지 전송",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1024,
        1136
      ],
      "webhookId": "8e63d08c-6b04-41ae-b79f-cac04782e978",
      "parameters": {
        "text": "تم تآمر آمر",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "K26HYeLzDiVqdMpZ",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "11908db3-323d-4dca-90be-f4eac9b33927",
      "name": "스티커 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        848
      ],
      "parameters": {
        "color": 5,
        "width": 768,
        "height": 688,
        "content": "## RAG AI agent to get the \"send to\" emails and format the emails\n"
      },
      "typeVersion": 1
    },
    {
      "id": "cf6788a3-bd84-4ab6-ac42-6a677fe8e787",
      "name": "스티커 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        864
      ],
      "parameters": {
        "color": 2,
        "width": 768,
        "height": 576,
        "content": "## Draft the email and send the completion message with a funny sticker.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "95bf59f9-5bfe-4e66-8474-b4aa30f2c1d0",
      "name": "OpenAI 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        32,
        1152
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "2bHK8I9Y4KDhH8Qn",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "pinData": {},
  "connections": {
    "3a9e5c26-76dc-48f3-bfa8-fa337ba98e44": {
      "main": [
        [
          {
            "node": "66cc9bc2-71eb-4fa0-b9a1-c61c7a497676",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5014fbe1-e8b4-48c7-9585-6452bd1b8dc1": {
      "main": [
        [
          {
            "node": "3a9e5c26-76dc-48f3-bfa8-fa337ba98e44",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "66cc9bc2-71eb-4fa0-b9a1-c61c7a497676": {
      "main": [
        [
          {
            "node": "f1ce527e-329d-4272-81b1-a90985ce111e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9f71e612-ac1d-4c16-9b95-fe454dfae55b": {
      "main": [
        [
          {
            "node": "22e31736-6723-4e44-adc9-a5e5fb38a093",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dd1ae099-477d-49be-b443-d3b76147f65a": {
      "main": [
        [
          {
            "node": "5014fbe1-e8b4-48c7-9585-6452bd1b8dc1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9f412fb3-5fbf-4e85-ba54-1a990d12a7cc": {
      "ai_embedding": [
        [
          {
            "node": "22e31736-6723-4e44-adc9-a5e5fb38a093",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "95bf59f9-5bfe-4e66-8474-b4aa30f2c1d0": {
      "ai_languageModel": [
        [
          {
            "node": "5014fbe1-e8b4-48c7-9585-6452bd1b8dc1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "471b39e4-48b2-4766-b8c2-de422cf20211": {
      "ai_embedding": [
        [
          {
            "node": "038e2d41-65bf-4abd-85e2-cd525c000644",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "ac2eaead-317c-4c66-a621-903074fdb137": {
      "ai_document": [
        [
          {
            "node": "22e31736-6723-4e44-adc9-a5e5fb38a093",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "f1ce527e-329d-4272-81b1-a90985ce111e": {
      "main": [
        [
          {
            "node": "c88bbd3a-6d96-49a5-a54c-58f66f826a06",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "038e2d41-65bf-4abd-85e2-cd525c000644": {
      "ai_tool": [
        [
          {
            "node": "5014fbe1-e8b4-48c7-9585-6452bd1b8dc1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

고급 - 기타, AI RAG, 멀티모달 AI

유료인가요?

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

워크플로우 정보
난이도
고급
노드 수17
카테고리3
노드 유형12
난이도 설명

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

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34