AutomationFlowsAI & RAG › Weekly Notion Journal & Task Summarization with Gpt-4.1 to Discord

Weekly Notion Journal & Task Summarization with Gpt-4.1 to Discord

ByJason Krol @shorttompkins on n8n.io

This workflow will run on a weekly schedule and retrieve your Notion Daily Journal pages for the past week and aggregate them into a ChatGPT generated concise summary. It will save that weekly summary back to your Notion as a new Note in addition to posting to a personal Discord…

Event trigger★★★★☆ complexityAI-powered16 nodesNotionDiscordOpenAI
AI & RAG Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7032 — we link there as the canonical source.

This workflow follows the Notion → OpenAI recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "MeGFzR7Shfx70wMV",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Weekly Journal Summary",
  "tags": [
    {
      "id": "KOVOG8f4IK9bMwas",
      "name": "\ud83e\udd16 AI Powered",
      "createdAt": "2025-07-26T12:59:39.942Z",
      "updatedAt": "2025-07-26T13:02:41.754Z"
    }
  ],
  "nodes": [
    {
      "id": "c2b1647f-4bcb-42cb-b0e4-b5d885adafbb",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -512,
        -208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1fb28c6c-1828-4c31-ac0b-386afcf3a5da",
      "name": "Get many child blocks",
      "type": "n8n-nodes-base.notion",
      "position": [
        0,
        -160
      ],
      "parameters": {
        "blockId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "resource": "block",
        "operation": "getAll"
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8fa2862f-6be3-4c34-bc4c-bb3ac7d36cb5",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -512,
        80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "daysInterval": 7,
              "triggerAtHour": 16
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fea6281a-8dbd-45e0-9b7b-903c94383c88",
      "name": "Get Daily Journals",
      "type": "n8n-nodes-base.notion",
      "position": [
        -224,
        -160
      ],
      "parameters": {
        "limit": 5,
        "filters": {
          "conditions": [
            {
              "key": "Type|select",
              "condition": "equals",
              "selectValue": "Journal"
            },
            {
              "key": "Last edited time|last_edited_time",
              "condition": "past_week"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "22c1b7ff-072a-80c4-8175-cab05d54bb2b"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4ea7bb6f-83d9-46ff-a618-2b74b79ea5e1",
      "name": "To Dos Totals",
      "type": "n8n-nodes-base.code",
      "position": [
        0,
        32
      ],
      "parameters": {
        "jsCode": "let totalTasks = $input.all().length;\nlet emoji = \"\";\nif (totalTasks > 40) {\n  emoji = \"\u2728\ud83e\udd29\u2728\";\n} else if (totalTasks > 30) {\n  emoji = \"\ud83e\udd73\"\n} else if (totalTasks > 20) {\n  emoji = \"\ud83e\udd20\";\n} else if (totalTasks < 10) {\n  emoji = \"\ud83e\udd28\";\n}\n\nreturn [\n  {\n    json: {\n      message: \"\\n\\n**Tasks Summary:**\\nYou completed a total of **\" + totalTasks + \"** tasks this week! \" + emoji\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "4d19c32a-cf6c-4723-abc9-378d64913dc4",
      "name": "To Do Summary",
      "type": "n8n-nodes-base.discord",
      "position": [
        208,
        32
      ],
      "parameters": {
        "content": "={{ $json.message }}",
        "options": {},
        "authentication": "webhook"
      },
      "credentials": {
        "discordWebhookApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "dc0d9a36-9e76-4b20-a16a-f50b22d338e8",
      "name": "Combined Summary for LLM",
      "type": "n8n-nodes-base.code",
      "position": [
        432,
        -160
      ],
      "parameters": {
        "jsCode": "let combinedSummary = \"\";\nfor (const item of $input.all()) {\n  if (item.json.content.length > 0) {\n    combinedSummary += \" \" + item.json.content;  \n  }  \n}\n\nreturn [\n  {\n    json: {\n      message: combinedSummary\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "49819461-b703-4000-8aff-da38042d8844",
      "name": "Save Back to Notion",
      "type": "n8n-nodes-base.notion",
      "position": [
        1056,
        -64
      ],
      "parameters": {
        "title": "={{ $now.format('MMM d, yy') }} Weekly Summary [automated]",
        "blockUi": {
          "blockValues": [
            {
              "text": {
                "text": [
                  {
                    "text": "={{ $json.choices[0].message.content }}",
                    "annotationUi": {}
                  }
                ]
              },
              "richText": true
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "22c1b7ff-072a-80c4-8175-cab05d54bb2b"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Type|select",
              "selectValue": "Weekly"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f48bcf16-337c-4fdd-9aa8-57c7d01889b6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1104,
        -304
      ],
      "parameters": {
        "color": 5,
        "width": 512,
        "height": 608,
        "content": "## Notion Weekly Journal AI Summary\nThis workflow will run on a weekly schedule and retrieve your Daily Journal pages for the past week and aggregate them into a ChatGPT generated concise summary. It will save that weekly summary back to your Notion as a new Note in addition to posting to a personal Discord channel.\n\nAdditionally it will also retrieve all of the Tasks you've completed in the past week and provide a quick total with a congratulatory message to a Discord channel as well.\n\n### Requirements:\n- You need Notion setup w/ a Notes database\n  - If you want the Discord messages, setup a Discord webhook for your channel as well, or simply delete the Discord nodes.\n- One of the properties for the Notes db should be `Type` with a value of `Journal`\n- The contents of your daily Journal pages can be whatever you want\n  - I've found what works best for me is the format of \"What was a highlight of the day?\", \"What was a low point of the day?\", and \"What decisions did I delegate, delay, or dodge?\"\n- You should also create an additional `Type` for your Weekly summary - in this case I used simply `Weekly`\n- Automate this to run weekly on your day of choice. I tend to only journal on weekdays so I've set mine up to run every Friday retrieving the past 5 days of Journal entries.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c8f7b1d5-7938-4ca6-9aef-bd798d00c888",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        208,
        -160
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "content"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "47c1b7de-9438-44b6-a339-d57b34bca3aa",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -304
      ],
      "parameters": {
        "width": 304,
        "height": 256,
        "content": "The preconfigured prompt is pretty generic, but feel free to edit to add humor or any other specific instructions you'd like ChatGPT to use when generating your summaries."
      },
      "typeVersion": 1
    },
    {
      "id": "f258bd25-a104-4be5-8810-b02d97a04293",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -384
      ],
      "parameters": {
        "width": 224,
        "height": 576,
        "content": "Ensure your Notion connection is configured here as well as the page DB and Type (filter) you want to use when retrieving your daily journals.\nLikewise ensure your Tasks DB is configured correctly (or simply remove the bottom portion of this workflow)"
      },
      "typeVersion": 1
    },
    {
      "id": "943f4c06-c8be-426d-bb19-c37db7bb8f9b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        16
      ],
      "parameters": {
        "width": 160,
        "height": 272,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\nCustomize the Weekly Tasks total summary message that gets sent to Discord."
      },
      "typeVersion": 1
    },
    {
      "id": "23550382-cf64-4ff3-aee8-d1ade7e94fbb",
      "name": "Generate Summary",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        656,
        -160
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "GPT-4.1"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Given this blob of text which is the aggregation of the past week of Journal entries I've made, can you give me a concise summary for the week?\n\n {{ $json.message }}"
            }
          ]
        },
        "simplify": false
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "e769232f-bd6f-4437-93a4-8f7acddc704e",
      "name": "Send Summary",
      "type": "n8n-nodes-base.discord",
      "position": [
        1056,
        -256
      ],
      "parameters": {
        "content": "={{ $json.choices[0].message.content }}",
        "options": {},
        "authentication": "webhook"
      },
      "credentials": {
        "discordWebhookApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "6bf259b0-0771-42c3-a438-1fe4df1267fb",
      "name": "Get Tasks",
      "type": "n8n-nodes-base.notion",
      "position": [
        -224,
        32
      ],
      "parameters": {
        "limit": 100,
        "filters": {
          "conditions": [
            {
              "key": "Completed Date|date",
              "condition": "past_week"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "22c1b7ff-072a-807a-b0c7-cb5733cb7997"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    }
  ],
  "active": false,
  "settings": {
    "timezone": "America/New_York",
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "d4a87d14-7876-4022-8374-09f3a08364da",
  "connections": {
    "Aggregate": {
      "main": [
        [
          {
            "node": "Combined Summary for LLM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Tasks": {
      "main": [
        [
          {
            "node": "To Dos Totals",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "To Dos Totals": {
      "main": [
        [
          {
            "node": "To Do Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Summary": {
      "main": [
        [
          {
            "node": "Send Summary",
            "type": "main",
            "index": 0
          },
          {
            "node": "Save Back to Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Daily Journals",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Daily Journals": {
      "main": [
        [
          {
            "node": "Get many child blocks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many child blocks": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combined Summary for LLM": {
      "main": [
        [
          {
            "node": "Generate Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Get Daily Journals",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow will run on a weekly schedule and retrieve your Notion Daily Journal pages for the past week and aggregate them into a ChatGPT generated concise summary. It will save that weekly summary back to your Notion as a new Note in addition to posting to a personal Discord…

Source: https://n8n.io/workflows/7032/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow template is perfect for content creators, researchers, students, or anyone who regularly works with audio files and needs to transcribe and summarize them for easy reference and organiza

Google Drive Trigger, Google Drive, Notion +1
AI & RAG

Marketing agencies, digital agencies, and freelancers who need to streamline their client onboarding process and create consistent, professional documentation for new clients. Perfect for teams handli

Google Drive, Slack, Typeform Trigger +3
AI & RAG

This workflow is perfect for creators, solopreneurs, and personal brands who want to consistently publish bold, high-performing content on X (Twitter) — without writing a single line themselves. After

OpenAI Chat, Memory Buffer Window, Tool Workflow +10
AI & RAG

Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.

HTTP Request, Telegram Trigger, OpenAI +2
AI & RAG

1-Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.

HTTP Request, Telegram Trigger, OpenAI +2