안녕하세요 케이입니다.

처음 이걸 시작할 때만 해도 텔레그램 봇이 정확히 어떻게 움직이는지 잘 몰랐습니다.

API라는 말은 많이 들어봤지만 정확히 어떤 역할을 하는지도 몰랐고

Webhook은 더 생소했습니다.

Google Apps Script도 처음 사용했습니다.

처음 목표는 정말 단순했습니다.

내가 관심 있는 뉴스만 텔레그램으로 자동으로 받아보고 싶다.

딱 이 정도였습니다.

그런데 하나씩 직접 만들어보다 보니 생각보다 훨씬 많은 기능을 만지게 됐습니다.

그리고 지금은 정해진 시간에 관심 뉴스를 모으고, 필요 없는 내용은 걸러내고, AI가 요약한 뒤 텔레그램으로 받아보는 정도까지 만들게 됐습니다.

이번 글에서는 지금까지 제가 실제로 어떤 순서로 만들었고 어디에서 가장 많이 막혔는지 전체 과정을 한번 정리해보려고 합니다.

시작은 BotFather였습니다

가장 먼저 한 건 텔레그램 봇을 만드는 일이었습니다.

BotFather에서 새 봇을 만들고 토큰을 발급받았습니다.

처음에는 이 토큰이 정확히 뭔지도 몰랐습니다.

지금은

내가 만든 텔레그램 봇을 코드에서 사용할 수 있게 해주는 중요한 인증 정보

정도로 이해하고 있습니다.

이 토큰이 있어야 Google Apps Script에서 텔레그램으로 메시지를 보내거나 봇과 연결할 수 있었습니다.

그다음 Google Apps Script를 연결했습니다

처음에는 뉴스봇을 만들려면 별도의 서버를 운영해야 하는 줄 알았습니다.

그런데 Google Apps Script를 이용하면 별도 서버 없이도 간단한 웹앱을 만들 수 있었습니다.

저처럼 개발 환경을 따로 준비하기 어려운 사람에게는 이 부분이 꽤 편했습니다.

처음에는 doPost()라는 함수도 생소했습니다.

지금은 텔레그램에서 메시지가 들어왔을 때 가장 먼저 받는 입구 같은 역할이라고 이해하고 있습니다.

예를 들어 텔레그램에서 제가

/news

라고 보내면

그 메시지가 Webhook을 통해 Google Apps Script로 전달되고

doPost()에서 내용을 확인한 뒤

뉴스 검색 기능을 실행하는 식이었습니다.

가장 오래 막혔던 건 Webhook이었습니다

전체 과정에서 가장 답답했던 부분을 하나 고르라면 저는 Webhook이었습니다.

처음에는 텔레그램에서 아무리 메시지를 보내도 답장이 오지 않았습니다.

설정도 다시 하고

코드도 다시 보고

배포도 다시 했습니다.

특히 302 오류가 계속 나왔을 때는 뭐가 잘못된 건지 전혀 감이 없었습니다.

지금 생각해보면 이 과정에서

텔레그램

Webhook

Google Apps Script 웹앱

이 세 가지가 어떻게 연결되는지를 가장 많이 배웠던 것 같습니다.

당시에는 너무 답답했지만 지나고 보니 오히려 전체 구조를 이해하는 데 도움이 됐습니다.

네이버 검색 API를 붙였습니다

텔레그램에서 메시지를 주고받는 게 정상적으로 된 뒤 뉴스 검색 기능을 붙였습니다.

이때 네이버 검색 API를 사용했습니다.

Client ID와 Client Secret을 준비하고

검색어를 API로 보내서 결과를 받아왔습니다.

처음에는 API라고 하면 굉장히 어려운 기술이라고 생각했습니다.

그런데 실제로 사용해보니까 제가 이해한 방식은 이랬습니다.

제가 직접 네이버 검색창을 열고 검색하는 대신

프로그램이 네이버 쪽에

“이 검색어 결과를 보내줘.”

라고 요청하는 방식이었습니다.

그리고 네이버에서 받은 결과 중 제목과 링크 같은 정보를 텔레그램으로 다시 보내는 것입니다.

