Skip to content
β€œMinjung edited this page Sep 26, 2026 · 3 revisions

HackDigest β€” Wiki

AI-summarized daily news digest β€” delivered to your inbox every morning.

ν”„λ‘œμ νŠΈ κ°œμš”

HackDigestλŠ” 맀일 μ•„μΉ¨ Tech, 주식, 뢀동산 λΆ„μ•Όμ˜ μ΅œμ‹  λ‰΄μŠ€λ₯Ό μˆ˜μ§‘ν•˜κ³ , AI(Groq LLM)둜 μš”μ•½ν•œ ν›„ μ΄λ©”μΌλ‘œ λ°œμ†‘ν•˜λŠ” μžλ™ν™”λœ λ‰΄μŠ€ λ‹€μ΄μ œμŠ€νŠΈ μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

ꡬ독 νŽ˜μ΄μ§€: minjungsung.github.io/hackdigest

λΉ„μš©: $0/month β€” 100% μ„œλ²„λ¦¬μŠ€ μ•„ν‚€ν…μ²˜

기술 μŠ€νƒ

μΉ΄ν…Œκ³ λ¦¬ 기술
μ–Έμ–΄ Python 3.11
AI μš”μ•½ Groq API (qwen/qwen3.8-27b)
λ²ˆμ—­ 폴백 Google Translate (무료 API)
기사 μΆ”μΆœ trafilatura
RSS νŒŒμ‹± feedparser
이메일 λ°œμ†‘ Gmail SMTP (SSL)
ꡬ독 ν”„λ‘μ‹œ Cloudflare Worker (JavaScript)
CI/CD & λŸ°νƒ€μž„ GitHub Actions
캐싱 GitHub Actions Cache (일간 JSON)
ꡬ독 νŽ˜μ΄μ§€ GitHub Pages (vanilla HTML/JS)
μŠ€μΌ€μ€„λ§ cronjob.io β†’ workflow_dispatch
λ³΄μ•ˆ Bandit + μ»€μŠ€ν…€ μΈμ μ…˜/μ‹œν¬λ¦Ώ 검사
μ˜μ‘΄μ„± 관리 Dependabot (일간, μžλ™ 병합)

μ£Όμš” κΈ°λŠ₯

  • λ©€ν‹° ν† ν”½ λ‰΄μŠ€ νλ ˆμ΄μ…˜ β€” Tech (Hacker News), 주식 (Yahoo Finance/Google News), 뢀동산 (Zillow/HousingWire/CNBC)
  • 지역별 μ†ŒμŠ€ β€” ν•œκ΅­μ–΄ κ΅¬λ…μžλŠ” ν•œκ΅­ 주식/뢀동산 λ‰΄μŠ€, μ˜μ–΄ κ΅¬λ…μžλŠ” λ―Έκ΅­ μ†ŒμŠ€
  • AI μš”μ•½ β€” Groq Qwen λͺ¨λΈμ΄ 3λ¬Έμž₯ 캐주얼 μš”μ•½ 생성, Google Translate 폴백
  • κ΅¬λ…μžλ³„ κ°œμΈν™” β€” μ–Έμ–΄ + ν† ν”½ 선택
  • μžλ™ 감지 ꡬ독 νŽ˜μ΄μ§€ β€” λΈŒλΌμš°μ € μ–Έμ–΄ 감지, λ°˜μ‘ν˜• UI
  • 제둜 인프라 λΉ„μš© β€” GitHub Actions + Cloudflare Workers + GitHub Pages

Wiki λͺ©μ°¨

νŽ˜μ΄μ§€ λ‚΄μš©
Architecture 데이터 νŒŒμ΄ν”„λΌμΈ 흐름, μ»΄ν¬λ„ŒνŠΈ λ‹€μ΄μ–΄κ·Έλž¨
Services 각 μ„œλΉ„μŠ€ 상세 μ„€λͺ… (fetchers, summarizer, notifier, subscriber, worker)
Setup Guide 둜컬 μ‹€ν–‰, GitHub Actions μ„€μ •, ν™˜κ²½λ³€μˆ˜, Cloudflare Worker 배포
Adding a News Source μƒˆ λ‰΄μŠ€ μ†ŒμŠ€ μΆ”κ°€ 방법 (fetcher κ΅¬ν˜„ κ°€μ΄λ“œ)

ν”„λ‘œμ νŠΈ ꡬ쑰

hackdigest/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.py           # μ—”νŠΈλ¦¬ν¬μΈνŠΈ β€” 전체 νŒŒμ΄ν”„λΌμΈ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜
β”‚   β”œβ”€β”€ models.py          # 데이터 λͺ¨λΈ (Article, Subscriber, Topic, Language)
β”‚   β”œβ”€β”€ fetchers/
β”‚   β”‚   β”œβ”€β”€ __init__.py    # 토픽별 fetcher λΌμš°νŒ…
β”‚   β”‚   β”œβ”€β”€ tech.py        # Hacker News API fetcher
β”‚   β”‚   β”œβ”€β”€ stocks.py      # Yahoo Finance / Google News 주식 fetcher
β”‚   β”‚   └── realestate.py  # Zillow / HousingWire / CNBC / Google News 뢀동산 fetcher
β”‚   β”œβ”€β”€ summarizer.py      # Groq LLM μš”μ•½ + Google Translate 폴백
β”‚   β”œβ”€β”€ notifier.py        # 이메일 λ°œμ†‘ (Gmail SMTP)
β”‚   β”œβ”€β”€ subscribers.py     # κ΅¬λ…μž 관리 (JSON 기반 CRUD)
β”‚   └── cache.py           # GitHub Actions Cache 연동
β”œβ”€β”€ worker/
β”‚   └── src/index.js       # Cloudflare Worker β€” ꡬ독 ν”„λ‘μ‹œ
β”œβ”€β”€ docs/
β”‚   └── index.html         # GitHub Pages ꡬ독 νŽ˜μ΄μ§€
β”œβ”€β”€ subscribers.json       # κ΅¬λ…μž λͺ©λ‘
β”œβ”€β”€ requirements.txt       # Python μ˜μ‘΄μ„±
β”œβ”€β”€ .github/workflows/
β”‚   β”œβ”€β”€ daily-digest.yml   # 맀일 λ‹€μ΄μ œμŠ€νŠΈ λ°œμ†‘
β”‚   β”œβ”€β”€ subscribers.yml    # κ΅¬λ…μž 관리 (add/remove/update)
β”‚   β”œβ”€β”€ security-scan.yml  # λ³΄μ•ˆ μŠ€μΊ”
β”‚   β”œβ”€β”€ clear-cache.yml    # μΊμ‹œ μ΄ˆκΈ°ν™”
β”‚   └── release.yml        # Semantic Release
└── scripts/
    └── check_injection.py # μΈμ μ…˜ 검사 슀크립트

Clone this wiki locally