跳到正文
GitHub·· 9 天前AI 评分22

ai-daily-trends:每日自动汇总 GitHub、HN、Reddit 等 5 个来源的 AI 趋势静态站点

MoriochoRadio/ai-daily-trends

AI 导读

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 관련 핵심 논의
Reddit 공개 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개 소스 수집)   (한국어 요약)      (수집·요약 데이터)    (렌더링)     (정적 사이트)    (자동 공개)
  1. collect.py — 5개 소스에서 AI 관련 콘텐츠를 수집해 data/data.json으로 저장
  2. summarize.py — 각 항목에 Groq(모델 자동 선택)로 한국어 핵심 요약(summary_ko)을 추가
  3. build.py — data.json을 디자인 시스템이 적용된 index.html로 렌더링
  4. 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

직접 포크해서 운영하려면:

  1. 저장소를 포크/클론 후 본인 GitHub에 푸시
  2. Settings → Pages → Source 를 GitHub Actions 로 설정
  3. 끝 — 이후 매일 자동 갱신됩니다

🛠️ 기술 스택

  • 언어: 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