Skip to content

Setup Guide

โ€œMinjung edited this page Sep 26, 2026 · 1 revision

Setup Guide

๋กœ์ปฌ ์‹คํ–‰

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Python 3.11+
  • Gmail ๊ณ„์ • (์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•„์š”)
  • Groq API ํ‚ค

1. ์ €์žฅ์†Œ ํด๋ก 

git clone https://github.com/minjungsung/hackdigest.git
cd hackdigest

2. ์˜์กด์„ฑ ์„ค์น˜

pip install -r requirements.txt

์ฃผ์š” ์˜์กด์„ฑ:

ํŒจํ‚ค์ง€ ๋ฒ„์ „ ์šฉ๋„
feedparser 6.0.14 RSS ํ”ผ๋“œ ํŒŒ์‹ฑ
requests 2.33.0 HTTP ์š”์ฒญ
trafilatura 1.12.2 ๊ธฐ์‚ฌ ๋ณธ๋ฌธ ์ถ”์ถœ

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

export GROQ_API_KEY="gsk_..."
export EMAIL_FROM="your-email@gmail.com"
export EMAIL_APP_PASSWORD="xxxx xxxx xxxx xxxx"
export EMAIL_TEST_TO="test@example.com"  # ํ…Œ์ŠคํŠธ ๋ชจ๋“œ

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ƒ์„ธ

๋ณ€์ˆ˜ ํ•„์ˆ˜ ์„ค๋ช…
GROQ_API_KEY โœ… Groq Console์—์„œ ๋ฐœ๊ธ‰
EMAIL_FROM โœ… Gmail ๋ฐœ์‹  ์ฃผ์†Œ
EMAIL_APP_PASSWORD โœ… Gmail ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ (์ƒ์„ฑ ๋ฐฉ๋ฒ•)
EMAIL_TEST_TO โŒ ์„ค์ • ์‹œ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ: ์ด ์ฃผ์†Œ๋กœ๋งŒ ๋ฐœ์†ก

4. ์‹คํ–‰

# ํ…Œ์ŠคํŠธ ๋ชจ๋“œ (EMAIL_TEST_TO๋กœ๋งŒ ๋ฐœ์†ก)
EMAIL_TEST_TO="you@example.com" python -m src.main

# ์ „์ฒด ๊ตฌ๋…์ž์—๊ฒŒ ๋ฐœ์†ก (์ฃผ์˜!)
python -m src.main

GitHub Actions ์„ค์ •

Repository Secrets

GitHub ๋ฆฌํฌ โ†’ Settings โ†’ Secrets and variables โ†’ Actions:

Secret ์„ค๋ช…
GROQ_API_KEY Groq API ํ‚ค
EMAIL_FROM Gmail ๋ฐœ์‹  ์ฃผ์†Œ
EMAIL_APP_PASSWORD Gmail ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ
EMAIL_TEST_TO ํ…Œ์ŠคํŠธ ์ˆ˜์‹  ์ฃผ์†Œ

Workflows

daily-digest.yml โ€” ๋งค์ผ ๋‹ค์ด์ œ์ŠคํŠธ ๋ฐœ์†ก

  • ํŠธ๋ฆฌ๊ฑฐ: workflow_dispatch (์ˆ˜๋™ ๋˜๋Š” cronjob.io)
  • ์ž…๋ ฅ: test_mode (boolean) โ€” ํ…Œ์ŠคํŠธ ์ˆ˜์‹ ์ž์—๊ฒŒ๋งŒ ๋ฐœ์†ก
  • ๋‹จ๊ณ„:
    1. ๋ณด์•ˆ ์Šค์บ” (ํ•˜๋“œ์ฝ”๋”ฉ ์‹œํฌ๋ฆฟ ๊ฒ€์‚ฌ)
    2. ์บ์‹œ ๋ณต์›
    3. ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰
    4. ์บ์‹œ ์ €์žฅ

subscribers.yml โ€” ๊ตฌ๋…์ž ๊ด€๋ฆฌ

  • ํŠธ๋ฆฌ๊ฑฐ: repository_dispatch (Cloudflare Worker์—์„œ) ๋˜๋Š” workflow_dispatch (์ˆ˜๋™)
  • ์ž…๋ ฅ: action (add/remove/update), email, language, topics
  • ๋™์ž‘: subscribers.json ์ˆ˜์ • โ†’ ํ™˜์˜ ์ด๋ฉ”์ผ ๋ฐœ์†ก โ†’ ์ปค๋ฐ‹+ํ‘ธ์‹œ

์Šค์ผ€์ค„๋ง (cronjob.io)

๋งค์ผ KST 10:15์— ์ž๋™ ์‹คํ–‰ํ•˜๋ ค๋ฉด:

  1. cronjob.io ๊ฐ€์ž…
  2. ์ƒˆ cronjob ์ƒ์„ฑ
  3. URL: https://api.github.com/repos/minjungsung/hackdigest/actions/workflows/daily-digest.yml/dispatches
  4. Method: POST
  5. Headers: Authorization: Bearer {GITHUB_PAT}, Accept: application/vnd.github+json
  6. Body: {"ref":"main","inputs":{"test_mode":"false"}}
  7. Schedule: 15 1 * * * (UTC 01:15 = KST 10:15)

Cloudflare Worker ๋ฐฐํฌ

1. ์„ค์น˜

cd worker
npm install

2. Wrangler ๋กœ๊ทธ์ธ

npx wrangler login

3. ๋ฐฐํฌ

npx wrangler deploy

4. ์‹œํฌ๋ฆฟ ์„ค์ •

npx wrangler secret put GITHUB_TOKEN
# Fine-grained PAT with Contents:write for hackdigest repo

wrangler.toml ์„ค์ •

name = "hackdigest-subscribe"
main = "src/index.js"
compatibility_date = "2024-01-01"

๊ตฌ๋… ํŽ˜์ด์ง€ (GitHub Pages)

docs/index.html์€ GitHub Pages๋กœ ์ž๋™ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์„ค์ •: Repository โ†’ Settings โ†’ Pages โ†’ Source: Deploy from a branch โ†’ Branch: main / /docs