Claude Code로 만드는 완전 자동화 상담 시스템

1단계: 문제 인식 😰

기존 상담 프로세스의 한계

📞 전화상담 접수
    ↓
✍️ 상담 내용 수기 기록 (10분)
    ↓
📊 엑셀에 정리 (30분)
    ↓
🔍 학생 특성 분석 (20분)
    ↓
✉️ 맞춤 메시지 작성 (15분)
    ↓
📱 문자 발송 (5분)
━━━━━━━━━━━━━━━━━━━━
⏱️ 총 소요시간: 70분/건

💔 Pain Points

문제점

영향

📝 상담 내용 기록 누락

학생 관리 공백 발생

🎯 학생별 맞춤 대응 어려움

중도탈락률 25-30%

😫 반복 작업으로 인한 피로

업무 효율 저하

🌙 야간/주말 상담 대응 불가

기회 손실

💸 상담 데이터 분석 불가

의사결정 어려움


2단계: 솔루션 설계 💡

AI 자동화 아키텍처

┌─────────────────────────────────────────────────────┐
│                  📱 입력 소스                         │
├──────────────────────────┬──────────────────────────┤
│  전화상담 (VITO AI)       │  대면상담 (구글독스)       │
│  • 음성 → 텍스트 자동변환  │  • 음성입력 직접 저장      │
│  • 정확도 95%+            │  • 실시간 확인 가능        │
└──────────────────────────┴──────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│           📊 구글 시트 (데이터 허브)                  │
│  날짜 | 시간 | 전화번호 | 상담내용 | 분석결과 | DB_ID │
│  • Apps Script 10분마다 자동 수집                     │
│  • 중앙집중식 데이터 관리                             │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│           🐍 Python 자동 감시 (10초 주기)            │
│  • 새 행 자동 감지                                   │
│  • 백그라운드 실행                                   │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│           🤖 Claude AI 분석 엔진 (10초)              │
│  ✓ 위험도 평가 (1-10점)                             │
│  ✓ 주요 욕구 파악 (학업/경제/심리/건강/관계)          │
│  ✓ 종교 성향 감지 (확신도: 높음/중간/낮음)            │
│  ✓ 핵심 고민 추출 (3가지)                           │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│           ✍️ 맞춤형 메시지 생성 (5초)                │
│  • 위험도별 톤 자동 조정                             │
│  • 개인화된 격려 메시지                              │
│  • 종교별 맞춤 문구 (확신도 높음만)                   │
│  • 500자 이내 최적화                                │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│           📱 SMS 자동 발송 (알리고 API)              │
│  • 즉시 발송 (건당 15-20원)                         │
│  • 발송 로그 자동 기록                               │
└─────────────────────────────────────────────────────┘

⏱️ 전체 자동화 소요시간: 약 1분 (사람 개입 Zero!)


3단계: 개발 환경 구축 🛠️

Claude Code CLI 활용

설치 (5분)

# Claude Code 설치
npm install -g @anthropic-ai/claude-code

# 프로젝트 시작
claude

첫 번째 명령

💬 "입학상담 자동화 시스템을 만들어줘. 

요구사항:
1. 구글시트에서 상담내용 자동 수집
2. Claude AI로 위험도/욕구/종교 성향 분석
3. 개인화된 메시지 자동 생성
4. SMS 자동 발송
5. 10초마다 자동 감시"

→ Claude Code가 전체 프로젝트 구조 자동 생성!


📁 프로젝트 구조 (자동 생성됨)

E:\자동화\admission_automation\
│
├── 📄 auto_sheets_collector.py    # 메인 자동화 프로그램
├── 📄 vito_integration.py         # VITO 연동 버전
├── 📄 start_auto_sms.bat          # 원클릭 시작
├── 📄 stop_auto_sms.bat           # 원클릭 종료
│
├── 🔐 .env                        # 환경변수 (API 키)
├── 🔑 google-credentials.json     # 구글 인증
│
├── 📂 src/
│   ├── 📂 ai/
│   │   ├── analyzer.py            # AI 상담 분석 엔진
│   │   └── content_generator.py   # 맞춤 메시지 생성기
│   │
│   ├── 📂 clova/
│   │   └── google_sheets_collector.py  # 구글시트 수집
│   │
│   ├── 📂 database/
│   │   ├── models.py              # DB 스키마
│   │   └── crud.py                # DB CRUD 연산
│   │
│   └── 📂 messaging/
│       └── sms_sender.py          # SMS 발송 (알리고)
│
└── 📂 data/
    └── counseling.db              # SQLite 상담 DB

