Build a WhatsApp Morning Briefing with OpenClaw in 30 Minutes
Weather, top AI/tech news, and your active goals — delivered to WhatsApp every morning at 7AM. One script, no paid APIs, runs on a Raspberry Pi.
Every morning at 7AM IST, a message lands in my WhatsApp:
☀️ Good morning, Rakesh!
Saturday, 28 Mar 2026 · 7:00 AM IST
🌤️ Weather — Pune
🌡️ 24°C, Clear
Feels 25°C · Humidity 44% · Wind 11 km/h
Today: 22°–36°C
📰 Top News
• Anthropic's Claude popularity with paying consumers is skyrocketing
• SoftBank's $40B loan points to a 2026 OpenAI IPO
• xAI's last co-founder departs Elon Musk's AI startup
• SK hynix could end 'RAMmageddon' with blockbuster US IPO
• VCs betting billions on AI's next wave as OpenAI kills Sora
— Sharky 🦈
Here's how to build it.
What it does
- Weather from wttr.in — free, no API key
- News from TechCrunch AI, Hacker News, and The Verge RSS feeds — filtered and reformatted by DeepSeek V3.2 via OpenRouter (~$0.001 per run)
- Today's goals from your
TODAY.mdfile if you use one - Sent to WhatsApp via the OpenClaw gateway WebSocket
Total daily cost: under $0.001. Monthly: under $0.03.
Prerequisites
- OpenClaw running on your machine (with WhatsApp connected)
- OpenRouter API key (already in your OpenClaw config)
- Node.js 18+
The script
Drop it in ~/.openclaw/workspace/scripts/ or anywhere on your machine.
At the top, configure your city and WhatsApp target:
const CITY = "Pune"; // change to your city
const WA_TARGET = "+919762114354"; // your WhatsApp number
const TOPICS = "AI models, self-hosted AI, Indian tech, global tech";
The script reads your OpenRouter key from ~/.openclaw/agents/main/agent/auth-profiles.json — the same place OpenClaw stores it. No extra setup.
How the news works
Three RSS feeds are fetched in parallel:
const RSS_FEEDS = [
"https://techcrunch.com/category/artificial-intelligence/feed/",
"https://news.ycombinator.com/rss",
"https://www.theverge.com/rss/index.xml",
];
Each feed returns up to 15 headlines. DeepSeek V3.2 picks the 5 most relevant to your configured topics and rewrites them to be concise. If OpenRouter is unreachable, the script falls back to the raw headlines directly.
Why RSS + LLM rather than a search API? RSS is free, reliable, and has no rate limits. The LLM layer costs a fraction of a cent and handles the filtering and rewriting — you get search-quality output without the quota problems.
Test it first
node morning-briefing.mjs --dry
This prints the message without sending. When it looks right:
node morning-briefing.mjs
Add the cron job
7AM IST is 01:30 UTC:
crontab -e
Add:
30 1 * * * node /path/to/morning-briefing.mjs >> /tmp/morning-briefing.log 2>&1
Customise the topics
node morning-briefing.mjs --topics "crypto, Indian startups, climate tech"
The --topics flag rewires what DeepSeek filters for. No code changes needed.
What this costs
On a typical run:
- ~45 RSS headlines fetched
- DeepSeek prompt: ~200 input tokens, ~80 output tokens
- Cost: ~$0.00008 per run — effectively zero
Monthly (30 runs): ~$0.002.
Compare that to Perplexity Pro ($20/month) or a News API subscription ($50+/month). The output quality is comparable for a morning digest.
The full script is available as a free download above. The hybrid routing guide covers how to build the three-tier model routing config that keeps costs like this permanently low.
More free routing guides
Drop-in config snippets, classification prompts, and fallback chains — all free.
View all guides →