ChatGPT로 스팀 인기 게임 알림봇 1시간 완성

ChatGPT로 스팀 인기 게임 알림봇 1시간 완성

ChatGPT로 스팀 인기 게임 알림봇 1시간 완성

매번 스팀 차트 들어가기 귀찮아서 만들었습니다

오늘 만들 것
매번 스팀 차트 들어가기 귀찮아서 만들었습니다

스팀에서 갑자기 동접자가 몰리는 게임이 뭔지 궁금할 때가 많더라구요. 보통은 커뮤니티에서 소문이 먼저 돌고, 그다음에야 차트를 확인하게 되는데 그때 들어가면 이미 한참 늦은 경우가 허다합니다. 그래서 ChatGPT한테 스팀 실시간 차트를 감시하다가 평소보다 순위가 확 올랐거나 새로 차트에 진입한 게임만 골라서 텔레그램으로 알림을 보내 달라고 시켰구요. 복잡한 API 권한 신청 없이 공개된 데이터만 활용해서 1시간 만에 깔끔한 알림 봇을 완성했습니다. 이거 켜두니까 남들보다 반나절은 빠르게 인기 게임을 따라갈 수 있더라구요.

준비물은 딱 하나만 있으면 됩니다

준비물은 딱 하나만 있으면 됩니다

이번 프로젝트는 ChatGPT 하나만 있어도 코드 한 줄을 직접 다 짜지 않고 만들 수 있습니다. 무료 버전으로도 시작할 수 있고, 데이터 수집과 상태 비교를 처리할 가벼운 파이썬 실행 환경, 그리고 알림을 받아볼 텔레그램 계정만 있으면 됩니다. API 키를 받으려고 며칠씩 대기할 필요도 없으니까 바로 시작해볼게요.

