LLM-powered daily digest deployed to GitHub Pages — powered by Claude Code Routines.
Fork this repo, edit sources.yaml, create a routine, done.
Claude Code Routine (daily cron)
→ reads sources.yaml + seen.json
→ scrapes each source, generates insights for new articles
→ outputs content.json, pushes to repo
GitHub Action (triggered by content.json change)
→ runs scripts/build.py
→ renders archive/{date}.html from template.html
→ updates seen.json + manifest.json
→ pushes, GitHub Pages deploys
site:
title: "My Daily Brief"
description: "What I'm following"
lang: zh-CN
sources:
- name: PyTorch DevLogs
url: https://docs.pytorch.org/devlogs/
type: blog-index
focus: "key technical progress"
- name: Rust Releases
url: https://github.com/rust-lang/rust/releases
type: github-releases
- name: Tailwind CSS
url: https://tailwindcss.com/changelog
type: changelogSupported type values: blog-index, github-releases, changelog, rss
Settings → Pages → Source: Deploy from branch main, directory /.
Go to claude.ai/code/routines:
- Repo: your fork's URL
- Schedule:
0 1 * * *(9am Asia/Shanghai — adjust for your timezone) - Prompt: copy the contents of
ROUTINE_PROMPT.md
├── index.html # landing page (reads manifest.json)
├── sources.yaml # your information sources (edit this)
├── template.html # HTML/CSS template (customize look here)
├── seen.json # dedup index (auto-managed)
├── content.json # LLM output (auto-managed)
├── scripts/
│ └── build.py # renders HTML from content.json
├── .github/workflows/
│ └── build.yml # action: content.json → build → deploy
├── ROUTINE_PROMPT.md # prompt for the routine
└── archive/
├── manifest.json # brief index
└── {date}.html # daily briefs
- Sources: edit
sources.yaml - Appearance: edit
template.html(CSS variables, layout) - Language: set
site.langinsources.yaml - Insight focus: set
focusper source to guide what the LLM highlights
MIT