{
  "createdAt": "2025-09-03T02:28:03.221Z",
  "updatedAt": "2025-09-03T02:28:03.221Z",
  "id": "5W0QgdykUYgayvdX",
  "name": "My workflow 250630",
  "active": false,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {
        "content": "![](https://raw.githubusercontent.com/2innnnn0/assets/refs/heads/master/image/datapopcorn_logo_50px.png) \n\n## \uc774\ucee4\uba38\uc2a4: \uc0c1\ud488 \ub9ac\ubdf0 \uc6cc\ub4dc\ud074\ub77c\uc6b0\ub4dc \ubd84\uc11d \uc790\ub3d9\ud654\n### Source : \ub124\uc774\ubc84 \uc601\ud654 \ub9ac\ubdf0 \ub370\uc774\ud130 https://github.com/e9t/nsmc/ \n\n- (\uc218\uc9d1) \ub9ac\ubdf0 \ub370\uc774\ud130 \uc790\ub3d9 \uc218\uc9d1 (\ucfe0\ud321, \ub124\uc774\ubc84\uc1fc\ud551 \ub4f1)\n- (\uc804\ucc98\ub9ac) \uc911\ubcf5 \uc81c\uac70, \ubd88\uc6a9\uc5b4 \uc81c\uac70, \uba85\uc0ac/\ud615\uc6a9\uc0ac \ucd94\ucd9c\n- (\ubd84\uc11d) OpenAI \uac10\uc131 \ubd84\uc11d, \uae0d/\ubd80\uc815 \ud0a4\uc6cc\ub4dc \uc694\uc57d\n- (\uc2dc\uac01\ud654) \uae0d/\ubd80\uc815 \uc6cc\ub4dc\ud074\ub77c\uc6b0\ub4dc \uc774\ubbf8\uc9c0 \uc0dd\uc131 \n\n\n- \"Schedule Trigger: \ub9e4\uc77c \uc624\uc804 9\uc2dc \uc2e4\ud589\n- HTTP Request: \ub9ac\ubdf0 \ub370\uc774\ud130 \uc218\uc9d1\n- Function / Set: \uc911\ubcf5 \uc81c\uac70, \ud0a4\uc6cc\ub4dc \uc815\uc81c\n- OpenAI: \uac10\uc131 \ubd84\uc11d + \ud575\uc2ec \ubb38\uc7a5 \ucd94\ucd9c\n- Function: \uae0d/\ubd80\uc815 \ud0a4\uc6cc\ub4dc \uc694\uc57d\n- Google Sheets / Notion: \uacb0\uacfc \uc800\uc7a5\n- SMTP / Gmail: \ud300\uc5d0 \uc774\uba54\uc77c \uc804\uc1a1\"",
        "height": 540,
        "width": 500
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        0,
        0
      ],
      "id": "5ad11385-bd42-4a73-93cf-1e77e59e960c",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://quickchart.io/wordcloud",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Content-Disposition",
              "value": "attachment; filename=\"wordcloud.png\""
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ $json.output.wordcloudPayload }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "responseFormat": "file",
              "outputPropertyName": "positive.png"
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1984,
        624
      ],
      "id": "fc60adcb-b512-4c89-b049-1e7cfd7d4dce",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        1648,
        672
      ],
      "id": "33a62a1e-a71e-4168-878b-88c80b0501bf",
      "name": "OpenAI Chat Model"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        64,
        768
      ],
      "id": "05039d14-f2ce-4cd4-bf60-857e8ea4df99",
      "name": "When clicking \u2018Test workflow\u2019"
    },
    {
      "parameters": {
        "jsCode": "const reviews = items.map(item => item.json);\n\nconst processedData = reviews.map(item => {\n  const text = item.data || '';\n  const stopWords = ['\uadf8\ub9ac\uace0', '\uc2f6\ub2e4', '\uc774\ub2e4', '\ud558\ub2e4', '\uac83', '\uc218', '\ub4f1', '\ubc0f', '\ub610\ub294'];\n  \n  const words = text.split(/\\s+/).filter(word => word.trim() !== '');\n  const filteredWords = words.filter(word => !stopWords.includes(word));\n  const nounsAdjectives = filteredWords.filter(word => isNounOrAdjective(word));\n  \n  const processedText = nounsAdjectives.join(' ');\n  \n  // QuickChart API\uc6a9 JSON \uad6c\uc870 \uc0dd\uc131\n  return {\n    // \uc6cc\ub4dc\ud074\ub77c\uc6b0\ub4dc API\uc6a9 \ud398\uc774\ub85c\ub4dc\n    wordcloudPayload: {\n      format: \"png\",\n      width: 700,\n      height: 700,\n      fontFamily: \"sans-serif\",\n      fontScale: 18,\n      scale: \"linear\",\n      text: processedText,\n      backgroundColor: \"white\",\n      colorScheme: \"paired\",\n      maxWords: 100\n    },\n    // \ub514\ubc84\uae45\uc6a9 \uc815\ubcf4\n    originalData: item.data,\n    processedText: processedText,\n    wordCount: nounsAdjectives.length,\n    words: nounsAdjectives\n  };\n});\n\nreturn processedData.map(item => ({ json: item }));\n\n// \uae30\uc874 \ud568\uc218\ub4e4...\nfunction isNounOrAdjective(word) {\n  if (word.length < 2) return false;\n  const tagged = tagPOS(word);\n  return tagged === 'N' || tagged === 'A';\n}\n\nfunction tagPOS(word) {\n  const techNouns = ['\uc778\uacf5\uc9c0\ub2a5', '\uba38\uc2e0\ub7ec\ub2dd', '\ub525\ub7ec\ub2dd', '\ub370\uc774\ud130\ubd84\uc11d', '\ube45\ub370\uc774\ud130', '\uc54c\uace0\ub9ac\uc998', \n                   '\ud504\ub85c\uadf8\ub798\ubc0d', '\ud30c\uc774\uc36c', '\uc790\ubc14', '\uc6f9\uac1c\ubc1c', '\ubaa8\ubc14\uc77c\uc571', '\ud074\ub77c\uc6b0\ub4dc', '\ucef4\ud4e8\ud305'];\n  \n  if (techNouns.includes(word) || word.length >= 3) {\n    return 'N';\n  }\n  \n  return word.length > 2 ? 'N' : 'A';\n}"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1376,
        608
      ],
      "id": "872f2ee6-1e68-4244-a12e-822eef9d3737",
      "name": "Preprocess Reviews _"
    },
    {
      "parameters": {
        "url": "https://raw.githubusercontent.com/2innnnn0/assets/refs/heads/master/text/ecommerce_reviews.json",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        288,
        768
      ],
      "id": "b1423a7f-2755-465d-b6d9-0e59f968acbe",
      "name": "Data Collect1"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "6b117ec8-2e95-4874-982a-d8e706dd987a",
              "name": "data",
              "value": "={{ $json.data.parseJson() }}",
              "type": "array"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        512,
        768
      ],
      "id": "1611edfe-fa80-436e-8b50-5bf64e6fa95f",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "fd3b988e-6744-48d0-8cf6-6a9d62f8216d",
              "name": "data",
              "value": "={{ $json.text }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        944,
        768
      ],
      "id": "6f0477fd-d8a2-4006-b348-1c91e07bfc86",
      "name": "Edit Fields1"
    },
    {
      "parameters": {
        "fieldToSplitOut": "data",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        736,
        768
      ],
      "id": "679f1109-70be-4b07-939a-0b42621c53fc",
      "name": "Split Out"
    },
    {
      "parameters": {
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "data"
            }
          ]
        },
        "options": {
          "mergeLists": true
        }
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        1168,
        768
      ],
      "id": "d1f36863-8d45-4d6c-98d3-ee020a124738",
      "name": "Aggregate"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "ebe5bc8d-a3b4-46a8-aaf5-01a1d3bdf01c",
              "name": "data",
              "value": "={{ $json.data }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1392,
        768
      ],
      "id": "4052cf43-774f-4058-96a7-cbc5e61df681",
      "name": "Edit Fields2"
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"wordcloudPayload\": {\n    \"format\": \"png\",\n    \"width\": 700,\n    \"height\": 700,\n    \"fontFamily\": \"sans-serif\",\n    \"fontScale\": 18,\n    \"scale\": \"linear\",\n    \"text\": \"\uc74c\uc9c8\uc774 \uc815\ub9d0 \uc88b\uc544\uc694 \ubc30\uc1a1\ub3c4 \ube60\ub974\uace0 \uac00\uaca9 \ub300\ube44 \uc131\ub2a5\uc774 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \ucd94\ucc9c\ud569\ub2c8\ub2e4 \ub514\uc790\uc778\uc774 \uc608\uc058\uace0 \ubcf4\ud638\ub825\ub3c4 \uc88b\ub124\uc694 \ud488\uc9c8\uc774 \uc88b\uace0 \uac00\uaca9\ub3c4 \ud569\ub9ac\uc801\uc774\uc5d0\uc694 \ubc30\uc1a1 \ube68\ub77c\uc11c \ub9cc\uc871\ud569\ub2c8\ub2e4 \ud0c0\uc774\ud551 \uac10\uc774 \uc815\ub9d0 \uc88b\uc544\uc694 \uc18c\uc74c\ub3c4 \uc801\uace0 \ub514\uc790\uc778\ub3c4 \uae54\ub054\ud569\ub2c8\ub2e4 \uac15\ub825 \ucd94\ucc9c \ucda9\uc804 \uc18d\ub3c4\uac00 \ube60\ub974\uace0 \ud488\uc9c8\uc774 \uc88b\ub124\uc694 \uac00\uaca9 \ub300\ube44 \ub9cc\uc871\uc2a4\ub7fd\uc2b5\ub2c8\ub2e4 \uc74c\uc9c8\uc774 \ucd5c\uace0\uc608\uc694 \ub514\uc790\uc778\ub3c4 \uc138\ub828\ub418\uace0 \ubc30\uc1a1\ub3c4 \ube68\ub790\uc2b5\ub2c8\ub2e4 \ucd94\ucc9c\ud569\ub2c8\ub2e4 \uc548\uc815\uc131\uc774 \uc88b\uace0 \uac01\ub3c4 \uc870\uc808\uc774 \ud3b8\ud574\uc694 \uac00\uaca9\ub3c4 \uc800\ub834\ud558\uace0 \ud488\uc9c8 \ub9cc\uc871 \uc6a9\ub7c9\uc774 \ud06c\uace0 \ucda9\uc804 \uc18d\ub3c4\ub3c4 \ube68\ub77c\uc694 \ub514\uc790\uc778 \uae54\ub054\ud558\uace0 \uc131\ub2a5 \uc88b\uc2b5\ub2c8\ub2e4 \ud654\uc9c8\uc774 \uc120\uba85\ud558\uace0 \uc0c9\uac10\uc774 \uc88b\uc544\uc694 \uac00\uaca9 \ub300\ube44 \uc131\ub2a5\uc774 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \ucd94\ucc9c \ud654\uc9c8 \uc88b\uace0 \uc124\uce58 \uac04\ub2e8\ud574\uc694 \uac00\uaca9\ub3c4 \ud569\ub9ac\uc801\uc774\uace0 \ubc30\uc1a1 \ube68\ub77c\uc11c \ub9cc\uc871 \ud06c\uae30\ub3c4 \uc801\ub2f9\ud558\uace0 \uc7ac\uc9c8\uc774 \ubd80\ub4dc\ub7ec\uc6cc\uc694 \ub514\uc790\uc778 \uc608\uc058\uace0 \ud488\uc9c8 \uc88b\uc2b5\ub2c8\ub2e4 \ub0c9\uac01 \ud6a8\uacfc \uc88b\uace0 \uc18c\uc74c\ub3c4 \uc801\uc5b4\uc694 \uac00\uaca9 \ub300\ube44 \uc131\ub2a5 \ub9cc\uc871\uc2a4\ub7fd\uc2b5\ub2c8\ub2e4 \ubcf4\ud638\ub825 \uc88b\uace0 \ub514\uc790\uc778\ub3c4 \uae54\ub054\ud574\uc694 \ubc30\uc1a1 \ube60\ub974\uace0 \ud488\uc9c8 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \uc74c\uc9c8 \uc88b\uace0 \ucc29\uc6a9\uac10\ub3c4 \ud3b8\ud574\uc694 \uac00\uaca9 \uc800\ub834\ud558\uace0 \uc131\ub2a5 \ub9cc\uc871\ud569\ub2c8\ub2e4 \uc74c\uc9c8 \ucd5c\uace0\uc774\uace0 \ubc30\ud130\ub9ac \uc624\ub798\uac00\uc694 \ub514\uc790\uc778 \uc88b\uace0 \uc131\ub2a5 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \ucd94\ucc9c \ucda9\uc804 \ube60\ub974\uace0 \ubc1c\uc5f4 \uc801\uc5b4\uc694 \ub514\uc790\uc778 \uae54\ub054\ud558\uace0 \uac00\uaca9 \ub300\ube44 \uc88b\uc2b5\ub2c8\ub2e4 \uc74c\uc9c8 \uc88b\uace0 \ub9c8\uc774\ud06c \uc131\ub2a5\ub3c4 \ud6cc\ub96d\ud574\uc694 \ucc29\uc6a9\uac10 \ud3b8\ud558\uace0 \ucd94\ucc9c\ud569\ub2c8\ub2e4 \ud488\uc9c8 \uc88b\uace0 \uae38\uc774\ub3c4 \uc801\ub2f9\ud574\uc694 \uac00\uaca9 \uc800\ub834\ud558\uace0\",\n    \"backgroundColor\": \"white\",\n    \"colorScheme\": \"paired\",\n    \"maxWords\": 100\n  }\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        1776,
        704
      ],
      "id": "fdd2b836-b98c-4878-b023-955fea687fb7",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "content": "## TARGET\n- \uba54\uc77c\ub85c \ubc1c\uc1a1",
        "height": 320,
        "width": 220,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2592,
        608
      ],
      "id": "af478b17-799e-4644-a23f-ba26187198fd",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "sendTo": "datapopcorn@gmail.com",
        "subject": "Review Analysis Results",
        "message": "Positive vs. Negative",
        "options": {
          "attachmentsUi": {
            "attachmentsBinary": [
              {
                "property": "positive.png"
              },
              {
                "property": "negative.png"
              }
            ]
          }
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        2640,
        768
      ],
      "id": "5a84d1f0-832d-41ea-b5d1-36ee46336b81",
      "name": "Gmail"
    },
    {
      "parameters": {
        "content": "## TASK\n### \uae0d\uc815\n- QuickChart Wordcloud \ubcc0\ud658",
        "height": 320,
        "width": 540,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1568,
        368
      ],
      "id": "ae9128ea-c0a3-45e4-b188-ead1c09a67b4",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## TASK\n- \ub370\uc774\ud130 \uc804\ucc98\ub9ac",
        "height": 360,
        "width": 1100,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        448,
        576
      ],
      "id": "24d0124b-944e-422e-824e-d8f0790427a9",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "## TASK\n- \ub370\uc774\ud130 \ubd88\ub7ec\uc624\uae30",
        "height": 320,
        "width": 180,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        256,
        608
      ],
      "id": "6f632944-3d2e-4bd5-9e0e-3c235cf2525c",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "content": "## TRIGGER\n- \ub9e4\uc77c \uc624\uc804 9\uc2dc \uc2e4\ud589",
        "height": 340,
        "width": 180,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        16,
        592
      ],
      "id": "7bd5c189-6802-4030-bf72-465a5ca154b8",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "content": "![](https://github.com/2innnnn0/assets/blob/master/text/review_wordcloud.png?raw=true)",
        "height": 420,
        "width": 420
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2144,
        320
      ],
      "id": "0a59319c-eb86-4349-97c1-cc470658ee23",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://quickchart.io/wordcloud",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Content-Disposition",
              "value": "attachment; filename=\"wordcloud.png\""
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ $json.output.wordcloudPayload }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "responseFormat": "file",
              "outputPropertyName": "negative.png"
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1984,
        928
      ],
      "id": "be3ed86b-5acd-4037-b16b-5988ccc2e871",
      "name": "HTTP Request1"
    },
    {
      "parameters": {
        "content": "## TASK\n### \ubd80\uc815\n- QuickChart Wordcloud \ubcc0\ud658",
        "height": 360,
        "width": 560,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1568,
        720
      ],
      "id": "c52c0326-226c-4c80-b704-b8063d0215bb",
      "name": "Sticky Note7"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.data }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=\u2705 \uc2dc\uc2a4\ud15c \ud504\ub86c\ud504\ud305 (\ubd80\uc815 \ub9ac\ubdf0 \uc804\uc6a9 \ubc84\uc804)\n\n\u2e3b\n\n\ub108\ub294 \uc6cc\ub4dc\ud074\ub77c\uc6b0\ub4dc API\uc5d0 \uc0ac\uc6a9\ud560 JSON \ud615\uc2dd\uc758 \ucd9c\ub825\uac12\uc744 \uc0dd\uc131\ud558\ub294 \uc2dc\uc2a4\ud15c\uc774\ub2e4.\n\n\uc785\ub825\uac12\uc740 data\ub77c\ub294 \ud0a4\uc5d0 \ubb38\uc790\uc5f4 \ubc30\uc5f4 \ud615\ud0dc\uc758 \ub9ac\ubdf0 \ubaa9\ub85d\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.\n\uc774 \ub9ac\ubdf0\ub4e4\uc758 \ub0b4\uc6a9\uc744 \uae30\ubc18\uc73c\ub85c \ubd80\uc815\uc801\uc778 \ubb38\uc7a5 \ub610\ub294 \ubd80\uc815\uc801\uc778 \uc758\ubbf8\uc758 \ud45c\ud604\ub9cc \uc120\ubcc4\ud558\uc5ec wordcloudPayload \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uc5ec \ucd9c\ub825\ud574\uc57c \ud55c\ub2e4.\n\n\ucd9c\ub825\uc740 \ub2e4\uc74c JSON \ud615\uc2dd\uc774\uc5b4\uc57c \ud55c\ub2e4:\n\n{\n  \"wordcloudPayload\": {\n    \"format\": \"png\",\n    \"width\": 700,\n    \"height\": 700,\n    \"fontFamily\": \"sans-serif\",\n    \"fontScale\": 18,\n    \"scale\": \"linear\",\n    \"text\": <\uc785\ub825\ub41c \ub9ac\ubdf0\uc5d0\uc11c \ubd80\uc815\uc801\uc778 \ud45c\ud604\ub9cc \ucd94\ucd9c\ud558\uace0 \uc911\ubcf5 \ud3ec\ud568\ud558\uc5ec \uacf5\ubc31\uc73c\ub85c \uc5f0\uacb0\ud55c \ubb38\uc790\uc5f4>,\n    \"backgroundColor\": \"white\",\n    \"colorScheme\": \"paired\",\n    \"maxWords\": 100\n  }\n}\n\n\uc9c0\uce68:\n\t\u2022\ttext \ud544\ub4dc\uc5d0\ub294 \ubd80\uc815\uc801\uc778 \ud45c\ud604\ub4e4\ub9cc \ucd94\ucd9c\ud558\uc5ec \uc911\ubcf5 \ud3ec\ud568\ud55c \ud6c4 \uacf5\ubc31(\u201d \u201c)\uc73c\ub85c \uc5f0\uacb0\ud55c \ubb38\uc790\uc5f4\uc744 \ub123\ub294\ub2e4.\n\t\u2022\t\ubd88\ub9cc, \ubd88\ud3b8, \uacb0\ud568, \uc9c0\uc5f0, \ub0ae\uc740 \ud488\uc9c8, \uace0\uac1d \ubd88\ub9cc\uc871 \ub4f1 \ubd80\uc815\uc801\uc778 \uc758\ubbf8\ub97c \uac16\ub294 \ubb38\uc7a5\uc774\ub098 \ub2e8\uc5b4\ub9cc \ucd94\ucd9c\ud55c\ub2e4.\n\t\u2022\t\uae0d\uc815\uc801\uc774\uac70\ub098 \uc911\ub9bd\uc801\uc778 \ud45c\ud604\uc740 \ud3ec\ud568\ud558\uc9c0 \uc54a\ub294\ub2e4.\n\t\u2022\t\ubb38\ub9e5\uc0c1 \ubd80\uc815\uc774\ub77c\uba74 \uc644\uc804\ud55c \ubb38\uc7a5\uc774 \uc544\ub2c8\uc5b4\ub3c4 \ud3ec\ud568 \uac00\ub2a5\ud558\ub2e4 (\uc608: \u201c\ubc30\uc1a1 \ub290\ub9bc\u201d, \u201c\ub0b4\uad6c\uc131 \ubd80\uc871\u201d, \u201c\ubd88\ub7c9\u201d, \u201c\uc751\ub2f5 \uc9c0\uc5f0\u201d).\n\t\u2022\t\ub2e8\uc77c JSON \uac1d\uccb4\ub9cc \ucd9c\ub825\ud558\uba70, \uc124\uba85 \ud14d\uc2a4\ud2b8\ub098 \uc8fc\uc11d\uc740 \uc808\ub300 \ud3ec\ud568\ud558\uc9c0 \uc54a\ub294\ub2e4.\n\t\u2022\t\ud45c\ud604\uc774 \ubc18\ubcf5\ub418\uc5b4 \ub4f1\uc7a5\ud560\uc218\ub85d \uc6cc\ub4dc\ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \ub354 \uac15\uc870\ub418\ubbc0\ub85c \uc911\ubcf5\uc740 \uc81c\uac70\ud558\uc9c0 \uc54a\ub294\ub2e4.\n\t\u2022\tJSON \ud3ec\ub9f7 \uc624\ub958\uac00 \uc5c6\ub3c4\ub85d \uc815\ud655\ud558\uac8c \ucd9c\ub825\ud560 \uac83."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        1616,
        928
      ],
      "id": "d980769c-95b1-45e0-a16f-61969dbb5318",
      "name": "Negative"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.1,
      "position": [
        2208,
        768
      ],
      "id": "7d2df711-b4f5-4c67-b31e-cf0aae4dc51a",
      "name": "Merge"
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "options": {
          "includeBinaries": true
        }
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        2432,
        768
      ],
      "id": "5ad2bfbe-0362-40a1-92ca-e9c9e59d173e",
      "name": "Aggregate1"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.data }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=\u2705 \uc2dc\uc2a4\ud15c \ud504\ub86c\ud504\ud305 (QuickChart \uac15\uc870 \ucd5c\uc801\ud654 \u2013 \uae0d\uc815 \uc804\uc6a9)\n\n\ub108\ub294 \uc6cc\ub4dc\ud074\ub77c\uc6b0\ub4dc API\uc5d0 \uc0ac\uc6a9\ud560 JSON \ud615\uc2dd\uc758 \ucd9c\ub825\uac12\uc744 \uc0dd\uc131\ud558\ub294 \uc2dc\uc2a4\ud15c\uc774\ub2e4.\n\n\uc785\ub825\uac12\uc740 `data`\ub77c\ub294 \ud0a4\uc5d0 \ubb38\uc790\uc5f4 \ubc30\uc5f4 \ud615\ud0dc\uc758 \ub9ac\ubdf0 \ubaa9\ub85d\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.  \n\uc774 \ub9ac\ubdf0\ub4e4\uc758 \ub0b4\uc6a9\uc744 \uae30\ubc18\uc73c\ub85c **\uae0d\uc815\uc801\uc778 \uc758\ubbf8\ub97c \uac16\ub294 \ubb38\uc7a5 \ub610\ub294 \ub2e8\uc5b4\ub9cc \ucd94\ucd9c\ud558\uc5ec**, `wordcloudPayload` \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uc5ec \ucd9c\ub825\ud574\uc57c \ud55c\ub2e4.\n\n\ucd9c\ub825\uc740 \ub2e4\uc74c JSON \ud615\uc2dd\uc774\uc5b4\uc57c \ud55c\ub2e4:\n\n```json\n{\n  \"wordcloudPayload\": {\n    \"format\": \"png\",\n    \"width\": 700,\n    \"height\": 700,\n    \"fontFamily\": \"sans-serif\",\n    \"fontScale\": 18,\n    \"scale\": \"linear\",\n    \"text\": <\uae0d\uc815\uc801\uc778 \ubb38\uc7a5\ub4e4\uc744 \uc911\ubcf5 \ud3ec\ud568\ud558\uc5ec \uacf5\ubc31\uc73c\ub85c \uc5f0\uacb0\ud55c \uac12>,\n    \"backgroundColor\": \"white\",\n    \"colorScheme\": \"paired\",\n    \"maxWords\": 100\n  }\n}\n\n\uc9c0\uce68:\n\t\u2022\ttext \ud544\ub4dc\uc5d0\ub294 \uc785\ub825\ub41c \ub9ac\ubdf0\uc5d0\uc11c \uae0d\uc815\uc801\uc778 \uc758\ubbf8\ub97c \uac00\uc9c4 \ubb38\uc7a5\uc774\ub098 \uad6c\uc808\uc744 \uadf8\ub300\ub85c \ucd94\ucd9c\ud55c\ub2e4.\n\t\u2022\t\uc911\ubcf5\uc740 \uc81c\uac70\ud558\uc9c0 \uc54a\uc73c\uba70, \uac19\uc740 \ubb38\uc7a5\uc774 \uc5ec\ub7ec \ubc88 \ub4f1\uc7a5\ud558\uba74 \uadf8\ub300\ub85c \ubaa8\ub450 \ud3ec\ud568\ud55c\ub2e4.\n\t\u2022\t\uac01 \uae0d\uc815 \ubb38\uc7a5\uc740 \ub9c8\uce68\ud45c \uc5c6\uc774 \uacf5\ubc31\uc73c\ub85c \uad6c\ubd84\ud558\uc5ec \ud558\ub098\uc758 \ubb38\uc790\uc5f4\ub85c \uacb0\ud569\ud55c\ub2e4.\n\t\u2022\t\uc608: \"\ubc30\uc1a1\uc774 \ube60\ub985\ub2c8\ub2e4 \ub514\uc790\uc778\uc774 \ub9c8\uc74c\uc5d0 \ub4e4\uc5b4\uc694 \ubc30\uc1a1\uc774 \ube60\ub985\ub2c8\ub2e4 \ud488\uc9c8\uc774 \uc88b\uc2b5\ub2c8\ub2e4 \ubc30\uc1a1\uc774 \ube60\ub985\ub2c8\ub2e4 \ucd94\ucc9c\ud569\ub2c8\ub2e4\"\n\t\u2022\t\uae0d\uc815\uc801\uc778 \ubb38\uc7a5 \uc608\uc2dc: \u201c\ucd94\ucc9c\ud569\ub2c8\ub2e4\u201d, \u201c\ubc30\uc1a1\uc774 \ube60\ub985\ub2c8\ub2e4\u201d, \u201c\uc74c\uc9c8\uc774 \uc88b\uc2b5\ub2c8\ub2e4\u201d, \u201c\uac00\uaca9 \ub300\ube44 \ud6cc\ub96d\ud569\ub2c8\ub2e4\u201d\n\t\u2022\t\ubd80\uc815\uc801\uc774\uac70\ub098 \uc911\ub9bd\uc801\uc778 \ud45c\ud604\uc740 \uc808\ub300 \ud3ec\ud568\ud558\uc9c0 \uc54a\ub294\ub2e4.\n\t\u2022\t\ubc18\ub4dc\uc2dc JSON \ud3ec\ub9f7\uc73c\ub85c\ub9cc \ucd9c\ub825\ud558\uba70, \ub2e4\ub978 \ud14d\uc2a4\ud2b8\ub098 \uc8fc\uc11d\uc740 \ud3ec\ud568\ud558\uc9c0 \uc54a\ub294\ub2e4.\n\n\n\uc608\uc2dc) \nText : \uc74c\uc9c8\uc774 \uc815\ub9d0 \uc88b\uc544\uc694 \ubc30\uc1a1\ub3c4 \ube60\ub974\uace0 \uac00\uaca9 \ub300\ube44 \uc131\ub2a5\uc774 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \ucd94\ucc9c\ud569\ub2c8\ub2e4 \ub514\uc790\uc778\uc774 \uc608\uc058\uace0 \ubcf4\ud638\ub825\ub3c4 \uc88b\ub124\uc694 \ud488\uc9c8\uc774 \uc88b\uace0 \uac00\uaca9\ub3c4 \ud569\ub9ac\uc801\uc774\uc5d0\uc694 \ubc30\uc1a1 \ube68\ub77c\uc11c \ub9cc\uc871\ud569\ub2c8\ub2e4 \ud0c0\uc774\ud551 \uac10\uc774 \uc815\ub9d0 \uc88b\uc544\uc694 \uc18c\uc74c\ub3c4 \uc801\uace0 \ub514\uc790\uc778\ub3c4 \uae54\ub054\ud569\ub2c8\ub2e4 \uac15\ub825 \ucd94\ucc9c \ucda9\uc804 \uc18d\ub3c4\uac00 \ube60\ub974\uace0 \ud488\uc9c8\uc774 \uc88b\ub124\uc694 \uac00\uaca9 \ub300\ube44 \ub9cc\uc871\uc2a4\ub7fd\uc2b5\ub2c8\ub2e4 \uc74c\uc9c8\uc774 \ucd5c\uace0\uc608\uc694 \ub514\uc790\uc778\ub3c4 \uc138\ub828\ub418\uace0 \ubc30\uc1a1\ub3c4 \ube68\ub790\uc2b5\ub2c8\ub2e4 \ucd94\ucc9c\ud569\ub2c8\ub2e4 \uc548\uc815\uc131\uc774 \uc88b\uace0 \uac01\ub3c4 \uc870\uc808\uc774 \ud3b8\ud574\uc694 \uac00\uaca9\ub3c4 \uc800\ub834\ud558\uace0 \ud488\uc9c8 \ub9cc\uc871 \uc6a9\ub7c9\uc774 \ud06c\uace0 \ucda9\uc804 \uc18d\ub3c4\ub3c4 \ube68\ub77c\uc694 \ub514\uc790\uc778 \uae54\ub054\ud558\uace0 \uc131\ub2a5 \uc88b\uc2b5\ub2c8\ub2e4 \ud654\uc9c8\uc774 \uc120\uba85\ud558\uace0 \uc0c9\uac10\uc774 \uc88b\uc544\uc694 \uac00\uaca9 \ub300\ube44 \uc131\ub2a5\uc774 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \ucd94\ucc9c \ud654\uc9c8 \uc88b\uace0 \uc124\uce58 \uac04\ub2e8\ud574\uc694 \uac00\uaca9\ub3c4 \ud569\ub9ac\uc801\uc774\uace0 \ubc30\uc1a1 \ube68\ub77c\uc11c \ub9cc\uc871 \ud06c\uae30\ub3c4 \uc801\ub2f9\ud558\uace0 \uc7ac\uc9c8\uc774 \ubd80\ub4dc\ub7ec\uc6cc\uc694 \ub514\uc790\uc778 \uc608\uc058\uace0 \ud488\uc9c8 \uc88b\uc2b5\ub2c8\ub2e4 \ub0c9\uac01 \ud6a8\uacfc \uc88b\uace0 \uc18c\uc74c\ub3c4 \uc801\uc5b4\uc694 \uac00\uaca9 \ub300\ube44 \uc131\ub2a5 \ub9cc\uc871\uc2a4\ub7fd\uc2b5\ub2c8\ub2e4 \ubcf4\ud638\ub825 \uc88b\uace0 \ub514\uc790\uc778\ub3c4 \uae54\ub054\ud574\uc694 \ubc30\uc1a1 \ube60\ub974\uace0 \ud488\uc9c8 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \uc74c\uc9c8 \uc88b\uace0 \ucc29\uc6a9\uac10\ub3c4 \ud3b8\ud574\uc694 \uac00\uaca9 \uc800\ub834\ud558\uace0 \uc131\ub2a5 \ub9cc\uc871\ud569\ub2c8\ub2e4 \uc74c\uc9c8 \ucd5c\uace0\uc774\uace0 \ubc30\ud130\ub9ac \uc624\ub798\uac00\uc694 \ub514\uc790\uc778 \uc88b\uace0 \uc131\ub2a5 \ud6cc\ub96d\ud569\ub2c8\ub2e4 \ucd94\ucc9c \ucda9\uc804 \ube60\ub974\uace0 \ubc1c\uc5f4 \uc801\uc5b4\uc694 \ub514\uc790\uc778 \uae54\ub054\ud558\uace0 \uac00\uaca9 \ub300\ube44 \uc88b\uc2b5\ub2c8\ub2e4 \uc74c\uc9c8 \uc88b\uace0 \ub9c8\uc774\ud06c \uc131\ub2a5\ub3c4 \ud6cc\ub96d\ud574\uc694 \ucc29\uc6a9\uac10 \ud3b8\ud558\uace0 \ucd94\ucc9c\ud569\ub2c8\ub2e4 \ud488\uc9c8 \uc88b\uace0 \uae38\uc774\ub3c4 \uc801\ub2f9\ud574\uc694"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        1616,
        496
      ],
      "id": "c9fed0fa-65f3-426a-a6e0-98b8706dd7bf",
      "name": "Positive"
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "resource": "file",
        "operation": "get",
        "owner": {
          "__rl": true,
          "value": "2innnnn0",
          "mode": "list",
          "cachedResultName": "2innnnn0",
          "cachedResultUrl": "https://github.com/2innnnn0"
        },
        "repository": {
          "__rl": true,
          "value": "assets",
          "mode": "list",
          "cachedResultName": "assets",
          "cachedResultUrl": "https://github.com/2innnnn0/assets"
        },
        "filePath": "data/smartphone_reviews_1000.csv",
        "additionalParameters": {}
      },
      "type": "n8n-nodes-base.github",
      "typeVersion": 1.1,
      "position": [
        288,
        1888
      ],
      "id": "5e40177f-fb75-45b0-a8ca-8ca8c553cde3",
      "name": "GitHub"
    },
    {
      "parameters": {
        "url": "https://raw.githubusercontent.com/2innnnn0/assets/master/data/smartphone_reviews_1000.csv",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        64,
        1680
      ],
      "id": "c49c73c3-ef7e-4f8e-a642-5095a90d3d2e",
      "name": "HTTP Request2"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        288,
        1680
      ],
      "id": "cb502a9d-9861-46b5-af41-29df6999458d",
      "name": "Extract from File"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "5d4fe720-4242-4884-a314-7712eb98a372",
              "name": "data",
              "value": "={{ $json.review_text }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        736,
        1776
      ],
      "id": "183d16e9-4c5b-41fd-af9c-8ddc57a6bf6e",
      "name": "Edit Fields3"
    },
    {
      "parameters": {
        "maxItems": 500
      },
      "type": "n8n-nodes-base.limit",
      "typeVersion": 1,
      "position": [
        512,
        1680
      ],
      "id": "d6a87c45-2c7e-4f77-b1fd-58e074407f65",
      "name": "Limit"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        512,
        1888
      ],
      "id": "f88bb677-7f2f-4148-958b-2590f2038a3e",
      "name": "Extract from File1"
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "otherOptions": {}
      },
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.3,
      "position": [
        2640,
        1008
      ],
      "id": "204a6536-7508-4c77-805c-78f458f38557",
      "name": "Send a message",
      "disabled": true
    },
    {
      "parameters": {
        "projectId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "sqlQuery": "SELECT",
        "options": {}
      },
      "type": "n8n-nodes-base.googleBigQuery",
      "typeVersion": 2.1,
      "position": [
        1728,
        1328
      ],
      "id": "e2ca27a2-12e6-4304-9c61-61683bd53c36",
      "name": "Execute a SQL query"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        1520,
        1328
      ],
      "id": "4a047f60-701d-4ccd-a67c-1a7117c27670",
      "name": "Schedule Trigger"
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "otherOptions": {}
      },
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.3,
      "position": [
        1936,
        1328
      ],
      "id": "276d4e41-7b7c-43f4-b416-35f0029d3e76",
      "name": "Send a message1"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        1520,
        1168
      ],
      "id": "873ceb25-915e-4935-a6f8-b0423cf2835b",
      "name": "Schedule Trigger1"
    },
    {
      "parameters": {
        "operation": "insert",
        "projectId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "datasetId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "tableId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleBigQuery",
      "typeVersion": 2.1,
      "position": [
        1744,
        1168
      ],
      "id": "2da232f9-7ce5-4b96-be82-275bb26224a9",
      "name": "Insert rows in a table"
    }
  ],
  "connections": {
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Positive",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Negative",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Data Collect1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Data Collect1": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields1": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Edit Fields2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields2": {
      "main": [
        [
          {
            "node": "Positive",
            "type": "main",
            "index": 0
          },
          {
            "node": "Negative",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Positive",
            "type": "ai_outputParser",
            "index": 0
          },
          {
            "node": "Negative",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Negative": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Aggregate1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate1": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Positive": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GitHub": {
      "main": [
        [
          {
            "node": "Extract from File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request2": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File1": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute a SQL query": {
      "main": [
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Execute a SQL query",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger1": {
      "main": [
        [
          {
            "node": "Insert rows in a table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "meta": null,
  "versionId": "ba4079cb-50bc-419c-adf5-0162756983ee",
  "triggerCount": 0,
  "shared": [
    {
      "createdAt": "2025-09-03T02:28:03.221Z",
      "updatedAt": "2025-09-03T02:28:03.221Z",
      "role": "workflow:owner",
      "workflowId": "5W0QgdykUYgayvdX",
      "projectId": "sjNgDrdbhRMMF6SK"
    }
  ],
  "tags": [
    {
      "createdAt": "2025-06-25T04:00:38.130Z",
      "updatedAt": "2025-06-25T04:00:38.130Z",
      "id": "EyGUZypc5DKHVUyY",
      "name": "\ud328\uc2a4\ud2b8\ucea0\ud37c\uc2a4"
    }
  ]
}