read-news
Read News (fetch → dedup → store → query — events, not articles, and never twice)
The single news pipeline the [[narrative-news]] and [[analyse-narrative]] gather seats read. It
fetches every wired feed, normalizes each article into the common record, collapses
multi-outlet coverage of the same event into ONE event carrying a source_count (crowdedness), and
keeps state across runs so the panel never re-reads news it already saw — the same "no re-alert"
discipline as [[analyse-smartmoney-13f]] / [[dip-scanner]].
This skill replaces the old feed-* per-source adapters and the crypto-news-store Python store: one
Bun/TypeScript stack, one SQLite file, one front door.
Hard rule
Never fabricate. The store only ever holds what the feeds actually fetched. Paywalled sources with no
teaser surface [UNAVAILABLE - paywall]; a feed that fails to fetch surfaces loudly in unavailable —
never silently dropped, never invented.