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 클릭
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"
}