이걸 직접 해보고 나니까 API라는 말이 조금 덜 어렵게 느껴졌습니다.

처음 뉴스가 왔을 때는 그것만으로 만족했습니다

처음 텔레그램에 뉴스 제목과 링크가 도착했을 때는 굉장히 만족했습니다.

사실 기능 자체는 단순했습니다.

검색어 입력

→ 네이버 API 검색

→ 결과 받아오기

→ 텔레그램으로 보내기

이 정도였습니다.

그런데 직접 만들어서 결과가 돌아오니까 꽤 신기했습니다.

문제는 실제로 며칠 사용하면서부터 시작됐습니다.

뉴스가 너무 많이 왔습니다

처음에는 검색 결과가 많으면 좋을 줄 알았습니다.

그런데 뉴스가 너무 많이 오니까 오히려 보기 힘들었습니다.

그래서 뉴스 개수를 5개 정도로 제한했습니다.

이때 처음 반복문 안에서

5개까지만 보내기

같은 기능을 수정해봤습니다.

코드를 전부 이해하지는 못했지만

어떤 숫자가 결과 개수에 영향을 주는지 알게 되면서 직접 조정할 수 있었습니다.

같은 뉴스가 계속 나왔습니다

뉴스 개수를 줄이고 나니 이번에는 같은 기사가 반복해서 보였습니다.

그래서 이미 보낸 뉴스 링크를 저장하고

같은 링크가 다시 나오면 건너뛰도록 만들어봤습니다.

이때 PropertiesService를 사용했습니다.

처음에는 이름도 어려웠는데 결국 제가 이해한 건

작은 저장 공간

정도였습니다.

한 번 보낸 뉴스 주소를 저장해두고

다음 검색 때 같은 주소가 있는지 확인하는 방식이었습니다.

원하는 언론사만 남겨봤습니다

중복을 줄이고 나니까 이번에는 출처가 신경 쓰였습니다.

제가 자주 보는 언론사도 있지만

굳이 보고 싶지 않은 사이트도 섞여 나왔습니다.

그래서 뉴스 링크 안에 특정 사이트 주소가 들어 있는지 확인해서

원하는 언론사만 남기거나

반대로 특정 사이트는 제외하는 방식도 만들어봤습니다.

이때부터 뉴스 검색보다

필터링이 더 중요할 수도 있겠다

는 생각을 하게 됐습니다.

관심 없는 단어도 제외했습니다

같은 검색어 안에서도 제가 관심 없는 내용이 섞였습니다.

예를 들어 검색어는 맞지만 주제는 제가 원하는 방향과 다른 기사들이었습니다.

그래서 제외 키워드 목록을 만들었습니다.

제목 안에 특정 단어가 들어가면 아예 보내지 않도록 했습니다.

이 기능까지 붙이고 나니까 뉴스 결과가 처음보다 훨씬 깔끔해졌습니다.

제목만 보는 것도 불편했습니다

처음에는 제목과 링크만 있으면 충분할 줄 알았습니다.

그런데 제목만 봐서는 어떤 내용인지 잘 모르겠는 경우가 많았습니다.

그래서 검색 결과에 들어 있는 description을 함께 표시했습니다.

기사 본문 전체는 아니지만 간단한 설명이 같이 나오니까 링크를 누르기 전에 내용을 어느 정도 판단할 수 있었습니다.

메시지 모양도 직접 바꿨습니다

기능이 늘어나면서 텔레그램 메시지가 점점 지저분해졌습니다.

그래서 제목은 굵게 표시하고

설명은 짧게 줄이고

긴 링크는 기사 보기처럼 바꿨습니다.

이모지도 조금 넣었습니다.

처음에는 이런 디자인이 별로 중요하지 않다고 생각했는데

매일 사용하는 도구가 되니까 생각보다 중요했습니다.

눈에 잘 들어와야 실제로 계속 사용하게 됐습니다.

검색어를 저장했습니다

매번

/news

를 입력하고

인공지능

삼성전자

환율

같은 검색어를 다시 입력하는 것도 귀찮아졌습니다.

