8
n8n 한국어amn8n.com

고객 피드백 루프 분석기

중급

이것은Miscellaneous, AI Summarization, Multimodal AI분야의자동화 워크플로우로, 11개의 노드를 포함합니다.주로 Code, Gmail, Slack, Switch, FormTrigger 등의 노드를 사용하며. AI, Google 스프레드시트 및 Slack 알림을 사용한 고객 피드백 자동 분류

사전 요구사항
  • Google 계정 및 Gmail API 인증 정보
  • Slack Bot Token 또는 Webhook URL
  • Google Sheets API 인증 정보
  • Google Gemini API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "bAczIXMBSsZulax7",
  "meta": {
    "instanceId": "14e4c77104722ab186539dfea5182e419aecc83d85963fe13f6de862c875ebfa",
    "templateCredsSetupCompleted": true
  },
  "name": "Customer Feedback Loop Analyzer",
  "tags": [],
  "nodes": [
    {
      "id": "0aeba1ed-f179-4a69-ad06-23bdf6ed1c4d",
      "name": "폼 제출 시",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        220,
        100
      ],
      "webhookId": "",
      "parameters": {
        "options": {},
        "formTitle": "Customer Review",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Review",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "1e5cb96f-9467-47ab-b060-8600ee901582",
      "name": "Google Gemini 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        528,
        220
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-1.5-flash"
      },
      "credentials": {
        "googlePalmApi": {}
      },
      "typeVersion": 1
    },
    {
      "id": "0c13ebb7-14ba-4c3b-aa44-b2b22ea72c3f",
      "name": "보고서 전송",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1256,
        100
      ],
      "webhookId": "8d5fae6b-280c-4286-bf3a-d7355617f013",
      "parameters": {
        "sendTo": "",
        "message": "=Your monthly energy report is as follows  {{ $json.url }}",
        "options": {
          "appendAttribution": true
        },
        "subject": "Energy Report",
        "emailType": "text"
      },
      "credentials": {},
      "typeVersion": 2.1
    },
    {
      "id": "d0abc9c5-7591-4f63-b097-f1682ffaa006",
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1256,
        -100
      ],
      "webhookId": "af63d3d7-1280-4774-b539-2edbf5d0588a",
      "parameters": {
        "text": "=User  {{ $json.candidate_name }} has already applied for {{ $json.role_applied }}",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "select": "user",
        "otherOptions": {}
      },
      "typeVersion": 2.3
    },
    {
      "id": "9151ff73-9062-4bb3-8776-1e299636b9ef",
      "name": "리뷰/피드백 수신",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        0,
        -100
      ],
      "parameters": {
        "filters": {
          "labelIds": [
            "Label_536806471971916762"
          ]
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {},
      "typeVersion": 1.2
    },
    {
      "id": "c4312796-7756-4a1a-bad8-5af5f2377b69",
      "name": "세부 정보 추출",
      "type": "n8n-nodes-base.code",
      "position": [
        220,
        -100
      ],
      "parameters": {
        "jsCode": "    const fromEmail = $input.first().json.From // Assuming 'from' field holds the full \"From\" string\n    let name = '';\n\n    // Check if the name is enclosed in angle brackets\n    if (fromEmail.includes('<') && fromEmail.includes('>')) {\n        name = fromEmail.substring(0, fromEmail.indexOf('<')).trim();\n    } else {\n        // If no angle brackets, assume the whole \"From\" field is the name\n        name = fromEmail.trim();\n    }\n\n    return { json: { name: name ,Review : $input.first().json.snippet} };"
      },
      "typeVersion": 2
    },
    {
      "id": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
      "name": "변환 및 요약",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        440,
        0
      ],
      "parameters": {
        "text": "={{ $json.Review }}",
        "options": {
          "systemPromptTemplate": "=You are a feedback analyst. Categorize the following user feedback into one of:\n- Bug\n- Feature Request\n- UX Issue\n- Other\n\nAlso extract the core complaint or suggestion in a concise sentence.\n\nFeedback:  {{ $json.Review }}"
        },
        "schemaType": "fromJson",
        "jsonSchemaExample": "{\n  \"category\": \"Feature Request\",\n  \"summary\": \"User wants dark mode support\",\n  \"sentiment\": \"Positive\",\n  \"Feedback text\": \"Original review\"\n\n}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "13155178-e7b0-4329-95b5-eddd560d0fe5",
      "name": "데이터 검토",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        816,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "summary": "={{ $json.output.summary }}",
            "category": "={{ $json.output.category }}",
            "Timestamp": "={{ $json.output.Timestamp }}",
            "sentiment": "={{ $json.output.sentiment }}",
            "Feedback text": "={{ $json.output[\"Feedback text\"] }}"
          },
          "schema": [
            {
              "id": "category",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "summary",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sentiment",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sentiment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback text",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "output"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {},
        "documentId": {}
      },
      "credentials": {},
      "typeVersion": 4.6
    },
    {
      "id": "66b9626b-dd32-4e12-8eda-1a85f8436a40",
      "name": "카테고리",
      "type": "n8n-nodes-base.switch",
      "position": [
        1036,
        0
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f245286d-696d-43c2-9717-838befcc4064",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.category }}",
                    "rightValue": "Bug"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "394c07bc-9828-4d4d-a434-33cb4a96cddb",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.category }}",
                    "rightValue": "Feature Request"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "a8490c26-d635-4a74-9c90-04d33e94f85e",
      "name": "스티커 메모",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        380
      ],
      "parameters": {
        "width": 1520,
        "height": 420,
        "content": "**Purpose:**\nAutomatically capture customer reviews from forms or emails, analyze them with AI to detect category and sentiment, and notify the right channels while logging everything in Google Sheets.\n\n\n**Core Logic:**\n\n1. **Form submission trigger** captures customer name and review text.\n2. **Gmail trigger** listens for incoming feedback emails.\n3. **Extract details (Code node)** parses reviewer name and feedback text.\n4. **AI analysis** summarizes the review, detects sentiment, and assigns a category (Bug, Feature Request, UX Issue, Other).\n5. **Google Gemini (optional)** provides advanced summarization/classification.\n6. **Google Sheets** logs the categorized feedback for tracking.\n7. **Switch node** routes feedback into different branches based on category.\n8. **Slack notification** alerts the team about critical issues like Bugs.\n9. **Email report** sends categorized summaries (e.g., Feature Requests) to stakeholders.\n\n\n**Outcome:**\nCreates a streamlined feedback loop where customer input is captured, structured, categorized, and routed automatically — ensuring issues are quickly acted on, feature requests are tracked, and all feedback is stored for long-term analysis.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a57683e3-5304-4a50-8aec-0ac86427b929",
      "name": "스티커 메모1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -82,
        -240
      ],
      "parameters": {
        "color": 5,
        "width": 1520,
        "height": 600,
        "content": "## Customer Feedback Loop Analyzer"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1277749b-2809-4280-a59e-17998a61a482",
  "connections": {
    "66b9626b-dd32-4e12-8eda-1a85f8436a40": {
      "main": [
        [
          {
            "node": "d0abc9c5-7591-4f63-b097-f1682ffaa006",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "0c13ebb7-14ba-4c3b-aa44-b2b22ea72c3f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "13155178-e7b0-4329-95b5-eddd560d0fe5": {
      "main": [
        [
          {
            "node": "66b9626b-dd32-4e12-8eda-1a85f8436a40",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c4312796-7756-4a1a-bad8-5af5f2377b69": {
      "main": [
        [
          {
            "node": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0aeba1ed-f179-4a69-ad06-23bdf6ed1c4d": {
      "main": [
        [
          {
            "node": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9151ff73-9062-4bb3-8776-1e299636b9ef": {
      "main": [
        [
          {
            "node": "c4312796-7756-4a1a-bad8-5af5f2377b69",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e1525399-3ac3-4dc0-8b9b-79261b2f9c63": {
      "main": [
        [
          {
            "node": "13155178-e7b0-4329-95b5-eddd560d0fe5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1e5cb96f-9467-47ab-b060-8600ee901582": {
      "ai_languageModel": [
        [
          {
            "node": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

중급 - 기타, AI 요약, 멀티모달 AI

유료인가요?

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

워크플로우 정보
난이도
중급
노드 수11
카테고리3
노드 유형10
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
WeblineIndia

WeblineIndia

@weblineindia

A Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34