-
CLAUDE 문서 슬림화로 봇 초기 로딩 시간 단축
전체 프로젝트 봇들이 초기화될 때마다 로드되는 공통 규칙 문서(hedvion-CLAUDE.md)가 점점 비대해지고 있었다. 광고 정책, 인증 정책, SEO 인프라 규칙 같은 여러 도메인의 상세 내용들이 한 파일에 뭉쳐 있었고, 이는 그 문서를 사용하는 모든 봇과 에이전트의 로딩 시간과 토큰 비용을 늘렸다.
읽기 → -
데이터 적재량을 매주 자동으로 팀에 공유하기
discover 시스템의 적재량(데이터 인제스트 규모) 집계를 주간 cron으로 자동화하고, 매주 디스코드에 리포팅하는 기능을 추가했다. 사실 단순한 모니터링 자동화 같지만, 뒤에는 팀의 운영 효율과 의사결정 가시성을 높이려는 의도가 있었다.
읽기 → -
API 429 throttle을 정책 준수와 백오프로 자동 복구
Wikimedia API와 상호작용하는 그룹 발견/시드 봇이 갑자기 자주 실패하기 시작했다. 원인은 API 요청 제한(throttle)에서 나온 429 응답을 제대로 처리하지 못한 것. Wikimedia 같은 공개 API는 사용 정책이 엄격한데, 당시 봇은 User-Agent를 명시하지 않았고, 429를 받아도 지능형 재시도가 없었다. 이번 작업으로 정책
읽기 → -
내부 가이드 문서의 팀원명 참조 정리
docs/hedvion-CLAUDE.md 파일을 정독하면서 특정 팀원명을 문서에서 완전히 제거했다. 겉으로는 간단한 텍스트 정리지만, 그 뒤에는 팀 문서를 어떻게 관리할 것인가에 대한 생각이 있었다.
읽기 → -
동료 이직, 팀 문서 실시간 업데이트
jerry라는 팀원이 팀을 떠났다. 경력 전환을 결심한 동료를 축하해주면서도, 한편 팀 구성이 확 줄어드는 현실이 와 닿았다. 그리고 그 즉시 해야 할 일이 떠올랐다. 내부 문서에 남겨둔 팀 멤버 정보를 업데이트하는 것. 얼핏 사소해 보일 수 있는 이 작업이, 실은 팀 리더로서 무시할 수 없는 책임이었다.
읽기 → -
그룹 수집 요청 과다로 인한 API 오류 차단
외부 서비스와 연동하는 자동화 봇을 운영하다 보면 정기적으로 데이터를 수집해야 하는데, 이때 가장 자주 마주치는 문제가 API 레이트 제한이다. 이번엔 그룹 데이터를 수집하는 seed_groups 자동화에서 발생하던 429 에러(Too Many Requests)를 해결하기 위해 요청 throttle을 상향하고, 동시에 불필요한 데이터를 조기에 필터링했다.
읽기 → -
계정 설정과 팀 지침을 버전 관리로 정리
서비스의 외부 계정 설정(GSC/AdSense 등)과 팀 개발 지침을 docs 디렉토리에 정리하고, git 저장소에 추가했다. 산재된 정보가 버전 관리되면서 팀 전체가 동일한 정보를 참고할 수 있는 구조가 갖춰졌다.
읽기 → -
프로젝트 전환 시 만나는 서버 함정 문서화
한 서비스에서 다른 서비스로 인수인계하거나 전환하는 과정은 생각보다 복잡하다. 겉으로는 "코드만 옮기고 배포하면 되지 않나" 싶지만, 실제로는 배포 환경, 네트워크 설정, 외부 연동 등 크고 작은 차이들이 도사리고 있다. psy에서 curiodot로 전환하면서 우리 팀이 마주한 서버 함정들—배포타겟, 포트, indexnow, 위젯 설정 관련 이슈들이—반복되
읽기 → -
검색 엔진 핑을 빌드 시스템으로 정식화
오래전부터 돌아가던 indexnow-ping 스크립트를 /opt/psy-build 라는 격리된 디렉토리에서 빼내 정식 빌드 파이프라인으로 옮기는 작업을 했다. 작은 변경으로 보일 수 있지만, 이 정식화 과정에서 배운 게 꽤 있어서 글로 남긴다.
읽기 → -
음악 발견 봇의 장르별 노이즈 필터링 정확도 개선
음악 발견 시스템에서 특정 신호가 **없을 때**의 필터링이 제대로 동작하지 않던 문제를 수정했다. 사소해 보이지만, 자동화 시스템에서 "조건부 처리"의 함정을 보여주는 좋은 사례다.
읽기 → -
한국 시그널 중심화로 발견 엔진 정확도 개선
그룹 발견 봇이 관련성 없는 해외 신호로 노이즈가 심했다. discover_groups.py 에서 해외 신호가 존재할 때만 제외하는 로직을 추가해서 재현율을 높였다. 핵심은 "단순 제외"가 아니라 "한국 스텁은 절대 버리지 않는다"는 전략이었다.
읽기 → -
웹 크롤링 정확도 높이고 속도 제한 회피
한국 그룹을 자동 발견하는 과정에서 두 가지 문제가 누적돼 있었다. 검색 결과에 부적절한 그룹들이 섞여 들어오는 것과, 외부 위키 API를 너무 빨리 두드려서 속도 제한(429)에 걸리는 것. 이번 fix에서 relevance 필터와 throttle 메커니즘을 함께 넣어서 정확도와 안정성을 동시에 높였다.
읽기 → -
도메인 전수 정리, 설정부터 배포까지 한눈에 확인
도메인과 경로명을 이전 명칭에서 새 명칭으로 전체 통일하는 작업을 마쳤다. 단순한 코드 리팩토링이 아니라 프로젝트 전반의 설정, 문서, 빌드, 배포 스크립트까지 걸쳐 있었기 때문에 생각보다 꼼꼼한 검증이 필요했다.
읽기 → -
자동 그룹 발견 중복 제거
봇이 그룹을 자동 발견할 때 괄호가 있는 표제어 중복을 제거하고, 서브유닛까지 포함되는 문제를 걸러냈다.
읽기 → -
신규 그룹을 자동 발견하는 봇 만들기
wiki에 올라오는 신규 그룹들을 수동으로 일일이 찾아 등록하는 프로세스를 자동화하는 discover_groups 기능을 만들었다. 연도별 카테고리를 주기적으로 스캔해서 발견된 그룹들을 시스템에 자동으로 반영하는 방식이다.
읽기 → -
영어 문서 없는 신인 그룹도 자동으로 커버
seed_groups 자동화 로직을 다루던 중, 신인(마이너) 그룹들의 자료 수집이 깨지는 케이스를 만났다. 원인은 단순했는데, 봇이 영어 Wikipedia만 참고하고 있었기 때문이다. 한국어 문서도 함께 찾도록 fallback을 추가해서 커버리지를 늘렸고, 이 과정에서 배운 몇 가지 패턴을 정리한다.
읽기 → -
자료요청 위젯과 카운팅을 분리하다
사용자가 콘텐츠를 직접 요청할 수 있는 자료요청 위젯을 Astro 프론트엔드에 추가하면서, 그 요청을 추적하고 집계하는 별도의 카운터 서버를 구축했다.
읽기 → -
검증된 자료요청으로 신뢰성 높이기
사용자가 추가되었으면 하는 자료나 콘텐츠를 직접 요청할 수 있는 채널이 필요했다. 많은 팀이 이런 피드백을 슬랙 DM이나 메일로 받다 보니 체계가 없었고, 실제 사용자 요구인지 스팸인지 구분하기도 어려웠다. 그래서 이번엔 위젯과 API를 함께 만들어 신뢰도 높은 채널로 만들기로 했다.
읽기 → -
멤버 검색 페이지 추가로 다국어 라우팅 기초 마련
멤버 검색 페이지를 추가하고 데이터 시드를 설정하는 작업을 했다. 단순히 새로운 페이지 하나를 띄우는 것처럼 보이지만, 사실은 팀이 앞으로 다국어 기능을 확장할 때 따를 수 있는 패턴을 정립한 것이다.
읽기 → -
광고 문의 폼 도배 방어 추가
광고 관련 문의가 늘면서 스팸성 자동 제출이 문제가 되기 시작했다. 단순히 폼을 여러 번 클릭하거나 스크립트로 반복 요청을 보내는 수준을 넘어, 특정 IP에서 짧은 시간에 대량 제출되는 패턴이 눈에 띄었다. 운영자가 처리해야 할 건전하지 않은 요청들이 계속 쌓이고, 정말 필요한 고객 문의를 구분하기 어려워지는 상황이었다. 이번 작업에서는 서버 레벨의 rat
읽기 →