{
  "id": "4sKJLlAF2vqpkk2I",
  "name": "Research AI Agent: Scrape and Summarize Articles and save to Notion (Gemini, Browserless)",
  "tags": [],
  "nodes": [
    {
      "id": "bbfff416-7270-4f1c-8024-b91b1c5acd1b",
      "name": "Gemini 2.5 PRO",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -840,
        20
      ],
      "parameters": {
        "options": {
          "temperature": 0
        },
        "modelName": "models/gemini-2.5-pro-exp-03-25"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e1a4b171-0850-4d90-bf49-5c39888922af",
      "name": "website_scraper",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        -220,
        -100
      ],
      "parameters": {
        "url": "http://browserless:3000/content",
        "method": "POST",
        "jsonBody": "={\n  \"url\": \"{url}\",\n  \"gotoOptions\": {\n    \"waitUntil\": \"networkidle0\"\n  }\n} ",
        "sendBody": true,
        "specifyBody": "json",
        "toolDescription": "website_scraper: Scrape a website given it's URL",
        "placeholderDefinitions": {
          "values": [
            {
              "name": "url",
              "type": "string",
              "description": "the URL of the website to scrape"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "fd94022a-bf8d-47e6-b561-d622da350737",
      "name": "save_to_notion",
      "type": "n8n-nodes-base.notionTool",
      "position": [
        -620,
        -100
      ],
      "parameters": {
        "title": "={{ $fromAI('Title', `The original title of the article!`, 'string') }}",
        "blockUi": {
          "blockValues": [
            {
              "type": "heading_1",
              "textContent": "={{ $fromAI('Title', `The original title of the article!`, 'string') }}"
            },
            {
              "type": "heading_2",
              "textContent": "Quick Summary (TL;DR)"
            },
            {
              "textContent": "={{ $fromAI('Summary', `1-3 sentence summary capturing the absolute essence of this article`, 'string') }}"
            },
            {
              "type": "heading_2",
              "textContent": "={{ $fromAI('objective_title', `short title for the Problem Addressed / Objective section`, 'string') }}"
            },
            {
              "textContent": "={{ $fromAI('objective_text', `description of the core problem, question, or goal the article tackles. Keep it focused.`, 'string') }}"
            },
            {
              "type": "heading_2",
              "textContent": "={{ $fromAI('concepts_title', `title for the Key Concepts / Solution Overview section`, 'string') }}"
            },
            {
              "textContent": "={{ $fromAI('concepts_text', `Explain the main ideas, theories, or the high-level approach of the solution presented.`, 'string') }}"
            },
            {
              "type": "heading_2",
              "textContent": "Technologies & Libraries"
            },
            {
              "text": {
                "text": [
                  {
                    "text": "={{ $fromAI('technologies_list', `A bulleted list of Technologies, Libraries, Techniques and Patterns Mentioned in the article along with a short description for each`, 'string') }}",
                    "annotationUi": {}
                  }
                ]
              },
              "richText": true
            },
            {
              "type": "heading_2",
              "textContent": "Core Code Snippets"
            },
            {
              "textContent": "={{ $fromAI('important_code_snippet_description', `1-2 sentences of context explaining what this snippet does or why it's important.`, 'string') }}"
            },
            {
              "text": {
                "text": [
                  {
                    "text": "={{ $fromAI('important_code_snippet', `The actual code snippet. The AI must ensure this block doesn't exceed 2000 chars. If a crucial snippet is longer, the AI should either prioritize a key part of it or potentially link to the source if available. Specify the language (e.g., python, javascript) for syntax highlighting.`, 'string') }}",
                    "annotationUi": {
                      "code": true
                    }
                  }
                ]
              },
              "richText": true
            },
            {
              "type": "heading_2",
              "textContent": "Key Takeaways & Conclusion"
            },
            {
              "textContent": "={{ $fromAI('conclusions', `A bulleted item list that summarizes the main conclusions, results, or actionable insights from the article.`, 'string') }}"
            }
          ]
        },
        "options": {
          "icon": "={{ $fromAI('Icon', `Pick an emoji that would be good as an icon for this article. Remember, this should be a single emoji`, 'string') }}"
        },
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "1c385086-bf58-80a1-a60f-dbc96d64413f",
          "cachedResultUrl": "https://www.notion.so/1c385086bf5880a1a60fdbc96d64413f",
          "cachedResultName": "Knowledge Database"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Description|rich_text",
              "textContent": "={{ $fromAI('Description', `Short description of what the article is about`, 'string') }}"
            },
            {
              "key": "URL|url",
              "urlValue": "={{ $fromAI('URL', `The URL where this article resides.`, 'string') }}"
            },
            {
              "key": "Tags|multi_select",
              "multiSelectValue": "={{ $fromAI('Tags', `General (generic) tags that would be relevant for this article, such as technologies used / talked about, programming language, techniques and so on! Keep them generic not ultra specific.`, 'string') }}"
            },
            {
              "key": "Publication Date|date",
              "date": "={{ $fromAI('publication_date', `The date this article was published if available on the page.`, 'string') }}",
              "includeTime": false
            }
          ]
        },
        "descriptionType": "manual",
        "toolDescription": "save_to_notion: This tool saves the information to the Notion database."
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "notesInFlow": false,
      "typeVersion": 2.2
    },
    {
      "id": "0e70e938-97ac-4aa0-80c1-8f7c9c519b9d",
      "name": "discord_notification",
      "type": "n8n-nodes-base.discordTool",
      "position": [
        -420,
        -100
      ],
      "parameters": {
        "embeds": {
          "values": [
            {
              "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
              "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
              "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
            }
          ]
        },
        "content": "={{ $fromAI('Message', `Start with an :information_source: emoji. Then tell the chat that the action has been completed.`, 'string') }}",
        "guildId": {
          "__rl": true,
          "mode": "list",
          "value": "1207038600731168821",
          "cachedResultUrl": "https://discord.com/channels/1207038600731168821",
          "cachedResultName": "Let's Talk Dev Community"
        },
        "options": {},
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "1354563802854723774",
          "cachedResultUrl": "https://discord.com/channels/1207038600731168821/1354563802854723774",
          "cachedResultName": "research"
        }
      },
      "credentials": {
        "discordBotApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ee123a65-f0db-45e8-8e78-618b6c2b74e9",
      "name": "Save Article To Notion",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueErrorOutput",
      "position": [
        -700,
        -320
      ],
      "parameters": {
        "options": {
          "systemMessage": "=You will receive a URL. Your task is to:\n1. use the website_scraper to scrape the provided URL!\n2. use the save_to_notion tool to save the information to Notion.\n3. use the discord_notification tool to send a notification that the research is available, along with the notion URL of the created page.\n\n## Tools\nThe save_to_notion tool expects the following parameters:\n* title: the original title of the article\n* description: short description of what the article is about\n* url: the URL where this article resides.\n* tags: general (generic) tags that would be relevant for this article, such as technologies used / talked about, programming language, techniques and so on! Keep them generic not ultra specific.\n* publication_date: The date this article was published if available on the page.\n* summary: 1-3 sentence summary capturing the absolute essence of this article\n* objective_title: short title for the section about the problem addressed / objective\n* objective_text: description of the core problem, question, or goal the article tackles. Keep it focused.\n* concepts_title: title for the Key Concepts / Solution Overview section\n* concepts_text: explain the main ideas, theories, or the high-level approach of the solution presented. \n* technologies_list: A bulleted list of Technologies, Libraries, Techniques and Patterns Mentioned in the article along with a short description for each.\n* important_code_snippet_description: Description for The most important code snippet in the article. 1-2 sentences of context explaining what this snippet does or why it's important.\n* important_code_snippet: The actual code snippet. The AI must ensure this block doesn't exceed 2000 chars. If a crucial snippet is longer, the AI should either prioritize a key part of it or potentially link to the source if available. Specify the language (e.g., python, javascript) for syntax highlighting.\n* conclusions: A bulleted item list that summarizes the main conclusions, results, or actionable insights from the article.\n* icon: an emoji that represents this article best!\n\nRemember you always have to scrape the website using the website_scraper tool. Don't try to summarize without scraping!\nAlways save the results to notion using the save_to_notion tool. Only execute this tool once!"
        }
      },
      "executeOnce": true,
      "notesInFlow": false,
      "typeVersion": 1.7
    },
    {
      "id": "4a7f0a06-0d5f-4013-964c-fcc272484ff4",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -1000,
        -320
      ],
      "parameters": {
        "public": true,
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "5bcfe9f7-a58f-4851-8ac4-ad6de06705df",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1060,
        -120
      ],
      "parameters": {
        "width": 340,
        "height": 260,
        "content": "## Google Gemini AI \ubaa8\ub378\n\n\uc774\uac83\uc744 \uac70\ub300\ud55c \ucee8\ud14d\uc2a4\ud2b8 \ucc3d\uacfc \uc18d\ub3c4 \ub54c\ubb38\uc5d0 \uc120\ud0dd\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 AI \ubaa8\ub378\uacfc \uc2e4\ud5d8\ud574 \ubcf4\uc138\uc694."
      },
      "typeVersion": 1
    },
    {
      "id": "8a1ef34e-9f27-4e68-8ef2-34c488463512",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -280,
        -420
      ],
      "parameters": {
        "width": 380,
        "height": 460,
        "content": "## Browserless (https://www.browserless.io/)\n\nBrowserless\ub97c \uc790\uccb4 \ud638\uc2a4\ud305\ub41c Docker \ucee8\ud14c\uc774\ub108\ub85c (n8n\uacfc \ud568\uaed8) \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. Browserless\uc758 \ud074\ub77c\uc6b0\ub4dc \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \ub2e4\ub978 \uc6f9 \uc2a4\ud06c\ub798\ud551 \ub3c4\uad6c\ub098 API\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\nBrowserless\uc5d0 \ub300\ud574 \ubbf8\ub9ac \ube4c\ub4dc\ub41c \ub3c4\uad6c\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0, \uc77c\ubc18\uc801\uc778 HTTP \uc694\uccad \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uc5ec Browserless\uc758 API\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "dfba5742-663c-4b8c-a971-de120c8f73c1",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1980,
        -820
      ],
      "parameters": {
        "width": 860,
        "height": 980,
        "content": "## \uc124\uc815\n\n1.  **\uc6cc\ud06c\ud50c\ub85c\uc6b0 \uac00\uc838\uc624\uae30:** \uc774 \ud15c\ud50c\ub9bf\uc744 n8n \uc778\uc2a4\ud134\uc2a4\ub85c \uac00\uc838\uc635\ub2c8\ub2e4.\n2.  **\uc790\uaca9 \uc99d\uba85 \ubc0f Notion \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad6c\uc131:**\n    * **Notion \ub370\uc774\ud130\ubca0\uc774\uc2a4:**\n        * \uae30\uc0ac \uc800\uc7a5\uc744 \uc704\ud55c Notion \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0dd\uc131\ud558\uac70\ub098 \uc9c0\uc815\ud569\ub2c8\ub2e4 (\uc608: \"Knowledge Database\").\n        * \uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub2e4\uc74c \uc18d\uc131(\ud544\ub4dc)\uc744 \ud3ec\ud568\ud558\uc138\uc694:\n            * `Name` (\uc720\ud615: \ud14d\uc2a4\ud2b8) - *\uae30\uc0ac \uc81c\ubaa9\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.*\n            * `URL` (\uc720\ud615: URL) - *\uc6d0\ubcf8 \uae30\uc0ac \ub9c1\ud06c\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4.*\n            * `Description` (\uc720\ud615: \ud14d\uc2a4\ud2b8) - *AI \uc0dd\uc131 \uc694\uc57d\uc744 \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.*\n            * `Tags` (\uc720\ud615: \ub2e4\uc911 \uc120\ud0dd) - *\uc120\ud0dd \uc0ac\ud56d, \ubd84\ub958\ub97c \uc704\ud574.*\n            * `Publication Date` (\uc720\ud615: \ub0a0\uc9dc) - *\uc120\ud0dd \uc0ac\ud56d, \uae30\uc0ac\uac00 \uac8c\uc2dc\ub41c \ub0a0\uc9dc\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4.*\n        * n8n \ud1b5\ud569\uc774 \uc774 \ud2b9\uc815 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uc138\uc694.\n\t* Notion \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ud615\uc2dd\uc774 \ub2e4\ub97c \uacbd\uc6b0, \uc774 n8n \uc6cc\ud06c\ud50c\ub85c\uc758 Notion \ub3c4\uad6c \uad6c\uc131\uc744 \uadf8\uc5d0 \ub9de\uac8c \uc5c5\ub370\uc774\ud2b8\ud574\uc57c \ud569\ub2c8\ub2e4.\n    * **Notion \uc790\uaca9 \uc99d\uba85:** Notion API \ud0a4\ub97c \uc5bb\uc5b4 n8n\uc5d0\uc11c Notion \uc790\uaca9 \uc99d\uba85\uc73c\ub85c \ucd94\uac00\ud558\uc138\uc694. \uc774 \uc790\uaca9 \uc99d\uba85\uc744 `save_to_notion` \ub3c4\uad6c \ub178\ub4dc\uc5d0\uc11c \uc120\ud0dd\ud558\uc138\uc694.\n    * **`save_to_notion` \ub3c4\uad6c \uad6c\uc131:** \uc6cc\ud06c\ud50c\ub85c \ub0b4 `save_to_notion` \ub3c4\uad6c \ub178\ub4dc\uc5d0\uc11c 'Database ID' \ud544\ub4dc\ub97c \uc704\uc5d0\uc11c \uc900\ube44\ud55c Notion \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 ID\ub85c \uc124\uc815\ud558\uc138\uc694. \uc6cc\ud06c\ud50c\ub85c \ub370\uc774\ud130(URL, AI \uc694\uc57d \ub4f1)\ub97c \ud574\ub2f9 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc18d\uc131(`URL`, `Description` \ub4f1)\uc5d0 \ub9e4\ud551\ud558\uc138\uc694. Notion \ub3c4\uad6c\uc758 \ube14\ub85d \uc139\uc158\uc5d0\uc11c \uc5f0\uad6c \ud398\uc774\uc9c0\ub97c \uc704\ud55c \ub9de\ucda4 \ud615\uc2dd\uc744 \uc815\uc758\ud560 \uc218 \uc788\uc73c\uba70, AI\uac00 \uc6f9 \ud398\uc774\uc9c0\uc5d0\uc11c \ucd94\ucd9c\ud560 \uc815\ud655\ud55c \uc138\ubd80 \uc815\ubcf4\ub97c \ucc44\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4!\n    * **Google Gemini AI:** [Google AI Studio](https://aistudio.google.com/app/apikey) \ub610\ub294 Google Cloud Console(Vertex AI \uc0ac\uc6a9 \uc2dc)\uc5d0\uc11c API \ud0a4\ub97c \uc5bb\uc5b4 \uc790\uaca9 \uc99d\uba85\uc73c\ub85c \ucd94\uac00\ud558\uc138\uc694. \uc774 \uc790\uaca9 \uc99d\uba85\uc744 \"Tools Agent\" \ub178\ub4dc\uc5d0\uc11c \uc120\ud0dd\ud558\uc138\uc694.\n    * **Discord(\ub610\ub294 \ub2e4\ub978 \uc54c\ub9bc \uc11c\ube44\uc2a4):** Discord \uc54c\ub9bc\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0, Webhook URL\uc744 \uc0dd\uc131\ud558\uc138\uc694([\uc9c0\uce68](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks)) \ub610\ub294 Bot Token\uc744 \uc124\uc815\ud558\uc138\uc694. n8n\uc5d0 \uc790\uaca9 \uc99d\uba85\uc744 \ucd94\uac00\ud558\uace0 `discord_notification` \ub3c4\uad6c \ub178\ub4dc\uc5d0\uc11c \uc120\ud0dd\ud558\uc138\uc694. \ub300\uc0c1 \ucc44\ub110 ID\ub97c \uad6c\uc131\ud558\uc138\uc694.\n    * **Browserless/HTTP Request:**\n        * **\ud074\ub77c\uc6b0\ub4dc:** [Browserless](https://www.browserless.io/)\uc5d0\uc11c API \ud0a4\ub97c \uc5bb\uc5b4 `website_scraper` HTTP Request \ub3c4\uad6c \ub178\ub4dc\ub97c \uc62c\ubc14\ub978 API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc640 \uc778\uc99d \ud5e4\ub354\ub85c \uad6c\uc131\ud558\uc138\uc694.\n        * **\uc140\ud504-\ud638\uc2a4\ud305:** Browserless Docker \ucee8\ud14c\uc774\ub108\uac00 n8n\uc5d0\uc11c \uc811\uadfc\ud560 \uc218 \uc788\ub3c4\ub85d \uc2e4\ud589 \uc911\uc778\uc9c0 \ud655\uc778\ud558\uc138\uc694. `website_scraper` HTTP Request \ub3c4\uad6c \ub178\ub4dc\ub97c \uc140\ud504-\ud638\uc2a4\ud305 Browserless \uc778\uc2a4\ud134\uc2a4 URL\ub85c \uad6c\uc131\ud558\uc138\uc694.\n6.  **\uc6cc\ud06c\ud50c\ub85c\uc6b0 \ud65c\uc131\ud654:** \uc6cc\ud06c\ud50c\ub85c\ub97c \uc800\uc7a5, \ud14c\uc2a4\ud2b8\ud558\uace0 \ud65c\uc131\ud654\ud558\uc138\uc694.\n\n## \uc774 \uc6cc\ud06c\ud50c\ub85c\ub97c \ud544\uc694\uc5d0 \ub9de\uac8c \ucee4\uc2a4\ud130\ub9c8\uc774\uc9d5\ud558\ub294 \ubc29\ubc95\n\n* **AI \ubaa8\ub378 \ubcc0\uacbd:** Gemini 2.5 Pro\uac00 \ud544\uc694\ub098 \uc608\uc0b0\uc5d0 \ub9de\uc9c0 \uc54a\uc73c\uba74, n8n\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294 \ub2e4\ub978 AI \ubaa8\ub378(\uc608: OpenAI GPT \ubaa8\ub378\uc774\ub098 Anthropic Claude)\uc744 Agent \ub178\ub4dc\uc5d0\uc11c \uc2e4\ud5d8\ud558\uc138\uc694. \ub9e5\ub77d \ucc3d \ud06c\uae30\uc640 \ub300\ud615 \ucf58\ud150\uce20 \ucc98\ub9ac \ub2a5\ub825\uc758 \ucc28\uc774\ub97c \uc5fc\ub450\uc5d0 \ub450\uc138\uc694.\n* **Notion \uc800\uc7a5 \uc218\uc815:** `save_to_notion` \ub3c4\uad6c \ub178\ub4dc\ub97c \uc870\uc815\ud558\uc5ec \ub2e4\ub978 \ub370\uc774\ud130 \ud544\ub4dc\ub97c \ub9e4\ud551\ud558\uc138\uc694(\uc608: AI \ud504\ub86c\ud504\ud2b8\ub97c \uc218\uc815\ud558\uc5ec \uc694\uc57d \uc2a4\ud0c0\uc77c\uc744 \ubcc0\uacbd\ud558\uac70\ub098, \ud2b9\uc815 \ud0dc\uadf8\ub97c \ucd94\uac00\ud558\uac70\ub098, \ud398\uc774\uc9c0 \ucf58\ud150\uce20 \uad6c\uc870\ub97c \ubcc0\uacbd\ud558\uc5ec Notion \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc18d\uc131\uc5d0 \ub9de\ucd94\uc138\uc694).\n* **\uc2a4\ud06c\ub798\ud551 \uc870\uc815:** \uc6f9 \ud398\uc774\uc9c0\uc5d0\uc11c \ucd94\ucd9c\ud560 \ub370\uc774\ud130\uac00 \ub2e4\ub97c \uacbd\uc6b0, `website_scraper` \ub3c4\uad6c\uc758 \ud504\ub86c\ud504\ud2b8/\uc9c0\uc2dc\uc0ac\ud56d\uc744 \uc218\uc815\ud558\uac70\ub098 Browserless API\uc5d0 \ubcf4\ub0b4\ub294 \ub9e4\uac1c\ubcc0\uc218\ub97c \ubcc0\uacbd\ud558\uc138\uc694. HTTP Request \ub178\ub4dc\ub97c \ud1b5\ud574 Browserless\ub97c \ub2e4\ub978 \uc2a4\ud06c\ub798\ud551 \uc11c\ube44\uc2a4/API\ub85c \uad50\uccb4\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\n\n### \ucd9c\ub825"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "d5328d32-6ee9-4dd6-a68b-8736c85975fe",
  "connections": {
    "Gemini 2.5 PRO": {
      "ai_languageModel": [
        [
          {
            "node": "Save Article To Notion",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "save_to_notion": {
      "ai_tool": [
        [
          {
            "node": "Save Article To Notion",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "website_scraper": {
      "ai_tool": [
        [
          {
            "node": "Save Article To Notion",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "discord_notification": {
      "ai_tool": [
        [
          {
            "node": "Save Article To Notion",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Save Article To Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}