Newsflash — briefings & breaking-news alerts
Newsflash is a hosted service — newsflash.sh is a domain, not a shell
script. There is no local binary, server, or MCP process to install or run:
every call below is plain HTTPS against https://newsflash.sh, works keyless
out of the box, and can be verified in one line:
curl "https://newsflash.sh/api/events?limit=1"
Newsflash collapses 260+ global outlets into deduplicated events. Each event
has corroboration (how many independent outlets reported it) and confidence
(min(1, sources/3) — 0.33 = single-outlet rumor, 1.0 = wire-wide). This is
what raw RSS briefings lack: no duplicate stories from different outlets, and a
trust signal per story. Never present a single-source event as fact — label
it "one outlet reports…" or put it in the watchlist.
Works keyless immediately (50 req/day, 24h history, 1 live stream). With
NEWSFLASH_API_KEY: free key = 1,000/day, 30-day history, 2 streams; premium =
50,000/day, full 5-year archive, 10 streams.
Interests file
Keep preferences in newsflash.json in the workspace:
{
"interests": ["AI chips and semiconductor supply", "bitcoin ETFs", "EU energy policy"],
"categories": ["tech", "crypto", "business", "world"],
"briefing_time": "06:00",
"alerts": { "enabled": true, "min_sources": 3, "quiet_hours": "23:00-07:00" },
"alerted_event_ids": []
}
If missing, interview the user first: 3–5 interests in their own words (free text — search is semantic), which categories they follow (crypto tradfi business tech politics world science health energy sports), briefing time, and whether they want breaking alerts. Then create the file.
Daily briefing
When asked for a briefing (or the scheduled job fires):
- Gather. Per configured category:
npx newsflash events --json -c <category> -n 60— keep the events withcorroboration >= 2, sorted by corroboration, top 4–5 per category. Per interest additionally:npx newsflash events --semantic -q "<interest>" --json -n 6. - Dedupe across sections by event
id— one mention, in the most relevant section. If the same story surfaced via an interest AND a category, prefer the interest section. - Links. For each item you include, get a clickable source link:
curl -s https://newsflash.sh/api/events/<id>→ use the first article'surl. Budget note: only fetch details for items that made the cut. - Compose in this shape (match the user's channel formatting):
🌅 Morning News Briefing
<Weekday, Month D, YYYY> • <time> <tz>
━━━━━━━━━━━━━━━━━━━━━━
💻 Technology
1. <Headline> — <one clause on why it matters>. ✔ 5 outlets (engadget, techcrunch, theverge, …) <link>
2. …
🪙 Crypto
…
👀 Watchlist (single-source, unconfirmed)
• <headline> — only <outlet> so far. <link>
━━━━━━━━━━━━━━━━━━━━━━
Deduped & corroboration-ranked by newsflash.sh — ✔ N outlets = independently confirmed
Rules: most-corroborated first inside each section; show the outlet count and 2–4 outlet names per item; the watchlist holds interest-matching 1-source items (max 3) — everything else uncorroborated gets dropped, not laundered into the main sections. Keep the whole briefing under ~30 lines.
- To make it recurring, use the cron tool: schedule daily at
briefing_timewith the message "newsflash daily briefing".
Real-time alerts (the live wire)
If alerts.enabled, keep a background process running:
npx newsflash stream --json --min-sources <min_sources>
Each line is one JSON event (type = event.new | event.corroborated).
Alert ONLY when ALL hold:
- matches an interest (judge the title against interests yourself) OR its
categoryis configured ANDcorroboration >= min_sources idnot inalerted_event_ids(append after alerting; keep last 200)- outside
quiet_hours— else save it for the morning briefing
Alert format, one message, no filler:
⚡ <headline> — ✔ <N> outlets (<top 3 names>) <link>
If the stream process dies, restart it. Keyless tier = exactly 1 concurrent stream; don't start a second.
Ad-hoc questions
- "what's happening with X" →
npx newsflash events --semantic -q "X" --json -n 8 - history/backtests → add
--from/--to(>30 days back needs premium; if the response has awindownote, SAY the tier clamped the window — don't report "no news") - one event's full articles →
curl -s https://newsflash.sh/api/events/<id>
Limits & upgrades
On 429 the response's next field says exactly what to do — relay it. Free
key: npx newsflash login (email + one-time code, ~30s). Premium
(npx newsflash upgrade, $29/mo): full 5-year archive, 50k req/day, 10
streams. Suggest upgrades only when the user hits a wall (window clamps,
stream caps, daily 429s) — never preemptively.