그래서 자주 보는 검색어를 저장하는 기능을 만들었습니다.

/add

로 키워드를 추가하고

/remove

로 지우고

/list

로 확인하고

/mynews

로 저장된 뉴스를 한 번에 검색하는 방식이었습니다.

이 시점부터 단순 테스트용 봇보다는 실제로 제가 쓰는 도구라는 느낌이 많이 들었습니다.

그다음에는 완전히 자동으로 돌렸습니다

아무리 /mynews가 편해도 결국 제가 직접 눌러야 했습니다.

그래서 Google Apps Script 트리거를 이용해서 정해진 시간에 자동으로 실행되게 했습니다.

아침에 제가 아무것도 하지 않아도 텔레그램으로 뉴스가 들어왔습니다.

이때부터 처음 생각했던

뉴스 자동수집

이라는 목적에 제대로 가까워진 느낌이었습니다.

자동화가 되니까 오류 확인도 중요해졌습니다

직접 명령어를 실행할 때는 바로 문제가 보입니다.

하지만 자동으로 돌아가게 해놓으면 제가 자고 있을 때 오류가 날 수도 있습니다.

그래서 Google Apps Script 실행 기록을 보기 시작했습니다.

실패한 함수가 무엇인지

몇 번째 줄에서 문제가 생겼는지

어떤 값이 들어왔는지

조금씩 확인했습니다.

처음에는 오류 메시지만 보면 겁부터 났는데 지금은 어디부터 확인해야 하는지 정도는 알게 됐습니다.

코드보다 배포 때문에 안 되는 경우도 많았습니다

이 과정에서 알게 된 게 하나 있습니다.

무조건 코드가 문제인 것은 아니었습니다.

코드를 수정했는데 반영이 안 되는 경우도 있었습니다.

이때는

저장

배포

웹앱 URL

Webhook 주소

이런 부분을 같이 확인해야 했습니다.

처음에는 코드만 계속 고쳤지만 나중에는

“이건 연결 문제일 수도 있겠다.”

라고 생각하게 됐습니다.

RSS도 직접 사용해봤습니다

뉴스를 가져오는 방법이 API만 있는 줄 알았는데 RSS도 있었습니다.

직접 사용해보니 둘은 조금 달랐습니다.

제가 느끼기에는

API는 검색

RSS는 구독

에 가까웠습니다.

여러 언론사의 특정 주제를 찾을 때는 API가 편했고

특정 사이트의 새 글만 계속 보고 싶을 때는 RSS가 편했습니다.

그래서 지금은 둘 중 하나가 무조건 더 좋다기보다 목적에 따라 사용하면 된다고 생각합니다.

마지막에는 AI까지 연결했습니다

뉴스를 자동으로 받아도 결국 읽어야 합니다.

그래서 AI를 이용해서 뉴스 설명을 짧게 요약해봤습니다.

처음에는 그냥

짧게 요약해줘

라고 했습니다.

그런데 결과 길이가 들쭉날쭉했습니다.

그래서 나중에는 아예 세 줄 형식을 정했습니다.

무슨 일이 있었는지

왜 중요한지

추가로 알아둘 내용

이런 식으로 형식을 정해주니까 훨씬 읽기 편해졌습니다.

여러 뉴스를 하나의 브리핑으로 만들었습니다

뉴스 하나마다 세 줄 요약을 붙이는 것도 편했지만 메시지가 여러 개 오는 문제는 남았습니다.

그래서 마지막에는 여러 뉴스를 한꺼번에 AI에 보내고

오늘의 관심 뉴스

라는 하나의 브리핑으로 만들었습니다.

아침에 텔레그램을 열면

오늘 중요한 뉴스가 몇 가지 주제로 나뉘어 있고

각각 짧은 설명이 붙어 있는 방식입니다.

원문이 궁금할 때만 아래 링크를 누르면 됩니다.

제가 처음 상상했던 개인 뉴스 비서에 가장 가까운 형태였습니다.

지금 전체 구조를 아주 쉽게 정리하면 이렇습니다

제가 만든 뉴스 자동화는 현재 대략 이런 순서로 움직입니다.

