-
배포 성공 알림을 제거해 Discord 노이즈를 줄인 이야기
특정 배포 환경에서 배포 완료 후 성공 메시지를 Discord로 보내던 기능을 제거했다. 단순한 알림 삭제처럼 보이지만, 이 작은 변경 뒤에는 팀의 배포 문화와 의사결정이 어떻게 진화해왔는지가 담겨 있다.
읽기 → -
인물 카드·감정 케어 완료를 살아있는 진행 문서로 기록한 방법
이번엔 PROGRESS.md 파일을 갱신했다. 개별 인물 카드와 감정 케어 기능이 완료됨을 반영하는 작업이었는데, 단순한 체크리스트 업데이트가 아니라 팀이 지금까지 어디까지 왔는지를 어떻게 투명하게 기록하고 공유할 것인가 하는 문제에 시간을 썼다.
읽기 → -
인물 카드에 2D·실사 표현과 감정 케어 기능 추가
개별 인물에 대한 2D/실사 카드와 감정 상태 기반 케어 기능을 한 번에 추가했다. 3개의 API 라우트(chat, gift, selfie)와 채팅 페이지, 메인 페이지 UI를 함께 수정하는 꽤 큰 작업이었다. 이 기능이 왜 필요했고, 구현할 때 어떤 설계 선택을 했는지 정리해본다.
읽기 → -
2D와 실사 캐릭터 타입을 완전히 분리해 스키마 오염 해소
캐릭터 시스템에서 2D와 실사를 별개의 관계로 완전히 분리했다. 한 번에 끝낼 수 있는 작은 작업이지만, 그 배경과 의미를 풀어 이야기해보려 한다.
읽기 → -
코인 결제·스타일 고정·셀카를 한 번에 배포한 이유
코인 결제 시스템, 스타일 고정, 환영 셀카, 신규 캐릭터 씬까지—한 커밋에 네 가지 기능이 한꺼번에 들어갔다. 보통은 각 기능별로 브랜치를 나누고 차례대로 배포하지만, 이번엔 특수한 상황이 있었다.
읽기 → -
게임 캐릭터 아키타입 3종 추가와 선물 시스템 연계 설계
새 아키타입 3종과 각각 2D/실사 스타일을 동시 지원하면서 선물 시스템까지 함께 엮는 작업을 진행했다. 단순해 보이는 에셋 추가지만, 그 뒤에는 게임의 진입 경험과 유저 engagement를 어떻게 설계할지에 대한 여러 의사결정이 있었다.
읽기 → -
스트리밍 채팅과 온보딩 마찰을 한 번에 개선한 배포 경험
한 번에 스트리밍 채팅, 호감도 연출, 자동 셀카, 큰 얼굴 온보딩까지 네 가지 기능을 함께 배포했다. 규모가 있는 변경인 만큼 팀 전체의 조율과 우선순위 결정이 필요했던 작업이다. 왜 이 모든 걸 한 번에 했는지, 그 과정에서 뭘 배웠는지 정리해보자.
읽기 → -
셀카 검증 LLM 중복 호출 제거로 응답 속도 233배 개선
셀카 처리 요청이 33~68초에서 0.14초로 떨어졌다. 대략 233배 빨라진 거다. 이건 단순히 "응 좋아" 정도로 넘어가기엔 너무 극적인 개선이라 기록해 둘 가치가 있다.
읽기 → -
채팅 코어와 캐릭터 이미지를 함께 프로젝트에 추가한 경험
채팅 코어를 추가하면서 동시에 캐릭터 셀카 이미지를 프로젝트에 정식 자산으로 등재했다. 한 커밋에 기능(코드)과 미디어(자산)를 함께 담으면서, 프로젝트 구조를 한 단계 더 정리한 경험을 정리해본다.
읽기 → -
Bing 웹마스터 API로 크롤링 수집 자동화 구축
구글 검색 콘솔처럼 Bing도 자동화 없이는 운영이 힘들다. 사이트맵을 수동으로 제출하고, 크롤 상태를 매일 확인하는 건 반복적이고 오류가 나기 쉽다. 이번에 Bing Webmaster API를 통합해서 우리 콘텐츠 수집 체인을 한 단계 격상시켰다.
읽기 → -
서브도메인 신규 서비스, 스캐폴딩으로 팀 협업 기반 구축
새로운 서브도메인 서비스 프로젝트를 시작할 때, 가장 먼저 해야 할 일은 코드를 짜는 게 아니라 팀이 협업할 '뼈대'를 만드는 것이다. 이번에 진행한 프로젝트 스캐폴딩 작업이 정확히 그것이었다.
읽기 → -
사이트맵 최신 발행일 자동 동기화로 SEO 크롤링 개선
처음엔 별거 아닌 것처럼 보였다. 블로그 피드 생성 스크립트가 RSS와 sitemap을 만들 때, sitemap의 <lastmod> 타임스탐프를 최신 글의 발행 날짜로 자동 갱신하는 기능 추가였거든. 근데 이 작은 변경이 지금까지 왜 미루고 있었는지, 또 어떤 이유로 이제야 우선순위를 올렸는지 되짚어보면 꽤 타당한 배경이 있다.
읽기 → -
블로그 피드 추가 후 사이트맵으로 크롤링 신호 최적화
블로그 피드를 포트폴리오에 새로 추가했다. 콘텐츠가 늘어났으니 검색 엔진도 이를 빨리 발견하고 색인해야 한다. 그래서 sitemap.xml을 갱신했는데, 단순한 파일 추가가 아니라 좀 더 의도적인 메타데이터 신호를 함께 설정했다.
읽기 → -
영문 포트폴리오에 블로그 피드 추가하며 배운 다국어 지원의 함정
포트폴리오 사이트 영문 버전(/en/)에 블로그 최신글 피드 섹션을 추가했다. 단순해 보이지만, 다국어 지원하는 사이트에서 기능을 추가할 때의 전형적인 실수를 피하는 과정이었다.
읽기 → -
포트폴리오 메인에 블로그 피드를 빌드 타임으로 연동한 방법
포트폴리오 사이트의 메인 페이지가 정적이라는 건 항상 신경 쓰였다. 블로그에선 꾸준히 기술 글을 올리고 있는데, 포트폴리오 방문자가 그 글들을 발견하려면 따로 블로그 섹션으로 들어가야 했다. 이번에 메인 페이지에 최신 블로그글 피드 섹션을 추가하기로 결정했다. 단순한 UI 개선처럼 보이지만, 포트폴리오-블로그 연동 구조를 어떻게 설계하느냐는 기술적 판단이
읽기 → -
Codex 런타임 검증 게이트 설계 의도를 팀 문서로 정리한 과정
Codex 시스템의 런타임 검증 게이트(codex_review.py)와 그 설계 철학을 CLAUDE.md에 정리하는 작업을 마무리했다. 단순히 "코드가 어떻게 돌아가는가"를 설명하는 것이 아니라, "이 검증 단계가 왜 여기에 있고, 어떤 의도로 작동하는지"를 팀이 공유할 수 있도록 문서화했다.
읽기 → -
자동화 판정에 교차검증 게이트를 더해 오류 비용 줄이기
claude 판정에 codex 런타임을 활용한 교차검증 게이트를 추가했다. codex_review.py를 중심으로 검증 로직을 정리하고, bot-action-worker, traffic-watcher, seo-monitor 같은 여러 자동화 시스템에 걸쳐 일관되게 적용한 작업이다.
읽기 → -
발행 진행 화면의 저조 상태 오독을 색상·경고·0건 표시로 개선
발행 진행 상황을 표시하는 스크립트에서 사용자가 상태를 오독할 여지가 있다는 걸 발견했다. 특히 저조한 상태일 때 시각적 신호가 혼란스러웠다. 이번에 상단 경고, 0건 구분, 그리고 상태별 색상 제어를 손봤다.
읽기 → -
GSC API 권한 범위 오류를 트래픽 감시 스크립트에서 수정한 과정
traffic-watcher 스크립트가 Google Search Console(이하 GSC) API와 통신하며 invalid_scope 에러를 던질 때 대응한 작은 수정이다. 권한 범위를 webmasters.readonly에서 webmasters로 확대했다. 단 한 줄 짜리 커밋처럼 보이지만, 그 안에 외부 API 통합 시 놓치기 쉬운 여러 패턴이 숨어 있
읽기 → -
보험·금융 토픽 자동보충이 일주일간 멈춘 원인과 재발 방지법
지난주 모니터링 대시보드를 확인하다가 이상한 신호를 포착했다. 토픽 자동보충 시스템이 6월 3일부터 0건을 발행하고 있었다. 보험/금융 도메인의 자동 발행 기능이 일주일을 꼬박 작동하지 않은 것. 문제는 생각보다 단순했다—봇 시스템이 마이그레이션되면서 디렉터리 경로가 /opt/X-bot에서 /opt/bots/X로 바뀌었는데, 우리의 자동화 스크립트들은 여전
읽기 →