Recipes / Build a morning digest someone will actually read
Build a morning digest someone will actually read
/stories in recent mode. This page is the
operational half — what comes back, how it breaks, and what running it for real takes.
The request
GET /stories
?mode=recent
&language=eng
&from=<yesterday 06:00>
&to=<today 06:00>
&limit=20 As a call you can paste:
curl -s -G "https://api.unzoi.com/stories" \
-H "x-api-key: $UNZOI_KEY" \
--data-urlencode "mode=recent" \
--data-urlencode "language=eng" \
--data-urlencode "from=<yesterday 06:00>" \
--data-urlencode "to=<today 06:00>" \
--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
Twenty distinct events ordered by recency, each with the outlets that carried it. Sorting the result by outlet count rather than time gives you a rough importance ordering for free, with no model and nothing to tune.
Field by field: the /stories response reference.
How this goes wrong
A digest built on article search reads as twenty variations of the top three stories, and people stop opening it within a fortnight. By the time anyone reports it as a problem the habit is gone and getting it back is much harder than never losing it.
Adapting it
For a team digest rather than a personal one, scope by outlet to the publications that team actually trusts — it shortens the digest and raises the hit rate more than any ranking change. For a multilingual audience, run one query per language and label the sections, rather than blending languages into one list where readers skip most of it.
Running it for real
Generate at a fixed time from a fixed window so the digest is reproducible and two readers see the same thing. Cache the result rather than querying per reader. Sort by outlet count instead of recency to get a rough importance ordering with nothing to tune. The metric to watch is not open rate but whether anyone clicks through — a digest people open and never act on is a digest that has quietly become noise.
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.