4단계: 구글 시트 연동 📊

구글 시트 구조

A

B

C

D

E

F

G

H

날짜

시간

전화번호

상담내용

위험도

종교

주요고민

DB_ID

2026-02-01

14:30

010-1234-5678

교수: 안녕하세요...<br>학생: 시험이 걱정돼요...

7/10 (높음)

불교

시험불안, 학비부담

1

2026-02-01

15:45

010-9876-5432

...

🔑 핵심 로직:

  • DB_ID비어있는 행 = 미처리 상담

  • Python이 10초마다 확인하여 자동 처리


연동 코드 (Claude Code가 자동 생성)

class GoogleSheetsCollector:
    """구글 시트에서 새 상담 자동 수집"""
    
    def fetch_new_rows(self):
        """DB_ID가 비어있는 행만 수집"""
        all_rows = self.sheet.get_all_records()
        
        for idx, row in enumerate(all_rows, start=2):
            # DB_ID가 비어있으면 미처리
            if not row.get('DB_ID'):
                content = row.get('상담내용', '').strip()
                
                if content:
                    yield {
                        'row_number': idx,
                        'date': row['날짜'],
                        'time': row['시간'],
                        'phone_number': row['전화번호'],
                        'content': content
                    }
    
    def mark_as_processed(self, row_number, db_id):
        """처리 완료 표시 (H열에 DB_ID 기록)"""
        self.sheet.update_cell(row_number, 8, str(db_id))

5단계: AI 분석 엔진 구축 🤖

상담 분석 프롬프트

ANALYSIS_PROMPT = """
당신은 대한간호학원의 입학상담 전문가입니다.
상담 내용을 분석하여 JSON 형식으로 응답하세요.

## 분석 항목

1. 위험도 (risk_score: 1-10)
   - 1-3점: 낮음 (안정적)
   - 4-6점: 중간 (주의 필요)
   - 7-10점: 높음 (즉시 개입 필요)
   
   평가 기준:
   • 경제적 어려움 (학비 부담, 생활비)
   • 학업 스트레스 (시험 걱정, 성적 불안)
   • 포기 의사 ("그만두고 싶다", "힘들다")
   • 가족/건강 문제

2. 주요 욕구 (needs)
   - 학업: 공부, 성적, 자격증
   - 경제: 학비, 생활비, 일자리
   - 심리: 스트레스, 불안, 우울
   - 건강: 질병, 피로
   - 관계: 가족, 친구

3. 주요 고민사항 (concerns)
   - 구체적인 고민 3가지 추출

4. 종교 성향 (religion)
   - type: 불교/기독교/천주교/무교/미확인
   - confidence: 높음/중간/낮음
   - keywords: 감지된 키워드
   
   예시:
   • "절에 가서 기도했어요" → 불교 (높음)
   • "교회 다녀요" → 기독교 (높음)

5. 분석 요약 (summary)
   - 2-3문장으로 핵심 요약

## 상담 내용
{content}

## 응답 형식 (JSON만)
{{"risk_score": 7, "risk_level": "높음", ...}}
"""

분석 결과 예시

입력 (상담 내용):

교수: 안녕하세요, 무엇을 도와드릴까요?
학생: 간호조무사 과정 문의합니다.
학생: 시험 준비가 너무 어렵고 스트레스 많이 받아요.
학생: 학비도 부담되고 절에 가서 기도도 했어요.
학생: 집안 형편 어렵고 포기하고 싶은 마음도 들어요.

출력 (AI 분석):

{
  "risk_score": 8,
  "risk_level": "높음",
  "needs": ["학업", "경제", "심리"],
  "concerns": [
    "시험 준비 어려움",
    "학비 부담",
    "포기하고 싶은 마음"
  ],
  "religion": {
    "type": "불교",
    "confidence": "높음",
    "keywords": ["절", "기도"]
  },
  "summary": "경제적 어려움과 학업 스트레스로 중도탈락 위험이 높습니다. 즉각적인 상담과 지원이 필요합니다."
}

