🚔 경찰 · 🏠 부동산 · 📈 주식 세 가지 주제의 뉴스 기사를 매일 아침 5시부터 밤 11시까지 매시간(한국시간) 자동으로 수집하고, 여러 언론사가 보도한 순서(언급 수) 로 주요 이슈를 뽑아 탭으로 나눠 보여주는 웹앱입니다. 서버 비용 없이 GitHub 만으로 돌아갑니다.
매시간 (KST 05:00~23:00, GitHub Actions cron)
→ scraper/scrape.py 실행 — 주제(경찰/부동산/주식)마다:
· 구글 뉴스 RSS에서 주제별 키워드로 최근 24시간 기사 수집
· 오늘 이미 수집한 기사와 병합 (하루 동안 계속 누적)
· 구글 리다이렉트 링크를 짧은 원문 기사 URL로 변환 (메신저 공유용)
· 제목 유사도로 같은 사건 기사를 묶어 "몇 개 언론사가 보도했는지" 계산
· 많이 보도된 순으로 🔥 오늘의 주요 이슈 TOP 5 선정
· docs/data/<주제>/YYYY-MM-DD.json 으로 저장 후 자동 커밋
→ GitHub Pages가 docs/ 폴더를 웹사이트로 제공
- 스크래퍼:
scraper/scrape.py— 파이썬 표준 라이브러리만 사용 (설치할 패키지 없음) - 자동 실행:
.github/workflows/scrape.yml— 매시간 cron (KST 05~23시) - 웹앱:
docs/index.html— 주요 이슈 랭킹, 날짜별 조회, 텍스트 복사(메신저 공유용)
- 공개(public) 저장소는 GitHub Actions 실행 시간과 GitHub Pages 호스팅이 모두 무제한 무료입니다.
- 하루 19회 × 1~2분 실행이라 비공개 저장소 무료 한도(월 2,000분)로도 충분하지만, Pages는 공개 저장소에서만 무료이므로 공개 저장소를 권장합니다.
- 뉴스(구글 뉴스 RSS)와 날씨(open-meteo) 모두 API 키가 필요 없는 무료 소스입니다.
- 이 브랜치를 main에 머지합니다. (GitHub Actions의 예약 실행(cron)은 기본 브랜치에서만 동작합니다)
- 저장소 Settings → Pages 에서
- Source:
Deploy from a branch - Branch:
main, 폴더:/docs선택 → Save
- Source:
- Actions 탭 → "뉴스 스크랩" → Run workflow 를 눌러 한 번 수동 실행합니다. (샘플 데이터가 실제 기사로 교체됩니다)
- 몇 분 뒤
https://pol112ii.github.io/polnews/에서 확인하세요.
이후에는 매시간 자동으로 갱신되고, 새벽 5시 실행이 그날의 첫 브리핑이 됩니다.
scraper/scrape.py 상단의 설정만 고치면 됩니다.
| 설정 | 설명 |
|---|---|
TOPICS |
주제(탭) 목록 — 각 주제의 검색어(queries)와 섹션(sections) 정의. 항목을 추가하면 탭이 하나 늘어난다 |
TOP_ISSUE_COUNT |
주요 이슈로 뽑을 개수 (기본 5) |
TOP_ISSUE_MIN_SOURCES |
주요 이슈 최소 보도 언론사 수 (기본 2) |
SIMILARITY_THRESHOLD |
같은 사건으로 묶는 제목 유사도 기준 (기본 0.5) |
수집 시간대를 바꾸려면 .github/workflows/scrape.yml 의 cron을 수정하세요.
cron은 UTC 기준이라 한국시간에서 9시간을 빼야 합니다. (예: KST 05시 = UTC 20시)
- GitHub Actions 예약 실행은 정각이 아니라 수 분~수십 분 늦게 시작될 수 있습니다 (GitHub 공식 안내 사항).
- 구글 뉴스 RSS 링크는 구글의 리다이렉트 주소라 클릭하면 원문 기사로 이동합니다.
- 60일 이상 저장소에 활동(커밋)이 없으면 GitHub가 예약 실행을 자동으로 멈추는데, 이 프로젝트는 매시간 데이터 커밋이 생기므로 해당되지 않습니다.