녹음 후의 여파(post-recording hangover)에 시달리고 있었습니다. 팟캐스트 에피소드를 녹음하는 데 한 시간을 쓴 후, 또다시 쇼 노트 작성, 제목 브레인스토밍, 스크립트 형식 지정 등에 한 시간을 쓰고 싶지 않았습니다. 기존 도구 몇 가지를 사용해 봤지만, 그들은 일반적인 래퍼(wrapper)처럼 느껴지거나, 제대로 된 에피소드 요약을 얻기 위해 다섯 개의 다른 서비스를 연결해야 했습니다. 저는 단순히 컨텍스트 전환 없이 원본 오디오를 구조화된 콘텐츠로 변환할 수 있는 단일하고 신뢰할 수 있는 장소를 원했습니다. 그래서 무언가를 만들기로 결정했습니다.
팟캐스트 후반 작업의 문제점
팟캐스트 후반 작업의 문제는 단순히 지루하다는 것이 아닙니다. 그것은 창작 흐름(creative momentum)을 끊어버린다는 것입니다. 녹음을 마치면, 당신은 몰입 상태에 있습니다. 하지만 그 다음에는 카피라이터, SEO 전문가, 프로젝트 매니저가 되어야 합니다. 이러한 마찰(friction)을 무시하는 비용은 높습니다. 크리에이터들은 번아웃되거나, 발행 빈도가 줄어들거나, 아무도 클릭하지 않는 최적화되지 않은 메타데이터를 가진 에피소드를 출시하게 됩니다.
공학적인 관점에서 볼 때, 이것을 해결하기 위한 도구를 구축한다는 것은 무거운 AI 추론(AI inference), 대용량 텍스트 페이로드(large text payloads), 그리고 빠른 응답 시간의 필요성을 다루는 것을 의미합니다. 만약 그 도구가 제목을 생성하거나 스크립트를 요약하는 데 30초가 걸린다면, 사용자 경험은 무너집니다. 사용자는 워크플로우 도구에서 거의 즉각적인 피드백을 기대합니다.
기술적 접근 방식 및 아키텍처
지연 시간을 낮게 유지하고 비용을 예측 가능하게 하기 위해, 저는 전통적인 서버를 관리하지 않고 AI 추론을 처리할 수 있는 아키텍처가 필요했습니다. 저는 엣지(edge)에서 AI 추론 기능을 활용하여 Cloudflare Workers를 컴퓨팅 계층으로 선택했습니다.
인프라를 평가할 때 엣지 컴퓨팅의 주요 트레이드오프는 상태 관리(state management)입니다. 하지만 쇼 노트 생성과 같은 무상태(stateless) AI 추론 작업에는 엣지가 이상적입니다. 요청 페이로드(스크립트 전문)가 워커로 직접 전송되고, 이 워커가 가장 가까운 AI 모델 인스턴스로 라우팅합니다. 이는 중앙 집중식 데이터 센터로 가는 네트워크 호프를 제거해 주는데, 이곳에서 전통적인 LLM 래퍼(wrapper)에서는 대부분의 지연 시간(latency)이 숨어있던 곳입니다.
핵심 과제는 프롬프트 엔지니어링과 컨텍스트 창(context window) 관리였습니다. 쇼 노트 생성기의 경우, 저는 단순히 일반적인 요약본을 원하지 않았습니다. 팟캐스터들이 실제로 사용하는 구조화된 출력이 필요했습니다. 쇼 노트 생성 파이프라인이 내부적으로 어떻게 작동하는지 살펴보겠습니다.
// Show notes generation pipeline (Cloudflare Workers + AI)
export default {
async fetch(request, env) {
...
fetch 핸들러는 들어오는 스크립트 전문을 구문 분석하여 Llama 3 모델에 전달합니다. 시스템 프롬프트가 여기서 매우 중요합니다. 이는 모델이 단순히 긴 텍스트의 벽으로 출력하는 대신 특정 Markdown 섹션(Summary, Takeaways, Timestamps, Resources)을 출력하도록 강제하기 때문입니다. max_tokens를 800으로 설정하면 응답이 간결하게 유지되고 모델이 장황해지는 것을 방지할 수 있습니다.
제목 생성기의 경우 접근 방식이 약간 다릅니다. 제목은 임팩트가 있어야 하므로, 프롬프트 엔지니어링은 단어 수와 후킹 유형(hook types)과 같은 엄격한 제약 조건에 초점을 맞춥니다.
// Prompt engineering for podcast title generation
function buildTitlePrompt(topic, tone, count) {
return {
...
이 함수는 사용자가 원하는 톤을 기반으로 프롬프트를 동적으로 구축합니다. 모델에게 클릭베이트를 피하고 호기심 격차(curiosity gaps)를 사용하도록 명시적으로 지시함으로써 훨씬 더 높은 품질의 제안을 얻을 수 있습니다. 또 다른 아키텍처 결정은 SEO 키워드 제안과 스크립트 개요를 동일한 Worker 환경 내에 유지하는 것이었습니다. 서로 다른 프롬프트 템플릿을 처리하기 위해 다른 라우트 경로(route paths)를 사용합니다. 이는 배포를 간단하게 유지하고 코드베이스를 통합할 수 있게 합니다.
실제 결과 및 시사점 (Practical Results and Takeaways)
이러한 엣지 기반 아키텍처로 전환하면서 도구의 성능 자체가 달라졌습니다. 쇼 노트 생성에 걸리는 지연 시간(latency)은 전통적인 서버리스 함수를 사용했을 때와 비교하여 현저하게 줄었습니다. 저를 가장 놀라게 한 것은 엄격한 시스템 프롬프트가 출력 품질을 얼마나 향상시켰는지입니다. 처음에는 AI가 단순히 텍스트를 요약하는 수준에 그쳤습니다. 하지만 마크다운(Markdown) 구조를 강제하고 타임스탬프에 대한 규칙을 추가하자, 수동으로 정리할 필요 없이 즉시 사용할 수 있는 결과물이 나왔습니다.
만약 한 가지를 바꿀 수 있다면, 더 긴 쇼 노트에는 스트리밍 응답(streaming responses)을 구현할 것입니다. 텍스트가 토큰별로 생성되는 것을 보는 것이 로딩 스피너를 3초 동안 바라보는 것보다 사용자에게 훨씬 빠르게 느껴지기 때문입니다. 현재는 이 경험을 더욱 반응성 있게 만들기 위해 UI에 통합하는 작업을 진행 중입니다.
직접 사용해 보세요
워크플로우 간소화를 원하는 팟캐스터이거나, 엣지 AI 프롬프트 엔지니어링(prompt engineering)에 대해 궁금한 개발자라면 이 도구를 사용해보시길 바랍니다. 무료로 '팟캐스트 제목 생성기(Podcast Title Generator)'를 사용하여 프롬프트 제약 조건이 실제 어떻게 작동하는지 확인해 볼 수 있습니다.
여기에서 확인하세요: Podcast Title Generator
전체 공개합니다: 저는 PodCrisp의 개발자입니다. 제가 직접 필요해서 만들었습니다.