Recipes / Track a slow-moving topic without drowning in it
Track a slow-moving topic without drowning in it
/stories in semantic mode. This page is the
operational half — what comes back, how it breaks, and what running it for real takes.
The request
GET /stories
?q=emissions targets grid capacity renewables policy
&mode=semantic
&from=<now - 14d>
&limit=20 As a call you can paste:
curl -s -G "https://api.unzoi.com/stories" \
-H "x-api-key: $UNZOI_KEY" \
--data-urlencode "q=emissions targets grid capacity renewables policy" \
--data-urlencode "mode=semantic" \
--data-urlencode "from=<now - 14d>" \
--data-urlencode "limit=20"
For an agent rather than a script, the same query is the list_stories
MCP tool with these as its arguments.
Parameters used here
What comes back
Story clusters covering the period. Sorting by outlet count surfaces what the press collectively treated as significant, which for a slow topic is more useful than recency.
Field by field: the /stories response reference.
How this goes wrong
Using a single broad keyword like "climate". It returns an unusable volume dominated by passing mentions, and narrowing it later means rebuilding the query from scratch.
Adapting it
Narrowing to one strand — grid capacity, or emissions policy, or a named technology — produces a much more usable feed than the broad standing query, at the cost of running several. For policy specifically, pair with a country filter and shorten the window: policy coverage is national and bursty, and a two-week window on a national query buries the announcement in the commentary that followed it.
Running it for real
A fortnightly window polled daily returns mostly the same stories, so deduplicate on story identifier across polls and keep a rolling seen-set rather than comparing against the previous response. Because the window is long, a single poll is a large response — request the story endpoint rather than the article one and cap the limit, or the payload becomes the bottleneck before the request count does.
Related recipes
Why this approach
The case for these parameters over the obvious alternatives — and when this recipe is the wrong tool entirely — is on the recipe's page on unzoi.com. It is kept there rather than repeated here, so the argument and the operations cannot drift apart.