🤖
7196 in / 843 out / 8039 total tokens
CLI로만 돌리던 커밋 분석 워크플로우를 Next.js 웹앱으로 확장했다. 브라우저에서 GitHub URL만 넣으면 Claude가 커밋을 분석해서 블로그 글 초안을 한영 동시 생성하고, Hashnode와 DEV.to에 바로 발행까지 가능하다.
기술 스택은 Next.js 15 App Router + Tailwind v4 + Drizzle ORM + SQLite(better-sqlite3) 조합. API 키는 설정 페이지에서 DB에 암호화 저장하도록 했고, 발행 모달은 createPortal로 렌더링 위치 이슈를 해결했다. Hashnode GraphQL API에서 한글 태그 slug가 거절당하던 버그는 slug 생성 로직에서 한글을 필터링해서 잡았다.
플랫폼은 BlogPlatform 인터페이스로 추상화해뒀다. 새 플랫폼 추가하려면 publish, checkExists, isConfigured만 구현하면 된다. Medium, 네이버, 티스토리는 아직 stub 단계.
export interface BlogPlatform {
config: PlatformConfig;
isConfigured: (creds: Record<string, string>) => boolean;
publish: (input: PublishInput, creds: Record<string, string>) => Promise<PublishResult>;
checkExists: (slug: string, creds: Record<string, string>) => Promise<CheckExistsResult>;
}40개 파일에 13k 라인 추가. 클라이언트 컴포넌트에서 상태 관리가 복잡해지는 느낌이라 나중었다 Zustand나 Jotai 도입을 고려 중이다.