Tagesbericht - Aufgaben und Ereignisse
Dies ist ein Personal Productivity, Multimodal AI-Bereich Automatisierungsworkflow mit 18 Nodes. Hauptsächlich werden Code, Gmail, Merge, Todoist, GoogleCalendar und andere Nodes verwendet. Automatisierter täglicher Briefing mit Todoist, Google Kalender und GPT-4o über Gmail
- •Google-Konto + Gmail API-Anmeldedaten
- •OpenAI API Key
Verwendete Nodes (18)
{
"id": "oRUhVLfKvrxvUSky",
"meta": {
"instanceId": "dfeafc9dc27dee2289436a8382e76ed3cdd65cbd44e54ea55fd1393614bf0382",
"templateCredsSetupCompleted": true
},
"name": "Daily Briefing- Tasks & Events",
"tags": [],
"nodes": [
{
"id": "9f7abaa2-1d99-488d-a2f6-ce63af3dd509",
"name": "Nachricht an ein Modell",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
400,
-20
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "=Here's my plan for today:\n\n🗂️ **Tasks**\n{{ $json.formattedTasks }}\n\n📅 **Calendar**\n{{ $json.formattedEvents }}\n\n---\n\n✅ Structure the reply in this exact markdown format:\n\n**Daily Summary** \n[one-sentence summary of the day]\n\n\\n\\n\n\n🎯 **Top Priorities** \n1. ✅ [Task 1] – ⏰ [Time] \n2. ✅ [Task 2] – ⏰ [Time] \n...\n\n\\n\\n\n\n💡 **Focus Mantra** \n\"[motivational quote]\"\n\n\\n\\n\n\nAdd **line breaks** between each section and each task, so it's email-friendly and easy to scan.\nAvoid long paragraphs. Keep it clean and structured."
}
]
}
},
"credentials": {
"openAiApi": {
"id": "QpyyqFY2rAs6Umuv",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "3bccfb3e-2e86-4c0b-8bce-891b6ad3b969",
"name": "Nachricht senden",
"type": "n8n-nodes-base.gmail",
"position": [
980,
-20
],
"webhookId": "af5f600b-c704-4a52-98a1-a3323a39048a",
"parameters": {
"sendTo": "emailPlaceholder",
"message": "={{ $json.htmlBody }}",
"options": {},
"subject": "Morning Briefings"
},
"credentials": {
"gmailOAuth2": {
"id": "d9YtSxVNiAg2C7FK",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "e21eed99-cc0b-4224-b7f0-e85f62dd6c78",
"name": "Mehrere Aufgaben abrufen",
"type": "n8n-nodes-base.todoist",
"position": [
-320,
80
],
"parameters": {
"filters": {
"projectId": "2357038842"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"todoistApi": {
"id": "bhVIRYwTcnPoVk7L",
"name": "Todoist account"
}
},
"typeVersion": 2.1
},
{
"id": "009b1143-306d-4bad-bea7-47df8771b499",
"name": "Mehrere Termine abrufen",
"type": "n8n-nodes-base.googleCalendar",
"position": [
-320,
-120
],
"parameters": {
"options": {},
"calendar": {
"__rl": true,
"mode": "list",
"value": "emailPlaceholder",
"cachedResultName": "emailPlaceholder"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "bEUn0PilK7gDh4tG",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "27d34f96-ca61-44bf-8989-bbca2bee0069",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
200,
-20
],
"parameters": {
"jsCode": "const calendarEvents = [];\nconst todoistTasks = [];\n\nfor (const item of items) {\n if (item.json?.start?.dateTime) {\n calendarEvents.push(item.json);\n } else if (item.json?.content) {\n todoistTasks.push(item.json);\n }\n}\n\nconst formattedEvents = calendarEvents.map((event, i) => {\n const time = new Date(event.start.dateTime).toLocaleTimeString('en-IN', { hour: '2-digit', minute: '2-digit' });\n return `${i + 1}. ${event.summary} at ${time}`;\n}).join('\\n');\n\nconst formattedTasks = todoistTasks.map((task, i) => {\n const time = task.due?.datetime\n ? new Date(task.due.datetime).toLocaleTimeString('en-IN', { hour: '2-digit', minute: '2-digit' })\n : 'No time set';\n return `${i + 1}. ${task.content} (Due at ${time})`;\n}).join('\\n');\n\nreturn [\n {\n json: {\n formattedEvents: formattedEvents || 'No calendar events today.',\n formattedTasks: formattedTasks || 'No tasks today.'\n }\n }\n];"
},
"typeVersion": 2
},
{
"id": "987c7654-7edc-4aea-b2be-f0ce846cf6fd",
"name": "Zusammenführen",
"type": "n8n-nodes-base.merge",
"position": [
-20,
-20
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "2b69ae00-18c0-4778-9702-23a18e300573",
"name": "OpenAI Text in HTML konvertieren",
"type": "n8n-nodes-base.code",
"position": [
760,
-20
],
"parameters": {
"jsCode": "const raw = $json.message?.content || 'No message';\n\n// Convert markdown-style bold to <strong>\nlet html = raw\n .replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')\n\n// Convert newlines and spacing\n .replace(/\\n{2,}/g, '<br><br>') // double newlines → double <br>\n .replace(/\\n/g, '<br>') // single newline fallback\n\n// Optional: emoji replacement (can leave as-is if you like)\n .replace(/✅/g, '✅')\n .replace(/🎯/g, '🎯')\n .replace(/💡/g, '💡')\n .replace(/📅/g, '📅')\n .replace(/🗂️/g, '🗂️');\n\nreturn [\n {\n json: {\n htmlBody: `<div style=\"font-family: Arial, sans-serif; font-size: 14px; line-height: 1.6;\">${html}</div>`\n }\n }\n];"
},
"typeVersion": 2
},
{
"id": "2651477d-bad3-4fc7-9666-4a11a87bc4f8",
"name": "Zeitplan-Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-640,
-20
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d032cb5e-11bb-445c-ab31-b357ba8c3044",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1100,
-180
],
"parameters": {
"color": 5,
"width": 380,
"height": 440,
"content": "## 📌 **Daily Briefing Automation**\n\nThis workflow fetches today's calendar events and tasks from Google Calendar and Todoist, formats them using GPT-4o, converts the summary to HTML, and emails it automatically at 6:00 AM daily.\n\nUse this to start your day focused and aligned with your top priorities.\n\n**Highlights:**\n- Auto-scheduled morning brief\n- Task & calendar merging\n- Natural language summary by GPT\n- HTML email output (readable & styled)\n"
},
"typeVersion": 1
},
{
"id": "20aa46f5-e9e9-4259-8658-a369938e7d04",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-680,
-180
],
"parameters": {
"color": 2,
"width": 180,
"height": 440,
"content": "⏰ Triggers the workflow at 6:00 AM daily.\nUse this to automate your morning routine prep.\n"
},
"typeVersion": 1
},
{
"id": "00f26917-3006-40a8-b798-63d4d741f360",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
-260
],
"parameters": {
"color": 6,
"width": 180,
"height": 180,
"content": "📅 Fetches all Google Calendar events for the day.\nFilters are configured using your linked Gmail calendar.\n"
},
"typeVersion": 1
},
{
"id": "f1b0537b-06f8-4840-9a18-b748da7d2076",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
160
],
"parameters": {
"color": 6,
"width": 180,
"height": 220,
"content": "\n\n\n\n\n\n\n📝 Fetches all Todoist tasks under a specified project.\nMake sure `projectId` is up-to-date.\n"
},
"typeVersion": 1
},
{
"id": "5e0e9272-1834-4108-ad04-be81be4d32c6",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🔀 Merges calendar events and tasks.\nRequired to feed both datasets into a single Code node.\n"
},
"typeVersion": 1
},
{
"id": "e6c7821c-1c24-4dc3-aef9-387efc2f9ec5",
"name": "Haftnotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🧠 Separates & formats calendar events and tasks.\nReturns structured strings for GPT to summarize.\n"
},
"typeVersion": 1
},
{
"id": "c2de93aa-9e1c-4dd4-984f-72de1f4323bd",
"name": "Haftnotiz6",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🤖 Sends task and calendar summary to GPT-4o.\nPrompt includes layout guidance and markdown formatting.\n"
},
"typeVersion": 1
},
{
"id": "e0b8b41b-75bd-4455-b94e-919fb3be5d9a",
"name": "Haftnotiz7",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🧱 Converts markdown-style GPT output into clean HTML.\nEnsures line breaks, bold headings, and emojis are email-friendly.\n"
},
"typeVersion": 1
},
{
"id": "4b6ae3f4-8490-4097-87d7-5b1bfbcf90ad",
"name": "Haftnotiz8",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "📧 Sends the final HTML email to your inbox.\nEmail subject: “Morning Briefings”\n"
},
"typeVersion": 1
},
{
"id": "8eb46a16-e528-488e-be02-fdd00d1220c0",
"name": "Haftnotiz9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-80
],
"parameters": {
"color": 7,
"width": 1280,
"height": 440,
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8eb56c93-5df7-4748-b658-c69a8ba1123e",
"connections": {
"27d34f96-ca61-44bf-8989-bbca2bee0069": {
"main": [
[
{
"node": "9f7abaa2-1d99-488d-a2f6-ce63af3dd509",
"type": "main",
"index": 0
}
]
]
},
"987c7654-7edc-4aea-b2be-f0ce846cf6fd": {
"main": [
[
{
"node": "27d34f96-ca61-44bf-8989-bbca2bee0069",
"type": "main",
"index": 0
}
]
]
},
"e21eed99-cc0b-4224-b7f0-e85f62dd6c78": {
"main": [
[
{
"node": "987c7654-7edc-4aea-b2be-f0ce846cf6fd",
"type": "main",
"index": 1
}
]
]
},
"009b1143-306d-4bad-bea7-47df8771b499": {
"main": [
[
{
"node": "987c7654-7edc-4aea-b2be-f0ce846cf6fd",
"type": "main",
"index": 0
}
]
]
},
"9f7abaa2-1d99-488d-a2f6-ce63af3dd509": {
"main": [
[
{
"node": "2b69ae00-18c0-4778-9702-23a18e300573",
"type": "main",
"index": 0
}
]
]
},
"2651477d-bad3-4fc7-9666-4a11a87bc4f8": {
"main": [
[
{
"node": "009b1143-306d-4bad-bea7-47df8771b499",
"type": "main",
"index": 0
},
{
"node": "e21eed99-cc0b-4224-b7f0-e85f62dd6c78",
"type": "main",
"index": 0
}
]
]
},
"2b69ae00-18c0-4778-9702-23a18e300573": {
"main": [
[
{
"node": "3bccfb3e-2e86-4c0b-8bce-891b6ad3b969",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - Persönliche Produktivität, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
AK Pasnoor
@ak-pasnoor🚀 Automate. Scale. Win. Are you still manually following up with leads or relying on staff to answer every call? I help agencies and business owners deploy AI voice agents and chatbots that book appointments 24/7, qualify leads instantly, and eliminate 90% of repetitive tasks—without writing a single line of code.
Diesen Workflow teilen