6단계: 맞춤형 메시지 생성 ✍️

위험도별 톤 자동 조정

def get_tone(risk_score):
    """위험도에 따른 메시지 톤 결정"""
    
    if risk_score >= 7:
        return "따뜻하고 적극적인"
        # → 즉각 대응, 구체적 지원 방안 제시
        
    elif risk_score >= 4:
        return "공감하고 격려하는"
        # → 관심 표현, 언제든 상담 가능 안내
        
    else:
        return "밝고 희망적인"
        # → 일반 안내, 긍정적 피드백

메시지 생성 프롬프트

MESSAGE_PROMPT = """
{student_name} 학생에게 보낼 격려 메시지를 작성하세요.

## 학생 분석 결과
- 위험도: {risk_score}/10 ({risk_level})
- 주요 욕구: {needs}
- 고민사항: {concerns}
- 종교: {religion_type} (확신도: {confidence})

## 메시지 작성 지침

1. 톤: {tone} 톤으로 작성
2. 구조:
   • 인사 및 공감 (1-2문장)
   • 구체적 고민에 대한 공감
   • 학원의 지원 방안 언급
   • 종교별 격려 문구 (확신도 "높음"일 때만)
   • 마무리 및 연락 안내
   
3. 제약:
   • 총 500자 이내
   • 이모지 사용 금지
   • 진정성 있는 표현

## 종교별 격려 문구 (확신도 "높음"만)
- 불교: "부처님의 자비로운 가르침처럼, 한 걸음씩 나아가시면 됩니다"
- 기독교: "주님께서 함께하시니 두려워하지 마세요"
- 천주교: "성모님의 사랑으로 힘을 얻으시길 기도합니다"

## 학원 정보
- 학원명: {academy_name}
- 연락처: {academy_phone}
"""

생성된 메시지 예시

위험도 8/10 (높음) + 불교:

김철수 학생, 안녕하세요.
대한간호학원입니다.

시험 준비와 경제적 어려움으로 많이 힘드시죠?
학생의 고민을 진심으로 이해합니다.

지금 겪고 있는 어려움은 혼자만의 것이 아닙니다.
학비 문제는 장학금과 분할납부 방법이 있으니 함께 찾아보겠습니다.
학업도 천천히, 하나씩 해나가면 충분히 따라잡을 수 있습니다.

부처님의 자비로운 가르침처럼, 한 걸음씩 나아가시면 됩니다.

언제든 연락주세요. 함께 이겨내겠습니다!

📞 010-8805-0005
대한간호학원

위험도 4/10 (중간) + 무교:

이영희 학생, 안녕하세요.
대한간호학원입니다.

간호조무사 과정에 관심 가져주셔서 감사합니다.
시험 준비가 걱정되시는군요.

저희 학원에서는 개인별 맞춤 학습 지원을 제공하고 있습니다.
어려운 부분은 보충 수업으로 충분히 보완 가능하니 걱정 마세요.

궁금한 점이 있으시면 언제든 연락주세요!

📞 010-8805-0005
대한간호학원

7단계: SMS 발송 시스템 📱

알리고 API 연동

설정 (.env 파일)

# 알리고 SMS 설정
ALIGO_API_KEY=abcdef1234567890
ALIGO_USER_ID=myhospital
ALIGO_SENDER=01088050005

# 학원 정보
ACADEMY_NAME=대한간호학원
ACADEMY_PHONE=010-8805-0005

SMS 발송 코드

