Automatisierter wöchentlicher Teambericht für WhatsApp-Gruppen mit Gemini AI-Zusammenfassung
Experte
Dies ist ein Project Management, AI Summarization-Bereich Automatisierungsworkflow mit 47 Nodes. Hauptsächlich werden If, Set, Code, Filter, Switch und andere Nodes verwendet. Automatisierte wöchentliche Team-Berichte für WhatsApp-Gruppen mit Gemini AI-Zusammenfassungen
Voraussetzungen
- •HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
- •Google Gemini API Key
Verwendete Nodes (47)
Kategorie
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
"meta": {
"instanceId": "e42ff03bc515cd7f9edc081a89072ca1985132e0d4a1cdabe6c26855a252768f",
"templateId": "3969"
},
"nodes": [
{
"id": "f0e89c19-ee1f-4a4d-8176-c222c18e0514",
"name": "Simplify Message",
"type": "n8n-nodes-base.set",
"position": [
2220,
2000
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "547e8934-e6f2-47f0-b8a0-c60bd9d8a0c3",
"name": "ts",
"type": "string",
"value": "={{ $json.ts }}"
},
{
"id": "22473b44-b1d9-4b85-b0d9-1a54c5511ff4",
"name": "userId",
"type": "string",
"value": "={{ $('Get User').first().json.id }}"
},
{
"id": "2059b147-8b12-42c9-bee8-488dc11a0bf7",
"name": "userName",
"type": "string",
"value": "={{ $('Get User').first().json.name }}"
},
{
"id": "34440ea6-ee99-4cd4-9e1c-cf561d335180",
"name": "type",
"type": "string",
"value": "={{ $json.type }}"
},
{
"id": "ff1155c5-43e1-4e0e-82a8-9e013a7f1db1",
"name": "text",
"type": "string",
"value": "={{ $json.text.replace(/(<@[^>]+>)/ig, '').trim() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1293a7cf-1467-432f-b7ed-606146618808",
"name": "Group By User",
"type": "n8n-nodes-base.code",
"position": [
1540,
1460
],
"parameters": {
"jsCode": "const keyByUser = $input.all()\n .map(item => item.json)\n .reduce((acc, message) => {\n return {\n ...acc,\n [message.user]: Array.isArray(acc[message.user])\n ? acc[message.user].concat(message)\n : [message]\n }\n }, {});\n\nreturn {\n data: Object\n .keys(keyByUser)\n .map(key => keyByUser[key])\n};"
},
"typeVersion": 2
},
{
"id": "681a2368-9688-4ebd-bb88-f48c7ccb3e54",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
1740,
1460
],
"parameters": {
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "38a5e6b0-ba4a-4aaa-93f2-ec2a73e5e1af",
"name": "Messages to Items",
"type": "n8n-nodes-base.code",
"position": [
2000,
2000
],
"parameters": {
"jsCode": "return Object.values($('Switch').first().json.data)"
},
"typeVersion": 2
},
{
"id": "c5d0b4d1-94eb-4e14-9985-85d384d6d96f",
"name": "Aggregieren",
"type": "n8n-nodes-base.aggregate",
"position": [
2440,
2000
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "messages"
},
"typeVersion": 1
},
{
"id": "47537a27-90d9-4edc-b9f4-66205bc4a4c2",
"name": "Split Out1",
"type": "n8n-nodes-base.splitOut",
"position": [
1780,
2400
],
"parameters": {
"options": {},
"fieldToSplitOut": "data.messages"
},
"typeVersion": 1
},
{
"id": "0fc6664f-9076-4525-acaa-0f5009de2611",
"name": "Aggregieren1",
"type": "n8n-nodes-base.aggregate",
"position": [
3320,
2480
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "replies"
},
"typeVersion": 1
},
{
"id": "caf963e5-3d5b-42d8-88ce-1fb5bf03a528",
"name": "Simplify Thread Comments",
"type": "n8n-nodes-base.set",
"position": [
3100,
2400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "82bc8cbe-c606-4717-b29d-2d8acc149271",
"name": "ts",
"type": "string",
"value": "={{ $json.ts }}"
},
{
"id": "8fcc957d-aa9f-47df-99e8-560228fde30f",
"name": "userId",
"type": "string",
"value": "={{ $json.user }}"
},
{
"id": "e6c6deb3-c3ba-4452-be7c-1a0c42c5dc2c",
"name": "userName",
"type": "string",
"value": ""
},
{
"id": "31d1206d-ecbd-48d3-a00a-845fd53d1cfa",
"name": "type",
"type": "string",
"value": "={{ $json.type }}"
},
{
"id": "da126e6c-8dfc-41aa-991a-231b3cb3004b",
"name": "text",
"type": "string",
"value": "={{ $json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "aab0ae1c-50da-49e5-a373-c32b39108041",
"name": "Filter",
"type": "n8n-nodes-base.filter",
"position": [
2880,
2400
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a6d43072-380e-40f2-985b-faeffdaffdce",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $('Split Out1').item.json.ts }}",
"rightValue": "={{ $json.ts }}"
}
]
}
},
"typeVersion": 2.2,
"alwaysOutputData": true
},
{
"id": "35cdb470-a9eb-4544-999c-5360dda0f1a3",
"name": "Message Ref",
"type": "n8n-nodes-base.noOp",
"position": [
2220,
2400
],
"parameters": {},
"typeVersion": 1
},
{
"id": "95500787-7965-4951-a729-615feb636021",
"name": "Split Out2",
"type": "n8n-nodes-base.splitOut",
"position": [
2220,
2700
],
"parameters": {
"options": {},
"fieldToSplitOut": "replyUsers"
},
"typeVersion": 1
},
{
"id": "250d61cc-120d-4c0c-8220-f9a68a90b667",
"name": "Map Reply UserIds",
"type": "n8n-nodes-base.set",
"position": [
1780,
2780
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "dda6e3d8-0097-4621-9619-07cf39e93018",
"name": "replyUsers",
"type": "array",
"value": "={{\n$json.data.messages\n .flatMap(item => item.replies.flatMap(reply => reply.userId))\n .compact()\n .unique()\n}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e98acd0f-f1e3-47f4-ae9c-7259462cf231",
"name": "Google Gemini-Chat-Modell",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
3640,
3000
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash"
},
"typeVersion": 1
},
{
"id": "0ffb9b87-43db-4417-8c37-384a33cbb830",
"name": "Summarise Threads",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
3540,
2780
],
"parameters": {
"text": "=## Message\n{{ $json.userName }} (<@{{ $json.userId }}>) says at {{ new DateTime(parseFloat($json.ts)*1000).format('d MMM HH:mma') }}:\n> {{ $json.text }}\n\n## {{ ($json.replies ?? []).compact().length }} Replies\n{{\n($json.replies ?? [])\n .compact()\n .map(reply => ({\n ...reply,\n userName: $('Reply Users').item.json.data\n .find(user => user.id === reply.userId)?.name\n }))\n .map(reply =>\n `* ${new DateTime(parseFloat($json.ts)*1000).format('d MMM HH:mma')}, ${reply.userName} (<@${reply.userId}>) replies: ${reply.text}`\n)\n .join('\\n')\n \n}}",
"messages": {
"messageValues": [
{
"message": "=Summarize the topic of the slack message and the resulting conversation from the replies (if any). Highlight any achievements, accomplishments, attempts or challenges mentioned."
}
]
},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "678a48ec-acb1-4c42-b8c9-d4cd762e4a2a",
"name": "Aggregieren2",
"type": "n8n-nodes-base.aggregate",
"position": [
3920,
2780
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "ab39b117-e1bd-495f-a92d-fb79973b3601",
"name": "Aggregieren Reply Users",
"type": "n8n-nodes-base.aggregate",
"position": [
2880,
2700
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "c71b7ca6-8245-4262-b2f1-abea511390d6",
"name": "Reply Users",
"type": "n8n-nodes-base.set",
"position": [
3100,
2780
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9f721cde-2d36-40ee-b7d8-a920695157a9",
"name": "data",
"type": "array",
"value": "={{ $json.data ?? [] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4b2c452b-4e68-4536-aa58-a85fd586c606",
"name": "Google Gemini-Chat-Modell1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
3080,
1620
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash"
},
"typeVersion": 1
},
{
"id": "d65b4f27-52ab-4c29-8692-ee2835fddd17",
"name": "Über Elemente schleifen",
"type": "n8n-nodes-base.splitInBatches",
"position": [
2000,
2400
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "cfb55c7f-a89d-4ce4-8709-31e5e119c6ee",
"name": "Aggregieren3",
"type": "n8n-nodes-base.set",
"position": [
2440,
2200
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{\n{\n ...$('Split Out1').item.json,\n replies: $json.replies.filter(reply => reply.ts)\n}\n}}\n"
},
"typeVersion": 3.4
},
{
"id": "8b70e30c-99d5-4086-85aa-e6cfcc7f14e7",
"name": "Aggregieren4",
"type": "n8n-nodes-base.aggregate",
"position": [
2660,
2200
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "1cef5853-d301-49cb-9f58-c1a9128b8b33",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
1120,
2400
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "action"
},
{
"name": "data",
"type": "object"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "b30c2433-3bfe-480f-a4bd-8c41900802a2",
"name": "Schalter",
"type": "n8n-nodes-base.switch",
"position": [
1340,
2400
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "users",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fa924990-9f6e-40c4-aaec-50d4f5927414",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.action }}",
"rightValue": "users"
}
]
},
"renameOutput": true
},
{
"outputKey": "message_replies",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "26ce01b2-9e5b-43e8-926d-9d726c9ca74d",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.action }}",
"rightValue": "message_replies"
}
]
},
"renameOutput": true
},
{
"outputKey": "message_summarize",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "45fd7264-6ac3-4bbd-8a91-c4cfb33b4545",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.action }}",
"rightValue": "message_summarize"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "b05735c3-4beb-4a80-8297-85e952e81270",
"name": "Map Users to Messages",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
2020,
1460
],
"parameters": {
"mode": "each",
"options": {},
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
},
"workflowInputs": {
"value": {
"data": "={{ $json }}",
"action": "users"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "data",
"type": "object",
"display": true,
"required": false,
"displayName": "data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "28ed52b2-b0c3-4f19-b394-347c8ff9e323",
"name": "Get User Info",
"type": "n8n-nodes-base.set",
"position": [
2660,
2000
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "17344879-1e10-4738-8db0-6e0daddea920",
"name": "user",
"type": "object",
"value": "={{\n{\n id: $('Get User').item.json.id,\n team_id: $('Get User').item.json.team_id,\n name: $('Get User').item.json.name,\n is_bot: $('Get User').item.json.is_bot\n}\n}}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "bbd7c77e-2405-4e63-ae38-f064beafab9c",
"name": "Fetch Message Replies",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
2240,
1460
],
"parameters": {
"mode": "each",
"options": {},
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
},
"workflowInputs": {
"value": {
"data": "={{ $json }}",
"action": "message_replies"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "data",
"type": "object",
"display": true,
"removed": false,
"required": false,
"displayName": "data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "edf34e72-04b4-4fed-a3af-42dec1c7ed17",
"name": "Has ReplyUsers?",
"type": "n8n-nodes-base.if",
"position": [
2000,
2780
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "813d9fea-9de0-4151-aa45-d38a42f808b8",
"operator": {
"type": "array",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.replyUsers }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "dc9c6cf0-c627-4311-9160-62204e9b67e0",
"name": "Messages to Items1",
"type": "n8n-nodes-base.code",
"position": [
3320,
2780
],
"parameters": {
"jsCode": "return $('Switch').first().json.data.messages"
},
"typeVersion": 2
},
{
"id": "0b830a49-c77e-41f3-8d70-47a26bfe0a0e",
"name": "Aggregieren Results",
"type": "n8n-nodes-base.set",
"position": [
2780,
1460
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{\n{\n ...$('Map Users to Messages').item.json,\n messages: $('Fetch Message Replies').item.json.data\n .map((message,idx) => ({\n ...message,\n summary: $json.data[idx].text,\n }))\n}\n}}"
},
"typeVersion": 3.4
},
{
"id": "b0c66c7f-0fed-465c-8933-7b803c9b3b64",
"name": "Team Member Weekly Report Agent",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
2980,
1460
],
"parameters": {
"text": "={{\n$json.messages\n .map((message,idx) =>\n `${message.userName} (<@${message.userId}>) posted on ${new Date(parseFloat(message.ts) * 1000).format('d MMM')}:\\n> \\\"${message.text}\\\".\\nThe summary of this thread is as follows:\\n${message.summary.replaceAll('\\n', ' ')}`\n )\n .join('\\n---\\n')\n}}",
"messages": {
"messageValues": [
{
"message": "=Your are energetic assistant who produces weekly mini-reports on team members by analysing their slack messages from last week and posts these reports on the following Monday.\nThere has already been some work done to collect and summarise each thread made by the user within the last week.\nYour task is to summarize all the threads by this user and any interactions with other users involved and produce a mini report to share with other team members.\nFocus on wins and challenges.\nAim to motivate and call out any outstanding concerns where appropriate.\nWelcome any new team members who may have joined and say good bye to those who may have left."
}
]
},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "e4a487ae-8d71-4fe6-a760-7a0fb95a8fac",
"name": "Zusammenführen with Results",
"type": "n8n-nodes-base.set",
"position": [
3480,
1460
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{\n{\n ...$('Aggregate Results').item.json,\n report: $json.text,\n}\n}}"
},
"typeVersion": 3.4
},
{
"id": "06736a5c-7450-406a-ad3a-08a368d1addf",
"name": "Team Weekly Report Agent",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
3700,
1460
],
"parameters": {
"text": "={{\n$input.all()\n .map(item => item.json)\n .map(item =>\n`user: ${item.user.name} <@${item.user.id}>\nmessage count: ${item.messages.length}\nreport: ${item.report.replaceAll('\\n', ' ')}`\n ).join('\\n---\\n')\n}}",
"messages": {
"messageValues": [
{
"message": "=Your are energetic assistant who produces a team-wide weekly report from all activity of all team members in the prior last week and posts this single report on the following Monday.\nThere has already been some work done to collect individual reports from team members.\nYour task is generate a report covering the team to prepare and motivate them for the upcoming week.\nFocus on wins and challenges if available.\nLook out for similar activities between members and make a connection if possible.\nAim to motivate and call out any outstanding concerns where appropriate.\nWelcome any new team members who may have joined and say good bye to those who may have left."
}
]
},
"promptType": "define"
},
"executeOnce": true,
"typeVersion": 1.6
},
{
"id": "eef36957-9bf0-4be3-95a8-73bbefdc0c85",
"name": "Google Gemini-Chat-Modell2",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
3780,
1620
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash"
},
"typeVersion": 1
},
{
"id": "b9a11c72-de41-4a45-85a0-672cf54ef152",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
860,
1180
],
"parameters": {
"color": 7,
"width": 820,
"height": 520,
"content": "## 1. Fetch All Activity from Last Week\n[Learn more about the WhapAround.pro node]\n\nWe'll start by fetching all activity in our whatsapp broupsl over the last 7 days and group them by the message author. We can do this using the whapAround.pro configured with Webhook with a DateTime filter. This will give us the raw data to pick apart and analyse for reporting purposes."
},
"typeVersion": 1
},
{
"id": "8afc048f-ce06-46c3-916f-cbcf14bcfe2b",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1700,
1180
],
"parameters": {
"color": 7,
"width": 760,
"height": 520,
"content": "## 2. Summarise Messages Threads & Conversations\n[Learn more about the Execute Workflow node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow)\n\nWe'll do some more data mining by fetching all replies for each of these top level channel messages. By doing so, we get the full context of the conversation and can hopefully pick up some decisions, discoveries or concerns to add to our report. This data mining does require juggling a lot of \"items\" which becomes hard to manage so we'll use subworkflows to simplify this work.\n\nOnce the data mining is complete, we can summarize each thread with AI and ensure we're capturing only the significant events which are report-worthy."
},
"typeVersion": 1
},
{
"id": "c9a7358c-fbe7-435a-b435-d7b07599bdc6",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2480,
1180
],
"parameters": {
"color": 7,
"width": 660,
"height": 620,
"content": "## 3. Generate Activity Reports for Each Team Member\n[Learn more about the Basic LLM node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm)\n\nWith our summarized threads which are grouped per user, we can aggregate them and give them to the AI again to generate a weekly report for the team member. This could include their wins, challenges, learnings or decisions - it really is up to you as to what the report looks like.\n\nA fun part of this output is getting to decide the tone of voice and delivery of the report. Don't be a bore and consider adding some personality and flair!"
},
"typeVersion": 1
},
{
"id": "add32ef0-b515-44e6-a234-0a0fa77f4e84",
"name": "Zusammenfassen Message Threads",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
2460,
1460
],
"parameters": {
"mode": "each",
"options": {},
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
},
"workflowInputs": {
"value": {
"data": "={{\n{\n ...$('Map Users to Messages').item.json,\n messages: $json.data\n}\n}}",
"action": "message_summarize"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "data",
"type": "object",
"display": true,
"removed": false,
"required": false,
"displayName": "data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "17f2f45e-2c95-4b3c-b6db-a2881ae88964",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3160,
1180
],
"parameters": {
"color": 7,
"width": 680,
"height": 620,
"content": "## 4. Generate Final Report for Whole Team\n[Learn more about the Basic LLM node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm)\n\nIn this step, we go one level higher and aggregate all individual team member reports together into a big team report. In this way, the overview can group similar activities and generalise activities in a broader sense. The message output will also be shorter which some may find easier to digest."
},
"typeVersion": 1
},
{
"id": "18cc7fa7-603c-4165-97c6-80d72fd4a9a6",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
3860,
1180
],
"parameters": {
"color": 7,
"width": 680,
"height": 620,
"content": "## 5. Post Report on Team Channel (on Monday Morning!)\n[Learn more about the Slack node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack)\n\nFinally, we can post the weekly report in the team channel. This is a great way to automate quick recaps for the team after the weekend break, get others back on track if they've been away or update client team who may pop in now and again to collaborate."
},
"typeVersion": 1
},
{
"id": "9cd8bdd6-5fc7-4e44-bcd0-058bc5d11335",
"name": "Haftnotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
860,
1980
],
"parameters": {
"color": 7,
"width": 560,
"height": 340,
"content": "## 5. SubWorkflows\n[Read more about Execute Workflow Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger)\n\nIncorporating Subworkflows into your main workflow is an advanced technique and sometimes necessary if you're working with a lot of nested items or loops.\n\nIn this scenario, we perform quite a few lookups to get the data we need; users, messages and replies, which in template terms would require many loop nodes to string together. However, when you nest loops nodes within loop nodes, item reference becomes difficult to keep track of.\n\nUsing subworkflows, we can break down each loop into a separate execution which handles items and item references in a simpler, linear way. The result is predictable data flow throughout our template. "
},
"typeVersion": 1
},
{
"id": "6f6fc730-5fc8-4dcc-b86d-e3b2f0e792a0",
"name": "Monday @ 6am",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
920,
1460
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 6 * * 1"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "ab94557c-debb-425c-ac83-62e39e43d28b",
"name": "Haftnotiz6",
"type": "n8n-nodes-base.stickyNote",
"position": [
380,
240
],
"parameters": {
"width": 420,
"height": 1460,
"content": "## Try It Out!\n# WhatsApp Weekly Summary Template\n\nThis n8n template automatically creates weekly summaries of your WhatsApp group activity and sends a report to keep your team in sync.\n\n## The Problem\nWhatsApp conversations move fast. Important ideas, decisions, and information get buried in endless message threads and are forgotten by Monday morning.\n\n## The Solution\nAI automatically reviews your group's past week of messages every Monday morning and creates a focused summary report to start the week right.\n\n## How It Works\n1. **Monday 6am**: Automatically collects all group messages from the past week\n2. **Groups messages**: Organizes conversations by user and identifies key discussions\n3. **AI analysis**: Extracts important highlights and observations from the raw messages\n4. **Individual summaries**: Creates focused reports for each team member's contributions\n5. **Team overview**: Combines individual reports into one weekly team summary\n6. **Delivery**: Posts the summary to your WhatsApp group first thing Monday morning\n\n## Best Use Cases\n- Project teams using WhatsApp as their main communication channel\n- Groups where most work discussions happen in one chat\n- Teams that need weekly alignment without endless scroll-back\n\n## Setup Tips\n- Filter for specific team members if you want focused updates\n- Customize the report tone (casual vs formal) based on your audience\n- Works best with active groups that have regular weekly activity\n\n## Requirements\n- WhapAround.pro\n- Gemini AI"
},
"typeVersion": 1
},
{
"id": "f31ae57f-50c8-47bc-bebb-d5ad51b63f16",
"name": "WhapAround.pro",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1200,
1460
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
},
{
"id": "2b423e5a-c7ed-4ea2-b4f8-c49a1be26587",
"name": "Respond to Webhook-Trigger",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
4240,
1460
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
},
{
"id": "0b4af0d1-0d92-421c-b5c8-2847311204d2",
"name": "whapAround.pro",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1720,
2100
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
},
{
"id": "9cc9571b-a8c7-4f5b-8886-aa9f95e2788d",
"name": "whapAround.pro-2",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2580,
2700
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
},
{
"id": "d8d541b2-eee9-46f8-882c-835ace7c259d",
"name": "whapAround.pro-1",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2560,
2400
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
}
],
"pinData": {},
"connections": {
"aab0ae1c-50da-49e5-a373-c32b39108041": {
"main": [
[
{
"node": "caf963e5-3d5b-42d8-88ce-1fb5bf03a528",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "0b4af0d1-0d92-421c-b5c8-2847311204d2",
"type": "main",
"index": 0
}
],
[
{
"node": "47537a27-90d9-4edc-b9f4-66205bc4a4c2",
"type": "main",
"index": 0
}
],
[
{
"node": "250d61cc-120d-4c0c-8220-f9a68a90b667",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "28ed52b2-b0c3-4f19-b394-347c8ff9e323",
"type": "main",
"index": 0
}
]
]
},
"681a2368-9688-4ebd-bb88-f48c7ccb3e54": {
"main": [
[
{
"node": "b05735c3-4beb-4a80-8297-85e952e81270",
"type": "main",
"index": 0
}
]
]
},
"Aggregate1": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Aggregate2": {
"main": [
[]
]
},
"Aggregate3": {
"main": [
[
{
"node": "Aggregate4",
"type": "main",
"index": 0
}
]
]
},
"Aggregate4": {
"main": [
[]
]
},
"47537a27-90d9-4edc-b9f4-66205bc4a4c2": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"95500787-7965-4951-a729-615feb636021": {
"main": [
[
{
"node": "9cc9571b-a8c7-4f5b-8886-aa9f95e2788d",
"type": "main",
"index": 0
}
]
]
},
"35cdb470-a9eb-4544-999c-5360dda0f1a3": {
"main": [
[
{
"node": "d8d541b2-eee9-46f8-882c-835ace7c259d",
"type": "main",
"index": 0
}
]
]
},
"c71b7ca6-8245-4262-b2f1-abea511390d6": {
"main": [
[
{
"node": "dc9c6cf0-c627-4311-9160-62204e9b67e0",
"type": "main",
"index": 0
}
]
]
},
"6f6fc730-5fc8-4dcc-b86d-e3b2f0e792a0": {
"main": [
[
{
"node": "f31ae57f-50c8-47bc-bebb-d5ad51b63f16",
"type": "main",
"index": 0
}
]
]
},
"1293a7cf-1467-432f-b7ed-606146618808": {
"main": [
[
{
"node": "681a2368-9688-4ebd-bb88-f48c7ccb3e54",
"type": "main",
"index": 0
}
]
]
},
"f31ae57f-50c8-47bc-bebb-d5ad51b63f16": {
"main": [
[
{
"node": "1293a7cf-1467-432f-b7ed-606146618808",
"type": "main",
"index": 0
}
]
]
},
"0b4af0d1-0d92-421c-b5c8-2847311204d2": {
"main": [
[
{
"node": "38a5e6b0-ba4a-4aaa-93f2-ec2a73e5e1af",
"type": "main",
"index": 0
}
]
]
},
"edf34e72-04b4-4fed-a3af-42dec1c7ed17": {
"main": [
[
{
"node": "95500787-7965-4951-a729-615feb636021",
"type": "main",
"index": 0
}
],
[
{
"node": "c71b7ca6-8245-4262-b2f1-abea511390d6",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "Aggregate3",
"type": "main",
"index": 0
}
],
[
{
"node": "35cdb470-a9eb-4544-999c-5360dda0f1a3",
"type": "main",
"index": 0
}
]
]
},
"f0e89c19-ee1f-4a4d-8176-c222c18e0514": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"d8d541b2-eee9-46f8-882c-835ace7c259d": {
"main": [
[
{
"node": "aab0ae1c-50da-49e5-a373-c32b39108041",
"type": "main",
"index": 0
}
]
]
},
"9cc9571b-a8c7-4f5b-8886-aa9f95e2788d": {
"main": [
[
{
"node": "Aggregate Reply Users",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Results": {
"main": [
[
{
"node": "b0c66c7f-0fed-465c-8933-7b803c9b3b64",
"type": "main",
"index": 0
}
]
]
},
"250d61cc-120d-4c0c-8220-f9a68a90b667": {
"main": [
[
{
"node": "edf34e72-04b4-4fed-a3af-42dec1c7ed17",
"type": "main",
"index": 0
}
]
]
},
"38a5e6b0-ba4a-4aaa-93f2-ec2a73e5e1af": {
"main": [
[
{
"node": "f0e89c19-ee1f-4a4d-8176-c222c18e0514",
"type": "main",
"index": 0
}
]
]
},
"0ffb9b87-43db-4417-8c37-384a33cbb830": {
"main": [
[
{
"node": "Aggregate2",
"type": "main",
"index": 0
}
]
]
},
"Merge with Results": {
"main": [
[
{
"node": "06736a5c-7450-406a-ad3a-08a368d1addf",
"type": "main",
"index": 0
}
]
]
},
"dc9c6cf0-c627-4311-9160-62204e9b67e0": {
"main": [
[
{
"node": "0ffb9b87-43db-4417-8c37-384a33cbb830",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Reply Users": {
"main": [
[
{
"node": "c71b7ca6-8245-4262-b2f1-abea511390d6",
"type": "main",
"index": 0
}
]
]
},
"bbd7c77e-2405-4e63-ae38-f064beafab9c": {
"main": [
[
{
"node": "Summarize Message Threads",
"type": "main",
"index": 0
}
]
]
},
"b05735c3-4beb-4a80-8297-85e952e81270": {
"main": [
[
{
"node": "bbd7c77e-2405-4e63-ae38-f064beafab9c",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "0ffb9b87-43db-4417-8c37-384a33cbb830",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"caf963e5-3d5b-42d8-88ce-1fb5bf03a528": {
"main": [
[
{
"node": "Aggregate1",
"type": "main",
"index": 0
}
]
]
},
"06736a5c-7450-406a-ad3a-08a368d1addf": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "b0c66c7f-0fed-465c-8933-7b803c9b3b64",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google Gemini Chat Model2": {
"ai_languageModel": [
[
{
"node": "06736a5c-7450-406a-ad3a-08a368d1addf",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Summarize Message Threads": {
"main": [
[
{
"node": "Aggregate Results",
"type": "main",
"index": 0
}
]
]
},
"b0c66c7f-0fed-465c-8933-7b803c9b3b64": {
"main": [
[
{
"node": "Merge with Results",
"type": "main",
"index": 0
}
]
]
},
"1cef5853-d301-49cb-9f58-c1a9128b8b33": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
}
}
}Häufig gestellte Fragen
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 - Projektmanagement, KI-Zusammenfassung
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
n8n-Knoten in der visuellen Referenzbibliothek erkunden
Erkundung von n8n-Knoten in der visuellen Referenzbibliothek
If
Ftp
Set
+
If
Ftp
Set
113 NodesI versus AI
Sonstiges
GitHub Synchronisations-Dashboard - V2
GitHub-Workflow-Versionskontroll-Dashboard mit Commit-Verlauf und Rollback-Funktion
If
N8n
Set
+
If
N8n
Set
94 NodesEduard
DevOps
Selbstgehosteter KI-Tiefenrecherche-Agent mit n8n, Apify und OpenAI o3
Selbstgehosteter KI-Tiefenrechercheagent mit n8n, Apify und OpenAI o3
If
Set
Code
+
If
Set
Code
87 NodesJimleuk
Künstliche Intelligenz
WordPress-Blog-Automatisierung Professional Edition (Deep Research) v2.1 Markt
Automatisierung der Erstellung von SEO-optimierten Blogs mit GPT-4o, Perplexity AI und mehrsprachiger Unterstützung
If
Set
Xml
+
If
Set
Xml
125 NodesDaniel Ng
Content-Erstellung
[Template] KI-Haustierladen v8
🐥 KI-Assistent für Tiernahrungsshops - Integriert GPT-4o, Google Kalender und WhatsApp/Instagram/Facebook
If
N8n
Set
+
If
N8n
Set
244 NodesAmanda Benks
Vertrieb
KI-Agent Restaurant [Vorlage]
🤖 KI-Restaurantassistent für WhatsApp, Instagram und Messenger
If
N8n
Set
+
If
N8n
Set
239 NodesAmanda Benks
Sonstiges
Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes47
Kategorie2
Node-Typen16
Autor
Externe Links
Auf n8n.io ansehen →
Diesen Workflow teilen