Free playbooks in your inbox

How to Build an OpenClaw Research Agent That Briefs You Daily

Get a daily briefing on your industry from an OpenClaw agent that reads 50 sources before you wake up and tells you only what changed since yesterday. It runs about $6.91 a month, set by one dial most people tune backwards, and it starts with a curl check that caught a dead feed when we ran it.

From the youcanbuildthings catalog ▸ Build-tested

Hello builders,

An OpenClaw agent can read 50 sources before you wake up and brief you on Telegram with only what changed since yesterday, which is the job a junior analyst does every morning. The two things that ruin it are quiet: a feed that dies without telling anyone, and one setting that triples the bill without making the briefing any better. This OpenClaw research agent daily briefing takes a sources file you checked with curl, a five-step skill, and a cap you pick from the arithmetic.

Curl every feed first

Every URL goes through this loop before it goes in the file. A dead feed doesn’t announce itself; your briefing just gets a little thinner, possibly for weeks.

for u in https://hacker-news.firebaseio.com/v0/topstories.json \
         https://news.ycombinator.com/rss \
         https://techcrunch.com/category/artificial-intelligence/feed/ \
         https://www.theverge.com/rss/index.xml \
         https://arstechnica.com/feed/ \
         https://www.wired.com/feed/tag/ai/latest/rss \
         https://openai.com/news/rss.xml \
         https://github.blog/feed/ \
         https://www.reddit.com/r/openclaw/hot.rss; do
  curl -s -o /dev/null -w "%{http_code} $u\n" "$u"
done

Here’s what the last line printed when we ran it for this article; the other eight all came back 200.

403 https://www.reddit.com/r/openclaw/hot.rss

Is Reddit really dead, or just fussy? Both, for our purposes. A minute later the same plain request came back 429, and with a desktop browser user agent it came back 200. A source whose answer changes from run to run is exactly what quietly thins a briefing, so we keep the 200s and leave Reddit out unless we set up its authenticated API.

OpenClaw research agent daily briefing loop, You Do Not Get the World. You Get a Diff. Gather (fetch each source, at most 3 items each, one dead source never stops the run), Filter (anything research-baseline.md calls normal never reaches you), Compare (today against yesterday, report only what moved), Report (headline, source, significance, action). Files: research-sources.md, research-baseline.md, research-yesterday.md. 50 sources x 3 items, $6.91 a month.

The picture is the whole agent. Gather reads research-sources.md, the sources you curled and kept, grouped by how often to check them. It takes at most 3 items from each source and never lets one dead source stop the run. Filter drops anything research-baseline.md calls normal, which is the file that turns noise into signal. Compare reads research-yesterday.md and keeps only what moved. Report sends four lines per finding: headline, source, significance, action. Then the run writes today’s findings back to research-yesterday.md for tomorrow to compare against. We control two files, and we get one briefing that’s only what changed.

So what goes in the baseline? Two lists. Normal, do not report: minor version updates to tools you use, routine blog posts from the competitors you watch, small funding rounds, conference talk announcements. Always report: a security vulnerability in any tool you use, a pricing change from a model provider you pay, a new competitor in your market, regulatory action touching AI agents, and any mention of your company. Week one it over-reports and we tighten it; by week two it’s usually half a dozen findings a day that take ninety seconds to read.

The one dial

Save this as ~/.openclaw/workspace/skills/research-analyst/SKILL.md.

---
name: research-analyst
description: Monitor the user's research sources, compare against yesterday, and produce a daily intelligence briefing.
---

# Research Analyst

Use when asked for the daily briefing, or when run on a schedule.

1. Gather: read ~/.openclaw/workspace/research-sources.md and fetch each source. Take at most 3 items per source. If a source fails, note it and carry on.
2. Filter: read ~/.openclaw/workspace/research-baseline.md. Anything it calls normal stays out of the briefing.
3. Compare: read ~/.openclaw/workspace/research-yesterday.md and report only what is new or has moved.
4. Report: send me a Telegram message with four lines per finding: HEADLINE, SOURCE, SIGNIFICANCE, ACTION. Send anything urgent immediately as its own message.
5. Store: write today's findings to ~/.openclaw/workspace/research-yesterday.md, replacing what is there.

That “at most 3 items” is the dial. Why does it matter so much? Nearly the whole bill is input, the articles the agent reads, and it’s fresh every day, so caching barely helps. At about 1,500 tokens an article on a $0.95-per-million model, plus roughly fifty cents a month for the briefings themselves and a weekly deep-dive, 50 sources at 10 items each comes to about $22 a month. The same 50 sources at 3 items each comes to $6.91. That keeps all 50 sources for about a third of the money, and you won’t notice the seven items per source you stopped reading.

Then schedule it. And what happens when the 6am job fails? Nothing, unless we make failures loud.

openclaw skills info research-analyst --agent main      # want: Visible to model: yes
openclaw cron add "daily-research" --cron "0 6 * * *" --message "Run the daily research briefing" --announce
openclaw cron add "weekly-deep-dive" --cron "0 7 * * 1" --agent heavy --message "Run the weekly trend analysis over the last seven days of briefings" --announce
openclaw config set cron.failureAlert.enabled true

All four ran clean on a 2026.9.6 test gateway. The weekly job goes to a second agent on a better model, which only makes sense once a week over a small amount of text. And on 2026.9.6, openclaw config get cron.failureAlert answers “Config path is valid but unset” until you set it, which only means it’s still on the default.

I lost a week of monitoring once to a source that changed its URL, and I only noticed because the briefings felt thin. So my rule is to re-run the curl loop whenever the briefing shrinks, before I touch the baseline. Tonight, curl your own list, keep the 200s, and read tomorrow’s 6am briefing with the baseline file open beside it.

Now go build something this weekend!

John Cook

Why trust this? Every youcanbuildthings guide is pulled from a build-tested book: code that ran in production before it was written down.