화조당 두 달 — MVP에서 콘텐츠 피봇까지
사주 SaaS를 만들고, 결제를 붙이고, Threads를 자동화하고, 유나가 영상으로 말하기 시작했다. 두 달간의 기록.
2026년 4월 4일, "사주를 SaaS로 만들어보자"는 생각 하나로 시작했다. 오늘이 6월 8일이니 정확히 두 달하고 나흘. 그 사이 화조당이라는 브랜드가 생겼고, 유나라는 캐릭터가 태어났고, Threads에 1,848개의 콘텐츠가 예약됐고, 유나가 영상으로 말하기 시작했다. 이 글은 그 여정의 회고다.
일주일 만에 MVP

처음 목표는 단순했다. 사주팔자를 입력하면 AI가 해석해주는 웹 서비스. 생년월일시를 받아서 만세력으로 사주를 뽑고, Claude API에 넘겨서 자연어 해석을 돌려주는 구조.
기술 스택은 Next.js 15 App Router + TypeScript. 프론트와 백엔드를 한 프로젝트로 가져갈 수 있어서 빠르게 움직이기에 좋았다. 일주일 만에 첫 MVP가 나왔다. 생년월일시를 입력하면 사주 원국이 뜨고, Claude가 운세를 써주는 화면.
문제는 사주 계산 엔진이었다. npm에 쓸 만한 만세력 라이브러리가 없었다. 있는 것들은 정확도가 의심스럽거나, 절기 계산이 빠져 있거나, 대운·세운을 지원하지 않았다. 결국 밑바닥부터 만들었다. 천간·지간·십성·십이운성·합충형파해·공망·신살까지. 이걸 만드는 데 시간이 가장 많이 들었지만, 덕분에 정확도에 대한 확신을 가질 수 있었다.
'화조당'이라는 이름
사주 서비스에 이름이 필요했다. 처음에는 그냥 "4Pillars"로 갔다. 영문이니 글로벌 진출도 염두에 두고. 그런데 사주라는 콘텐츠 자체가 한국어·한자 문화권이라 한국어 브랜드가 맞겠다 싶었다.
화조당(花鳥堂). 꽃과 새의 집. 동양화에서 화조도는 자연의 이치를 담는 그림이다. 사주도 자연의 순환 — 목화토금수 — 을 읽는 학문이니 어울린다고 생각했다. 지금도 이 이름이 좋다.
유나 — AI가 만든 캐릭터

서비스에 얼굴이 필요했다. 무미건조한 텍스트만으로는 사용자의 신뢰를 얻기 어렵다. 그래서 유나라는 캐릭터를 만들었다. 사주 상담사 컨셉의 젊은 여성 캐릭터.
이미지 생성은 Claude와 다양한 AI 이미지 도구를 조합했다. 처음에는 스타일이 제각각이었다. 같은 프롬프트를 써도 얼굴이 다르고, 의상이 바뀌고, 분위기가 달랐다. 일관성을 잡는 데만 며칠이 걸렸다. 결국 레퍼런스 이미지 기반으로 프롬프트를 고정하고, 500장 넘는 이미지를 뽑아서 그 중 쓸 만한 것들을 골랐다. 유나의 표정, 포즈, 의상, 배경 — 전부 카테고리별로 정리해놨다.
유나는 단순한 일러스트가 아니다. Threads 콘텐츠에서 오늘의 운세를 안내하고, 유튜브 영상에서 사주 이야기를 들려주는 화조당의 얼굴이다.
결제의 현실 — 코딩보다 행정이 어렵다
MVP가 돌아가니 다음은 결제였다. 유료 서비스로 전환하려면 결제 시스템이 필요하다.
첫 번째 시도: 포트원(PortOne). 한국 PG 연동의 표준 같은 존재. 토스페이먼츠를 PG사로 붙였다. 연동 자체는 어렵지 않았다. 문서도 잘 되어 있고, Next.js에서 서버 사이드로 결제 검증하는 흐름도 깔끔했다. 문제는 사업자 심사. 통신판매업 신고, 사업자등록증, 서비스 URL 검수... 코드 한 줄 안 치는 날이 며칠씩 이어졌다.
두 번째 시도: Lemon Squeezy. 해외 결제를 위해 시도했다. Merchant of Record 모델이라 세금 처리도 알아서 해주고, 한국 사업자도 받아준다고 해서 신청했다. 거절당했다. "Fortune-telling services"는 정책상 불가라고. 사주가 점술(fortune-telling)로 분류되는 순간이었다. 이건 예상 못 했다.
세 번째 시도: Gumroad. 여기는 됐다. 디지털 상품 판매 플랫폼이라 사주 리포트를 PDF로 만들어서 판매하는 형태로 우회. 하지만 수수료가 높고, 사용자 경험이 매끄럽지 않다.
교훈: 결제 연동에서 가장 어려운 건 코드가 아니라 정합성 — 사업자 정보, 서비스 카테고리, 정책 적합성. 심사 담당자에게 "이건 점술이 아니라 전통 명리학 기반 콘텐츠 서비스입니다"라고 설명하는 메일을 몇 번이나 썼는지 모른다.
Threads 마케팅 자동화 — 1,848개 콘텐츠
트래픽이 필요했다. SEO는 시간이 걸리고, 광고는 돈이 든다. 그래서 Threads 자동 발행을 만들었다.
구조는 이렇다:
- 사주 콘텐츠를 일별로 생성 (오늘의 운세, 십이지별 팁, 명리학 상식 등)
- 유나의 이미지를 매칭
- 해시태그와 함께 예약 발행
Claude가 콘텐츠를 생성하고, Node.js 스크립트가 Threads API로 발행한다. 1,848개의 콘텐츠가 만들어졌고, 616일치가 예약됐다. 하루 세 번, 아침·점심·저녁으로 자동 발행.
처음에는 콘텐츠 퀄리티가 걱정이었다. AI가 생성한 운세가 너무 뻔하지 않을까? 그래서 몇 가지 장치를 넣었다. 절기와 계절 변화를 반영하고, 십이지별로 실제 사주 이론에 기반한 조언을 넣고, 유나의 말투를 일관되게 유지했다. 완벽하지는 않지만, 매일 손으로 쓰는 것보다는 낫다.
영상 파이프라인 — 유나가 말하기 시작했다
텍스트와 이미지 다음은 영상이었다. 유나가 직접 카메라 앞에서 사주 이야기를 하는 롱폼 콘텐츠.
make_episode.mjs라는 파이프라인을 만들었다. 흐름은 이렇다:
- Claude가 대본을 생성한다
- TTS로 유나의 음성을 합성한다
- 유나 이미지에 립싱크를 입힌다
- 자막을 생성하고 타임라인에 배치한다
- FFmpeg로 최종 영상을 렌더링한다
가장 큰 기술적 도전은 드리프트 문제였다. 오디오와 비디오의 길이가 미세하게 어긋나면 영상이 길어질수록 입 모양과 소리가 벌어진다. 처음에는 2~3초씩 밀렸다. 오디오 샘플레이트, 비디오 프레임레이트, 자막 타임스탬프 — 세 가지를 전부 정밀하게 맞춰야 했다.
드리프트 0을 달성했을 때의 쾌감은 꽤 컸다. 10분짜리 영상에서 끝까지 오디오와 비디오가 정확히 일치하는 걸 확인했을 때, "이거 진짜 되는구나" 싶었다.
두 달간의 교훈들