정해진 시간이 되면 자동 실행

→ 저장된 관심 키워드 확인

→ API 또는 RSS에서 뉴스 수집

→ 이미 본 뉴스 제거

→ 원하지 않는 언론사 제외

→ 관심 없는 단어 제외

→ 필요한 뉴스만 남기기

→ AI로 짧게 정리

→ 오늘의 뉴스 브리핑 만들기

→ 텔레그램으로 보내기

글로 한 번에 적어놓으면 상당히 복잡해 보입니다.

하지만 중요한 건 저는 이걸 한 번에 만들지 않았다는 것입니다.

기능 하나씩만 붙였습니다

처음부터

“AI 뉴스 자동화 시스템을 만들어야겠다.”

라고 했다면 아마 중간에 포기했을 것 같습니다.

실제로 제가 한 건 훨씬 단순했습니다.

텔레그램 답장 한 번 받아보기

뉴스 하나 검색해보기

결과 5개만 보내보기

중복 뉴스 하나 제거해보기

검색어 하나 저장해보기

이런 식이었습니다.

하나가 되면 그다음 기능을 붙였습니다.

이 방법이 저처럼 코딩을 거의 모르는 사람한테는 훨씬 부담이 적었습니다.

지금도 코드를 처음부터 작성하라고 하면 어렵습니다

여기까지 만들었다고 해서 제가 코딩을 할 줄 안다고 생각하지는 않습니다.

아무것도 없는 화면에

“뉴스봇을 처음부터 만들어보세요.”

라고 하면 여전히 어렵습니다.

다만 처음과 비교하면 달라진 부분은 있습니다.

코드를 보면

이 부분은 텔레그램 메시지를 받는 곳

이 부분은 검색하는 곳

이 부분은 중복을 확인하는 곳

이 부분은 메시지를 보내는 곳

정도는 대략 구분할 수 있습니다.

오류가 나도 무조건 처음부터 다시 만들지는 않습니다.

어디까지 정상적으로 작동하는지 하나씩 확인합니다.

저한테는 이 변화가 가장 컸습니다.

AI를 활용했지만 제가 직접 해본 과정이 중요했습니다

이번 작업을 하면서 코드 작성이나 오류 해결에 AI의 도움을 많이 받았습니다.

저처럼 코딩을 모르는 사람 입장에서는 혼자 검색하면서 만들었다면 여기까지 오기 어려웠을 것 같습니다.

그런데 AI가 코드를 만들어준다고 해서 그냥 복사해서 붙이는 것만으로 끝나지는 않았습니다.

실제로 실행하면 오류가 났고

제 환경에서는 다르게 작동하는 부분도 있었고

제가 원하는 방식과 결과가 다른 경우도 많았습니다.

결국 직접 실행하고

안 되는 부분을 다시 확인하고

하나씩 수정하는 과정이 필요했습니다.

저는 오히려 이 과정에서 조금씩 구조를 이해하게 됐습니다.

초보자라면 완성품보다 작은 성공부터 시작하는 게 좋았습니다

제가 다시 처음부터 시작한다고 해도 같은 방식으로 할 것 같습니다.

처음 목표를 크게 잡지 않고 아주 작은 기능 하나만 먼저 성공시키는 것입니다.

예를 들어

텔레그램 봇 만들기

↓

내가 보낸 메시지 다시 받기

↓

뉴스 제목 하나 받아보기

↓

뉴스 5개 받아보기

↓

원하지 않는 뉴스 하나 걸러보기

이런 식입니다.

한 단계가 제대로 되는 걸 확인하고 다음으로 넘어가는 게 가장 편했습니다.

결국 뉴스봇 하나만 만든 건 아니었습니다

처음에는 그냥 뉴스 자동수집이 목적이었습니다.

그런데 직접 만들어보면서

API가 어떤 방식으로 움직이는지

Webhook은 왜 필요한지

Google Apps Script는 어떤 역할을 하는지

자동 실행은 어떻게 만드는지

RSS는 무엇인지

AI API는 어떻게 연결되는지

