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