I Just Built An AI Agent Clone Of Myself (n8n)
원본 영상: I Just Built An AI Agent Clone Of Myself (n8n)
한 줄 요약
섹션 제목: “한 줄 요약”n8n + ElevenLabs + OpenAI Whisper 조합으로 자신의 목소리를 클론한 AI 에이전트를 만들고 Telegram에서 음성·텍스트 양방향으로 대화하는 워크플로를 구축한다.
핵심 내용
섹션 제목: “핵심 내용”- Telegram 트리거 설정 — BotFather로 새 봇 생성 후 액세스 토큰을 n8n Telegram 노드에 연결한다.
- Switch 노드로 경로 분기 — 수신 메시지의
text필드 존재 여부로 음성 경로 vs 텍스트 경로를 구분한다. - 음성 경로 처리 — Telegram “Get a File” 노드로 음성 파일 다운로드 → OpenAI Whisper로 텍스트 변환(transcribe).
- 텍스트 경로 처리 —
text필드 값을text키 이름으로 Edit Fields 노드에 저장한다. - Merge 노드 — 두 경로 모두
text키를 공유하므로 하나로 합쳐 AI 에이전트에 전달한다. - AI 에이전트 구성 — OpenAI 모델 연결, 세션 메모리(chat ID 기반), 시스템 프롬프트 설정.
- ElevenLabs HTTP 요청 — 네이티브 통합이 없어 HTTP Request 노드로 직접 연동, Text-to-Speech 엔드포인트에 POST 요청.
- Telegram 음성 응답 전송 — 생성된 오디오 바이너리를 Telegram Send Audio 노드로 전달, chat ID로 대상 지정.
전술·요소
섹션 제목: “전술·요소”| 단계 | 핵심 설정 |
|---|---|
| 봇 생성 | BotFather /newbot → 토큰 복사 |
| 경로 분기 | Switch: text 필드 “string does not exist” = 음성, “exists” = 텍스트 |
| 음성→텍스트 | OpenAI Transcribe Recording 노드 (최소 $5 크레딧 필요) |
| AI 모델 | OpenAI (기본값), 메모리: chat ID를 session ID로 사용 |
| TTS 연동 | ElevenLabs API POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id} |
| JSON 처리 | AI 에이전트 출력을 JSON.stringify() 로 감싸 특수문자·줄바꿈 처리 후 쌍따옴표 중복 주의 |
| 시스템 프롬프트 | "You are a helpful assistant named Jonno..." 형태로 페르소나 부여 |
수치·사례
섹션 제목: “수치·사례”- ElevenLabs 음성 클론: Starter 플랜 $5/월 필요 (무료 플랜은 API 호출 불가)
- OpenAI API: 최소 $5 크레딧 선충전 필요
- 음성 학습용 오디오: 파일이 길수록, 많을수록 클론 품질 향상 (본인 실측 경험)
도구·워크플로
섹션 제목: “도구·워크플로”사용 도구
- n8n — 전체 자동화 오케스트레이션
- Telegram Bot API — 트리거 및 응답 채널
- OpenAI Whisper — 음성→텍스트 변환
- OpenAI (Chat) — AI 에이전트 추론 엔진
- ElevenLabs Instant Voice Clone — 목소리 복제 및 TTS 생성
워크플로 흐름
Telegram 수신 └─ Switch (text 유무) ├─ 음성: Get File → Transcribe (Whisper) → {key: text} └─ 텍스트: Edit Fields → {key: text} └─ Merge (by key: text) └─ AI Agent (OpenAI + 메모리) └─ HTTP Request → ElevenLabs TTS └─ Telegram Send AudioJSON.stringify 패턴 — AI 에이전트 출력에 \n, 특수문자가 포함되면 ElevenLabs HTTP body의 JSON이 깨지므로, body 필드에서 출력값을 JSON.stringify({{ $json.output }}) 로 감싸되 외부 쌍따옴표는 제거한다.