class SMSSender:
    """알리고 API를 사용한 SMS 발송"""
    
    def send_message(self, phone, name, message):
        """실제 SMS 발송"""
        
        # 메시지 타입 자동 결정
        msg_type = 'LMS' if len(message) > 90 else 'SMS'
        
        # API 요청 데이터
        data = {
            'key': self.api_key,
            'user_id': self.user_id,
            'sender': self.sender,          # 발신번호
            'receiver': phone,              # 수신번호
            'msg': message,                 # 메시지 내용
            'msg_type': msg_type,           # SMS/LMS
            'title': '대한간호학원' if msg_type == 'LMS' else ''
        }
        
        # API 호출
        response = requests.post(
            'https://apis.aligo.in/send/',
            data=data
        )
        
        result = response.json()
        
        # 결과 확인
        if result.get('result_code') == '1':
            print(f"✅ SMS 발송 성공! (ID: {result['msg_id']})")
            return {'success': True, 'msg_id': result['msg_id']}
        else:
            print(f"❌ SMS 발송 실패: {result.get('message')}")
            return {'success': False, 'error': result.get('message')}

발송 로그 자동 기록

======================================================================
발송 시각: 2026-02-01 17:08:35
수신자: 김철수 (010-1234-5678)
상태: success
메시지 ID: 1260222884
메시지 타입: LMS (423자)

메시지:
김철수 학생, 안녕하세요.
대한간호학원입니다.

시험 준비와 경제적 어려움으로 많이 힘드시죠?
학생의 고민을 진심으로 이해합니다.

지금 겪고 있는 어려움은 혼자만의 것이 아닙니다.
학비 문제는 장학금과 분할납부 방법이 있으니 함께 찾아보겠습니다.
...

📞 010-8805-0005
대한간호학원
======================================================================

8단계: 자동화 실행 🚀

메인 실행 파일 (auto_sheets_collector.py)

def main():
    """입학상담 자동화 메인 루프"""
    
    print("="*70)
    print("📞 입학상담 자동화 시스템 시작")
    print("="*70)
    
    # 1. 초기화
    collector = GoogleSheetsCollector(sheet_id)
    db = DatabaseManager()
    analyzer = ConsultationAnalyzer()
    generator = MessageGenerator()
    sender = SMSSender()
    
    print("✅ 모든 모듈 초기화 완료")
    print("10초마다 새 상담을 확인합니다...\n")
    
    # 2. 무한 루프 (10초마다 감시)
    while True:
        try:
            # 2-1. 새 상담 수집
            consultations = collector.fetch_new_rows()
            
            if not consultations:
                print(f"[{time.strftime('%H:%M:%S')}] 대기 중... 💤", end='\r')
                time.sleep(10)
                continue
            
            print(f"\n📝 새 상담 {len(consultations)}건 발견!")
            
            # 2-2. 각 상담 처리
            for content, metadata in consultations:
                row_num = metadata['row_number']
                student_name = metadata.get('student_name', '학생')
                
                # ① AI 분석
                analysis = analyzer.analyze(content)
                print(f"  [{row_num}] 분석: {analysis['risk_score']}/10")
                
                # ② DB 저장
                db_id = db.save_consultation(content, analysis, metadata)
                
                # ③ 시트 업데이트
                collector.update_analysis_results(row_num, analysis)
                
                # ④ 메시지 생성
                message = generator.generate(student_name, analysis)
                
                # ⑤ SMS 발송
                phone = metadata.get('phone_number')
                if phone:
                    result = sender.send_message(phone, student_name, message)
                    
                    if result['success']:
                        print(f"  [{row_num}] ✅ SMS 발송 완료")
                    else:
                        print(f"  [{row_num}] ❌ SMS 실패")
                
                # ⑥ 완료 표시
                collector.mark_as_processed(row_num, db_id)
            
            time.sleep(10)
            
        except KeyboardInterrupt:
            print("\n\n⏹️ 프로그램 종료")
            break
        except Exception as e:
            print(f"\n❌ 오류: {e}")
            time.sleep(10)


if __name__ == "__main__":
    main()

원클릭 실행 배치 파일

start_auto_sms.bat

@echo off
echo ======================================
echo   입학상담 자동화 시스템 시작
echo ======================================

cd /d "E:\자동화\admission_automation"
call venv\Scripts\activate.bat

echo.
echo 자동화 프로그램을 시작합니다...
echo 종료하려면 Ctrl+C를 누르세요.
echo.

pythonw auto_sheets_collector.py

pause

stop_auto_sms.bat

@echo off
echo 자동화 프로그램을 종료합니다...

taskkill /F /IM pythonw.exe /T

