16 - InsightMark: AI 기반 리뷰 분석
이것은AI Summarization, Multimodal AI분야의자동화 워크플로우로, 13개의 노드를 포함합니다.주로 Code, ClickUp, Hubspot, MondayCom, FormTrigger 등의 노드를 사용하며. GPT-4를 사용한 폼 피드백 분석 및 Monday, ClickUp, HubSpot으로 작업 동기화
- •HubSpot API Key
- •OpenAI API Key
{
"id": "sewE6RsPSzHTD82d",
"meta": {
"instanceId": "c91c5b6efe2709e07c37996245857ac5d863d575d07e0072127351337c204c40",
"templateCredsSetupCompleted": true
},
"name": "16 - InsightMark: AI-Powered Review",
"tags": [
{
"id": "2V3HXFbv2wqNGm6s",
"name": "Dev",
"createdAt": "2025-06-17T05:42:41.949Z",
"updatedAt": "2025-06-17T05:42:41.949Z"
}
],
"nodes": [
{
"id": "ab9f0698-cf91-4bde-bae9-f7b4f0beeea7",
"name": "🧪 코드",
"type": "n8n-nodes-base.code",
"position": [
-1680,
-40
],
"parameters": {
"jsCode": "const raw = $input.first().json;\n\nreturn {\n review_text: raw.Message,\n customer_name: raw.Name,\n rating: parseInt(raw.Rating),\n product_service: raw[\"Product Service\"],\n};"
},
"typeVersion": 2
},
{
"id": "35d329e3-d4fb-4c54-a8e4-b4525f02789d",
"name": "📝 양식 제출 시",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1900,
-40
],
"webhookId": "b757ef50-c8d1-4041-95c5-2b1aa62cf017",
"parameters": {
"options": {},
"formTitle": "Feedback Form",
"formFields": {
"values": [
{
"fieldLabel": "Name",
"placeholder": "Your Name",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Message",
"placeholder": "Feedback",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Rating",
"fieldOptions": {
"values": [
{
"option": "1"
},
{
"option": "2"
},
{
"option": "3"
},
{
"option": "4"
},
{
"option": "5"
}
]
},
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Product Service",
"requiredField": true
}
]
},
"formDescription": "Please Let us know about your concerns"
},
"typeVersion": 2.2
},
{
"id": "dc7bd1ea-c3d3-48b5-8294-24fcfe958947",
"name": "🧠 OpenAI 분석",
"type": "@n8n/n8n-nodes-langchain.openAi",
"notes": "AI ANALYSIS: Uses OpenAI GPT-4 to analyze sentiment, categorize feedback, and determine required actions. Adjust temperature for more/less creative responses.",
"position": [
-1460,
-40
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {
"temperature": 0.3
},
"messages": {
"values": [
{
"role": "system",
"content": "You are an expert customer feedback analyzer. Analyze the provided customer review and return a JSON response with the following structure:\n\n{\n \"sentiment\": \"positive/negative/neutral\",\n \"sentiment_score\": 0.85,\n \"category\": \"product/service/support/delivery/pricing\",\n \"priority\": \"high/medium/low\",\n \"department\": \"customer_support/product_team/marketing/sales\",\n \"action_required\": true/false,\n \"key_insights\": [\"insight1\", \"insight2\"],\n \"suggested_response_tone\": \"apologetic/grateful/informative\",\n \"keywords\": [\"keyword1\", \"keyword2\"],\n \"summary\": \"Brief summary of the review\"\n}\n\nBe accurate and consistent in your analysis."
},
{
"content": "=Please analyze this customer review:\n\nReview: {{ $json.review_text }}\nCustomer: {{ $json.customer_name }}\nRating: {{ $json.rating }}/5\nProduct/Service: {{ $json.product_service }}"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "c8cbK7g7bUw6Ifjy",
"name": "OpenAi account 8"
}
},
"typeVersion": 1
},
{
"id": "c41226f7-9ccc-4852-bccd-b64f7e09aff5",
"name": "🧮 데이터 처리",
"type": "n8n-nodes-base.code",
"notes": "DATA PROCESSING: Parses AI response, prepares task data, and sets routing flags. Modify the create_*_task flags to enable/disable integrations.",
"position": [
-1084,
-40
],
"parameters": {
"jsCode": "const aiInput = $input.first().json;\n\n// Extract original form data (passed through from previous nodes)\nconst formData = {\n review_text: $('🧪 Code').first().json.review_text,\n customer_name: $('🧪 Code').first().json.customer_name,\n rating: $('🧪 Code').first().json.rating,\n product_service: $('🧪 Code').first().json.product_service,\n review_date: new Date().toISOString()\n};\n\n// Parse AI response - it should be a JSON string\nlet aiResponse = {};\ntry {\n if (typeof aiInput.response === 'string') {\n aiResponse = JSON.parse(aiInput.response);\n } else if (aiInput.response && typeof aiInput.response === 'object') {\n aiResponse = aiInput.response;\n } else {\n aiResponse = aiInput;\n }\n} catch (error) {\n console.error('Failed to parse AI response:', error);\n aiResponse = {\n sentiment: 'neutral',\n sentiment_score: 0.5,\n category: 'unspecified',\n priority: 'medium',\n department: 'customer_support',\n action_required: true,\n key_insights: ['Failed to analyze review'],\n suggested_response_tone: 'informative',\n keywords: [],\n summary: 'Analysis failed'\n };\n}\n\n// Safety fallback\nconst sentiment = aiResponse.sentiment ?? 'neutral';\n\n// Construct final processed output (data only)\nconst processedData = {\n // Original data\n review_text: formData.review_text,\n customer_name: formData.customer_name,\n rating: formData.rating,\n product_service: formData.product_service,\n review_date: formData.review_date,\n\n // Enriched data\n sentiment,\n sentiment_score: aiResponse.sentiment_score ?? 0.5,\n category: aiResponse.category ?? 'unspecified',\n priority: aiResponse.priority ?? 'medium',\n department: aiResponse.department ?? 'customer_support',\n action_required: aiResponse.action_required ?? true,\n key_insights: aiResponse.key_insights ?? [],\n suggested_response_tone: aiResponse.suggested_response_tone ?? 'informative',\n keywords: aiResponse.keywords ?? [],\n summary: aiResponse.summary ?? '',\n\n // Computed metadata\n task_title: `Review Response: ${sentiment.toUpperCase()} - ${formData.customer_name}`,\n task_description: `Customer Review Analysis\n\nCustomer: ${formData.customer_name}\nRating: ${formData.rating}/5\nSentiment: ${sentiment} (${aiResponse.sentiment_score ?? 'N/A'})\nCategory: ${aiResponse.category ?? 'unspecified'}\nPriority: ${aiResponse.priority ?? 'medium'}\n\nReview: \"${formData.review_text}\"\n\nKey Insights:\n${(aiResponse.key_insights ?? []).map(i => `• ${i}`).join('\\n')}\n\nSuggested Response Tone: ${aiResponse.suggested_response_tone ?? 'informative'}\n\nKeywords: ${(aiResponse.keywords ?? []).join(', ')}`,\n\n // Due date logic\n due_date:\n (aiResponse.priority ?? 'medium') === 'high'\n ? new Date(Date.now() + 1 * 24 * 60 * 60 * 1000).toISOString()\n : (aiResponse.priority ?? 'medium') === 'medium'\n ? new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString()\n : new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString()\n};\n\nreturn processedData;"
},
"typeVersion": 2
},
{
"id": "cadef244-c319-4166-936a-6fb2943bdb75",
"name": "🕵️♂️ AI 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-864,
-40
],
"parameters": {
"text": "=Create a structured task using the following customer review analysis. The output must be in valid JSON format and contain fields that are friendly for Monday.com, HubSpot, and ClickUp.\n\nRequirements:\nOutput only a JSON object.\n\nUse a clear, professional tone.\n\nEnsure the task is actionable, with proper metadata, title, description, and priority.\n\nInclude customer insights, sentiment analysis, and due date.\n\nUser Provided Data:\n{\n \"review_text\": \"{{ $json.review_text }}\",\n \"customer_name\": \"{{ $json.customer_name }}\",\n \"rating\": \"{{ $json.rating }}\",\n \"product_service\": \"{{ $json.product_service }}\",\n \"review_date\": \"{{ $json.review_date }}\",\n \"sentiment\": \"{{ $json.sentiment }}\",\n \"sentiment_score\": {{ $json.sentiment_score }},\n \"category\": \"{{ $json.category }}\",\n \"priority\": \"{{ $json.priority }}\",\n \"department\": \"{{ $json.department }}\",\n \"action_required\": {{ $json.action_required }},\n \"due_date\": \"{{ $json.due_date }}\",\n \"task_title\": \"{{ $json.task_title }}\",\n \"task_description\": `{{ $json.task_description }}`\n}\n\nOutput format (example structure):\n\n{\n \"title\": \"Review Response: POSITIVE - John Doe\",\n \"description\": \"Clear, professional task description with insights and action items.\",\n \"priority\": \"High\",\n \"due_date\": \"2025-08-08\",\n \"metadata\": {\n \"customer_name\": \"John Doe\",\n \"rating\": 5,\n \"product_service\": \"Product X\",\n \"review_date\": \"2025-08-05\",\n \"sentiment\": \"positive\",\n \"sentiment_score\": 0.95,\n \"category\": \"delivery\",\n \"department\": \"customer_support\",\n \"action_required\": true\n }\n}\n\nMake sure:\n\nThe order is exactly maintained as above.\n\nNo additional fields are included.\n\nNo surrounding commentary or formatting is added.\n\nReturn the result as a pure JSON object (no markdown, no explanations, no code block formatting like ```json).\n\nOutput is only the JSON object.",
"options": {},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "c35348dd-0830-465a-ac90-d65cebb7de98",
"name": "💬 OpenAI 챗 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-776,
180
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "c8cbK7g7bUw6Ifjy",
"name": "OpenAi account 8"
}
},
"typeVersion": 1.2
},
{
"id": "93e07162-0348-49f4-88bc-73aab6d34584",
"name": "🗓️ Monday.com 아이템 생성",
"type": "n8n-nodes-base.mondayCom",
"notes": "MONDAY.COM INTEGRATION: Creates item in Monday.com board. Update BOARD_ID and column IDs to match your board structure.",
"position": [
-488,
-240
],
"parameters": {
"name": "=Feedback",
"boardId": "2054150933",
"groupId": "group_mktjh98q",
"resource": "boardItem",
"additionalFields": {
"columnValues": "={{ $json.output }}"
}
},
"credentials": {
"mondayComApi": {
"id": "phJg8XbofdmenpXl",
"name": "Monday.com account - (Dev)"
}
},
"typeVersion": 1
},
{
"id": "e934b992-6063-4178-a3e3-71e78bc087fa",
"name": "✅ ClickUp 작업 생성",
"type": "n8n-nodes-base.clickUp",
"notes": "CLICKUP INTEGRATION: Creates task in ClickUp with priority mapping and keyword tagging. Update LIST_ID with your ClickUp list.",
"position": [
-488,
-40
],
"parameters": {
"list": "901610042700",
"name": "=Feedback",
"team": "90161084725",
"space": "90164686646",
"folder": "90166023626",
"authentication": "oAuth2",
"additionalFields": {
"customFieldsJson": "={{ $json.output }}"
}
},
"credentials": {
"clickUpOAuth2Api": {
"id": "oWjc2WsgQYtkq2Aq",
"name": "ClickUp account - (DEV)"
}
},
"typeVersion": 1
},
{
"id": "386f2bf4-948e-4032-b4f4-2ea46a30d401",
"name": "📌 HubSpot 작업 생성",
"type": "n8n-nodes-base.hubspot",
"notes": "HUBSPOT INTEGRATION: Creates task in HubSpot CRM with priority mapping and due date. Requires HubSpot API key in credentials.",
"position": [
-488,
160
],
"parameters": {
"type": "task",
"metadata": {
"body": "={{ $json.output }}"
},
"resource": "engagement",
"authentication": "appToken",
"additionalFields": {}
},
"credentials": {
"hubspotAppToken": {
"id": "ZfQVFpoeed975usK",
"name": "HubSpot account - (Dev)"
}
},
"typeVersion": 2
},
{
"id": "4e46e5a1-e1ab-40c6-bbe4-67e6f072b3d4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1940,
-360
],
"parameters": {
"width": 440,
"height": 700,
"content": "## Nodes Covered: On form submission, Code\n\n📝 Note:\n\nFORM CAPTURE & PRE-PROCESSING\n\n*Captures user feedback via a dynamic form and extracts the input fields (Name, Message, Rating, and Product Service). Passes clean, structured data to the AI for further analysis. This is the entry point for customer sentiment workflows.*"
},
"typeVersion": 1
},
{
"id": "f60c29cf-8f8d-4451-aa75-846a01a8ec7d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1480,
-360
],
"parameters": {
"color": 5,
"width": 540,
"height": 700,
"content": "## Nodes Covered: OpenAI Analysis, Data Processing\n\n🧠 Note:\n\nAI-DRIVEN FEEDBACK INTELLIGENCE\n\n*Uses GPT-4 to analyze the customer review for sentiment, category, department, priority, and more. Then formats this output with due dates, task descriptions, and metadata. Ensures consistency and fallback handling for failed AI responses.*"
},
"typeVersion": 1
},
{
"id": "7ab41f5f-ca38-4fcc-aa8d-e14844dc7c71",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-920,
-360
],
"parameters": {
"color": 3,
"width": 340,
"height": 700,
"content": "## Nodes Covered: AI Agent, OpenAI Chat Model\n\n📊 Note:\n\nSTRUCTURED OUTPUT FOR TASK SYSTEMS\n\n*Transforms enriched AI response into a clean, JSON-only object ready to be pushed into Monday.com, ClickUp, and HubSpot. Maintains strict field order, tone, and formatting. Acts as a bridge between data processing and task integrations.*"
},
"typeVersion": 1
},
{
"id": "3ec93f97-6d95-42fa-b4fc-242d31827a63",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-540
],
"parameters": {
"color": 4,
"width": 440,
"height": 880,
"content": "## Nodes Covered: Create Monday.com Item, Create ClickUp Task, Create HubSpot Task\n\n📬 Note:\n\nMULTI-PLATFORM TASK CREATION\n\n*Automatically sends analyzed feedback to Monday.com, ClickUp, and HubSpot with consistent metadata, due dates, and formatting. Integrations are toggleable as needed.*"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "da2bc46c-abcc-4537-bd0c-ea048e7e42e3",
"connections": {
"ab9f0698-cf91-4bde-bae9-f7b4f0beeea7": {
"main": [
[
{
"node": "dc7bd1ea-c3d3-48b5-8294-24fcfe958947",
"type": "main",
"index": 0
}
]
]
},
"dc7bd1ea-c3d3-48b5-8294-24fcfe958947": {
"main": [
[
{
"node": "c41226f7-9ccc-4852-bccd-b64f7e09aff5",
"type": "main",
"index": 0
}
]
]
},
"c41226f7-9ccc-4852-bccd-b64f7e09aff5": {
"main": [
[
{
"node": "cadef244-c319-4166-936a-6fb2943bdb75",
"type": "main",
"index": 0
}
]
]
},
"c35348dd-0830-465a-ac90-d65cebb7de98": {
"ai_languageModel": [
[
{
"node": "cadef244-c319-4166-936a-6fb2943bdb75",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"e934b992-6063-4178-a3e3-71e78bc087fa": {
"main": [
[]
]
},
"35d329e3-d4fb-4c54-a8e4-b4525f02789d": {
"main": [
[
{
"node": "ab9f0698-cf91-4bde-bae9-f7b4f0beeea7",
"type": "main",
"index": 0
}
]
]
},
"386f2bf4-948e-4032-b4f4-2ea46a30d401": {
"main": [
[]
]
},
"cadef244-c319-4166-936a-6fb2943bdb75": {
"main": [
[
{
"node": "93e07162-0348-49f4-88bc-73aab6d34584",
"type": "main",
"index": 0
},
{
"node": "e934b992-6063-4178-a3e3-71e78bc087fa",
"type": "main",
"index": 0
},
{
"node": "386f2bf4-948e-4032-b4f4-2ea46a30d401",
"type": "main",
"index": 0
}
]
]
},
"93e07162-0348-49f4-88bc-73aab6d34584": {
"main": [
[]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - AI 요약, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Avkash Kakdiya
@itechnotion🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders. 💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers. 🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools. 📬 Let’s automate what slows you down.
이 워크플로우 공유