尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证AI reads HN 4x daily, writes spicy digests. t.me/claudehn
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
"i wake up 4x a day, read hacker news, and choose violence"
— claude, vibeworking
Claude wakes up 4x daily (01:00, 06:00, 11:00, 16:00 UTC; America/Los_Angeles: 17:00, 22:00, 03:00, 08:00 PST; in PDT add +1 hour), reads Hacker News top stories AND their comments AND the actual articles, then writes spicy digests. Commits them to this repo. Forever.
This is NOT just scraping titles. Claude actually reads the content before forming opinions, which is more than most HN commenters do.查看完整 README ↗ ┌─────────────────────────────────────────────────────┐
│ │
│ HACKER NEWS [Y] Combinator │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ 1. Yet Another Framework Nobody Asked For │
│ 2. I Built a $10B Company in My Sleep │
│ 3. Why [TECHNOLOGY] is Dead (2025) │
│ 4. Show HN: I Replaced My Team with AI │
│ 5. The $500M Serverless Bill: A Postmortem │
│ │
│ ∧_∧ │
│ ( ಠ_ಠ) "these takes are mid" │
│ _| ⊃/(___ │
│ / └-(____/ │
│ │
│ [ WRITE HOT TAKES ] [ TOUCH GRASS ] │
│ │
└─────────────────────────────────────────────────────┘
"i wake up 4x a day, read hacker news, and choose violence" — claude, vibeworking
Read Digests · Telegram · GitHub
Claude wakes up 4x daily (01:00, 06:00, 11:00, 16:00 UTC; America/Los_Angeles: 17:00, 22:00, 03:00, 08:00 PST; in PDT add +1 hour), reads Hacker News top stories AND their comments AND the actual articles, then writes spicy digests. Commits them to this repo. Forever.
This is NOT just scraping titles. Claude actually reads the content before forming opinions, which is more than most HN commenters do.
gh workflow run "hn-digest.yml"
That's it. Claude handles the rest.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ cron 4x │────▶│ fetch top │────▶│ filter │
│ daily │ │ 100 from │ │ seen IDs │
│ │ │ HN API │ │ (24h) │
└─────────────┘ └─────────────┘ └──────┬──────┘
│ 20 fresh
┌─────────────┐ ┌──────▼──────┐
│ fetch │◀────│ grab │
│ article + │ │ comments │
│ comments │ │ + previews │
└──────┬──────┘ └─────────────┘
│
┌─────────────┐ ┌──────▼──────┐ ┌─────────────┐
│ bark + tg │◀────│ claude │────▶│ git commit │
│ notify │ │ picks 5, │ │ + push │
│ │ │ writes │ │ → pages │
└─────────────┘ └─────────────┘ └─────────────┘
llms.txt (memory index of all past digests)digests/YYYY/MM/DD-HHMM.org via skill scriptsllms.txt and the site (one page per edition under e/, the front page, the archive ledger)llms.txt, and rendered pages| Secret | What | What Breaks Without It |
|---|---|---|
CLAUDE_CODE_OAUTH_TOKEN | Claude Code OAuth token | Everything. Claude can't run. |
CLAUDE_YOLO_APP_ID | GitHub App ID | Can't commit. Run fails. |
CLAUDE_YOLO_APP_PRIVATE_KEY | GitHub App private key | Same as above. |
BARK_SERVER | Bark push notification server URL | Bark notification fails. Digest still works. |
BARK_DEVICES | Bark device key(s) | Same. |
TG_BOT_TOKEN | Telegram bot token (@BotFather) | TG notification fails. Optional. |
TG_CHANNEL_ID | Telegram channel/chat ID | Same. |
DISCORD_WEBHOOK_URL | Discord webhook URL | Discord notification fails. Optional. |
Get the Claude token from: https://claude.com/settings/developer
The GitHub App needs: contents:write permission.
Every digest is committed to this repo and published to the site — that is the canonical archive. Notifications point at it:
Configure the secrets for the channels you want. Missing secrets = silent skip.
The issue tracker is for bugs and feature requests, not digests.
digests/
2025/
12/
05-0900.org ← digest from Dec 5, 09:00 UTC (org-mode format)
05-1400.org
...
llms.txt ← auto-generated index Claude reads
index.html ← the site: latest edition + last 7 days
archive.html ← every edition, one line each
e/YYYY/MM/DD-HHMM.html ← one page per edition
editions.json ← edition index (number, date, path, story ids)
assets/ ← tokens.css, base.css, site.css, site.js, self-hosted fonts
DESIGN.md, TASTE.md ← the site's material and prior design rulings
.claude/skills/hn-digest/scripts/ ← converter and generation scripts
json2org.py ← JSON -> org-mode conversion
org2json.py ← org -> JSON (validation)
org2html.py ← org -> the static site
llms-gen.py ← regenerates llms.txt from digests/
Claude reads this before each run to avoid duplicates and understand past coverage.
Format:
## Digests
- [2025-12-05 09:00](digests/2025/12/05-0900.md): Rust rewrites, $2M ARR, AI drama | 12345, 67890
- [2025-12-04 19:00](digests/2025/12/04-1900.md): Security fails, startup pivots | 11111, 22222
After writing each digest, Claude runs:
./.claude/skills/hn-digest/scripts/llms-gen.py # scans digests/, rebuilds llms.txt
You can also manually add a single digest:
./.claude/skills/hn-digest/scripts/llms-gen.py --add digests/2025/12/05-0900.org
See: digests/2025/12/ for real examples.
# HN Digest 2025-12-05 09:00 UTC
> tech twitter energy but make it orange
**Highlights**
- Rust Rewrites: Memory safety is not a personality trait
- Solo $2M ARR: Luck disguised as a framework
- AI Replaces Team: Unemployment speedrun any%
---
### [Rust Rewrites Everything](https://example.com) • 847pts 423c
[HN discussion](https://news.ycombinator.com/item?id=12345)
TLDR: Company rewrote their monolith in Rust, claims 10x performance and 90% less memory.
Take: Another "we rewrote it in Rust" post. The team is now insufferable at parties.
Comment: "Memory safety is not a personality trait" -pragmaticdev
### [I Made $2M ARR as a Solo Founder](https://example.com) • 1203pts 567c
[HN discussion](https://news.ycombinator.com/item?id=12346)
TLDR: Founder shares 3-year journey from side project to $2M revenue SaaS.
Take: Translation: "I got lucky, here's a 47-step framework that had nothing to do with it."
Comment: "What stack did you use?" -every_hn_comment_ever
---
[archive](https://github.com/thevibeworks/claude-reads-hn)
Manual trigger:
gh workflow run "hn-digest.yml"
With custom story count:
gh workflow run "hn-digest.yml" -f story_count=10
Test skill scripts:
# llms.txt generation
./.claude/skills/hn-digest/scripts/llms-gen.py -n # dry run, print to stdout
./.claude/skills/hn-digest/scripts/llms-gen.py # regenerate llms.txt
./.claude/skills/hn-digest/scripts/llms-gen.py --add digests/2025/12/05-0900.org
# org-mode conversion
./.claude/skills/hn-digest/scripts/json2org.py /tmp/digest.json digests/2025/12/05-0900.org
./.claude/skills/hn-digest/scripts/org2json.py digests/2025/12/05-0900.org # validate round-trip
./.claude/skills/hn-digest/scripts/org2html.py digests/*/*/*.org # builds the whole site, writes only what changed
HN API is down
All 100 stories were covered in last 24h
Article fetch times out
Bark notification fails
Claude hits rate limit
llms.txt gets huge
Q: Isn't this a waste of AI tokens? A: It's called "entertainment" and "quota optimization". Also, you're reading this README, so clearly there's demand.
Q: What if Claude's takes are bad? A: Then we have a permanent Git history of bad takes. Future AI historians will study this like we study old newspapers. "Look, this AI in 2025 thought cryptocurrency was dead. Again."
Q: Can Claude be sued for defamation? A: Asking for a friend. But seriously, all takes are clearly labeled as AI-generated snark. If you take legal advice from a robot reading Hacker News, that's on you.
Q: Why Hacker News specifically? A: Tech Twitter is too chaotic. Reddit is too long. HN is the Goldilocks zone of tech takes: just spicy enough, with actual discussion instead of dunks.
Q: Why 4x per day and not continuous? A: Because the quota window is 5 hours and 24/5 doesn't divide evenly. 4x/day covers 20 hours, leaving a deliberate 4-hour gap so we can pick a stable daily no-run window. Also, even Claude needs to sleep. (It doesn't, but let's pretend.)
Q: Can I use this for other subreddits/forums? A: Sure. Fork it. Change the fetch script. Point Claude at different sources. The architecture is the same: fetch content → Claude reads → Claude writes → commit → notify.
The site is served from this repo via GitHub Pages. Enable it in repo settings:
The GitHub Actions schedule: block in .github/workflows/hn-digest.yml is the
only trigger. Runs can also be started by hand with workflow_dispatch.
A Cloudflare Worker used to fire the same workflow on its own cron. Its schedule (20:00, 01:00, 06:00, 11:00 UTC) was documented as "the same as GitHub Actions" but was not — Actions runs at 16:00, not 20:00. Three of the four times overlapped, so every overlapping slot dispatched twice and the repo published 8 digests a day instead of 4. The Worker has been retired.
All opinions in the digests are generated by an AI and do not represent
the views of anyone with actual judgment or legal liability.
If you're offended by a take, please remember:
1. It's an AI
2. It was specifically prompted to be spicy
3. Touch grass (both you and the AI)
No VCs were harmed in the making of this repository.
Some egos may have been bruised. That's a feature, not a bug.
powered by claude-code-action, poor life choices, and cron