echo.
echo 프로그램이 종료되었습니다.
pause

→ 더블클릭 한 번으로 시작/종료!



🏆 핵심 성공 요인

1. Claude Code의 힘

"Claude Code는 단순한 코드 생성 도구가 아니라,
비개발자도 복잡한 자동화 시스템을 구축할 수 있게 해주는
AI 파트너입니다."

실제 경험:

  • 전체 개발 시간: 약 8시간 (1일 작업)

  • 코딩 경험: Python 기초 수준

  • Claude Code 도움: 전체 구조 설계 + 90% 코드 자동 생성

2. 단계별 접근

작은 성공 → 점진적 확장
  1. 구글 시트 연동 → 성공

  2. AI 분석 추가 → 성공

  3. 메시지 생성 → 성공

  4. SMS 발송 → 성공

  5. 자동화 완성 → 성공!

3. 실용성 우선

완벽함보다 작동하는 시스템
  • Mock 모드로 먼저 테스트

  • 점진적 기능 추가

  • 실제 사용하면서 개선


💡 다른 분들께 드리는 조언

✅ Do

  1. 작게 시작하세요

    • 전체를 한 번에 만들지 말고

    • 하나씩 성공시키세요

  2. Claude Code를 적극 활용하세요

    • 막히면 바로 질문

    • 에러 메시지 그대로 붙여넣기

    • "이런 기능 추가해줘" 요청

  3. 실제 데이터로 테스트하세요

    • Mock 데이터보다 실제 상담 내용

    • 엣지 케이스 발견 가능

  4. 로그를 꼭 남기세요

    • 문제 발생 시 원인 파악

    • 개선 포인트 발견

❌ Don't

  1. 처음부터 완벽하게 만들려고 하지 마세요

    • 작동하는 버전 먼저

    • 개선은 나중에

  2. 혼자 고민하지 마세요

    • Claude Code에게 물어보세요

    • 커뮤니티(지피터스) 활용

  3. 비용 걱정하지 마세요

    • 월 3,500원으로 엄청난 효과

    • ROI 62,000%


📚 부록: 주요 코드 및 설정

requirements.txt

# AI 및 데이터 처리
anthropic>=0.18.0
python-dotenv>=1.0.0

# 구글 시트 연동
gspread>=5.10.0
google-auth>=2.22.0
oauth2client>=4.1.3

# SMS 발송
requests>=2.31.0

# 데이터베이스
sqlalchemy>=2.0.0

# 유틸리티
python-dateutil>=2.8.2

.env (환경변수)

# Claude AI
ANTHROPIC_API_KEY=sk-ant-api03-xxxxx...

# Google Sheets
GOOGLE_SHEET_ID=1GA41mkxvdBFvVai_2ba8FzSrz03Twj8a1ebv79b5mqk
GOOGLE_CREDENTIALS_FILE=google-credentials.json

# 알리고 SMS
ALIGO_API_KEY=abcdef1234567890
ALIGO_USER_ID=myhospital
ALIGO_SENDER=01088050005

# 학원 정보
ACADEMY_NAME=대한간호학원
ACADEMY_PHONE=010-8805-0005

설치 및 실행 가이드

1. Python 설치 (Windows)

# Python 3.11 다운로드
https://www.python.org/downloads/

# 설치 시 "Add to PATH" 체크!

2. 프로젝트 설정

# 프로젝트 폴더 생성
mkdir E:\자동화\admission_automation
cd E:\자동화\admission_automation

# 가상환경 생성
python -m venv venv

# 가상환경 활성화
.\venv\Scripts\Activate.ps1

# 패키지 설치
pip install -r requirements.txt

3. 실행

# 방법 1: 직접 실행
python auto_sheets_collector.py

# 방법 2: 배치 파일
start_auto_sms.bat

🎓 결론

핵심 메시지

┌────────────────────────────────────────────────┐
│                                                │
│  "AI는 더 이상 개발자만의 도구가 아닙니다"     │
│                                                │
│   Claude Code와 함께라면                       │
│   누구나 자동화 전문가가 될 수 있습니다        │
│                                                │
└────────────────────────────────────────────────┘

참고 자료:

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요