惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
V
V2EX
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
月光博客
月光博客
云风的 BLOG
云风的 BLOG

Show HN

Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code.
GitHub - renatoworks/oh-my-reddit: Beautiful Reddit threa...
renatoworks · 2026-06-17 · via Show HN
oh-my-reddit

Beautiful Reddit threads, live in your terminal.

License: MIT CI

Install

You need Go (1.24 or newer). Install the command straight from the module:

go install github.com/renatoworks/oh-my-reddit@latest

That builds oh-my-reddit into your Go bin directory (~/go/bin by default). If that folder isn't on your PATH yet, add it (then open a new terminal):

echo 'export PATH="$PATH:$(go env GOPATH)/bin"' >> ~/.zshrc

Then start it by running oh-my-reddit. See Usage to jump straight to a subreddit or thread.

Prefer to work from a clone?

git clone https://github.com/renatoworks/oh-my-reddit
cd oh-my-reddit
go run .                       # run in place
go build -o oh-my-reddit .     # or build a one-off binary, then ./oh-my-reddit

Usage

oh-my-reddit                 # interactive: type a subreddit, a thread URL, or 'demo'
oh-my-reddit demo            # offline demo feed (no network, no login)
oh-my-reddit r/soccer        # jump straight to a subreddit's thread list
oh-my-reddit https://www.reddit.com/r/soccer/comments/<id>/...   # open one thread

Signing in

Reddit throttles anonymous access hard (lots of 429 and 403), so you need to be logged in. The first time you run it (unless you pass demo) you get a connect screen. Press enter and it finds a logged-in reddit session in your browser (Chrome, Safari, Firefox, Edge, across all profiles) and reuses it, no copy and paste. If auto-detect comes up empty, you can paste a Cookie: header by hand instead.

The session is cached locally, so later launches skip this screen. If more than one account is logged in, you choose by username. If it expires, oh-my-reddit refreshes it from your browser when it can, or sends you back here to reconnect. Press ctrl+l to log out anytime.

macOS notes

  • Chrome: must be logged in. The first read pops a one-time Keychain prompt, so click Allow.
  • Safari: your terminal needs Full Disk Access (System Settings, Privacy & Security, Full Disk Access).
  • Firefox: works with no prompt.

The session cookie is treated like a password: it's stored in your config dir with owner-only permissions, never in .env or the repo.

AI features (optional)

Set an OPENAI_API_KEY and the feed gets two AI reads. Export it in your shell so it works wherever you run the command, or put it in a .env file when running from a clone. Both run on gpt-4o-mini, show up as purple cards in the timeline, and are grounded only in the original post and the recent comments.

  • s, live sentiment: a one-line read on the thread's mood right now. Press s again and it covers only what is new since the last card.
  • a, ask: type a question and get a one-line answer from the thread. It won't invent facts, and it attributes opinions ("people are saying…"), since commenters can be wrong or joking.
export OPENAI_API_KEY=sk-...   # in your shell profile (~/.zshrc), works anywhere
# or, from a clone, put it in .env:  OPENAI_API_KEY=sk-...

Voice (macOS)

Voice reads the thread to you out loud. It uses the macOS say command, so it is macOS only. It is off by default. Press v in the feed to toggle it, and your choice is remembered for next time.

  • New comments are read aloud as they arrive. When a thread is busy it reads the newest and skips the backlog rather than falling behind.
  • AI cards (s and a) are spoken too, and narration pauses while they play so the two never overlap.
  • The line being read is highlighted so you can follow along.

Better voices

The default macOS voices (Daniel, Samantha) sound robotic. The Siri voices sound far more natural, and oh-my-reddit uses whatever your System Voice is set to. To switch:

  1. Open System SettingsAccessibilitySpoken Content (or press Cmd+Space and search "Spoken Content").
  2. Click the info icon next to System Voice.
  3. In the voice dropdown, search for "Siri" and download one you like.
  4. Set it as your System Voice, so every say command uses it.

Test it from a terminal:

How it works

  • No OAuth, no app registration. Comments come from a thread's JSON endpoint (?sort=new), which carries scores and parent_id for replies. If JSON is blocked it falls back to the RSS feed (flat, no scores). Subreddit listings work the same way.
  • Polling. The feed polls every 10 seconds. It uses conditional requests (If-None-Match and If-Modified-Since) so Reddit can answer 304 Not Modified when nothing changed, which is cheap and less likely to get throttled. On 429 or 5xx it honors Retry-After and backs off with jitter.
  • Graceful streaming. New comments are queued and released one at a time, each fading in, instead of dumping all at once.
  • Live votes. Each poll refreshes every visible comment's score.
  • Activity sparkline. The status bar shows a 14-bar sparkline of comments per 30 seconds. The buckets are fixed wall-clock slices, so past bars stay put and the window steps left every 30 seconds.
  • Demo mode plays a scripted match thread on a loop, so the chat clusters around what is "happening" (a goal sets off a rush, a bad call a pile-on), with no network or login.

Files

It's a single package main (flat, no subpackages), split by concern:

File What's in it
main.go entry point, .env loading, small shared helpers
model.go the Bubble Tea model, message types, construction, navigation
update.go the update loop: key handling and message dispatch
commands.go async tea.Cmds: polling, fetching, AI requests
narrate.go voice narration and the macOS say engine
feed.go comment-stream state, AI context, activity metrics
anim.go entrance and fade animations
view.go top-level view dispatch and shared layout chrome
view_auth.go the connect / sign-in screen
view_input.go the input screen (subreddit · URL · demo)
view_list.go the thread list: sort tabs, rows, sections
view_feed.go the comment feed, original-post modal, status bar
reddit.go fetch and parse threads and comments (JSON and RSS), backoff, caching
cookies.go find and decrypt the reddit session from your browser
ai.go OpenAI client, sentiment and ask prompts
recents.go saved recent subreddits and threads
settings.go persisted preferences (voice on or off)
browser.go open-in-browser helper
styles.go dark palette, Lip Gloss styles, wordmark gradient
sample.go demo comment generator

License

MIT. See LICENSE.


Made in Blueberry 🫐