Discover what your GitHub network is starring. Generates a weekly newsletter (GitHub Issue) and a swipe UI (GitHub Pages) to browse repos starred by people you follow.

- Fork this repo
- Add
GH_PATin repo secrets — a Personal Access Token withread:useranduser:followscopes - (Optional) Add one of these for AI insights:
ANTHROPIC_API_KEY,OPENAI_API_KEY, orGEMINI_API_KEY - Enable GitHub Pages in repo settings (source: GitHub Actions)
- Trigger the workflow manually or wait for the Monday 9 AM UTC cron
cron: '0 9 * * 1' # Monday 9:00 AM UTC
Also supports manual trigger via workflow_dispatch with mode selection.
See newsletter samples in Issues
| Env Variable | Required | Description |
|---|---|---|
GH_PAT |
Yes | GitHub PAT with read:user, user:follow |
DAYS |
No | Lookback window in days (default: 7) |
ANTHROPIC_API_KEY |
No | Claude API key for AI insights |
OPENAI_API_KEY |
No | OpenAI API key (fallback) |
GEMINI_API_KEY |
No | Gemini API key (fallback) |
- Weekly Newsletter — auto-posted as a GitHub Issue with trending repos, topics, shared interests, and weak-signal discoveries
- Swipe UI — card-based interface with flip animations, category navigation, and dynamic README loading. Swipe right to open, left to skip
- AI Insights — 3-tier pipeline: DeepWiki (free) → LLM (Claude/OpenAI/Gemini) → no insight. Minimizes token cost by trying free sources first
- Categorized Cards — repos sorted into Trending, Shared Interest, Weak Signal, and Other with category badges and a jump-to navigator
The pipeline runs weekly via GitHub Actions in parallel stages:
- Fetch — collects followed users' recent stars (past 7 days) and repo metadata
- Insights — generates AI insights in 4 parallel chunks (DeepWiki → LLM fallback)
- Newsletter — creates a GitHub Issue summarizing trends (runs independently)
- Swipe UI — builds a self-contained
dist/index.htmlwith categorized cards - Deploy — publishes to GitHub Pages via the official
deploy-pagesaction
The workflow supports selective runs: choose newsletter, swipe, or both via workflow_dispatch.
# Run both newsletter + swipe UI
uv run python newsletter.py
# Run only one
uv run python newsletter.py --newsletter-only
uv run python newsletter.py --swipe-only