- Schedule
- Daily, 5:02 PT
- Model
- Local Qwen3.6 (35B-a3b) on Ollama
Searches the Hacker News Algolia API for stories matching a curated list of mechanical-keyboard / firmware / tooling terms (mechanical keyboard, keyboard, keycap, cherry mx, QMK, ZMK, KMK, split keyboard, Karabiner, Raycast, kanata, key remapping, keyboard firmware) over the last 24h. Local Qwen3.6 filters out false positives (piano keyboards, generic 'shortcut' noise) using a strict prompt with worked examples.
https://hn.algolia.com/api/v1/search
- Schedule
- Daily, 5:03 PT
- Model
- Local Qwen3.6 (35B-a3b) on Ollama
Scans r/olkb, r/zmk, r/MechanicalKeyboards, r/ErgoMechKeyboards, r/KeyboardLayouts for new posts in the last 24h. Also runs Reddit search for kanata-related queries (jtroo kanata, key remapping software). Filters by upvotes and comment count to skip low-engagement posts; always includes kanata-tagged items regardless of engagement.
https://www.reddit.com/r/<sub>/new/.jsonhttps://www.reddit.com/search.json?q=<query>
- Schedule
- Daily, 5:04 PT
- Model
- Local Qwen3.6 (35B-a3b) on Ollama
Pulls messages from the personal Gmail "Keyboard" label (and sublabels like Keyboard/Tech) from the last 24h. Reddit notification emails are filtered out to avoid duplicating the Reddit pipeline. For each remaining email, Qwen extracts the primary article link, a one-line takeaway, and a clean title from the body — turning vendor newsletters and indie keyboard blogs into wire items.
gog gmail search -a malpern@gmail.com -j 'label:Keyboard newer_than:1d'
- Schedule
- Daily, 5:05 PT
- Model
- No LLM — hand-curated upstream
Parses Tamás Dövényi-Nagy's KBD.news RSS feed — a hand-curated weekly e-zine of mechanical-keyboard and DIY-ergo posts. Strict 24h window, skips the "Behind the scenes" weekly meta-posts (those summarize content we'd already ingest individually). Since Tamás does the editorial filtering upstream, no LLM pass is needed — items go straight to tag → fetch-image → append. Conditional GET via If-Modified-Since means quiet days short-circuit on 304.
- Schedule
- Daily, 5:06 PT
- Model
- No LLM — direct RSS + thread-page scrape
Pulls boards 70 (Group Buys & Preorders) and 132 (Interest Checks) from Geekhack's RSS, dedupes per thread via data/geekhack_seen.json. For each newly-seen thread, scrapes the thread root page once to extract views, replies, OP body, multi-image carousel, vendor product URLs, and any back-link to a related thread (original IC / earlier GB). Items are quarantined from the main news feed and rendered on /groupbuys/. Polite: 1s throttle between thread fetches, conditional GET on the RSS (though Geekhack's server doesn't honor it yet).
https://geekhack.org/index.php?action=.xml;type=rss;board=70https://geekhack.org/index.php?action=.xml;type=rss;board=132https://geekhack.org/index.php?topic=<id>.0 (per-thread scrape)
- Schedule
- Daily, after group-buys
- Model
- No LLM — JSON-only fetch
Walks every vendor product URL in the corpus (extracted from Geekhack OP hyperlinks) and fetches the Shopify .js endpoint to refresh price + availability. Per-host throttle keeps us under vendor rate limits. Currency falls back to a hand-curated host map since .js doesn't expose price_currency. Per-link refresh skipped when metadata is < 6h old.
https://<vendor>/products/<slug>.js