발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE 048

채팅 문의 유형 자동 분류 & 통계

  • ▸상품 기본 정보(이름/스펙/특징)를 입력받아 OpenAI로 설명서를 자동 생성할 수 있다
  • ▸채널별(쇼핑몰/SNS/카탈로그)로 다른 포맷의 설명을 동시에 생성할 수 있다
  • ▸생성된 설명서를 Google Sheets에 정리해 팀과 공유할 수 있다

✅사전 준비

  • □OpenAI API 자격증명 연결 완료
  • □Google Sheets에 상품 기본 정보 시트 준비 (상품명/카테고리/주요기능/타겟고객 컬럼)
  • □출력 시트 생성 (상품명/쇼핑몰설명/SNS설명/카탈로그설명 컬럼)

채널별 설명 생성 요청 분기 — Code 노드

const product = $input.first().json;
const channels = [
  { type: 'shopping', instruction: '쇼핑몰 상세페이지용. SEO 최적화, 300자 이내, 구매 욕구를 자극하는 카피' },
  { type: 'sns',      instruction: 'SNS 캡션용. 감성적이고 트렌디하게, 150자 이내, 이모지 포함, 해시태그 5개' },
  { type: 'catalog',  instruction: '카탈로그용. 전문적이고 상세하게, 스펙 중심, 500자 이내' },
];

return channels.map(ch => ({
  json: { ...product, channelType: ch.type, instruction: ch.instruction }
}));

설명서 생성 — OpenAI 프롬프트

Model: gpt-4o-mini

Prompt:
상품명: {{ $json.상품명 }}
카테고리: {{ $json.카테고리 }}
주요 기능: {{ $json.주요기능 }}
타겟 고객: {{ $json.타겟고객 }}

위 정보로 {{ $json.instruction }} 형식의 설명을 작성해줘.

결과 Sheets 저장 매핑

상품명:       {{ $json.상품명 }}
채널유형:     {{ $json.channelType }}
생성된설명:   {{ $json.message.content }}
생성일시:     {{ $now.toFormat('yyyy-MM-dd HH:mm') }}
💡 TIP같은 상품이라도 채널별로 전혀 다른 톤이 필요합니다. System 프롬프트에 브랜드 보이스(예: '우리 브랜드는 젊고 활기찬 톤')를 추가하면 일관성이 높아집니다.
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe048",
  "title": "채팅 문의 유형 자동 분류 & 통계",
  "chapter": 4,
  "category": "고객 응대 자동화",
  "difficulty": "⭐⭐",
  "estimatedTime": "35분",
  "usedApps": [
    "채널톡 API",
    "OpenAI",
    "Google Sheets"
  ],
  "description": "매일 종료된 채팅 내역을 채널톡 API로 수집하고 OpenAI로 유형별(배송·결제·제품 문의·불만 등)로 분류한 후 Google Sheets에 날짜별·유형별 건수를 누적 기록합니다.",
  "nodes": [
    {
      "id": "trigger_schedule",
      "type": "trigger",
      "service": "Schedule",
      "name": "매일 오후 11시 실행",
      "config": {
        "interval": "daily",
        "time": "23:00"
      }
    },
    {
      "id": "get_chats",
      "type": "action",
      "service": "HTTP Request",
      "name": "종료 채팅 내역 수집",
      "config": {
        "method": "GET",
        "url": "https://api.channel.io/open/v5/conversations",
        "headers": {
          "x-access-key": "{{$env.CHANNELTALK_ACCESS_KEY}}",
          "x-access-secret": "{{$env.CHANNELTALK_ACCESS_SECRET}}"
        },
        "queryParams": {
          "state": "closed",
          "since": "{{$now.startOf('day').toISO()}}",
          "until": "{{$now.endOf('day').toISO()}}",
          "limit": 100
        }
      }
    },
    {
      "id": "loop_chats",
      "type": "action",
      "service": "SplitInBatches",
      "name": "채팅별 반복",
      "config": {
        "batchSize": 1
      }
    },
    {
      "id": "classify_type",
      "type": "action",
      "service": "OpenAI",
      "name": "문의 유형 분류",
      "config": {
        "operation": "chat",
        "model": "gpt-4o-mini",
        "messages": [
          {
            "role": "system",
            "content": "고객 채팅 문의를 분류합니다. 반드시 다음 중 하나만 답하세요: 배송문의 / 결제문의 / 제품문의 / 불만접수 / 교환반품 / 기타"
          },
          {
            "role": "user",
            "content": "다음 채팅 내용의 유형을 분류하세요:\n\n{{$json['messages'].map(m => m.content).join('\n')}}"
          }
        ]
      }
    },
    {
      "id": "record_stats",
      "type": "action",
      "service": "Google Sheets",
      "name": "유형별 통계 기록",
      "config": {
        "operation": "appendRow",
        "spreadsheetId": "{{$env.CS_STATS_SHEET_ID}}",
        "sheetName": "채팅분류",
        "row": {
          "날짜": "{{$now.format('YYYY-MM-DD')}}",
          "채팅ID": "{{$node['loop_chats'].json['id']}}",
          "문의유형": "{{$json['choices'][0]['message']['content'].trim()}}",
          "처리시간(분)": "{{$node['loop_chats'].json['durationMinutes']}}",
          "담당상담원": "{{$node['loop_chats'].json['assigneeName']}}"
        }
      }
    }
  ],
  "edges": [
    {
      "from": "trigger_schedule",
      "to": "get_chats"
    },
    {
      "from": "get_chats",
      "to": "loop_chats"
    },
    {
      "from": "loop_chats",
      "to": "classify_type"
    },
    {
      "from": "classify_type",
      "to": "record_stats"
    }
  ],
  "tips": [
    "채널톡 API 키는 channel.io 관리자 설정 → 연동 → API에서 발급받을 수 있어요. (부록 B 참고)",
    "Google Sheets에 피벗 테이블을 만들어두면 유형별 월간 추이를 차트로 바로 확인할 수 있어요.",
    "분류 유형은 프롬프트에서 자유롭게 수정할 수 있어요. 업종에 맞게 '설치문의', 'AS요청' 등을 추가해보세요."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe048"
}
← 이전 레시피☰ 목차다음 레시피 →