DIALØGUE: AI 기반 팟캐스트 생성기를 처음부터 구축하다 (그리고 엄청나게 많이 배우다)
콘텐츠가 생성되기 전에 방향을 설정할 수 있는 AI 팟캐스트 생성기를 만들었습니다—출퇴근길에 AI가 위키피디아만 읽어주는 것이 지겨웠기 때문입니다.
동기: 왜 팟캐스트 생성기를 만들었나?
자, 이런 사정입니다 – 저는 팟캐스트를 좋아합니다. 교통 체증에서 너무 많은 시간을 보내는 사람으로서(안녕하세요, 출퇴근 동지들!), 항상 궁금했습니다: 관심 있는 어떤 주제든 팟캐스트를 생성할 수 있다면 어떨까? 지루한 AI 음성이 위키피디아를 읽는 것이 아니라, AI 호스트들이 실제로 매력적인 대화를 나누는 것 말입니다.
그리고 솔직히 말하면, 여러 작은 프로젝트를 구축하고 코딩 여정에 대해 글을 쓴 후, 더 큰 무언가에 도전하고 싶었습니다. 새로운 기술을 배우도록 밀어붙이고, 어쩌면 다른 사람들에게도 유용한 것을 만들 수 있는 무언가요. :P
DIALØGUE란 무엇인가?
DIALØGUE는 AI를 사용하여 전문적인 팟캐스트를 생성하는 초기 단계 애플리케이션(알파 단계)입니다. 주제를 입력하면 — "2025년 연준 결정과 시장 영향"부터 "초보자를 위한 양자 컴퓨팅 이해"까지 무엇이든 — 여러 AI 음성이 실제 대화를 나누는 완전한 20분 이상의 팟캐스트를 만들어줍니다.
ChatGPT가 기사를 읽어주는 것과 다른 점은:
- 인터랙티브 아웃라인 리뷰: 이것이 게임 체인저입니다 – 리서치나 작성이 시작되기 전에 제안된 아웃라인을 검토하고 원하는 대로 형성할 수 있습니다
- 리서치 기반 콘텐츠: 검색 엔진을 사용하여 사실과 최신 정보를 조사합니다
- 자연스러운 대화: Claude Sonnet 4가 대화형 스크립트를 작성합니다
- 다양한 음성: 다양한 호스트 성격을 가진 고품질 뉴럴 음성
전체 과정은 주제부터 완성된 오디오 파일까지 약 10분이 소요됩니다. 인간이 몇 시간 또는 며칠이 걸릴 일치고는 나쁘지 않습니다!
기술 스택: 서버리스 모험 (진화 과정)
좋아요, 기술적 세부 사항으로 들어가겠습니다(제가 가장 좋아하는 부분!). DIALØGUE를 구동하는 것은:
프론트엔드
- Next.js 15 + React 19: 최신이고 최고의 것을 사용하고 싶었기 때문입니다
- TypeScript: 런타임 오류에 한 번 너무 많이 당한 후
- Tailwind CSS: 디자인 마법사가 아닌 사람에게 스타일링을 훨씬 쉽게 만들어줍니다
- Supabase JS Client: 인증 및 실시간 업데이트용 (이것이 게임 체인저였습니다)
백엔드 (현재 - GCP)
- Cloud Run: 자동 스케일링이 있는 10개 이상의 컨테이너화된 Python 마이크로서비스
- Cloud Workflows: 피드백 전(아웃라인) 및 피드백 후(생성) 워크플로우 오케스트레이션
- Cloud Storage: CDN 전달이 있는 오디오 파일 저장소
- API Gateway: CORS 및 인증이 있는 단일 진입점
- Supabase: Row Level Security 및 Edge Functions가 있는 PostgreSQL 데이터베이스
*참고: 원래 AWS Lambda/Step Functions에서 구축했지만, 더 나은 성능과 오디오 생성에서 92% 비용 절감을 위해 2025년 7월에 GCP로 마이그레이션했습니다.*
AI 서비스
- Claude 4.0 Sonnet: JSON 신뢰성을 위해 temperature 0으로 스크립트 생성 (직접 Anthropic API)
- Perplexity AI: 각 세그먼트에 대한 리서치 및 팩트 체킹
- OpenAI TTS: 자연스러운 대화를 위한 고품질 뉴럴 음성
- 콘텐츠 모더레이션: Anthropic의 내장 안전 검사
주요 기능과 사용자 여정
사용자 관점에서 작동 방식은 다음과 같습니다:
1. 주제 입력: 간단한 텍스트 입력, 특별한 것 없음
2. AI가 아웃라인 생성: 약 1분 소요 – 제안된 구조와 세그먼트를 볼 수 있습니다
3. 팟캐스트를 검토하고 형성하기: DIALØGUE가 정말 빛나는 곳입니다! 다음을 할 수 있습니다:
- 초점 재설정 ("더 초보자 친화적으로 만들어줘")
- 빠진 맥락 추가 ("최근 2025년 개발 사항을 포함해줘")
- 세그먼트 제거 또는 수정 ("세그먼트 3의 기술 용어를 생략해줘")
- AI가 의도를 잘못 이해했다면 방향을 완전히 변경
4. 전체 팟캐스트 생성: 아웃라인을 승인하면 생성에 약 6-10분 소요
5. 다운로드 및 청취: 출퇴근길에 사용할 수 있는 MP3 파일 준비 완료
뒷단에서는 훨씬 더 많은 일을 합니다:
- 주제를 세그먼트로 분할
- 리소스 집약적 작업 전에 승인을 기다림 (원치 않는 콘텐츠에 크레딧을 낭비하지 않습니다!)
- 각 세그먼트를 특정 쿼리로 조사
- 두 AI 호스트 간의 자연스러운 대화 작성
- 오류를 우아하게 처리 (문제가 발생하면 크레딧 환불)
- 무슨 일이 일어나고 있는지 알 수 있도록 실시간 진행 업데이트
좋은 것, 어려운 것, 그리고 "아 안 돼" 순간들
좋은 것
- 아웃라인 리뷰 기능: 사용자들이 생성 전에 팟캐스트를 형성할 수 있는 것을 좋아합니다. AI 프로듀서와 대화하는 것과 같습니다!
- Supabase 직접 쿼리로 전환하여 10배 성능 향상 (450ms → 45ms)
- 즉시 사용자 가입: 원자적 Edge Functions로 3분 지연 버그 수정 (현재 < 500ms)
- 생성 실패 시 데이터베이스 트리거를 통한 자동 크레딧 환불
- 실제로 작동하는 실시간 업데이트 (Supabase 덕분입니다!)
- GCP 마이그레이션 후 오디오 생성에서 92% 비용 절감
- Lambda 레거시 코드 제거 후 깔끔한 데이터베이스 우선 아키텍처
어려웠던 것 (현재 해결됨!)
- AWS Lambda 레이어 지옥: Import 오류, 250MB 크기 제한 (GCP 마이그레이션으로 해결)
- JWT 보안 마이그레이션: 이전 버전 호환성을 유지하면서 HS256에서 P-256으로 업그레이드
- AI temperature 설정: Claude에서 0.7로 설정하면 30%의 경우 잘못된 JSON을 생성 (temperature 0으로 수정)
- WebSocket 메모리 누수: React 컴포넌트가 시간당 50MB를 누출 (RealtimeManager로 수정)
- 데이터베이스 경합 조건: 새 사용자가 복제 지연으로 3분을 기다림 (원자적 작업으로 수정)
- 크레딧 시스템 복잡성: 이중 크레딧에서 단일 유형으로 단순화
"아 안 돼" 순간들
- 실수로 중요한 워크플로우 데이터를 잘못된 곳에 저장한 순간
- 신비한 브라우저 오류가 제 코드가 리소스를 고갈시켜서 발생한 것임을 깨달았을 때
- 정기 감사 중 보안 취약점 발견 (현재 모두 수정!)
배운 것 (스포일러: 정말 많이)
이 프로젝트는 저를 안락 지대 밖으로 크게 밀어냈고, 많은 것을 배웠습니다:
1. 사용자 제어가 중요합니다: 아웃라인 리뷰 기능은 원래 설계에 없었지만, 가장 중요한 기능이 되었습니다. 사용자가 생성 시작 전에 콘텐츠를 형성할 수 있게 하면 시간, 크레딧, 좌절감을 절약합니다
2. 단순하게 시작하고, 필요할 때 마이그레이션하세요: AWS Lambda로 시작했지만 복잡성의 벽에 부딪혔습니다 - Cloud Run으로의 마이그레이션이 모든 것을 해결했습니다
3. 직접 데이터베이스 쿼리가 더 빠를 수 있습니다: 10배 성능 향상은 불필요한 API 레이어를 제거한 결과였습니다
4. AI 비용이 누적됩니다: 단일 팟캐스트를 위해 여러 AI 서비스를 실행하려면 신중한 비용 관리가 필요합니다
5. 사용자 경험이 중요합니다: 진행 표시기와 예상 시간을 추가하는 것이 큰 차이를 만들었습니다
6. 보안은 결코 "완료"되지 않습니다: 정기 감사에서 생각지도 못한 문제가 발견되었습니다
7. Infrastructure as Code에는 함정이 있습니다: SAM의 특이점이 많은 것을 가르쳐주었습니다 (SSMParameterReadPolicy가 추가 슬래시를 넣는 것처럼!)
8. 클라우드 마이그레이션이 놀라울 정도로 빠를 수 있습니다: AI 페어 프로그래밍으로 AWS에서 GCP로 단 하루 만에 마이그레이션했습니다!
현재 상태와 다음 계획
DIALØGUE는 이제 라이브입니다! 새 사용자를 위한 2개의 무료 크레딧이 있는 알파 단계입니다.
가격 측면에서 — 솔직히 이것에 대해 너무 오래 고민했다는 것을 인정해야 합니다. 각 팟캐스트를 생성하는 데 실제 비용이 듭니다 (스크립트를 위한 Claude API 호출, 리서치를 위한 Perplexity, 음성 합성을 위한 OpenAI — 금방 쌓입니다). 비용을 대략 커버하면서 약간의 마진이 있는 크레딧 팩으로 결정했습니다: 4개 팟캐스트에 Starter $4.99, 9개에 Pro $9.99, 18개에 Bulk $19.99. 실제 사용 패턴을 더 배우면서 조정할 수 있지만, 지금은 공정하게 느껴집니다. 그리고 기술적 이유로 생성이 실패하면 크레딧이 자동으로 환불됩니다 — 제 버그 때문에 요금을 청구하지 않겠습니다 :P
시도해 보시겠습니까?
한번 시도해 보시길 바랍니다! podcast.chandlernguyen.com으로 가서 첫 AI 팟캐스트를 만들어보세요. 처음 2개는 무료이니 잃을 것이 없습니다.
공정한 경고: 아직 알파 단계이므로 문제가 생길 수 있습니다. 하지만 그게 재미의 일부 아닌가요? 문제가 발생하면 앱 내에 피드백 기능이 내장되어 있습니다(로그인한 사용자만 — 스팸 문제 이후 추가해야 했습니다).
마무리 생각
DIALØGUE를 구축하는 것은 제가 도전한 프로젝트 중 가장 도전적이고 보람 있는 것 중 하나였습니다. AWS Lambda 함수에서 React 컴포넌트, AI 프롬프트 엔지니어링까지 배워온 모든 것을 결합했고, 예상치 못한 클라우드 마이그레이션 여정까지 이어졌습니다.
가장 놀라운 발견은요? 앞서 언급한 아웃라인 리뷰 단계입니다. 처음에는 사용자가 주제를 입력하고 팟캐스트를 받기만 원할 것이라고 생각했습니다. 하지만 테스트에서 주요 생성 프로세스가 시작되기 전에 사용자에게 방향에 대한 제어권을 주는 것이 모든 차이를 만든다는 것을 깨달았습니다. 도구를 블랙박스에서 협업 AI 어시스턴트로 변환합니다. 같은 통찰 — AI 실행 위에 인간의 창의적 방향 — 은 나중에 Swift를 모르면서 DIALØGUE의 네이티브 iOS 앱을 구축했을 때 핵심 교훈이 되었습니다.
완벽한가요? 아닙니다. 유용한가요? 그렇다고 생각합니다! 최소한 놀라운 학습 여정이었고, 앞으로 어디로 갈지 기대됩니다.
어떤 주제로 팟캐스트를 만드시겠습니까? 진심으로 궁금합니다 — 메시지를 보내주시거나 직접 시도해보세요. 콘텐츠를 형성하고 안내할 수 있는 기능으로, AI가 생성한 팟캐스트가 바로 여러분이 찾던 것일 수 있습니다. :P
감사합니다,
Chandler
기술적 심층 분석을 원하시나요? 전체 여정을 따라가세요:
- DIALØGUE 구축에서 배운 엔지니어링 교훈: 광고에서 엔지니어링으로의 여정, 그리고 복잡성이 왜 적인지
- 하나의 AI 파라미터 변경으로 월 $54의 비용이 발생했습니다: AWS → GCP 마이그레이션 중 단일 temperature 설정이 어떻게 큰 비효율을 야기했는지





