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.md file 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

Download morning-briefing.mjs

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 →