자동화
n8n / 스크립트 / 봇
-
블로그 봇 마크다운 JSON 파싱 실패율을 낮춘 방법
블로그 자동화 봇이 마크다운 형식의 JSON 데이터를 파싱할 때 자꾸 실패하는 문제가 있었다. parse_json_block 함수의 호환성을 개선해 다양한 포맷을 수용하도록 했다.
읽기 → -
CMS 사이트 메타데이터를 LLM으로 자동 학습하는 구조 구축
CMS 시스템의 각 사이트가 메타데이터를 자동으로 학습하도록 site_learner.py를 구현했다. Claude CLI와 Sonnet 모델을 활용해 cms_site.meta 스키마를 동적으로 파악하는 작업이었다.
읽기 → -
자동화 사이트 정보를 단일 출처로 통합해 일관성 확보
자동화 시스템이 커질수록 설정 관리가 복잡해진다. 이번엔 hedvion 자동화의 사이트 정보를 한 곳으로 모아, 일관성을 높이는 구조로 개선했다.
읽기 → -
자동화 봇 상태 관리를 디스코드 로그와 파일로 이원화해 신뢰성 확보
자동화 봇의 상태 추적 방식을 전면 개선했다. 기존 방식에서 discord_review_log와 review_state.json 기반으로 재설계하면서, 분산 시스템에서 단일 소스(source of truth)를 확보할 수 있게 됐다.
읽기 → -
Discord 봇 버튼 응답 지연을 큐 기반 워커로 해결
Discord 봇의 버튼 클릭 이벤트를 안정적으로 처리하기 위해 큐 기반의 워커 시스템을 만들었다. 처음에는 버튼 클릭이 들어오면 바로 처리했는데, 동시 요청이 많아지거나 각 작업에 시간이 걸리면서 문제가 생기기 시작했다. 그래서 액션을 큐에 넣고 별도 워커가 처리하는 구조로 변경했다.
읽기 → -
codex OAuth 토큰 만료를 자동 감지해 재로그인하는 cron 자동화
codex OAuth 토큰 만료를 자동으로 감지하고 재로그인하는 cron 작업과 스크립트를 추가했다. 개발 환경의 인증 문제가 반복되지 않도록 하는 작업이었다.
읽기 → -
리뷰 경고 상태를 기한 초과 시 자동 결격 처리로 전환
review_loop.py에서 WARN 상태를 결격 처리로 자동 전환하는 로직을 구현했다. 경고 상태가 일시적이라는 걸 명확히 하면서도, 계속 방치되면 자동으로 처리하는 흐름이 필요했다.
읽기 → -
Playwright 산출물 7일 자동 삭제로 디스크 용량 문제 해결
Playwright 테스트 실행 시마다 쌓이는 스크린샷, 비디오, 트레이스 파일들을 7일 뒤 자동으로 삭제하는 cron 작업을 추가했다. 저장소 용량이 계속 증가하던 문제를 근본적으로 해결한 일이다.
읽기 → -
리뷰 반려 판정을 학습 회로에 자동 연결한 방법
리뷰 루프에서 REJECT 판정이 나면 자동으로 ARCHIVED 상태로 전환하고, 그 판정 데이터를 학습 회로에 연결했다. 단순한 상태 전환 자동화를 넘어, 반려 판정 정보가 다음 리뷰 판단에 피드백되도록 설계한 작업이다.
읽기 → -
정적 사이트 메타 태그를 트래픽 감시로 자동 갱신하다
정적 HTML 사이트의 메타 정보를 자동으로 갱신하는 기능을 추가했다. traffic-watcher 라는 트래픽 관찰 도구를 통해 사이트 메타데이터를 주기적으로 최신 상태로 유지하는 작업인데, 이게 생각보다 여러 층면의 고민이 담긴 기능이라 풀어써본다.
읽기 → -
학습 사이트 콘텐츠 확장 시 CMS 메타정보 자동 동기화
자동 학습 사이트의 콘텐츠를 확장하면서 동시에 CMS 페이지의 메타정보도 자동으로 업데이트하도록 만들었다. 수동으로 처리하던 부분을 스크립트화해서 일관성과 생산성 둘 다 확보한 작업이다.
읽기 → -
저성과 글 제목을 자동 갱신하는 트래픽 감시 파이프라인 구축
traffic-watcher 에 메타 업데이트 기능을 활성화해서 하위 20% 성과 글들의 제목을 자동으로 갱신하는 파이프라인을 시작했다.
읽기 → -
GSC·애드센스 데이터로 광고 트래픽 룰 자동 추출한 경험
GSC(Google Search Console)와 AdSense 데이터를 활용해 traffic-watcher 스크립트에 자동 회피/권장 룰 추출 기능을 넣었다. 사실 이 작업은 꽤 전형적인 "수동 운영 → 자동화"의 스토리지만, 그 과정에서 느꼈던 것들을 정리해본다.
읽기 → -
자동화 봇을 위한 SSH 원격 호출 레이어 구축
원격 호출을 위한 SSH wrap 레이어를 구성해서 자동화 봇의 접근성을 한 단계 높였다. 단순해 보이는 이 작업이 팀 차원의 배포/운영 자동화 구조를 어떻게 바꿨는지 정리해본다.
읽기 → -
봇 자동화 공통 헬퍼와 저장소 구조를 처음부터 제대로 잡은 이유
봇 자동화 시스템의 기반을 다지는 첫 commit이었다. 사내 여러 팀에서 필요로 하는 공통 헬퍼와 운영 스크립트들을 정리하고 저장소 구조를 확립하는 작업이었다.
읽기 → -
봇 자동화를 SDK 직접 호출에서 CLI 헬퍼로 전환해 팀 구독 비용 일원화
보트 자동화 로직에서 Anthropic SDK를 직접 호출하는 방식에서 Claude CLI 헬퍼로 전환했다. 단순한 라이브러리 교체처럼 보이지만, 이 결정 뒤에는 구독 모델과 요금 최적화에 대한 생각이 있었다.
읽기 → -
봇 API 비용 절감을 위해 모델을 다운그레이드한 결과
지난 달 봇의 모델을 Claude Sonnet에서 Haiku로 다운그레이드했다. 개인 API 키 사용 비용을 줄이기 위한 결정이었는데, 이 작업을 통해 모델 선택과 비용 최적화 사이의 트레이드오프를 다시 생각해볼 수 있었다.
읽기 → -
공유 결제 웹훅에서 외부 주문 이벤트 걸러내기
공유 조직 웹훅에서 들어오는 외부 주문을 걸러내는 작업을 했다.
읽기 → -
Discord 알림과 검수 루프를 모듈로 분리해 텔레봇에 붙인 이유
오늘 telebot 쪽에 Discord 연동 두 개 모듈을 새로 붙였다. discord_post.py와 review_loop.py — 이름만 봐도 역할이 나뉘는 구조다.
읽기 → -
번호 생성기 페이지에 광고 인터리브 배치 적용한 과정
번호 생성기 페이지에 광고 인터리브 배치를 직접 손댔다.
읽기 →