조금씩 경험해볼 수 있었습니다.

설명만 읽었을 때는 잘 이해되지 않았던 단어들이 직접 사용해보니 조금씩 의미가 보였습니다.

아직 완성이라고 생각하지는 않습니다

지금 뉴스봇도 완벽하지 않습니다.

사용하다 보면 분명 또 불편한 부분이 생길 것 같습니다.

어떤 날은 요약이 마음에 안 들 수도 있고

RSS가 갑자기 안 들어올 수도 있고

API 설정을 다시 확인해야 할 수도 있습니다.

그래도 이제는 예전처럼

“코딩을 모르니까 나는 못 한다.”

는 느낌은 많이 줄었습니다.

코드를 전부 이해하지 못해도

내가 원하는 기능이 무엇인지 정하고

작은 단위로 하나씩 만들어보는 건 가능하다는 걸 직접 경험했습니다.

다음에는 뉴스가 아닌 다른 자동화도 해볼 생각입니다

이번 시리즈를 만들면서 가장 재미있었던 부분은 뉴스 자체보다

내가 반복해서 하는 일을 자동으로 바꾸는 과정

이었습니다.

그래서 앞으로는 뉴스 외에도

메일 정리

일정 확인

정보 수집

업무 알림

같은 반복 작업을 하나씩 자동화해보려고 합니다.

이번 뉴스봇을 만들면서 사용했던 방식들을 다시 활용하면 처음보다는 조금 수월하게 시작할 수 있을 것 같습니다.

처음에는 단순히 뉴스 몇 개를 텔레그램으로 받아보려고 시작했는데 생각보다 꽤 멀리 왔습니다.

저처럼 코딩을 거의 모르는 분이라면 처음부터 완벽한 프로그램을 만들려고 하기보다는

내가 실제로 불편한 것 하나를 아주 작게 자동화해보는 것

부터 시작해보셔도 좋을 것 같습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

글쓴이

bluekei9@keinote.com

관련 게시물

텔레그램 봇 코드를 수정했는데 반영이 안 돼서 직접 원인을 찾아봤습니다

안녕하세요 케이입니다. 텔레그램 봇을 만들면서 꽤 답답했던 문제가 하나 있었습니다. 분명 Google Apps Script에서 코드를 수정했습니다. 저장도 했습니다. 그런데 텔레그램에서 테스트해보면 예전...

모두 읽어보기

텔레그램 뉴스봇이 갑자기 멈췄을 때 초보자인 제가 확인한 순서

안녕하세요 케이입니다. 앞에서는 Google Apps Script의 트리거를 이용해서 정해진 시간에 뉴스가 자동으로 오도록 만들어봤습니다. 자동으로 뉴스가 도착하니까 상당히 편했습니다. 그런데 며칠 사용하다...

모두 읽어보기

매번 검색하기 귀찮아서 자주 보는 뉴스 키워드를 저장해봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램으로 오는 뉴스 메시지를 조금 더 보기 좋게 꾸며봤습니다. 제목은 굵게 만들고, 설명은 짧게 붙이고, 긴 링크도 기사 보기처럼...

모두 읽어보기

텔레그램 뉴스 메시지가 너무 지저분해서 보기 좋게 꾸며봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에 뉴스 제목뿐만 아니라 간단한 설명까지 같이 표시해봤습니다. 기능 자체는 만족스러웠습니다. 제목만 볼 때보다 내용을 훨씬 빨리 파악할...

모두 읽어보기

뉴스 제목만 오던 텔레그램 봇에 간단한 내용까지 표시해봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에서 관심 없는 단어가 들어간 뉴스는 자동으로 제외하도록 만들어봤습니다. 뉴스 개수도 줄이고, 같은 기사도 어느 정도 걸러내고, 원하는...

모두 읽어보기

관심 없는 단어가 들어간 뉴스는 자동으로 빼도록 만들어봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에서 제가 원하는 언론사만 골라서 받아보는 기능을 만들어봤습니다. 그렇게 출처까지 어느 정도 정리하고 나니까 확실히 뉴스가 깔끔해졌습니다. 그런데...

모두 읽어보기