ai-daily-trends:每日自动汇总 GitHub、HN、Reddit 等 5 个来源的 AI 趋势静态站点
MoriochoRadio/ai-daily-trends
MoriochoRadio/ai-daily-trends 是一个由 GitHub Actions 每天 06:00 KST 自动运行的 AI 趋势看板,从 GitHub Trending。
✨ 특징
- 완전 자동화 — 사람 손 없이 매일 데이터를 수집·요약하고 사이트를 빌드·배포합니다.
- 🇰🇷 한국어 제목 + 핵심 요약 — 각 글의 제목을 한국어로 크게 번역해 보여주고(원문은 작게 병기), "무엇이고 왜 중요한지"를 1문장 한국어로 요약합니다. (무료 LLM — Groq, 모델 자동 선택)
- AI 특화 큐레이션 — 키워드 필터로 AI/LLM/에이전트 관련 콘텐츠만 골라냅니다.
- 🔍 검색 · 소스 필터 · 테마 전환 — 키워드로 전 항목을 즉시 검색(
/키로 포커스)하고, 소스별(GitHub·HN·Reddit·YouTube·SNS)로 필터링하며, 다크/라이트 테마를 전환(브라우저에 저장)할 수 있습니다. 상단 하이라이트로 오늘의 최다 ★ 저장소를 강조하고, HN 항목은 기사와 토론 링크를 분리 제공합니다. 이 기능들은 경량 바닐라 JS의 점진적 향상으로, JS가 꺼져 있어도 모든 콘텐츠는 그대로 보입니다. - 5개 소스 통합 — GitHub·Hacker News·Reddit·YouTube·X(트위터)를 한 화면에서. 더는 사이트마다 따로 들어가 찾아볼 필요가 없습니다.
- 정적 사이트 — 빌드 결과물은 의존성 없는 단일
index.html. 빠르고, 무료로 호스팅됩니다. - 반응형 + 접근성 — 모바일~데스크톱 대응,
prefers-reduced-motion·키보드 포커스 등 준수.
📊 데이터 소스
| 소스 | 수집 방식 | 내용 |
|---|---|---|
| GitHub Trending | HTML 스크레이핑 (daily / python / jupyter) | 오늘 가장 많은 ★를 받은 AI 저장소 |
| Hacker News | Algolia HN Search API | 프론트페이지의 AI 관련 핵심 논의 |
공개 RSS 피드 (r/LocalLLaMA, r/MachineLearning) |
커뮤니티 화제글 | |
| YouTube | 채널 RSS 피드 (큐레이션된 AI/테크 채널) | 해외(Two Minute Papers, Lex Fridman, Karpathy, Fireship 등) + 국내(안될공학, 조코딩, 테디노트, 빵형의 개발도상국) 채널의 최신 영상 |
| 화제의 SNS | HN 내 X/Twitter 링크 추출 | 인플루언서·연구자의 화제 스레드 |
한국어 요약: 수집된 모든 항목은 Groq 무료 티어로 한국어 1문장 요약을 생성합니다(
GROQ_API_KEY시크릿). 무료 모델은 몇 달 단위로 종료되므로 모델 이름을 고정하지 않고, 실행할 때마다 Groq 모델 목록에서 살아 있는 모델을 골라 씁니다. 요약 단계가 실패해도 사이트는 원문으로 정상 빌드되고(graceful), 키 거부·쓸 모델 없음·요약 3일 연속 0건처럼 사람이 손봐야 할 때만 마지막health잡이 실패해 GitHub 실패 메일로 알립니다.Reddit 참고: Reddit이 비인증 JSON 엔드포인트와 CI 공유 IP를 차단(403/429)하므로, 브라우저 헤더 + 공개 RSS + 재시도/백오프로 안정화했습니다. 한 서브레딧이 막혀도 라운드로빈 병합으로 다른 소스가 빈 자리를 채웁니다.
🎨 디자인 시스템
디자인은 UI UX Pro Max 스킬이 이 제품(AI 트렌드 대시보드)에 맞춰 추론·생성한 디자인 시스템을 적용했습니다. 생성된 사양의 원본은 design-system/ai-daily-trends/MASTER.md에 있습니다.
| 항목 | 선택 |
|---|---|
| 패턴 | Bento Grid Showcase (대시보드형 모듈 카드 — 스킬이 "Best for Dashboards / WCAG AA"로 권장) |
| 스타일 | 다크 테크 (Exaggerated Minimalism) |
| 컬러 | 슬레이트 다크 배경 #0F172A + 상태 그린 액센트 #22C55E |
| 타이포 | Space Grotesk (제목) + DM Sans (본문) |
🏗️ 동작 구조
┌────────────────────── GitHub Actions (매일 06:00 KST) ──────────────────────┐
│ │
collect.py ──► summarize.py ──► data/data.json ──► build.py ──► index.html ──► Pages 배포
(5개 소스 수집) (한국어 요약) (수집·요약 데이터) (렌더링) (정적 사이트) (자동 공개)
collect.py— 5개 소스에서 AI 관련 콘텐츠를 수집해data/data.json으로 저장summarize.py— 각 항목에 Groq(모델 자동 선택)로 한국어 핵심 요약(summary_ko)을 추가build.py—data.json을 디자인 시스템이 적용된index.html로 렌더링- GitHub Actions — 위 단계를 매일 실행하고 결과를 커밋 후 Pages로 배포
🧭 왜 이렇게 만들었나 — 기술 선택 Q&A
Q. 왜 서버 없는 정적 사이트인가?
A. 데이터가 하루 1번 바뀌는 대시보드에 요청 시 렌더링은 낭비입니다. 빌드 타임에 완성된 단일 index.html을 만들면 서버·DB 비용 0원, 로딩은 즉시, 장애 지점은 사실상 GitHub Pages 하나로 줄어듭니다.
Q. 왜 GitHub Actions인가? A. cron 스케줄링·실행 환경·배포(Pages)가 한 곳에서 무료로 해결되고, 결과가 커밋으로 남아 데이터 이력도 추적됩니다. 지연된 스케줄 실행과 수동 실행이 겹칠 때를 대비해 concurrency로 직렬화하고, Pages 일시 장애는 배포 재시도로 흡수했습니다.
Q. 요약 LLM으로 왜 Groq이고, 모델은 왜 고정하지 않나?
A. 처음엔 GITHUB_TOKEN만으로 호출되는 GitHub Models(gpt-4o-mini)를 썼지만 2026-07-30에 서비스가 종료됐고, 옮겨 간 Groq의 llama-3.3-70b-versatile도 2026-08-16에 종료돼 요약이 44일간 조용히 비어 있었습니다. 무료 모델은 이렇게 수시로 사라지므로 이름을 박아 두지 않고 매 실행 Groq 모델 목록에서 선호 순서대로 고르며, 모델 오류가 나면 다음 후보로 넘어갑니다. 항목당 1문장 요약에는 무료 티어로 충분하고, 실패해도 원문으로 정상 빌드됩니다.
Q. 왜 Python 표준 라이브러리만 쓰나?
A. RSS/JSON 파싱과 HTML 렌더링은 urllib·re·json으로 충분해서, 의존성을 없애면 CI에서 설치 단계가 사라지고 로컬 실행도 Python만 있으면 됩니다. 매일 도는 파이프라인일수록 깨질 수 있는 부품을 줄이는 쪽을 택했습니다.
Q. 프런트엔드에 왜 프레임워크를 안 썼나? A. 콘텐츠는 빌드 타임에 이미 완성되므로 런타임 프레임워크가 할 일이 없습니다. 검색·필터·테마 같은 부가 기능만 경량 바닐라 JS의 점진적 향상으로 얹어, JS가 꺼져 있어도 모든 콘텐츠가 그대로 보입니다.
Q. Reddit은 왜 API가 아니라 RSS인가? A. Reddit이 비인증 JSON 엔드포인트와 CI 공유 IP를 차단(403/429)하기 때문입니다. 공개 RSS + 브라우저 헤더 + 재시도/백오프로 안정화하고, 한 서브레딧이 막혀도 라운드로빈 병합으로 다른 소스가 빈 자리를 채우게 했습니다.
📁 프로젝트 구조
.
├── index.html # 빌드된 웹사이트 (자동 생성물)
├── data/data.json # 수집된 데이터
├── scripts/
│ ├── collect.py # 데이터 수집 (GitHub · HN · Reddit · YouTube · SNS)
│ ├── summarize.py # 한국어 핵심 요약 추가 (Groq, 모델 자동 선택)
│ └── build.py # data.json → index.html 렌더링
├── design-system/
│ └── ai-daily-trends/MASTER.md # 적용된 디자인 시스템 (스킬 생성물 · Source of Truth)
└── .github/workflows/daily.yml # 매일 자동 수집 · 빌드 · 배포
💻 로컬 실행
Python 3.x만 있으면 됩니다. 외부 라이브러리 의존성이 없습니다.
python3 scripts/collect.py # 최신 데이터 수집 (인터넷 필요) python3 scripts/summarize.py # 한국어 요약 추가 (선택 — GROQ_API_KEY 필요, 아래 참고) python3 scripts/build.py # index.html 생성 # 생성된 index.html 을 브라우저로 열기
- 요약 단계는 선택입니다. 키가 없으면 자동으로 건너뛰고 원문으로 빌드됩니다. 로컬에서 요약까지 보려면
GROQ_API_KEY환경변수를 지정하세요(특정 모델로 고정하려면GROQ_MODEL). - 네트워크가 제한된 환경에서는 수집을 건너뛰고 기존
data/data.json으로python3 scripts/build.py만 실행하면 됩니다.
🚀 배포 (이미 자동화됨)
이 저장소는 GitHub Actions + GitHub Pages로 이미 배포되어 있습니다.
- 매일 06:00 KST에 자동으로 데이터가 갱신되고 사이트가 재배포됩니다.
- 즉시 갱신하려면: Actions 탭 → Daily AI Trends → Run workflow
직접 포크해서 운영하려면:
- 저장소를 포크/클론 후 본인 GitHub에 푸시
- Settings → Pages → Source 를 GitHub Actions 로 설정
- 끝 — 이후 매일 자동 갱신됩니다
🛠️ 기술 스택
- 언어: Python 3 (표준 라이브러리만 사용 —
urllib,re,json) - 프런트엔드: 순수 HTML/CSS + 경량 바닐라 JS (빌드 타임 생성 · 외부 런타임 의존성 없음 · 검색·필터·테마는 점진적 향상)
- 요약 LLM: Groq 무료 티어 — 실행마다 모델 자동 선택(
GROQ_API_KEY) - CI/CD: GitHub Actions
- 호스팅: GitHub Pages
- 디자인: UI UX Pro Max 스킬
참고: UI UX Pro Max 스킬(
.claude/)은 제3자 도구이므로 저장소에는 포함하지 않습니다(.gitignore). 디자인 시스템을 다시 생성하려면npm i -g uipro-cli && uipro init --ai claude후 스킬을 실행하세요. 적용된 결과 자체는design-system/에 보존되어 있습니다.
📄 라이선스
MIT — 자유롭게 사용·수정·배포할 수 있습니다.
매일 자동 갱신 · 데이터 출처: GitHub Trending, Hacker News, Reddit, X
来源:GitHub · github.com