문제 해결보다 문제 제거
Lemon Squeezy에서 거절당했을 때, 처음에는 "어떻게든 설득해야지"라고 생각했다. 메일도 보내고, 서비스 설명서도 만들어서 보냈다. 안 됐다. 그래서 방향을 바꿨다. 문제를 해결하려 하지 말고, 문제 자체를 제거하자. Gumroad로 갈아타니 해결됐다. 완벽하진 않지만 전진은 한다.
심사는 정합성 싸움
PG 심사, 스토어 심사, 광고 심사 — 전부 내 서비스에 대한 설명이 모든 접점에서 일관되는지를 본다. 사업자등록증의 업종, 웹사이트의 서비스 설명, 약관의 문구, 결제 페이지의 상품명. 하나라도 어긋나면 반려된다. 코드는 한 번에 통과하는데 심사에서 세 번 반려당하는 경험이 있다.
트래픽이 적으면 장애도 늦게 발견된다
초기 서비스의 가장 무서운 점이다. 서버가 죽어도 아무도 모른다. 에러 로그를 봐야 알 수 있는데, 매일 보지 않으면 며칠째 500 에러를 내뱉고 있었다는 걸 나중에야 발견한다. 모니터링은 트래픽이 적을 때 더 중요하다.
병목은 전환율이 아니라 트래픽 자체
전환율 최적화(CRO)에 대한 글을 열심히 읽었다. 버튼 색깔, 카피 문구, 가격 표시 방식... 그런데 일 방문자가 10명도 안 되는 단계에서 전환율을 논하는 건 의미가 없었다. 일단 사람을 데려와야 한다. 그래서 Threads 자동화를 만들었고, 영상 파이프라인을 만들었다.
다음 단계
두 달을 돌아보면, 기술적으로는 꽤 멀리 왔다. 사주 계산 엔진, 결제 시스템, 콘텐츠 자동화, 영상 파이프라인 — 인프라는 갖췄다. 하지만 트래픽은 아직 부족하다.
앞으로의 방향은 명확하다:
- 콘텐츠 피봇: 사주 서비스 자체보다 사주 콘텐츠로 트래픽을 모은다. 블로그 포스트, SEO 최적화된 사주 가이드, 계절별 운세 콘텐츠.
- SEO 트래픽: Threads는 소셜 트래픽이다. 검색 트래픽이 필요하다. "2026년 하반기 운세", "갑진년 사주 특징" 같은 키워드를 잡는다.
- 유나 유튜브 채널: 영상 파이프라인이 완성됐으니 이제 채널을 키운다. 유나가 매일 사주 이야기를 하는 채널. 숏폼과 롱폼을 병행한다.
두 달 전, 나는 사주 SaaS를 만들려고 했다. 지금은 사주 콘텐츠 비즈니스를 만들고 있다. 서비스를 파는 게 아니라 콘텐츠로 사람을 모으고, 그 안에서 서비스를 자연스럽게 연결하는 구조. 피봇이라기보다는 진화에 가깝다.
AI와 함께 만든 두 달이었다. Claude가 코드를 쓰고, 콘텐츠를 만들고, 영상 대본을 쓰고. 나는 방향을 정하고, 판단을 내리고, 막히는 곳을 뚫었다. 이 조합이 꽤 잘 맞는다는 걸 두 달 동안 확인했다.
다음 두 달이 기대된다.