This workflow follows the Gmail → Google Drive recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"parameters": {
"url": "https://api.elevenlabs.io/v2/voices",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "voice_type",
"value": "personal"
},
{
"name": "search",
"value": "\uac80\uc0c9\ud560 \ud0a4\uc6cc\ub4dc\ub85c \uad50\uccb4\ud558\uc138\uc694"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
420,
160
],
"id": "9e5269a0-fe07-446b-8fad-30513c222cbd",
"name": "Find Voice",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "http://api.openweathermap.org/data/2.5/weather",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "\uc6d0\ud558\ub294 \ub3c4\uc2dc\ub97c \uc601\uc5b4\ub85c \uc785\ub825\ud558\uc138\uc694."
},
{
"name": "units",
"value": "metric"
},
{
"name": "lang",
"value": "kr"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
640,
-120
],
"id": "f40a6d37-fd07-4a0f-95d4-d035a1fb3f00",
"name": "OpenWeatherMap API",
"credentials": {
"httpQueryAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "=https://api.elevenlabs.io/v1/text-to-speech/{{ $json.voices[0].voice_id }}",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "output_format",
"value": "mp3_44100_128"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{(() => {\n const text = $('Markdown To Plain Text').item.json.extracted[0];\n return {\n model_id: \"eleven_multilingual_v2\",\n voice_settings: {\n speed: 1.2,\n stability: 1.0,\n similarity_boost: 0.7,\n style: 0.35\n },\n text\n };\n})()}}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
640,
160
],
"id": "314e5a14-0f84-4eec-af30-4bc93392cb5d",
"name": "Generate Voice",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"jsCode": "// \ub9c8\ud06c\ub2e4\uc6b4\uc5d0\uc11c \ucf54\ub4dc\ube14\ub7ed (```)\ub9cc \ucd94\ucd9c\nreturn [\n {\n json: {\n extracted: (() => {\n const md = $input.first().json.message.content;\n const matches = [...md.matchAll(/```(?:\\w+)?\\n([\\s\\S]*?)```/g)];\n return matches.map(m => m[1].trim());\n })()\n }\n }\n];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1480,
-120
],
"id": "f8aaa465-4ad8-4248-95ce-9e85475f747b",
"name": "Markdown To Plain Text"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 30 5 * * *"
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
400,
-120
],
"id": "8e3c14d6-c74a-46e3-99a8-e4fd5aac93fb",
"name": "Schedule Trigger"
},
{
"parameters": {
"name": "=\uc624\ub298\uc758_\ub0a0\uc528_{{(new Date()).toISOString().split('T')[0] + '.mp3'}}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"folderId": {
"__rl": true,
"value": "1oXMkBoWj4SvVpWd9CMaL6JpUe3cRNo47",
"mode": "list",
"cachedResultName": "\uc5ec\ub7ec\ubd84\uc758_\ud3f4\ub354\ub85c_\uc9c0\uc815_\ud558\uc138\uc694.",
"cachedResultUrl": "https://drive.google.com/drive/folders/1oXMkBoWj4SvVpWd9CMaL6JpUe3cRNo47"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
880,
160
],
"id": "fa0994b8-e241-4976-9910-b049ec6bf7c0",
"name": "Voice File Upload",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4o-2024-11-20",
"mode": "list",
"cachedResultName": "GPT-4O-2024-11-20"
},
"messages": {
"values": [
{
"content": "=### Wearther Infomation\n\n{{(() => {\n const date = new Date();\n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const hh = String(date.getHours()).padStart(2, '0');\n const min = String(date.getMinutes()).padStart(2, '0');\n return `${yyyy}\ub144 ${mm}\uc6d4 ${dd}\uc77c ${hh}\uc2dc ${min}\ubd84`;\n})()}} \ubd80\uc0b0\uc758 \ub0a0\uc528\uc785\ub2c8\ub2e4.\n\n\ub0a0\uc528\ub294 {{ $('OpenWeatherMap API').item.json.weather[0].description }} \uc785\ub2c8\ub2e4.\n\ud604\uc7ac \uc628\ub3c4\ub294 {{ $('OpenWeatherMap API').item.json.main.temp }} \uc785\ub2c8\ub2e4.\n\uccb4\uac10 \uc628\ub3c4\ub294 {{ $('OpenWeatherMap API').item.json.main.feels_like }} \uc785\ub2c8\ub2e4.\n\uc2b5\ub3c4\ub294 {{ $('OpenWeatherMap API').item.json.main.humidity }} \uc785\ub2c8\ub2e4.\n\uae30\uc555\uc740 {{ $('OpenWeatherMap API').item.json.main.pressure }} \uc785\ub2c8\ub2e4.\n\ud48d\ud5a5\uc740 {{ $('OpenWeatherMap API').item.json.wind.deg }} \uc785\ub2c8\ub2e4.\n\ud48d\uc18d\uc740 {{ $('OpenWeatherMap API').item.json.wind.speed }} \uc785\ub2c8\ub2e4.\n\n### Personal Infomation\n\n- \uc774\ub984 : \uadfc\uc11d\n- \uc131\ubcc4 : \ub0a8\uc131\n\n### Instruction\n\n- \uae30\uc0c1 \uce90\uc2a4\ud130 \uc774\ub984\uc740 `\ub2e4\ud604`\uc785\ub2c8\ub2e4.\n- `\ub2e4\ud604`\uc740 \ub9d0\ud22c\uac00 \ubc1d\uc740 \ud3b8\uc774\uc5d0\uc694.\n- \uae30\uc0c1 \uc815\ubcf4\ub294 \ubaa8\ub450 \ub2e4 \ub9d0\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4.\n- \ub098\ub9cc\uc744 \uc704\ud55c \uae30\uc0c1 \uce90\uc2a4\ud130\uc5d0\uac8c \uc624\ub298\uc758 \ub0a0\uc528\ub97c \uc804\ud558\ub294 [Wearther Infomation]\uc758 \ub0b4\uc6a9\uc744 \uae30\ubc18\uc73c\ub85c \uc544\uce68 \uae30\uc0c1 \ub300\ubcf8\uc744 \ub9cc\ub4e4\uc5b4 \uc8fc\uc138\uc694.\n- \ub0b4 \uc774\ub984\uc744 \ubd80\ub97c \ub54c\ub294 \ubc18\uc874\ub313\ub9d0\uc744 \uc0ac\uc6a9\ud558\uba74\uc11c \ud3b8\uc548\ud558\uac8c \ubd88\ub7ec\uc8fc\uc138\uc694.\n- \ub098\uae0b\ub098\uae0b\ud558\uace0 \ubc1d\uc740 \ub290\ub08c\uc73c\ub85c \uc791\uc131\ud574\uc8fc\uc138\uc694.\n- \uc26c\uc5b4\uac00\ub294 \ud0c0\uc774\ubc0d\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ub123\uc5b4\uc8fc\uc138\uc694.(\ud544\uc694\ud55c \uacbd\uc6b0\uc5d0\ub9cc \ub123\uc5b4\uc8fc\uc138\uc694.)\n - 0.1 ~ 0.3\ucd08 \uc0ac\uc774\ub97c \ub300\ubcf8\uc5d0 \ub530\ub77c \uc801\uc808\ud558\uac8c \uc26c\uc5b4\uc8fc\uc138\uc694.\n - \uc608\uc2dc : 0.3\ucd08 \uc274\ub54c : `<break time=\"0.3s\" />`\n - \uc26c\uc5b4\uac00\ub294 \ud0c0\uc774\ubc0d \uba58\ud2b8 \uc55e \ub4a4\ub85c\ub294 \ubaa8\ub450 \ud070\ub530\uc634\ud45c\ub85c \ub300\uc0ac\uac00 \uadf8\ub8f9\uc73c\ub85c \ubb36\uc5ec\uc57c \ud569\ub2c8\ub2e4.\n- \uac00\ub2a5\ud558\uba74 markdown \ud615\uc2dd\uc73c\ub85c \ub300\ubcf8 \ub0b4\uc6a9\ub9cc \uc791\uc131\ud574\uc8fc\uc138\uc694.\n\n### Output"
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
1100,
-120
],
"id": "ebf6d4cf-6881-4f26-a877-03f1f80b3c11",
"name": "Make Script",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
1320,
400
],
"id": "d6f9d8d2-b2a8-4480-889e-57a94bf33690",
"name": "No Operation, do nothing"
},
{
"parameters": {
"resource": "fileFolder",
"queryString": "\uc624\ub298\uc758_\ub0a0\uc528",
"filter": {},
"options": {
"fields": [
"webViewLink",
"id",
"name"
]
}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
420,
400
],
"id": "c830602a-b508-4be5-841a-d8c46e7fb62b",
"name": "Google Drive Search",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const files = $input.all();\n\nconst latestFile = files.reduce((latest, current) => {\n const getDate = name => {\n const match = name.match(/\\d{4}-\\d{2}-\\d{2}/);\n return match ? new Date(match[0]) : new Date(0);\n };\n\n const latestName = latest.json.name;\n const currentName = current.json.name;\n\n return getDate(currentName) > getDate(latestName) ? current : latest;\n});\n\nreturn [{ json: { id: latestFile.json.id, name: latestFile.json.name, webViewLink: latestFile.json.webViewLink } }];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
640,
400
],
"id": "35d61162-646a-4832-9c35-b48b09511257",
"name": "File Search"
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{ $json.id }}",
"mode": "id"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
900,
400
],
"id": "5eb91f8f-a4f9-44b7-9ef8-5e2b77ce4d1a",
"name": "Get Audio File",
"alwaysOutputData": false,
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "your-email@example.com",
"subject": "\uc624\ub298\uc758 \ub0a0\uc528\uc785\ub2c8\ub2e4.",
"message": "=<!DOCTYPE html>\n<html lang=\"ko\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>\uc624\ub298\uc758 \ub0a0\uc528</title>\n</head>\n<body style=\"font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; background-color: #f9f9f9; color: #333;\">\n <div style=\"max-width: 600px; margin: 0 auto; background-color: #ffffff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\">\n <div style=\"background: linear-gradient(135deg, #64b5f6 0%, #2196f3 100%); color: white; padding: 25px; text-align: center;\">\n <h1 style=\"margin: 0; font-size: 28px; font-weight: 500;\">\uc624\ub298\uc758 \ub0a0\uc528 \uc815\ubcf4</h1>\n <div style=\"font-size: 16px; opacity: 0.9; margin-top: 5px;\"></div>\n </div>\n \n <div style=\"padding: 40px 30px; text-align: center;\">\n <div style=\"font-size: 72px; margin-bottom: 20px;\">\ud83c\udf24\ufe0f</div>\n <p style=\"font-size: 18px; line-height: 1.6; margin-bottom: 30px; color: #555;\">\n \uc624\ub298\uc758 \ub0a0\uc528 \uc815\ubcf4\uac00 \uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<br>\n \uc544\ub798 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc790\uc138\ud55c \ub0a0\uc528 \uc815\ubcf4\ub97c \ud655\uc778\ud558\uc138\uc694.\n </p>\n \n <a href=\"{{ $('File Search').item.json.webViewLink }}\" style=\"display: inline-block; padding: 14px 30px; background: linear-gradient(135deg, #4CAF50 0%, #388E3C 100%); color: white; text-decoration: none; border-radius: 50px; font-size: 16px; font-weight: 500; text-align: center; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1);\">\n \ub0a0\uc528 \uc815\ubcf4 \ud655\uc778\ud558\uae30\n </a>\n </div>\n \n <div style=\"background-color: #f5f5f5; padding: 15px; text-align: center; font-size: 13px; color: #777;\">\n <p style=\"margin: 5px 0;\">\u00a9 \ub0a0\uc528 \uc815\ubcf4 \uc11c\ube44\uc2a4. \ubaa8\ub4e0 \uad8c\ub9ac \ubcf4\uc720.</p>\n <p style=\"margin: 5px 0;\">\uc774 \uc774\uba54\uc77c\uc740 \ud68c\uc6d0\ub2d8\uc758 \uad6c\ub3c5\uc5d0 \ub530\ub77c \ubc1c\uc1a1\ub418\uc5c8\uc2b5\ub2c8\ub2e4. <a href=\"#\" style=\"color: #2196f3;\">\uad6c\ub3c5 \ucde8\uc18c</a></p>\n </div>\n </div>\n</body>\n</html>",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
1100,
400
],
"id": "c428055c-e14c-408e-b613-553982668833",
"name": "Send Gmail",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "databasePage",
"databaseId": {
"__rl": true,
"value": "your-notion-db-node-id",
"mode": "list",
"cachedResultName": "your-notion-db-node-id",
"cachedResultUrl": "https://www.notion.so/your-notion-db-node-id"
},
"title": "={{(() => {\n const date = new Date();\n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const hh = String(date.getHours()).padStart(2, '0');\n const min = String(date.getMinutes()).padStart(2, '0');\n return `${yyyy}\ub144 ${mm}\uc6d4 ${dd}\uc77c ${hh}\uc2dc ${min}\ubd84`;\n})()}}",
"propertiesUi": {
"propertyValues": [
{
"key": "\ub0a0\uc528|rich_text",
"textContent": "={{ $json.weather[0].description }}"
},
{
"key": "\uc628\ub3c4|number",
"numberValue": "={{ $json.main.temp }}"
},
{
"key": "\uccb4\uac10 \uc628\ub3c4|number",
"numberValue": "={{ $json.main.feels_like }}"
},
{
"key": "\ucd5c\uc800 \uae30\uc628|number",
"numberValue": "={{ $json.main.temp_min }}"
},
{
"key": "\ucd5c\uace0 \uae30\uc628|number",
"numberValue": "={{ $json.main.temp_max }}"
},
{
"key": "\uc2b5\ub3c4|number",
"numberValue": "={{ $json.main.humidity }}"
},
{
"key": "\uae30\uc555|number",
"numberValue": "={{ $json.main.pressure }}"
},
{
"key": "\ud48d\uc18d|number",
"numberValue": "={{ $json.wind.speed }}"
},
{
"key": "\ud48d\ud5a5|number",
"numberValue": "={{ $json.wind.deg }}"
},
{
"key": "\uc9c0\uc5ed|rich_text",
"textContent": "\ubd80\uc0b0"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
880,
-120
],
"id": "0da236a2-ebf6-4f80-9c30-46d161e898d5",
"name": "Notion",
"credentials": {
"notionApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"authentication": "oAuth2",
"select": "channel",
"channelId": {
"__rl": true,
"value": "C08623KATRV",
"mode": "list",
"cachedResultName": "n8n"
},
"text": "=[Make Weather Cast] \uad6c\uae00 \ub4dc\ub77c\uc774\ube0c \uc5c5\ub85c\ub4dc \uacfc\uc815\uc5d0\uc11c \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uad6c\uae00 Oauth \uc778\uc99d\uc744 \ub2e4\uc2dc \ud655\uc778\ud574\ubcf4\uc138\uc694.",
"otherOptions": {}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.3,
"position": [
1100,
180
],
"id": "99d873d7-23f2-45e7-ae27-16235b64663c",
"name": "Slack",
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "### \uc2ac\ub799\uc744 \uc4f0\uae30 \uc2eb\ub2e4\uba74 \uc9c0\uc6b0\uc138\uc694.",
"height": 200,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"position": [
1060,
140
],
"typeVersion": 1,
"id": "bf2f4c4b-862c-490e-a9c6-5a71b7f59c12",
"name": "Sticky Note"
},
{
"parameters": {
"content": "### \ub0b4\uc6a9\uc744 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.",
"height": 200,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
340,
120
],
"typeVersion": 1,
"id": "c7b8f305-65fb-4501-ac23-dc736d25c10e",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "### \ub0b4\uc6a9\uc744 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.",
"height": 200,
"width": 440,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
-160
],
"typeVersion": 1,
"id": "52df127d-54d9-4909-a4f5-69edcc94d171",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "### \ub0b4\uc6a9\uc744 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.",
"height": 200,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
120
],
"typeVersion": 1,
"id": "e3b7de92-5cc8-4560-b9a0-cb47fcd99cc7",
"name": "Sticky Note3"
},
{
"parameters": {
"content": "### \ub0b4\uc6a9\uc744 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.",
"height": 200,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
340,
360
],
"typeVersion": 1,
"id": "6c14a0fd-05f1-4bbb-be32-007e76418822",
"name": "Sticky Note4"
},
{
"parameters": {
"content": "### \ub0b4\uc6a9\uc744 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.",
"height": 200,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
360
],
"typeVersion": 1,
"id": "a90013c9-c799-4e55-be5e-b2c89b0bd0cb",
"name": "Sticky Note5"
}
],
"connections": {
"Find Voice": {
"main": [
[
{
"node": "Generate Voice",
"type": "main",
"index": 0
}
]
]
},
"OpenWeatherMap API": {
"main": [
[
{
"node": "Notion",
"type": "main",
"index": 0
}
]
]
},
"Generate Voice": {
"main": [
[
{
"node": "Voice File Upload",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Markdown To Plain Text": {
"main": [
[
{
"node": "Find Voice",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "OpenWeatherMap API",
"type": "main",
"index": 0
}
]
]
},
"Voice File Upload": {
"main": [
[
{
"node": "Google Drive Search",
"type": "main",
"index": 0
}
],
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
},
"Make Script": {
"main": [
[
{
"node": "Markdown To Plain Text",
"type": "main",
"index": 0
}
]
]
},
"Google Drive Search": {
"main": [
[
{
"node": "File Search",
"type": "main",
"index": 0
}
]
]
},
"File Search": {
"main": [
[
{
"node": "Get Audio File",
"type": "main",
"index": 0
}
]
]
},
"Get Audio File": {
"main": [
[
{
"node": "Send Gmail",
"type": "main",
"index": 0
}
]
]
},
"Send Gmail": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Notion": {
"main": [
[
{
"node": "Make Script",
"type": "main",
"index": 0
}
]
]
},
"Slack": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
}
},
"meta": {
"templateCredsSetupCompleted": true
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
gmailOAuth2googleDriveOAuth2ApihttpHeaderAuthhttpQueryAuthnotionApiopenAiApislackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Virtual-Weather-Caster-Workflow. Uses httpRequest, googleDrive, openAi, gmail. Scheduled trigger; 20 nodes.
Source: https://gist.github.com/Mineru98/dc91b0c917a2f6f37fe3369bf683ea99 — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
A scheduled process aggregates content from eight distinct data sources and standardizes all inputs into a unified format. AI models perform sentiment scoring, detect conspiracy or misinformation sign
YouTube Automation Pipeline - Notion + Gemini + CometAPI + JSON2Video. Uses notion, httpRequest, googleDrive, writeBinaryFile. Scheduled trigger; 43 nodes.
What it is An automated LinkedIn content system that takes a simple form (idea + optional file), generates LinkedIn posts with OpenAI, stores them in Notion, builds Google Slides carousels, and auto-p
Imagine a dedicated financial expert tirelessly working behind the scenes, sifting through every transaction, every investment move, and every accounting entry. That's exactly what this automated syst
Daily trigger scans your Notion database for unpublished blog ideas AI generates complete blog posts + engaging LinkedIn content using OpenAI (Blog Posting is not implemented yet) Creates custom image