brunch

“어, 이 뉴스 예전에 봤는데?”

텔레그램 챗봇 만들다 생긴 뜻밖의 교훈

by 채박사

요즘엔 정보가 너무 넘쳐나고, 이곳 저곳에서 정보를 얻는게 번거롭다.
아예 한 곳에서 정보를 취합해서 보고자 뉴스봇을 만들었었다.
처음에는 한국어 뉴스만 봤는데, 어제는 영어 뉴스를 공유 챗봇을 만들었다.
각각 텔레그램 채널로 따로 보내주니, 이보다 더 깔끔할 수 없다.

15분마다 자동으로 새 뉴스 긁고, SQLite 데이터베이스에 저장해서 중복도 막고,
1주일 지난 뉴스는 알아서 지워주니까 생각보다 안정적이었다.
그런데 문제가 하나 생겼다.


CIHJYPE43vRy75%2BTG4hKw%3D

채널이 늘어나니, 관리도 복잡해졌다

스크립트는 따로 관리를 하고 있었는데,

그로 인해서 터미널 챙이 여러개 열려 있게 된 것이다.

문제가 생길때마다 터미널 창을 여기저기 열어보면서 관리하는게 좀 성가시기도 해서,

파일을 하나로 통합해서 관리하기로 했다.

한국시간으로 밤 12시가 넘은 시간,

Cursor AI를 펼쳐놓고 해당 내용 통합을 진행했는데,
여기서 예상치 못한 일이 벌어졌다.


DB 초기화의 덫

한 5분이 지났나? 스크립트는 어느새 완성이 되어있었다.

새 스크립트를 적용한 뒤, 평소처럼 뉴스봇을 실행했다.

잠깐 다른걸 하다가 제대로 작동하나하고 채널을 확인했더니,

“어라, 이 뉴스 며칠전건데?”


그렇다. 예전 뉴스가 또 올라오고 있었다.
이상해서 확인해보니, 기존에 쓰던


sent_news.json


은 뉴스의 제목도 링크도 없이 해시값만 덩그러니 저장되어 있었다.

게다가 새로 만든 스크립트는 아예 다른 구조인


news (id, title, link, source, sent_at)


이 DB 테이블을 쓰고 있었던 것.
기존 구조와 완전히 달라서, 데이터 마이그레이션도 실패했다.


그래서 어떻게 했을까?

정리하면 이런 선택지가 있었다.

json 파일을 억지로 파싱해서 DB로 옮긴다 → 구조가 안 맞는다

DB 스키마를 바꾼다 → 기존 코드랑 안 맞는다

그냥 새로 시작한다 → ✔️ 가장 깔끔하다

그래서 기존 JSON은 백업만 해두고,
앞으로는 SQLite DB 하나로 통일해서 새롭게 관리하기로 했다.
물론 중복 방지, 자동 정리, 로그 기록 같은 기능은 그대로 유지했다.


요부분이 좀 재미있었는데, Cursor가 자기가 다시 해당 기능을 생성했다가, 기존에 있는 내용이 더 깔끔하다면서 기존것을 사용하기로 결정했다.

나름 구현한 내용중 어떤 것이 더 합리적인지도 판단이 가능해서 신뢰가 더 갔다.


지금은 어떻게 쓰고 있냐고요?

미국 경제 뉴스

한국어 투자 뉴스

각각 다른 텔레그램 채널로 전송

중복 없는 깔끔한 DB 관리

15분마다 확인해서 새로운 뉴스 전송

그리고 무엇보다 중요한 건,
이제는 시스템이 안정화돼서 더는 같은 뉴스가 반복되지 않는다(라고 쓰지만 문제가 확인되면 다시 디버깅!).


나처럼 작은 자동화를 꿈꾸는 사람에게

이걸 만들면서 느낀 건,
기능보다 흐름이 중요하다는 것이다.
구조를 어떻게 가져갈지, 언제 무엇을 버릴지,
이걸 판단하는 게 더 큰 기술이라는 걸 새삼 배웠다.

뉴스 하나도 “이거 나 봤던 거야!” 하고 스스로 판단해주는 시스템.
작지만 뿌듯하다.

tempImage3n7Dgw.heic Cursor AI에게 현재 작업 내용 정리 해달라고 요청한 내용
Screenshot 2025-05-14 at 9.30.30 AM.png Cursor AI가 정리한 작업 내용

#뉴스봇 #자동뉴스크롤러 #텔레그램봇 #파이썬자동화 #야후파이낸스 #네이버뉴스 #연합뉴스 #SQLite #뉴스자동전송 #개발일지 #사이드프로젝트 #개발블로그 #정보관리

keyword
작가의 이전글미국 베스트셀러 1위 "Let Them"을 읽고