GPT、Gmail、Slack、そして分析ダッシュボードを使用した自動サポート診断

上級

これはTicket Management, AI Summarization分野の自動化ワークフローで、21個のノードを含みます。主にCode, Slack, OpenAi, Switch, Airtableなどのノードを使用。 GPT、Gmail、Slackと分析ダッシュボードで顧客サポートを自動トリAGE

前提条件
  • Slack Bot Token または Webhook URL
  • OpenAI API Key
  • Airtable API Key
  • Googleアカウント + Gmail API認証情報
  • Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "db30e8ae4100235addbd4638770997b7ef11878d049073c888ba440ca84c55fc"
  },
  "nodes": [
    {
      "id": "fd8ec780-8941-4736-88e7-cbc148f1deb7",
      "name": "サポートメールの監視",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -1008,
        112
      ],
      "parameters": {
        "filters": {
          "sender": "",
          "labelIds": [
            "INBOX"
          ],
          "readStatus": "unread"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ff2c6f81-1137-4ef5-b96d-69f08c538d9d",
      "name": "AI分析エンジン",
      "type": "n8n-nodes-base.openAi",
      "position": [
        -752,
        112
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "role": "system",
              "content": "You are an expert customer support analyst. Analyze the email and provide: 1) Sentiment (Positive/Neutral/Negative/Critical), 2) Urgency Level (Low/Medium/High/Critical), 3) Category (Technical/Billing/Feature Request/Bug Report/General Inquiry), 4) Key Issues (bullet points), 5) Suggested Response (professional and empathetic). Return as JSON."
            },
            {
              "content": "Email Subject: {{ $json.subject }}\n\nEmail Body: {{ $json.body }}\n\nFrom: {{ $json.from }}"
            }
          ]
        },
        "options": {
          "maxTokens": 1000,
          "temperature": 0.3
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "8b706330-4e9f-40f6-b4f8-02fe2988eed4",
      "name": "データのパースとエンリッチメント",
      "type": "n8n-nodes-base.code",
      "position": [
        -496,
        112
      ],
      "parameters": {
        "jsCode": "const aiResponse = JSON.parse($input.first().json.choices[0].message.content);\nconst emailData = $('Monitor Support Emails').first().json;\n\nreturn {\n  json: {\n    timestamp: new Date().toISOString(),\n    customer_email: emailData.from,\n    customer_name: emailData.from.split('<')[0].trim(),\n    subject: emailData.subject,\n    body: emailData.body,\n    email_id: emailData.id,\n    thread_id: emailData.threadId,\n    \n    // AI Analysis Results\n    sentiment: aiResponse.sentiment,\n    urgency: aiResponse.urgency_level,\n    category: aiResponse.category,\n    key_issues: aiResponse.key_issues,\n    suggested_response: aiResponse.suggested_response,\n    \n    // Scoring\n    priority_score: calculatePriority(aiResponse.urgency_level, aiResponse.sentiment),\n    requires_immediate_attention: aiResponse.urgency_level === 'Critical' || aiResponse.sentiment === 'Critical'\n  }\n};\n\nfunction calculatePriority(urgency, sentiment) {\n  const urgencyScores = { 'Low': 1, 'Medium': 2, 'High': 3, 'Critical': 4 };\n  const sentimentScores = { 'Positive': 0, 'Neutral': 1, 'Negative': 2, 'Critical': 3 };\n  return (urgencyScores[urgency] || 2) * 25 + (sentimentScores[sentiment] || 1) * 10;\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f",
      "name": "緊急度によるルーティング",
      "type": "n8n-nodes-base.switch",
      "position": [
        -256,
        112
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "",
                    "rightValue": ""
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "93c91813-4e80-4d68-9481-ae3ec127f519",
      "name": "重要課題のアラート",
      "type": "n8n-nodes-base.slack",
      "position": [
        0,
        0
      ],
      "webhookId": "0c0c977b-f166-40b6-87bd-232356728544",
      "parameters": {
        "text": "🚨 *CRITICAL CUSTOMER ISSUE DETECTED*\n\n*Customer:* {{ $json.customer_name }} ({{ $json.customer_email }})\n*Subject:* {{ $json.subject }}\n*Sentiment:* {{ $json.sentiment }} | *Urgency:* {{ $json.urgency }}\n*Category:* {{ $json.category }}\n*Priority Score:* {{ $json.priority_score }}/110\n\n*Key Issues:*\n{{ $json.key_issues }}\n\n*Suggested Response:*\n```\n{{ $json.suggested_response }}\n```\n\n*Action Required:* Respond within 30 minutes\n*Email ID:* {{ $json.email_id }}",
        "otherOptions": {
          "mrkdwn": true
        },
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "9e35f1a2-7e66-4798-bbe9-fd843fd4d67e",
      "name": "通常チケットの記録",
      "type": "n8n-nodes-base.slack",
      "position": [
        0,
        208
      ],
      "webhookId": "8e6c2a7d-d35a-4ba3-bf96-7b6c33a5d8a4",
      "parameters": {
        "text": "📧 *New Support Ticket*\n\n*Customer:* {{ $json.customer_name }}\n*Category:* {{ $json.category }} | *Priority:* {{ $json.priority_score }}\n*Sentiment:* {{ $json.sentiment }}\n\n*Subject:* {{ $json.subject }}",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
      "name": "Airtableデータベースへ記録",
      "type": "n8n-nodes-base.airtable",
      "position": [
        256,
        112
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "appXXXXXXXXXXXXXX"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "tblSupportTickets"
        },
        "columns": {
          "value": {
            "Status": "Open",
            "Subject": "={{ $json.subject }}",
            "Urgency": "={{ $json.urgency }}",
            "Category": "={{ $json.category }}",
            "Email_ID": "={{ $json.email_id }}",
            "Sentiment": "={{ $json.sentiment }}",
            "Thread_ID": "={{ $json.thread_id }}",
            "Timestamp": "={{ $json.timestamp }}",
            "Email_Body": "={{ $json.body }}",
            "Key_Issues": "={{ $json.key_issues }}",
            "Customer_Name": "={{ $json.customer_name }}",
            "Customer_Email": "={{ $json.customer_email }}",
            "Priority_Score": "={{ $json.priority_score }}",
            "Suggested_Response": "={{ $json.suggested_response }}",
            "Requires_Immediate_Attention": "={{ $json.requires_immediate_attention }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "create"
      },
      "typeVersion": 2.1
    },
    {
      "id": "39e8213d-f382-4778-9d13-8036b2e52696",
      "name": "分析ダッシュボードの更新",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        512,
        112
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json.timestamp.split('T')[0] }}",
            "Time": "={{ $json.timestamp.split('T')[1].split('.')[0] }}",
            "Email": "={{ $json.customer_email }}",
            "Status": "Open",
            "Subject": "={{ $json.subject }}",
            "Urgency": "={{ $json.urgency }}",
            "Category": "={{ $json.category }}",
            "Critical": "={{ $json.requires_immediate_attention }}",
            "Customer": "={{ $json.customer_name }}",
            "Priority": "={{ $json.priority_score }}",
            "Sentiment": "={{ $json.sentiment }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "970abf02-9fac-4109-8fc2-909f333d3224",
      "name": "インサイトの生成",
      "type": "n8n-nodes-base.openAi",
      "position": [
        752,
        112
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "role": "system",
              "content": "Based on the analysis, generate 3 data insights: 1) Trend identification, 2) Risk assessment, 3) Actionable recommendation for the support team."
            },
            {
              "content": "Ticket Data:\nSentiment: {{ $json.sentiment }}\nCategory: {{ $json.category }}\nUrgency: {{ $json.urgency }}\nIssues: {{ $json.key_issues }}\n\nProvide insights in JSON format with keys: trend, risk, recommendation"
            }
          ]
        },
        "options": {
          "maxTokens": 500,
          "temperature": 0.5
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "ab329b35-05bb-42ec-bfe1-9f8ba4ec6772",
      "name": "AIインサイトの保存",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1008,
        112
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "appXXXXXXXXXXXXXX"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "tblInsights"
        },
        "columns": {
          "value": {
            "Record_ID": "={{ $('Log to Airtable Database').item.json.id }}",
            "AI_Insights": "={{ JSON.parse($json.choices[0].message.content) }}",
            "Generated_At": "={{ new Date().toISOString() }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "update"
      },
      "typeVersion": 2.1
    },
    {
      "id": "02b48c6d-c266-4f92-913d-c76367bb5d96",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Watches Gmail inbox for new unread emails\n"
      },
      "typeVersion": 1
    },
    {
      "id": "98d2e12e-be2a-440b-baf5-8cd6120e4271",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Analyzes sentiment, urgency, and categorizes support requests\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4310037a-a46e-43f0-bd9d-d32af017d9b8",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Structures AI output and calculates priority scores\n"
      },
      "typeVersion": 1
    },
    {
      "id": "81b8f33b-303c-4cf1-905d-6065d3a5b026",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Routes tickets based on urgency classification level\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b7f1ae71-fe6d-4f64-8193-e36ae264af13",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Sends immediate Slack alerts for critical tickets\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d30db0f5-e392-4114-93b8-674bee6121ec",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        368
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Posts standard priority tickets to Slack channel\n"
      },
      "typeVersion": 1
    },
    {
      "id": "393db2f6-ee8c-4f45-96c0-645c5c530619",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Stores complete ticket data in Airtable base\n"
      },
      "typeVersion": 1
    },
    {
      "id": "279d3e6a-e014-4c23-8ccb-d635b25c0fb3",
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Logs ticket metrics to Google Sheets dashboard\n"
      },
      "typeVersion": 1
    },
    {
      "id": "08bb68e3-a7ad-42fa-aea7-5abc319e2b27",
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Creates AI-powered trends and risk assessments daily\n"
      },
      "typeVersion": 1
    },
    {
      "id": "acc25615-d10a-4d12-b1cb-4ecb28c972da",
      "name": "付箋9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Saves generated insights back to Airtable records\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9ca1492d-826d-45ca-880d-35210ed527c9",
      "name": "付箋10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1568,
        -112
      ],
      "parameters": {
        "width": 464,
        "height": 528,
        "content": "# Workflow Description\n\nAI-powered customer support automation that monitors Gmail, analyzes email sentiment and urgency, routes critical issues to Slack, logs all tickets to Airtable and Google Sheets, then generates actionable insights. \n\nPrioritizes responses, tracks metrics, and improves support team efficiency through intelligent triage.\n\n---\n\n**Created by Daniel Shashko**  \nhttps://www.linkedin.com/in/daniel-shashko/"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f": {
      "main": [
        [
          {
            "node": "93c91813-4e80-4d68-9481-ae3ec127f519",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "970abf02-9fac-4109-8fc2-909f333d3224": {
      "main": [
        [
          {
            "node": "ab329b35-05bb-42ec-bfe1-9f8ba4ec6772",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ff2c6f81-1137-4ef5-b96d-69f08c538d9d": {
      "main": [
        [
          {
            "node": "8b706330-4e9f-40f6-b4f8-02fe2988eed4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9e35f1a2-7e66-4798-bbe9-fd843fd4d67e": {
      "main": [
        [
          {
            "node": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8b706330-4e9f-40f6-b4f8-02fe2988eed4": {
      "main": [
        [
          {
            "node": "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "93c91813-4e80-4d68-9481-ae3ec127f519": {
      "main": [
        [
          {
            "node": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd8ec780-8941-4736-88e7-cbc148f1deb7": {
      "main": [
        [
          {
            "node": "ff2c6f81-1137-4ef5-b96d-69f08c538d9d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "50556621-9a8c-4a12-8c6b-78fd614a2e37": {
      "main": [
        [
          {
            "node": "39e8213d-f382-4778-9d13-8036b2e52696",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "39e8213d-f382-4778-9d13-8036b2e52696": {
      "main": [
        [
          {
            "node": "970abf02-9fac-4109-8fc2-909f333d3224",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - チケット管理, AI要約

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数21
カテゴリー2
ノードタイプ8
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Daniel Shashko

Daniel Shashko

@tomax

AI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34