자동화
n8n / 스크립트 / 봇
-
상 목록 조회가 화면에 안 띄우던 alias 예약어 버그
지난주에 상 조회 기능 데이터가 DB에서는 정상 반환되는데 화면에 나타나지 않는 버그를 잡았다. 원인은 SQL 쿼리의 alias가 DB의 예약어였기 때문. 백틱으로 처리해서 해결했는데, 이런 류 버그가 왜 자꾸 튀어나오는지, 어떻게 더 일찍 catch할 수 있을지 생각해보게 됐다.
읽기 → -
그룹 페이지에 수상 내역 추가로 프로필 완성도 올려
kpop 그룹의 프로필 페이지에 수상 정보를 추가했다. 적재 봇, UI 컴포넌트, 다국어 번역까지 한 번에 정리한 작업이었는데, 각 레이어에서 뭘 챙겨야 하는지 좋은 학습이 됐다.
읽기 → -
정산 도메인 규칙 분산을 단일진실로 통합 관리
도메인별 지침이 여러 곳에 흩어져 있는 문제를 정리했다. 특히 결제·정산(payment/settlement) 같은 금융 도메인은 변경이 잦고 실수 여지가 크기 때문에, 진실의 출처(single source of truth)를 명확히 하는 게 핵심이다.
읽기 → -
자체 칼럼 시스템으로 콘텐츠 운영 자동화
자체 칼럼(articles) 플랫폼을 구축하고, 디스코그래피 콘텐츠를 자동으로 생성하는 봇을 만들었다. 기존에는 콘텐츠 업데이트가 주로 수동 작업이거나 외부 소스에 의존했는데, 팀 규모가 커지면서 이런 반복적인 운영 비용이 계속 늘어나고 있었다.
읽기 → -
레거시 자동화 도구는 문서로 정리한다
docs/seo-infra.md에 archived 상태의 money-bot을 추가하고, orphan CLAUDE.md 커밋이 정상 케이스임을 명시했다. 작은 변경 같지만 팀 문서화 정책과 프로젝트 생명주기 관리에서 꽤 중요한 패턴이라 생각해서 기록해본다.
읽기 → -
봇별 지침 문서화로 운영 일관성 확보
gov-bot이라는 새 서버 봇을 위해 CLAUDE.md 파일을 생성했다. 한 줄짜리 commit처럼 보이지만, 이건 우리 멀티 봇 환경에서 지침 관리를 체계화하는 중요한 스텝이다.
읽기 → -
서버 봇 지침 분리로 자동화 시스템 단정화
money-bot 전용 CLAUDE.md를 생성하고 서버 환경에서 검증했다. 이 작업은 단순해 보이지만 팀의 자동화 시스템이 성장할 때 꼭 필요한 구조 정리였다.
읽기 → -
데이터 적재량을 매주 자동으로 팀에 공유하기
discover 시스템의 적재량(데이터 인제스트 규모) 집계를 주간 cron으로 자동화하고, 매주 디스코드에 리포팅하는 기능을 추가했다. 사실 단순한 모니터링 자동화 같지만, 뒤에는 팀의 운영 효율과 의사결정 가시성을 높이려는 의도가 있었다.
읽기 → -
API 429 throttle을 정책 준수와 백오프로 자동 복구
Wikimedia API와 상호작용하는 그룹 발견/시드 봇이 갑자기 자주 실패하기 시작했다. 원인은 API 요청 제한(throttle)에서 나온 429 응답을 제대로 처리하지 못한 것. Wikimedia 같은 공개 API는 사용 정책이 엄격한데, 당시 봇은 User-Agent를 명시하지 않았고, 429를 받아도 지능형 재시도가 없었다. 이번 작업으로 정책
읽기 → -
그룹 수집 요청 과다로 인한 API 오류 차단
외부 서비스와 연동하는 자동화 봇을 운영하다 보면 정기적으로 데이터를 수집해야 하는데, 이때 가장 자주 마주치는 문제가 API 레이트 제한이다. 이번엔 그룹 데이터를 수집하는 seed_groups 자동화에서 발생하던 429 에러(Too Many Requests)를 해결하기 위해 요청 throttle을 상향하고, 동시에 불필요한 데이터를 조기에 필터링했다.
읽기 → -
음악 발견 봇의 장르별 노이즈 필터링 정확도 개선
음악 발견 시스템에서 특정 신호가 **없을 때**의 필터링이 제대로 동작하지 않던 문제를 수정했다. 사소해 보이지만, 자동화 시스템에서 "조건부 처리"의 함정을 보여주는 좋은 사례다.
읽기 → -
한국 시그널 중심화로 발견 엔진 정확도 개선
그룹 발견 봇이 관련성 없는 해외 신호로 노이즈가 심했다. discover_groups.py 에서 해외 신호가 존재할 때만 제외하는 로직을 추가해서 재현율을 높였다. 핵심은 "단순 제외"가 아니라 "한국 스텁은 절대 버리지 않는다"는 전략이었다.
읽기 → -
웹 크롤링 정확도 높이고 속도 제한 회피
한국 그룹을 자동 발견하는 과정에서 두 가지 문제가 누적돼 있었다. 검색 결과에 부적절한 그룹들이 섞여 들어오는 것과, 외부 위키 API를 너무 빨리 두드려서 속도 제한(429)에 걸리는 것. 이번 fix에서 relevance 필터와 throttle 메커니즘을 함께 넣어서 정확도와 안정성을 동시에 높였다.
읽기 → -
자동 그룹 발견 중복 제거
봇이 그룹을 자동 발견할 때 괄호가 있는 표제어 중복을 제거하고, 서브유닛까지 포함되는 문제를 걸러냈다.
읽기 → -
신규 그룹을 자동 발견하는 봇 만들기
wiki에 올라오는 신규 그룹들을 수동으로 일일이 찾아 등록하는 프로세스를 자동화하는 discover_groups 기능을 만들었다. 연도별 카테고리를 주기적으로 스캔해서 발견된 그룹들을 시스템에 자동으로 반영하는 방식이다.
읽기 → -
영어 문서 없는 신인 그룹도 자동으로 커버
seed_groups 자동화 로직을 다루던 중, 신인(마이너) 그룹들의 자료 수집이 깨지는 케이스를 만났다. 원인은 단순했는데, 봇이 영어 Wikipedia만 참고하고 있었기 때문이다. 한국어 문서도 함께 찾도록 fallback을 추가해서 커버리지를 늘렸고, 이 과정에서 배운 몇 가지 패턴을 정리한다.
읽기 → -
검증된 자료요청으로 신뢰성 높이기
사용자가 추가되었으면 하는 자료나 콘텐츠를 직접 요청할 수 있는 채널이 필요했다. 많은 팀이 이런 피드백을 슬랙 DM이나 메일로 받다 보니 체계가 없었고, 실제 사용자 요구인지 스팸인지 구분하기도 어려웠다. 그래서 이번엔 위젯과 API를 함께 만들어 신뢰도 높은 채널로 만들기로 했다.
읽기 → -
사이트맵 중복 재제출 차단으로 리소스 낭비 방지
Google Search Console(이하 GSC)에 사이트맵을 등록하는 작업은 검색 인덱싱 파이프라인에서 기본이다. 그런데 우리 시스템에서 자동으로 사이트맵이 계속 반복적으로 재제출되는 현상을 발견했다. 한 번 등록되면 Google이 알아서 주기적으로 크롤링하기 때문에, 같은 사이트맵을 자꾸만 다시 보내는 건 불필요한 API 호출만 증가시킨다. _lib
읽기 → -
발행 후 검색 엔진 등록 자동화로 수동 작업 제거
지난주에 인덱싱 핑과 팀 알림을 발행 파이프라인과 한 곳에 묶어냈다. 내용 발행 직후 검색 엔진에 자동으로 크롤링을 요청하고, 동시에 Discord에도 현황을 보고하도록 흐름을 통합한 작업이다.
읽기 → -
멤버 프로필 자동 정제로 위키 품질 확보
멤버의 프로필 정보(bio)를 자동으로 정제하고 위키 품질을 일관되게 유지하는 시스템을 만들었다. 기존에 수동으로 관리하던 멤버 정보를 enrich_member_bio.py 봇으로 자동화하고, 이를 publish.sh 배포 파이프라인에 통합해서 매 배포 시점에 자동으로 실행되도록 했다.
읽기 →