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 

 

+ Recent posts