8
n8n 한국어amn8n.com

Gemini AI 요약을 사용한 자동화된 WhatsApp 그룹 주간 팀 보고서

고급

이것은Project Management, AI Summarization분야의자동화 워크플로우로, 47개의 노드를 포함합니다.주로 If, Set, Code, Filter, Switch 등의 노드를 사용하며. Gemini AI 요약을 활용한 자동화 WhatsApp 그룹 주간 팀 보고서

사전 요구사항
  • HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
  • Google Gemini API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "e42ff03bc515cd7f9edc081a89072ca1985132e0d4a1cdabe6c26855a252768f",
    "templateId": "3969"
  },
  "nodes": [
    {
      "id": "f0e89c19-ee1f-4a4d-8176-c222c18e0514",
      "name": "메시지 단순화",
      "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": "사용자별 그룹화",
      "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": "분할",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1740,
        1460
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "38a5e6b0-ba4a-4aaa-93f2-ec2a73e5e1af",
      "name": "메시지를 항목으로 변환",
      "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": "집계",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2440,
        2000
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "messages"
      },
      "typeVersion": 1
    },
    {
      "id": "47537a27-90d9-4edc-b9f4-66205bc4a4c2",
      "name": "분할1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1780,
        2400
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data.messages"
      },
      "typeVersion": 1
    },
    {
      "id": "0fc6664f-9076-4525-acaa-0f5009de2611",
      "name": "집계1",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        3320,
        2480
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "replies"
      },
      "typeVersion": 1
    },
    {
      "id": "caf963e5-3d5b-42d8-88ce-1fb5bf03a528",
      "name": "스레드 댓글 단순화",
      "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": "필터",
      "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": "메시지 참조",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2220,
        2400
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "95500787-7965-4951-a729-615feb636021",
      "name": "분할2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2220,
        2700
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "replyUsers"
      },
      "typeVersion": 1
    },
    {
      "id": "250d61cc-120d-4c0c-8220-f9a68a90b667",
      "name": "답장 사용자 ID 매핑",
      "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 채팅 모델",
      "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": "스레드 요약",
      "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": "집계2",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        3920,
        2780
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "ab39b117-e1bd-495f-a92d-fb79973b3601",
      "name": "답장 사용자 집계",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2880,
        2700
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "c71b7ca6-8245-4262-b2f1-abea511390d6",
      "name": "답장 사용자",
      "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 채팅 모델1",
      "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": "항목 순환 처리",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2000,
        2400
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "cfb55c7f-a89d-4ce4-8709-31e5e119c6ee",
      "name": "집계3",
      "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": "집계4",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2660,
        2200
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "1cef5853-d301-49cb-9f58-c1a9128b8b33",
      "name": "다른 워크플로우에 의해 실행 시",
      "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": "스위치",
      "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": "사용자를 메시지에 매핑",
      "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": "사용자 정보 가져오기",
      "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": "메시지 답장 조회",
      "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": "답장 사용자가 있나요?",
      "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": "메시지를 항목으로 변환1",
      "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": "결과 집계",
      "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": "팀원 주간 보고 에이전트",
      "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": "결과와 병합",
      "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": "팀 주간 보고 에이전트",
      "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 채팅 모델2",
      "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": "스티커 노트",
      "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": "스티커 노트1",
      "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": "스티커 노트2",
      "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": "메시지 스레드 요약",
      "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": "스티커 노트3",
      "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": "스티커 노트4",
      "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": "스티커 노트5",
      "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": "월요일 오전 6시",
      "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": "스티커 노트6",
      "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": "Webhook에 응답",
      "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
          }
        ]
      ]
    },
    "b30c2433-3bfe-480f-a4bd-8c41900802a2": {
      "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
          }
        ]
      ]
    },
    "c5d0b4d1-94eb-4e14-9985-85d384d6d96f": {
      "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
          }
        ]
      ]
    },
    "0fc6664f-9076-4525-acaa-0f5009de2611": {
      "main": [
        [
          {
            "node": "d65b4f27-52ab-4c29-8692-ee2835fddd17",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "678a48ec-acb1-4c42-b8c9-d4cd762e4a2a": {
      "main": [
        []
      ]
    },
    "cfb55c7f-a89d-4ce4-8709-31e5e119c6ee": {
      "main": [
        [
          {
            "node": "8b70e30c-99d5-4086-85aa-e6cfcc7f14e7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8b70e30c-99d5-4086-85aa-e6cfcc7f14e7": {
      "main": [
        []
      ]
    },
    "47537a27-90d9-4edc-b9f4-66205bc4a4c2": {
      "main": [
        [
          {
            "node": "d65b4f27-52ab-4c29-8692-ee2835fddd17",
            "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
          }
        ]
      ]
    },
    "d65b4f27-52ab-4c29-8692-ee2835fddd17": {
      "main": [
        [
          {
            "node": "cfb55c7f-a89d-4ce4-8709-31e5e119c6ee",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "35cdb470-a9eb-4544-999c-5360dda0f1a3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f0e89c19-ee1f-4a4d-8176-c222c18e0514": {
      "main": [
        [
          {
            "node": "c5d0b4d1-94eb-4e14-9985-85d384d6d96f",
            "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": "ab39b117-e1bd-495f-a92d-fb79973b3601",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b830a49-c77e-41f3-8d70-47a26bfe0a0e": {
      "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": "678a48ec-acb1-4c42-b8c9-d4cd762e4a2a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e4a487ae-8d71-4fe6-a760-7a0fb95a8fac": {
      "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
          }
        ]
      ]
    },
    "ab39b117-e1bd-495f-a92d-fb79973b3601": {
      "main": [
        [
          {
            "node": "c71b7ca6-8245-4262-b2f1-abea511390d6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bbd7c77e-2405-4e63-ae38-f064beafab9c": {
      "main": [
        [
          {
            "node": "add32ef0-b515-44e6-a234-0a0fa77f4e84",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b05735c3-4beb-4a80-8297-85e952e81270": {
      "main": [
        [
          {
            "node": "bbd7c77e-2405-4e63-ae38-f064beafab9c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e98acd0f-f1e3-47f4-ae9c-7259462cf231": {
      "ai_languageModel": [
        [
          {
            "node": "0ffb9b87-43db-4417-8c37-384a33cbb830",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "caf963e5-3d5b-42d8-88ce-1fb5bf03a528": {
      "main": [
        [
          {
            "node": "0fc6664f-9076-4525-acaa-0f5009de2611",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "06736a5c-7450-406a-ad3a-08a368d1addf": {
      "main": [
        [
          {
            "node": "2b423e5a-c7ed-4ea2-b4f8-c49a1be26587",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4b2c452b-4e68-4536-aa58-a85fd586c606": {
      "ai_languageModel": [
        [
          {
            "node": "b0c66c7f-0fed-465c-8933-7b803c9b3b64",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "eef36957-9bf0-4be3-95a8-73bbefdc0c85": {
      "ai_languageModel": [
        [
          {
            "node": "06736a5c-7450-406a-ad3a-08a368d1addf",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "add32ef0-b515-44e6-a234-0a0fa77f4e84": {
      "main": [
        [
          {
            "node": "0b830a49-c77e-41f3-8d70-47a26bfe0a0e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b0c66c7f-0fed-465c-8933-7b803c9b3b64": {
      "main": [
        [
          {
            "node": "e4a487ae-8d71-4fe6-a760-7a0fb95a8fac",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1cef5853-d301-49cb-9f58-c1a9128b8b33": {
      "main": [
        [
          {
            "node": "b30c2433-3bfe-480f-a4bd-8c41900802a2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급 - 프로젝트 관리, AI 요약

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수47
카테고리2
노드 유형16
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

저자
Jamot

Jamot

@jamot

Elevating Human Well-being Through Accessible AI Technologies.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34