1. 개요
- 목적: 네이버 뉴스 API를 통해 실시간 '부동산' 관련 뉴스를 수집하고, 중복 제거 및 데이터 최적화 과정을 거쳐 텔레그램 채널로 자동 발송하는 무인 파이프라인 구축
- 개발 환경: Python 3.10, GitHub Actions (CI/CD 인프라 및 Cron 스케줄러)
- 연동 서비스: 네이버 검색 API (뉴스), 텔레그램 봇 API
2. 시스템 아키텍처
[GitHub Actions (Cron)] ──> [Python Script] ──> [네이버 뉴스 API (수집)]
│
├───> [sent_urls.txt (중복 비교 & 1000개 최적화)]
│
└───> [텔레그램 API (분할 발송)] ──> 사용자 수신
3. 핵심 기능 명세
3.1. 주기적 자동 실행 스케줄링 (Cron)
- 서버 리소스를 상시 점유하지 않는 Serverless(GitHub Actions 호스팅 서버) 환경 활용
- 한국 시간(KST) 기준 하루 3회 정기 구동 설정 완료
- 1회차: 오전 07:00
- 2회차: 오후 12:00 (정오)
- 3회차: 오후 06:00
3.2. 실시간 데이터 수집 및 당일 발행 조건 필터
- 네이버 뉴스 검색 API를 통해 최신순(sort=date) 기준 최상위 50개의 뉴스를 조회
- 수집된 기사 중 당일(Today) 발행된 기사만 1차 전처리하여 과거 데이터 유입 차단
3.3. 영속성 데이터 기반 중복 발송 방지 (Auto-Commit)
- 가상 서버 환경의 휘발성 한계를 극복하기 위해 변경된 파일 구조를 깃허브 저장소에 역으로 반영하는 Auto-Commit & Push 아키텍처 도입
- 발송 완료된 기사의 고유 URL을 sent_urls.txt에 기록하여 다음 회차 실행 시 중복 수신 방지
3.4. 저장소 스토리지 최적화 (Data Truncating)
- 필터링 없는 전수 수집 특성상 적재 데이터가 무한히 커지는 현상을 방지하는 최적화 알고리즘 탑재
- sent_urls.txt 라인 수가 1,000개를 초과할 경우, 가장 오래된 데이터 순으로 자동 잘라내기(Truncating) 수행 후 최신 1,000개만 유지
3.5. 텔레그램 API 예외 처리 및 가독성 개선
- 글자 수 초과 제한 우회 (Chunking): 텔레그램 자체 단일 메시지 제한 규격(4,096자) 에러를 방지하기 위해, 전송 문자열이 안전선(3,500자)에 도달할 때마다 자동으로 패킷을 분할하여 연속 전송 ([오늘의 부동산 뉴스 알림 - 계속] 처리)
- 메시지 레이아웃 최적화:
- 정보 집중도를 높이기 위해 날짜 표시 형식을 [YY.MM.DD]로 축소하여 제목 후미에 배치
- 스크롤 낭비 및 가독성 저해 요소인 하단 썸네일/본문 요약 영역 제거 (disable_web_page_preview: True)
4. 환경 변수 (Secrets) 관리
보안 유지가 필요한 인증 정보는 GitHub Repository Secrets에 안전하게 격리 주입하여 운영 중입니다.
| 변수명 | 용도 |
| NAVER_CLIENT_ID | 네이버 오픈 API 애플리케이션 클라이언트 ID |
| NAVER_CLIENT_SECRET | 네이버 오픈 API 애플리케이션 클라이언트 Secret |
| TELEGRAM_BOT_TOKEN | 알림 발송용 텔레그램 봇 고유 토큰 |
| TELEGRAM_CHAT_ID | 알림을 수신할 사용자 고유 Chat ID |

- GitHub URL : https://github.com/gardenS2/newsBot
'IT > 서비스' 카테고리의 다른 글
| [Google AI Studio] 해외 유튜브 영상을 실시간 한국어 통역으로 듣기 (Gemini Live API 활용) (0) | 2026.07.22 |
|---|---|
| [버전업2] 뉴스자동화 (텔레그램 개인방->그룹방에 메신저 쏘기) (0) | 2026.07.22 |
| [버전업1] 뉴스자동화 (GitHub Actions 크론-> Google Cloud Scheduler 기반) (0) | 2026.07.22 |
| [제작기] GitHub Actions 기반 부동산 뉴스 자동 알림 봇 (0) | 2026.07.18 |