자동화는 끝이 아니었다
텔레그램 봇이 GeekNews 글을 분석해서 GitHub PR까지 자동으로 생성해주는 파이프라인을 만들었다. 처음에는 신기했다. 번호만내면 봇이 글을 쓰고 PR까지 올려주니까.
하지만 시간이 지나자 자동화의 끝에서 새로운 작업이 시작됐다. PR이 쌓이고, 제목이 비슷하고, 몇몇 날은 봇이 실행되지 않았다. 오늘 한꺼번에 정리하면서 몇 가지 문제를 명확히 볼 수 있었다.
문제 1: PR 제목이 다 똑같았다
봇은 PR 제목을 날짜 기반으로 생성했다. 같은 날 여러 글을 고르면 PR 목록에서 어떤 글인지 알 수 없었다.
| PR 제목 | 실제 아티클 |
|---|---|
| feat: geek-digest 2026-06-17 | SpaceX, Cursor 600억 달러 인수 |
| feat: geek-digest 2026-06-17 | AI가 만든 UI가 어색한 이유 |
| feat: geek-digest 2026-06-17 | AI가 조직의 판단력을 마취시키는 방식 |
제목만 보면 3개가 같은 PR이다. 나중에 찾아볼 때마다 일일이 파일을 봐야 했다. PR은 생성까지 자동이었지만, 관리는 사람의 몫이었다.
문제 2: cron이 실행을 놓쳤다
봇은 node-cron으로 매일 08:00에 크롤링하도록 설정되어 있었다. 프로세스는 계속 살아 있었다. 그런데 어느 날 로그를 보니 이런 메시지가 찍혀 있었다.
[NODE-CRON] missed execution at Sat Jun 20 2026 08:00:00
Possible blocking IO or high CPU user at the same process
같은 시간에 다른 작업이 블로킹되면 cron이 그냥 넘어간다. 봇이 살아 있다고 매일 실행되는 게 아니었다. 실행 보장은 별도 설계가 필요했다.
문제 3: 여러 글을 한 파일에 담으면 머지가 꼬인다
처음에는 선택한 글들을 하나의 MDX 파일에 담았다. 같은 날 3개를 고르면 제목, 태그, 본문이 섞여서 후처리가 번거로웠다. 파일명도 날짜 하나로 끝났기 때문에, 추가 발행하려면 이름 뒤에 수동으로 suffix를 붙이는 작업이 필요했다.
이 문제를 해결하기 위해 아이템별 개별 PR 생성으로 바꿨다. 선택한 개수만큼 PR이 생기지만, 머지와 배포가 훨씬 깔끔하다.
문제 4: Markdown 파싱이 메시지를 깨뜨렸다
처음에는 봇 메시지를 Markdown 형식으로 보냈다. GeekNews 제목에 _나 * 같은 문자가 들어가면 텔레그램이 문법으로 잘못 해석해서 메시지가 깨졌다. 제목은 코드가 아니라 그대로 보여야 했다. parse_mode를 아예 제거했다.
개선 후 현재 상태
- PR 제목 중복: 아티클 제목을 자동으로 넣는 개선은 아직 안 했다.
- cron miss: 실행 보장을 위한 fallback을 검토 중이다.
- 개별 PR 생성: 적용 완료. 여러 글 선택 시 각각 PR 생성.
- Markdown 파싱 제거: 적용 완료.
느낀 점
자동화 파이프라인의 어려움은 처음 만들 때가 아니라, 운영하면서 드러난다. 봇이 PR을 만들어주는 건 쉽다. 하지만 PR이 쌓이고, 제목이 중복되고, cron이 실행을 놓치면 사람이 다시 들어가서 정리해야 한다.
AI가 만들어낸 출력물도 결국 사람이 검증하는 지점에서 가치가 생긴다. 자동화의 목적이 "사람을 제외하는 것"이 아니라 "사람이 판단에 집중하게 하는 것"이라는 걸 다시 확인했다.
이 글은 텔레그램 봇으로 자동 생성한 초안을 직접 다듬었습니다.