Recipes / Build a crypto news feed that is not mostly press releases

Build a crypto news feed that is not mostly press releases

/stories in hybrid mode. The parameters matter less than the reasoning behind them, so that is most of what is below.

The request

GET /stories
  ?q=<asset or protocol>
  &mode=hybrid
  &from=<now - 24h>
  &limit=15

Why these parameters

Crypto coverage has an unusually high ratio of syndicated and promotional material to original reporting, so story collapsing matters more here than in almost any other subject. Use the outlet count on each story as a crude quality filter: promotional material is typically carried by one outlet or by a cluster of low-reputation ones, while genuine news reaches independent publishers.

What comes back

Distinct events with outlet lists. Filtering to stories carried by several unrelated outlets removes most of the promotional noise with no model and no manual curation.

How this goes wrong

Ranking by recency alone. The most recent crypto items are disproportionately press releases, so a recency-ordered feed is close to an inverse quality ordering.

Adapting it

For a protocol rather than an asset, expect much lower volume and a higher proportion of technical commentary, so widen the window and lower the outlet-count filter. For regulatory crypto news, combine this with the regulatory recipe's longer window — enforcement actions follow the regulator's rhythm, not the market's.

Running it for real

Set the outlet-count threshold empirically by watching a week of output rather than picking a number; the right cutoff depends heavily on which assets you follow. Re-check it quarterly, because the ratio of promotional to genuine coverage moves with the market cycle and a threshold tuned in a quiet period will let far too much through in an active one.

When this is the wrong tool

Outlet count works less well as a quality filter in crypto than elsewhere, because coordinated promotional coverage across multiple outlets is common in a way it is not in other subjects. A story carried by eight outlets you do not recognise is not the same signal as one carried by eight you do, and the count alone cannot tell them apart. Maintain an outlet allowlist for anything you act on. This recipe is also unsuitable as a price signal: crypto coverage follows price moves far more often than it precedes them, so a feed that looks predictive in backtest is usually just reflecting what already happened.

Related recipes