🎧 CS Auto-Responder
고객사용 CS 자동응답 스킬. 멀티채널 고객 문의를 수신하고, FAQ 기반 자동 응답, 에스컬레이션, 일일 요약을 제공합니다.
핵심 기능
- 멀티채널 수신 — 카카오톡 알림톡, 인스타 DM, 이메일 등에서 고객 문의 감지
- FAQ 매칭 — 고객사별 FAQ DB (JSON)에서 의미 기반 매칭 → 자동 답변
- 에스컬레이션 — 복잡한 문의 / 불만 감지 시 사장님한테 Discord/카톡 알림
- 응답 톤 커스텀 — 고객사 브랜드 톤에 맞춘 답변 생성
- 로그 기록 — 모든 CS 대화 로그 저장 (일별)
- 대시보드 요약 — 일일 CS 요약 (총 문의수, 자동처리율, 에스컬레이션 건수)
초기 설정
1. 고객사 설정 파일 생성
cd {baseDir}
cp config/template.json config/고객사명.json
config/고객사명.json 편집:
clientId: 고유 IDname: 고객사 이름channels: 연동할 채널 (kakao, instagram, email)tone: 응답 톤 (formal, friendly, casual)escalationTarget: Discord 채널 ID 또는 카톡 번호faqPath: FAQ DB 파일 경로
2. FAQ DB 생성
cp config/faq-template.json config/고객사명-faq.json
FAQ 항목 추가 (JSON 배열):
[
{
"id": "faq001",
"question": "영업시간이 어떻게 되나요?",
"keywords": ["영업시간", "몇시", "언제", "운영"],
"answer": "저희는 평일 10:00-22:00, 주말 12:00-20:00 영업합니다.",
"category": "운영정보"
}
]
사용법
채널 모니터링 시작
node {baseDir}/scripts/monitor.js --config config/고객사명.json
백그라운드 실행 (pm2 권장):
pm2 start {baseDir}/scripts/monitor.js --name cs-mufi -- --config config/고객사명.json
pm2 logs cs-mufi
수동 응답 테스트
node {baseDir}/scripts/respond.js \
--config config/고객사명.json \
--channel instagram \
--user "iam.dawn.kim" \
--message "영업시간 알려주세요"
일일 대시보드 요약
node {baseDir}/scripts/dashboard.js --config config/고객사명.json --date 2026-02-18
출력 예시:
📊 CS 대시보드 - MUFI 포토부스 (2026-02-18)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
총 문의수: 47건
자동 처리: 38건 (80.9%)
에스컬레이션: 9건 (19.1%)
카테고리별:
• 운영정보: 18건
• 가격/예약: 15건
• 기술문제: 9건
• 불만/환불: 5건
채널별:
• Instagram DM: 28건
• 카카오톡: 13건
• 이메일: 6건
평균 응답시간: 3.2초
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
에스컬레이션 수동 발송
node {baseDir}/scripts/escalate.js \
--config config/고객사명.json \
--channel instagram \
--user "angry_customer" \
--message "환불 요청합니다" \
--reason "환불 요청"
디렉토리 구조
cs-autoresponder/
├── SKILL.md
├── scripts/
│ ├── monitor.js # 채널 모니터링 메인 루프
│ ├── respond.js # FAQ 매칭 & 자동 응답
│ ├── escalate.js # 에스컬레이션 알림
│ └── dashboard.js # 일일 요약 대시보드
├── lib/
│ ├── channels.js # 채널 어댑터 (mock API)
│ ├── matcher.js # 의미 기반 FAQ 매칭
│ └── logger.js # 대화 로그 기록
├── config/
│ ├── template.json # 고객사 설정 템플릿
│ └── faq-template.json # FAQ DB 템플릿
└── logs/
└── YYYY-MM-DD/ # 일별 대화 로그 (clientId별)
채널 어댑터 (Mock)
현재는 mock API로 동작. Production 연동 시 lib/channels.js 수정:
- 카카오톡: Kakao Alimtalk API
- Instagram:
tools/insta-cli/v2.js활용 - 이메일: himalaya 또는 Gmail API
의미 기반 매칭 로직
lib/matcher.js는 간단한 키워드 매칭을 사용:
- 고객 문의를 소문자로 변환
- FAQ 키워드와 비교 (부분 일치)
- 매칭 점수 계산 (여러 키워드 매칭 시 가중치 증가)
- 임계값(0.6) 이상이면 자동 응답, 미만이면 에스컬레이션
Production 시 OpenAI Embeddings 또는 Claude 활용 권장.
에스컬레이션 조건
다음 조건 중 하나라도 해당하면 에스컬레이션:
- FAQ 매칭 점수 < 0.6
- 부정 키워드 감지 (환불, 불만, 화남, 실망, 최악)
- 고객이 "담당자", "사람", "사장님" 요청
- 연속 3회 이상 동일 고객 문의
로그 형식
logs/YYYY-MM-DD/{clientId}.jsonl:
{"timestamp":"2026-02-18T12:34:56.789Z","channel":"instagram","user":"iam.dawn.kim","message":"영업시간?","response":"평일 10-22시 영업합니다","faqId":"faq001","score":0.85,"escalated":false}
{"timestamp":"2026-02-18T12:40:11.123Z","channel":"kakao","user":"010-1234-5678","message":"환불하고 싶어요","response":null,"faqId":null,"score":0.0,"escalated":true,"reason":"환불 키워드"}
주의사항
- 톤 일관성: 고객사별 톤 설정을 준수하세요
- 개인정보: 로그에 민감한 정보(주민번호, 카드번호) 저장 금지
- 응답 속도: FAQ 매칭은 3초 이내 응답 목표
- 에스컬레이션 피로: 너무 많은 에스컬레이션은 피로감 유발 → FAQ 지속 보강
확장 가능성
- OpenAI Embeddings 기반 의미 매칭
- 대화 컨텍스트 유지 (세션 관리)
- A/B 테스트 (응답 톤 실험)
- 멀티턴 대화 지원
- 자동 FAQ 학습 (고빈도 질문 감지)
- 고객 만족도 설문 (응답 후 별점)
Note: 이 스킬은 mock API로 제작되었습니다. Production 환경에서는 실제 채널 API 연동이 필요합니다.