LIVE — 첫 프로젝트의 고객 소개로 이어진 후속 의뢰
영천중앙교회 홈페이지
교회 공식 홈페이지 및 콘텐츠 운영 CMS. 매주 반복되는 설교·주보·갤러리 운영 부담을 줄이기 위해 YouTube 설교 자동 동기화, HWP 주보 구조화, AI 요약·썸네일 생성까지 이벤트 기반 파이프라인으로 자동화했습니다.
- ROLE
- 기획 · 설계 · 개발 · 배포 · 운영
- PERIOD
- 운영 중
- STACK
- Next.js · TypeScript · Neon · Drizzle · Better Auth · R2 · HWP Parser


## 설교 자동 동기화 — WebSub 푸시
채널 피드를 Google PubSubHubbub 허브에 구독. 업로드 발생 시 허브가 Atom 알림을 푸시 → 주기적 폴링 불필요. yt:videoId를 파싱해 QStash ingest-video 잡 발행으로 파이프라인 연결.
구독 검증은 우리 채널 토픽일 때만 hub.challenge 에코, 알림은 X-Hub-Signature(HMAC-SHA1)를 timing-safe 비교로 위조 차단. WebSub 리스 만료는 QStash cron 재구독으로 방지, 누락분은 재생목록 순회 백필로 보완.
## AI 요약 파이프라인 — 서버리스 메시지 큐
Vercel 서버리스(장기 실행 불가) 환경에서 ingest-video → fetch-transcript → summarize를 독립 잡으로 분리해 QStash로 연결. 잡 엔드포인트는 HMAC 서명 검증으로 보호.
Postgres CTE UPDATE...RETURNING으로 설교 1건을 원자적 선점해 중복 요약 차단. sleep이 불가능하므로 QStash 지연 발행(delay)으로 지수 백오프(5·3ⁿ분) 구현. Gemini responseSchema로 요점·타임스탬프 챕터를 JSON 스키마로 강제.
## 그 외
HWP 바이너리를 직접 파싱해 웹에서 구조화 렌더링 — 매주 주보 등록을 업로드 한 번으로 축소.
AI가 한글을 못 그리는 문제를 피해 배경만 AI 생성, 글자는 @vercel/og로 코드 합성. 누끼는 자막 밴드 crop + preview 사이즈 처리로 유료 크레딧 0원 설계.