자동화
n8n / 스크립트 / 봇
-
높은 노출 기회 키워드 최우선으로 처리
발행봇의 키워드 처리 전략을 개선했다. Google Search Console(GSC) 데이터를 기반으로 "골든존" 키워드들—이미 검색 결과에 노출되고 있지만 순위가 아직 낮아 클릭 기회가 있는 키워드들—을 최우선으로 소비하도록 했다. keyword-discovery/kw_pool.py에 우선순위 로직을 추가한 작업인데, 내가 한 결정과 거기서 배운 점들을
읽기 → -
인증파일 root 소유 사고 자동 방어
인증 관련 스크립트들이 root 권한으로 실행되면서 인증파일의 소유권이 뜻하지 않게 root로 변경되는 사고가 발생했다. 평소엔 괜찮다가 특정 배포나 자동화 작업 직후 서비스가 갑자기 응답하지 않는 상황이 생기는데, 원인을 추적해보면 대부분 인증파일 접근 권한 문제더라. 이번에 이런 상황을 미리 감지하고 자동으로 복구할 수 있도록 방어 로직을 추가했다.
읽기 → -
가상계좌 정보 조작 방지
결제 플랫폼에서 가상계좌 발급 정보를 클라이언트가 마음대로 설정할 수 있던 문제를 서버 권위로 고쳤다.
읽기 → -
블로그 콘텐츠를 Dev.to에 자동 배포하기
블로그에 글을 올릴 때마다 손으로 Dev.to에도 동일한 내용을 복붙해서 올리던 반복 작업을 없애기로 했다. bot/generate.py에 Dev.to 신디케이션 로직을 추가해서 블로그 배포와 함께 자동으로 Dev.to에 콘텐츠가 올라가도록 정리했다.
읽기 → -
자동화 봇의 중복 청구를 원자적으로 처리
운영 자동화 시스템을 만들다 보면, 매일 반복되는 작업들을 배치 처리하는 **일일 봇**을 필요로 한다. 이번 작업은 그 봇이 여러 카테고리의 청구를 처리할 때 발생하는 중복 문제를 정면으로 마주쳤다. categoryId 추가, 인터리브 클러스터 선택, 원자적 중복 제거—세 가지 개선을 한 번에 적용했다.
읽기 → -
결제 웹훅 발신자 위조 공격 차단 강화
결제 플랫폼에서 들어오는 웹훅의 발신자 IP를 검증하는 방식을 개선했다. XFF(X-Forwarded-For) 헤더를 다룰 때 보안 취약점이 있었는데, 맨 뒤 값(위조 불가능한 IP)을 사용하도록 변경한 작업이다.
읽기 → -
사이트맵 크롤링 효율 높인 HEAD 메서드 지원
이번 주는 블로그 사이트의 검색 엔진 최적화(SEO) 관점에서 작은 하지만 의미 있는 두 가지를 손봤다. sitemap, robots.txt, RSS 피드 엔드포인트에서 HTTP HEAD 메서드를 지원하고, 정적 sitemap entries에 마지막 수정 시간(lastmod)을 추가했다.
읽기 → -
결제 webhook 정산·환불·보안 통합 완료
지난번부터 남겨둔 결제 플랫폼 webhook 처리 기능들을 마무리했다. 정산 후처리, 환불 시 역분개, IP 토글을 통한 접근 제어까지—세 가지 핵심 기능이 모두 구현되면서 webhook 통합이 한 단계 완성된 느낌이다.
읽기 → -
백업 로그인 중 cron 동시 실행 방지
백업 로그인 기능을 추가하면서 동시성 제어의 중요성을 다시 한 번 깨달았다. 계정 관리 스크립트가 자동화되면서 여러 작업이 병렬로 실행될 가능성이 높아졌고, 특히 사용자가 수동으로 백업 로그인을 수행 중일 때 cron이 동시에 계정 상태를 변경하려 하면 상태 불일치나 데이터 손상이 발생할 수 있다는 걸 깨달았다.
읽기 → -
LLM 없이도 정확한 정부 지원금 자동 판정
정부 지원금 자격 판단을 LLM에서 규칙 기반 파서로 전환했다. 자동 매칭 도구의 신뢰도를 높이기 위한 결정이었다.
읽기 → -
정부지원금 자격 확인 자동화로 신청 경험 개선
정부지원금 자격 조회를 자동으로 매칭해주는 새로운 도구를 추가했다. 사용자가 몇 가지 기본 정보만 입력하면, 시스템이 자동으로 자격 조건을 판단해 관련 지원금을 제시하는 방식이다. 이번 작업을 통해 사용자가 정부지원금에 접근하는 첫 번째 진입장벽을 상당히 낮출 수 있었다고 본다.
읽기 → -
대량 시드 스크립트의 제목 필드 오염 버그 수정
대량 데이터 생성 스크립트에서 제목 필드에 커밋메시지 값이 들어가는 버그를 발견하고 수정했다. 단순해 보이는 필드 매핑 오류였지만, 자동화된 작업이었기에 얼마나 많은 레코드가 오염될 수 있었을까 생각하니 체계적인 검증의 중요성이 느껴졌다.
읽기 → -
macOS launchd로 hedvion 저장소 자동 동기화 구현
팀의 개발 워크플로우에서 brainstorm 서비스로 푸시가 들어올 때마다 관련 저장소들을 자동으로 동기화해야 했다. 손으로 매번 동기화 명령어를 치는 것이 반복 작업이었고, 특히 로컬 개발 환경에서 이 과정이 자동화되면 팀의 컨텍스트 스위칭을 크게 줄일 수 있겠다고 판단했다. 그래서 macOS의 launchd를 활용해 이 작업을 자동으로 처리하는 에이전트
읽기 → -
발행 봇 알림을 실패 시에만 울리도록 개선
요 며칠 전 자동화 발행 봇의 알림 정책을 손봤다. 그동안 정상 완료했을 때도 매번 알림을 보내던 걸 끄고, 실패(fail count > 0)가 발생했을 때만 팀에 알리도록 바꿨다. 작은 변경처럼 보이지만, 운영 자동화 시스템의 신호-잡음 비율(signal-to-noise ratio)을 개선하는 꽤 중요한 결정이었다.
읽기 → -
스트리밍 채팅과 온보딩 마찰을 한 번에 개선한 배포 경험
한 번에 스트리밍 채팅, 호감도 연출, 자동 셀카, 큰 얼굴 온보딩까지 네 가지 기능을 함께 배포했다. 규모가 있는 변경인 만큼 팀 전체의 조율과 우선순위 결정이 필요했던 작업이다. 왜 이 모든 걸 한 번에 했는지, 그 과정에서 뭘 배웠는지 정리해보자.
읽기 → -
사이트맵 최신 발행일 자동 동기화로 SEO 크롤링 개선
처음엔 별거 아닌 것처럼 보였다. 블로그 피드 생성 스크립트가 RSS와 sitemap을 만들 때, sitemap의 <lastmod> 타임스탐프를 최신 글의 발행 날짜로 자동 갱신하는 기능 추가였거든. 근데 이 작은 변경이 지금까지 왜 미루고 있었는지, 또 어떤 이유로 이제야 우선순위를 올렸는지 되짚어보면 꽤 타당한 배경이 있다.
읽기 → -
보험·금융 토픽 자동보충이 일주일간 멈춘 원인과 재발 방지법
지난주 모니터링 대시보드를 확인하다가 이상한 신호를 포착했다. 토픽 자동보충 시스템이 6월 3일부터 0건을 발행하고 있었다. 보험/금융 도메인의 자동 발행 기능이 일주일을 꼬박 작동하지 않은 것. 문제는 생각보다 단순했다—봇 시스템이 마이그레이션되면서 디렉터리 경로가 /opt/X-bot에서 /opt/bots/X로 바뀌었는데, 우리의 자동화 스크립트들은 여전
읽기 → -
자동액션 워커·트래픽·SEO 감시의 판단 모델을 Opus로 격상
자동액션 트리거의 judgment 호출을 Claude Sonnet에서 Opus 4.8로 업그레이드했다. 세 곳의 워커/감시 스크립트에서 의사결정을 담당하는 부분을 일괄 변경한 작업이다.
읽기 → -
OAuth 인증 크론 주기를 30분으로 단축해 장애 감지 시간을 줄인 이야기
지난주 OAuth 인증 체크 크론이 23시간 동안 401 에러를 놓쳤다. 단순한 통신 실패가 아니라, 시스템이 정상 작동하는 줄 알았는데 실제로는 외부 인증 토큰이 만료되거나 갱신되지 않은 상태였다. 문제 대응 이후 우리 팀은 README에 문서화되어 있던 auth-check 크론의 실행 주기를 재설정했다.
읽기 → -
인증 체크 크론에 백업을 추가해 자동화 신뢰도를 높인 과정
두 개의 인증 체크 크론(codex, claude)에 대한 백업을 추가했다. 일반적으로 단순 파일 추가처럼 보이지만, 운영 관점에서는 자동화 시스템의 신뢰도를 한 단계 높이는 작업이다.
읽기 →