GitHub Issues를 활용한 일일 Python 트렌딩 저장소 알림이 구축하기
요약
GitHub의 일일 Python 트렌딩 저장소를 스크래핑하여 AI 요약과 함께 GitHub Issue 댓글로 자동 게시하는 봇 구축 방법을 소개합니다. Node.js, OpenAI, TracePilot을 활용하여 자동화된 워크플로우와 관찰 가능성을 확보하는 과정을 다룹니다.
핵심 포인트
- GitHub 트렌딩 데이터를 스크래핑하여 Python 생태계 동향 파악
- OpenAI API를 활용한 저장소 데이터의 자동 요약 기능 구현
- cron 작업을 통한 정기적인 자동화 프로세스 구축
- TracePilot을 이용한 봇 실행 과정의 관찰 가능성(Observability) 확보
GitHub Issues를 활용한 일일 Python 트렌딩 저장소 알림이 구축하기
우리가 만드는 것: GitHub의 일일 트렌딩 Python 저장소를 모니터링하고 이를 GitHub Issue 댓글로 자동 게시하는 봇입니다. 이를 통해 Python 생태계에서 무엇이 뜨거운지 절대 놓치지 않을 수 있습니다.
사전 요구 사항 (Prerequisites)
- Node.js 18+
- GitHub 계정 (무료 티어 가능)
- OpenAI API 키 (AI 요약을 위해 필요)
- TracePilot API 키 (무료 티어 사용 가능)
1단계: 프로젝트 설정 (Set Up the Project)
mkdir python-trending-notifier
cd python-trending-notifier
npm init -y
...
또한 repo 권한(scope)이 있는 GitHub 개인 액세스 토큰(personal access token)이 필요합니다. 여기에서 생성하세요.
2단계: GitHub 트렌딩 Python 저장소 스크래핑 (Scrape GitHub Trending Python Repos)
// lib/scraper.js
import axios from 'axios';
import * as cheerio from 'cheerio';
...
이 코드는 GitHub 트렌딩 페이지에서 Python 저장소를 스크래핑합니다. github.com/trending/python?since=daily에서 볼 수 있는 것과 동일한 데이터이지만, 이제 당신이 직접 소유하게 됩니다.
3단계: AI 요약 생성 (Generate an AI Summary)
// lib/summarizer.js
import OpenAI from 'openai';
...
어렵지 않습니다. AI가 가공되지 않은 저장소 데이터를 읽기 쉬운 트렌드 보고서로 변환해 줍니다. 수동으로 조사할 필요가 없습니다.
4단계: GitHub Issue에 게시 (Post to a GitHub Issue)
// lib/github.js
import axios from 'axios';
...
5단계: 모두 연결하기 (Wire It All Together)
// index.js
import cron from 'node-cron';
import { getTrendingPythonRepos } from './lib/scraper.js';
...
끝입니다. 세 개의 파일과 하나의 cron 작업(cron job)이면 충분합니다. 당신의 봇이 준비되었습니다.
관찰 가능성 추가 (Adding Observability)
여기에서 TracePilot이 등장합니다. 봇이 새벽 3시에 실패할 때(GitHub 속도 제한(rate limits), 잘못된 형식의 HTML, API 타임아웃 등으로 인해 반드시 발생하게 됩니다), 당신은 왜 그런 일이 발생했는지 알아야 합니다.
npm install tracepilot-sdk
이제 메인 함수를 감싸주세요:
// index.js (updated)
import { TracePilot } from 'tracepilot-sdk';
import cron from 'node-cron';
...
단계별로 단 한 줄의 코드만 변경하면 됩니다. 이제 모든 스크래핑 (scrape), 모든 AI 호출 (AI call), 모든 GitHub 게시물 (GitHub post)이 여러분의 TracePilot Dashboard에서 추적됩니다. 봇이 실패할 때, 정확히 어느 지점에서 문제가 발생했는지 확인할 수 있으며, 재배포 없이 수정을 테스트하기 위해 실행을 포크 (fork) 할 수 있습니다.
다음 단계 (Next Steps)
봇이 라이브 상태가 되었습니다. 다음에 할 일은 다음과 같습니다:
- 배포하기 (Deploy it) — Cron-job.org 또는 Railway와 같은 무료 크론 (cron) 서비스를 사용하세요. 세 가지 환경 변수 (
GITHUB_TOKEN,OPENAI_API_KEY,TRACEPILOT_API_KEY)를 설정합니다. - 에러 핸들링 (Add error handling) 추가 — 스크래퍼 (scraper)를 재시도 루프 (retry loop)로 감싸세요. GitHub의 HTML은 때때로 변경됩니다.
- 다른 언어로 확장하기 (Extend to other languages) — URL을
/trending/javascript또는/trending/rust로 변경하세요. 단 한 줄이면 됩니다. - 대시보드 모니터링 (Watch the dashboard) — 첫 실행 후 tracepilotai.com/dashboard를 여세요. 전체 실행 트리 (execution tree)를 볼 수 있습니다.
여러분은 방금 프로덕션급 (production-grade) 트렌딩 저장소 알림이를 구축했습니다. 복잡한 인프라 (infrastructure), Docker, Kubernetes도 필요 없습니다. 세 개의 파일, 하나의 크론 잡 (cron job), 그리고 모든 것을 보여주는 대시보드만 있으면 됩니다.
할 수 있습니다.
AI 에이전트 (AI agents)의 디버깅 (Debugging)이 마치 매트릭스 (The Matrix)를 읽는 것처럼 느껴져서는 안 됩니다.
신뢰할 수 있는 자율 워크플로우 (autonomous workflows)를 구축하고 있는 다른 엔지니어들과 저희 커뮤니티에서 함께하세요: TracePilot Discord
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기