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
사용된 노드 (17)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 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)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
AI驱动의이메일分诊与자동回复系统,통합OpenAI에이전트및Gmail
AI驱动의이메일分诊与자동回复系统,통합OpenAI에이전트및Gmail
If
Set
Gmail
+
If
Set
Gmail
68 노드Abdullahi Ahmed
콘텐츠 제작
문서 수집
Google Drive, Sheets 및 OpenAI를 사용한 문서 수집 및 RAG 시스템 자동화
If
Form
Crypto
+
If
Form
Crypto
28 노드Mohamed Abdelwahab
기타
Telegram AI 지원 채팅 로봇(다모드 입력)
GPT-4와 Supabase RAG을 사용하여 다중 모달 Telegram 지원 로봇을 생성합니다.
If
Set
Code
+
If
Set
Code
51 노드Ezema Kingsley Chibuzo
지원 챗봇
Gmail, GPT-4 및 벡터 지식 베이스를 사용한 자동화된 고객 지원 시스템
Gmail, GPT-4 및 벡터 지식 베이스를 사용한 자동화된 고객 지원 시스템
If
Set
Code
+
If
Set
Code
32 노드Khair Ahammed
AI RAG
지능형 지식 어시스턴트
Telegram에서 GPT-4o-mini, RAG, RLHF를 사용하여 지능형 지식 어시스턴트를 구축하고 MongoDB 통합
Set
Code
Telegram
+
Set
Code
Telegram
26 노드NovaNode
지원
지식 대리자(구글 드라이브, Telegram 포함)
기반 Google Drive, GPT-4-mini 및 Telegram의 문서 질문 답변 챗봇(RAG 시스템)
Telegram
Google Drive
Agent
+
Telegram
Google Drive
Agent
13 노드DuyTran
AI RAG