자동화
n8n / 스크립트 / 봇
-
블로그봇 자동 생성 페이지에 SEO 메타 타이틀 주입한 과정
블로그 게시물을 자동으로 생성하는 봇 작업을 하다가, 생성된 페이지들이 검색 엔진에 제대로 노출되지 않는다는 피드백을 받았다. 원인은 단순했다. 봇이 INSERT할 때 metaTitle을 채우지 않고 있었고, 결과적으로 SEO에 필수인 메타 태그들이 빠진 채로 레코드가 저장되고 있었던 것. 이번 작업은 그 공백을 메우는 것이었다.
읽기 → -
본문 자동 분석으로 SEO 메타 태그 생성 자동화
본문 내용으로부터 페이지의 SEO 메타 태그(metaTitle, metaDesc)를 자동으로 생성하는 헬퍼 모듈을 만들었다. 단순한 기능 추가 같지만, 팀의 콘텐츠 관리 효율과 SEO 일관성에 꽤 실질적인 영향을 미친 작업이다.
읽기 → -
정부 연동 데이터 INSERT 시 SEO 메타데이터 자동 생성
gov-bot을 통해 INSERT되는 데이터들에 대해 SEO 메타데이터(metaTitle, metaDescription)를 LLM으로 자동 생성하는 기능을 추가했다. db.py에서 INSERT 로직이 호출될 때 seo_generate 함수를 연쇄 실행하도록 만들어서, 외부 데이터가 들어올 때마다 검색 최적화된 메타데이터가 함께 저장되게 한 것이다.
읽기 → -
봇 워커에 자동 상태 수정 액션 타입을 추가해 반복 수동 작업을 줄이다
봇 액션 워커 스크립트에 새로운 액션 타입인 autofix를 추가했다. 자동화 워크플로우가 단순 알림이나 데이터 조회를 넘어 실제 상태 수정까지 수행할 수 있게 된 작업이다.
읽기 → -
블로그 nginx에서 리다이렉트 롤백과 RSS CORS 문제 해결
blog 도메인의 nginx 설정을 정리하는 과정에서, 앞서 준비했던 301 리다이렉트를 되돌리고 동시에 RSS 피드의 CORS 문제를 해결했다. 겉보기 단순한 설정 변경이지만, 그 뒤에는 의사결정의 변화와 우선순위 조정이 있었다.
읽기 → -
크론 스크립트 백업과 실행 권한을 문서화해 운영 불확실성을 줄였다
프로덕션 환경에서 24/7 돌아가는 자동화 스크립트들의 설정을 백업하고 실행 권한 요구사항을 명확히 문서화했다.
읽기 → -
SEO 메타데이터 검증 크론을 코드로 버전 관리하기 시작했다
SEO 메타데이터 검증 크론 작업의 설정을 코드 저장소에 명시적으로 추적하는 작업을 했다. 자동화 작업(chore)이라고 표기했지만, 사실 운영 안정성과 팀 커뮤니케이션에 꽤 중요한 변경이었다.
읽기 → -
자동화 봇 브로드캐스트의 깨진 URL을 ID 기반으로 수정
money-bot이 보내는 broadcast 메시지의 URL을 레거시 형식 /{slug}/에서 새로운 형식 /p/{id}/로 변경했다. 작은 것 같지만 자동화 시스템의 신뢰성을 크게 좌우하는 변경이었다.
읽기 → -
nginx 사이트 자동 발견·등록으로 운영 수동 작업 제거
새로운 nginx 사이트를 수동으로 등록하는 번거로움을 줄이기 위해 자동 발견·등록 로직을 _lib에 추가했다.
읽기 → -
블로그 봇 마크다운 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 페이지의 메타정보도 자동으로 업데이트하도록 만들었다. 수동으로 처리하던 부분을 스크립트화해서 일관성과 생산성 둘 다 확보한 작업이다.
읽기 →