Claude Code 활용한 텀블벅 인기 프로젝트 알림봇 1시간 완성법
기획 및 설계
크라우드펀딩 플랫폼의 인기 항목은 실시간으로 변동되므로 이를 모니터링하는 작업이 유용하다. 매번 사이트를 방문해 확인하는 번거로움을 줄이고자 실시간 프로젝트 정보를 추적하는 프로그램을 기획하기에 이르렀다. 인기 항목 변동 사항을 수집하여 개인 메신저로 받아보는 구조를 취한다.
핵심 흐름은 의외로 간단한 편이다. 주기적으로 데이터를 호출한 뒤, 로컬 캐시와 비교하는 방식이다. 새로 진입한 항목만을 골라내 사용자에게 발송하게 된다. 이 방식을 적용하면 동일한 정보가 중복 전송되는 현상을 막을 수 있다. 더불어 경량 저장소를 사용하므로 별도의 데이터베이스가 필요 없다.

사전 준비 사항
실제 동작하는 자동화 프로그램을 빌드하려면 몇 가지 준비물이 요구된다. 개발 과정을 보조하고 스크립트 생성을 도와줄 에이전트 도구인 Claude Code 환경을 갖추어야 한다. 텔레그램 채널이나 대화방의 Chat ID 및 API 토큰을 발급받는 단계도 선행되어야 할 필수 요소다.
초기 단계에서는 전체를 한 번에 만들기보다 수집부와 전송부를 개별적으로 구현한 뒤 통합하는 경로를 추천하는 편이다. 분리해서 접근하면 기능별로 확인하기 쉽고 향후 디버깅 과정에서도 문제를 찾을 때 수월하다.

단계별 구현 과정
지정된 작업 폴더를 생성하고 터미널을 실행한다. 외부 데이터 송수신을 위한 라이브러리를 준비하고 기초적인 수집 로직을 설계해야 한다. 첫 개발 요청에서는 다음과 같은 프롬프트를 사용하여 구조를 잡을 수 있다.
해당 단계에서는 복잡한 예외 처리보다 대상 플랫폼의 데이터가 정상적으로 수신되는지 확인하는 작업이 먼저다. 콘솔 로그를 활용해 수집된 날것의 정보를 출력해 보면 통신 상태를 명확히 판별할 수 있다. 도구가 안내에 따라 package.json 파일과 연동 코드를 생성하면, 명령어를 실행해 작동 방식을 살펴본다. 수집이 정상 완료되면 화면에 프로젝트의 기본 상세 내역이 출력된다.
정보가 콘솔에 정상적으로 찍히는 것을 확인했다면, 이제 실질적인 전송 코드를 추가할 차례다. 매번 동일한 목록을 다시 받지 않도록 로컬 캐시 기능을 덧붙인다. 두 번째 프롬프트 요청은 아래 흐름과 유사하다.
무거운 외부 라이브러리를 추가하는 대신 기본 네트워크 패키지만 사용하여 가볍게 전송부를 설계하는 점이 특징이다. 중복 필터링은 로컬 파일에 발송 완료된 ID 목록을 JSON으로 누적하고, 새로 수집한 ID가 목록에 있는지 대조하는 식으로 흘러간다. 파일이 존재하지 않는 최초 실행 시점에도 에러가 나지 않도록 예외 처리 코드를 심어두면 안전하다.
핵심 로직이 안정적으로 돌아간다면 매번 직접 스크립트를 수동으로 켜는 대신 주기적으로 실행되도록 백그라운드 태스크로 등록한다. 세 번째 요청 단계의 예시다.
주기적인 실행을 위해 node-cron 도구를 스크립트에 이식하는 편이 직관적이다. 매시간 캐시 파일의 갱신과 데이터 요청이 자동으로 순환하며 구동된다. 로컬 서버나 클라우드 등 구동 환경의 제약에 맞추어 운영체제 내장 스케줄러를 연동하는 대안도 존재한다.
예외 처리 및 트러블슈팅
동작 에러: 전송 응답 오류(400 혹은 401 Unauthorized) 발생
원인 분석: 입력된 API 토큰 또는 대화방 식별 정보가 일치하지 않거나, 생성된 메신저 봇이 해당 대화방에 참여하지 않아 권한 획득에 실패한 결과다.
조치 방법: 발급받은 문자열 값을 환경 변수 파일에 재등록하고, 봇 활성화를 위해 초기 메시지 전송 과정을 거쳐야 한다.
동작 에러: 중복 발송 제어가 되지 않고 동일한 정보가 누적 발송됨
원인 분석: 상대 경로 지정 오류로 인해 실행 위치에 따라 JSON 파일을 생성하거나 불러오는 영역이 변경되어 이전 기록을 탐색하지 못하는 문제다.
조치 방법: 파일 처리 모듈에서 절대 경로를 제공하는 path.join 함수를 활용하여 실행 시점과 무관하게 고정된 파일 시스템 영역을 지시하도록 코드를 개선한다.
동작 에러: 대상 서버로부터 요청 거부(403 Forbidden) 응답 발생
원인 분석: 요청 헤더에 브라우저 정보가 누락되어 비정상적인 접근 인터페이스로 판단하고 서버 측 보안 필터가 연결을 차단했기 때문이다.
조치 방법: 헤더의 User-Agent 옵션에 표준 웹 브라우저 식별자를 추가하여 요청 신뢰도를 높여주는 방식을 채택한다.
추가 확장 방안
현재 구성된 기본 기능을 바탕으로 사용자 정의 필터링을 추가할 수 있다. 특정 키워드나 해시태그를 포함하는 항목만 골라내어 메신저의 개별 채널로 나누어 전송하는 기능이 대표적이다. 메신저 연동부를 추상화하면 다양한 협업 도구 및 소셜 채널로 한 번에 정보를 송출하는 다중 채널 중계 구조로 확장해 보는 것도 유용하다.
이런 글도 있어요
관련 검색어
- 🔍 Claude Code 사용법
- 🔍 Claude Code 비교
- 🔍 Tumblebug 사용법
- 🔍 Tumblebug 비교
- 🔍 알림봇 사용법
- 🔍 알림봇 비교