자동화
n8n / 스크립트 / 봇
-
웹 크롤링 정확도 높이고 속도 제한 회피
한국 그룹을 자동 발견하는 과정에서 두 가지 문제가 누적돼 있었다. 검색 결과에 부적절한 그룹들이 섞여 들어오는 것과, 외부 위키 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 배포 파이프라인에 통합해서 매 배포 시점에 자동으로 실행되도록 했다.
읽기 → -
날조 없이 DB 팩트로 자동 설명 생성하기
새 피처가 나오거나 운영 데이터가 쌓이면, 그것을 설명하는 텍스트가 필요한 순간이 온다. 멤버의 소개글, 앨범의 분석 결과, 혹은 이벤트의 요약—이런 일들은 수작업으로 하면 비용이 크고 일관성도 떨어진다. 그래서 자동화를 생각하는데, 많은 팀이 바로 LLM 을 떠올린다. 빠르고 유연하고 그럴듯하니까. 하지만 이번에는 다르게 접근하기로 했다.
읽기 → -
그룹명 자동 수집 중 위키 disambiguation 오류 수정
위키 API로 음악 그룹 정보를 자동 수집하면서, 짧고 모호한 그룹명이 여러 검색 결과를 동시에 반환하는 문제를 만났다. 실제로는 한 음악 그룹만 필요한데도 disambiguation 페이지가 걸려서 원하지 않는 결과물들이 섞이곤 했는데, 이번에 정확히 타겟 article을 검증하고 disambiguation을 우회하는 로직을 추가했다.
읽기 → -
그룹 부분 갱신 시 기존 데이터 손상 막기
그룹 메타 갱신 스크립트를 자동화하면서 마주친 딜레마가 있었다. 메타데이터(이름, 설명, 썸네일)만 최신화하고 싶은데, 스크립트가 멤버나 출처 정보까지 밀어넣지 않도록 어떻게 할 것인가. 이번에 seed_groups에 --refresh 모드와 idempotent 가드를 추가해서 이 문제를 풀었다.
읽기 → -
생일·컴백·신곡을 한눈에
팬들이 자주 놓치는 정보들—생일 축하, 컴백 카운트다운, 최근 발매—을 한곳에서 보도록 /today 페이지를 새로 만들었다. "라이브 레이어"라고 부르는 이 기능은 단순한 정보 나열이 아니라, 자동화 봇이 지속적으로 데이터를 보강하고, 캘린더 구독(.ics)까지 지원하는 통합 대시보드다.
읽기 → -
신상 그룹 등록 프로세스 완전 자동화
신상 그룹을 만들 때마다 시스템 여러 곳을 손으로 거쳐야 했다. 초기 데이터 시드부터 스케줄 설정, 소식 발행, 다국어 번역까지 일관성 있게 처리하려면 수작업과 체크리스트가 필수였는데, 이번에 이 전체 흐름을 하나의 스크립트로 자동화했다.
읽기 → -
사이트맵 에러를 자동으로 잡고 고치는 모니터링 루프
Google Search Console 의 사이트맵 에러들을 자동으로 감시하고, 발견한 에러를 곧바로 개선하는 루프를 만들었다. 지금까지는 에러를 감시하기만 했다면, 이번엔 감시 다음의 액션까지 자동화했다. 팀 입장에서는 더 이상 사람이 개입할 필요 없이 시스템이 스스로 돌아가는 상태가 됐다는 뜻이다.
읽기 → -
실행 진척도 가시화로 다음 단계 우선순위 정하기
GSC 자동화 계획 문서에 단계별 실행 완료 체크리스트와 자동화 수준 메모를 정리했다. 단순 문서 정리처럼 보이지만, 이 작업은 팀의 의사결정 속도와 투명성을 크게 좌우한다.
읽기 → -
죽은 사이트맵 자동 감지해 GSC 제출 실패 줄임
사이트맵을 검색 엔진에 제출하는 작업을 자동화했을 때, 문제가 하나 있었다. 옛날에 삭제했거나 리다이렉트된 사이트맵을 여전히 제출 대상에 포함해서, 매번 제출 실패 로그가 쌓이는 거다. 이번에는 제출 전에 그 사이트맵이 정말 살아 있는지 미리 체크하고, 죽은 것들은 자동으로 건너뛰는 기능을 _lib/gsc_submit.py 에 추가했다.
읽기 → -
자동화 봇의 호스트와 데이터 소스를 문서화하기
오늘 README를 갱신해서 자동화 봇의 운영 정보 두 가지를 명시했다. 그건 호스팅 주소와 뉴스 소스였다.
읽기 → -
위키 데이터 자동 추출·정제·저장 파이프라인 구축
최근에 위키 같은 외부 소스에서 데이터를 수동으로 추출하고 정제해서 DB에 넣던 작업을 자동화했다. 위키에서 Claude Sonnet으로 콘텐츠를 처리하고, 출처를 함께 기록한 상태로 upsert하는 봇을 3회차에 걸쳐 다듬었다.
읽기 → -
콘텐츠 발행 때 이미지 URL 자동 처리로 작업 단순화
콘텐츠를 발행할 때마다 이미지 URL을 수동으로 옮기고 링크를 설정하는 반복 작업을 자동화했다. lib_publish.js에서 발행 로직을 개선하고 ui.html의 UI 부분을 손봐서 이미지별로 링크를 선택할 수 있게 만들었다.
읽기 → -
이미지 배치 자동화로 발행 파이프라인 단순화
캐릭터 섹션의 이미지들을 자동으로 배치하는 기능을 lib_publish.js에 구현했다. 소제목별로 균등하게(약 3개씩) 이미지를 분배하는 로직인데, 이렇게 하니까 발행 시 수동 배치에 들이던 시간이 확 줄었다.
읽기 →