1
스팀 실시간 인기 게임 긁어오기
AI에게 보낸 프롬프트
스팀의 실시간 동시 접속자 수 차트 페이지(https://store.steampowered.com/charts/mostplayed)에서 현재 플레이어 수가 가장 많은 상위 20개 게임의 이름, 현재 동접자 수, 그리고 스팀 앱 ID를 가져오는 파이썬 스크립트를 작성해줘. 외부 API 키 없이 BeautifulSoup을 써서 HTML을 크롤링하는 방식으로 해줘. 파일 이름은 steam_tracker.py로 시작할게.
왜 이렇게 시켰냐면요, 스팀은 공식 Web API가 있지만 키를 발급받고 권한을 설정하는 과정이 코딩이 익숙하지 않은 사람에게는 꽤 큰 장벽이 되거든요. 대신 누구나 접속할 수 있는 공개 차트 웹페이지를 직접 긁어오는 방식을 쓰면 세팅이 훨씬 직관적이고 빠르게 끝납니다. ChatGPT가 BeautifulSoup 라이브러리를 활용해 셀렉터 경로를 잘 찾아서 깔끔한 데이터 파싱 코드를 내줍니다.
2
이전 데이터와 비교해 알림 필터 만들기
AI에게 보낸 프롬프트
steam_tracker.py 코드를 확장해줘. 스크립트가 실행될 때마다 긁어온 데이터를 local_cache.json이라는 파일에 저장하게 만들고, 이전 실행 결과와 비교하는 로직을 넣어줘. 만약 기존 top 20에 없던 새로운 게임이 순위권에 진입했거나, 기존에 있던 게임 중 순위가 5단계 이상 급상승한 게임이 있다면 그 게임 정보만 텔레그램으로 보낼 준비를 하도록 코드를 추가해줘.

이 부분이 알림 봇의 핵심 필터링 로직입니다. 매시간 실행할 때마다 단순 인기 순위 20개를 통째로 보내면 텔레그램 방이 금방 쓰레기통이 되거든요. 로컬 캐시 파일에 직전 상태를 JSON 형태로 저장해 두고, ChatGPT한테 들어온 값과 비교 연산을 시켜서 진짜 의미 있는 변동성이 감지되었을 때만 알림 트리거가 작동하도록 설계한 겁니다.

3
텔레그램 메시지 연동 및 자동화 세팅
AI에게 보낸 프롬프트
최종적으로 수집된 필터링 데이터를 텔레그램 봇 API를 통해 내 단체 채널이나 개인 채팅방으로 전송하는 코드를 완성해줘. 메시지에는 게임 썸네일(앱 ID를 활용한 이미지 주소)과 게임 이름, 현재 플레이어 수, 그리고 바로 스팀 상점 페이지로 연결되는 링크 버튼이 깔끔하게 들어가도록 가독성을 올려줘. 윈도우 작업 스케줄러에서 1시간 단위로 무한 반복 실행해도 꼬이지 않게 오류 예외 처리도 튼튼하게 짜줘.

메시지 템플릿에 스팀 이미지 CDN 패턴(https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/{appid}/header.jpg)을 섞어 쓰면 텔레그램 창에 아주 예쁜 게임 카드 레이아웃이 만들어집니다. 굳이 긴 설명 없이 사진 한 장이랑 현재 동접자 수 수치만 딱 날아오니까 시각적으로 바로 눈에 띄더라구요. 다 완성된 스크립트는 윈도우 작업 스케줄러나 맥의 crontab에 등록해서 백그라운드에서 매시간 돌아가게 얹어두기만 하면 무인 작동이 시작됩니다.

여기서 막히면 이것부터 확인하세요

여기서 막히면 이것부터 확인하세요

  • 현상: 크롤링 결과가 아무것도 안 나오거나 계속 403 Forbidden 에러 코드가 떨어집니다.
    원인: 스팀 차트 서버가 파이썬 기본 요청을 크롤러 봇으로 인지하고 보안 필터를 걸어 차단한 상태입니다.
    해결: requests.get 요청 시 headers 매개변수에 실제 브라우저처럼 보이게 하는 User-Agent 값을 강제로 주입해야 합니다. ChatGPT에게 '스팀 서버 차단 안 당하게 headers에 User-Agent 추가해줘'라고 말하면 바로 고쳐줍니다.
  • 현상: 텔레그램으로 메시지가 발송되지 않고 400 Bad Request 에러가 뜹니다.
    원인: 게임 제목에 특수문자나 앰퍼샌드(&) 같은 HTML 포맷 예약어가 포함되어 파싱 규칙이 깨졌기 때문입니다.
    해결: 텔레그램 봇 API로 텍스트를 보낼 때 HTML 이스케이프 처리를 하거나, 파이썬의 html.escape() 함수로 메시지 문자열을 한 번 감싸서 보내도록 코드를 다듬어야 합니다.
  • 현상: 매번 스크립트를 실행할 때마다 이전 캐시를 읽지 못하고 전체 목록이 다시 발송됩니다.
    원인: 윈도우 작업 스케줄러로 작동할 때 실행 시작 위치가 파이썬 파일 위치와 다르면 local_cache.json 경로를 잃어버려서 항상 빈 파일로 인식하는 문제입니다.
    해결: 코드 상단에 local_cache.json 경로를 상대경로가 아닌, 현재 스크립트 파일이 있는 위치를 기준으로 절대경로(os.path.dirname(os.path.abspath(__file__)))를 취하도록 강제 지정해주면 말끔히 해결됩니다.

다음에는 이런 걸 엮어보면 좋습니다

한 걸음 더

여기까지 잘 돌아가면 이제 절반은 끝난 겁니다. 다음 편에서는 단순 동접자 수뿐만 아니라 스팀의 공식 가격 할인 데이터 API까지 같이 엮어볼 건데요. 동접자가 엄청 올라갔는데 마침 할인까지 하고 있는 '역대급 핫딜 게임'만 골라내서 알림을 뿌려주는 수익화 연동 버전으로 확장해보겠습니다. 다들 컴퓨터 한구석에 켜 두고 꿀 매물 게임 편하게 받아보세요.

관련 검색어

  • 🔍 ChatGPT 사용법
  • 🔍 ChatGPT 비교
  • 🔍 Steam 사용법
  • 🔍 Steam 비교
  • 🔍 텔레그램 봇 사용법
  • 🔍 텔레그램 봇 비교

댓글 쓰기

다음 이전