Install
openclaw skills install @zatmonkey/newsflashPersonalized daily news briefings and real-time breaking-news alerts from newsflash.sh — a deduped news event graph where every event carries a corroboration count and confidence score. Use when the user asks about news, headlines, markets, crypto, what's happening, wants a recurring briefing, or wants to be alerted when something breaks.
openclaw skills install @zatmonkey/newsflashNewsflash 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.
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.
When asked for a briefing (or the scheduled job fires):
npx newsflash events --json -c <category> -n 60
— keep the events with corroboration >= 2, sorted by corroboration, top
4–5 per category. Per interest additionally:
npx newsflash events --semantic -q "<interest>" --json -n 6.id — one mention, in the most
relevant section. If the same story surfaced via an interest AND a
category, prefer the interest section.curl -s https://newsflash.sh/api/events/<id> → use the first article's
url. Budget note: only fetch details for items that made the cut.🌅 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.
briefing_time
with the message "newsflash daily briefing".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:
category is configured AND corroboration >= min_sourcesid not in alerted_event_ids (append after alerting; keep last 200)quiet_hours — else save it for the morning briefingAlert 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.
npx newsflash events --semantic -q "X" --json -n 8--from/--to (>30 days back needs premium; if the
response has a window note, SAY the tier clamped the window — don't report
"no news")curl -s https://newsflash.sh/api/events/<id>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.