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": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
224,
416
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "0f0a1c99-29a8-4fe3-bdc5-815fe53e55ea",
"name": "Sticky Note",
"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 Agent",
"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": "Code",
"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 Trigger",
"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": "Sticky Note1",
"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": "Sticky Note2",
"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 Chat Model",
"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
サポート
ナレッジプロキシ(Google Drive、Telegram 含む)
Google Drive、GPT-4-mini、およびTelegramを基盤としたドキュメントQ&Aチャットボット(RAGシステム)
Telegram
Google Drive
Agent
+
Telegram
Google Drive
Agent
13 ノードDuyTran
AI RAG検索拡張