Your first automated workflow. wake up to a personalized AI briefing every day
This guide walks you through setting up a daily morning briefing that your OpenClaw agent delivers automatically. You define what goes in it. news, weather, tasks, job listings, study tips, whatever matters to your day. and it shows up every morning without you lifting a finger.
What you'll have at the end: A cron job that runs every morning at a time you choose, produces a briefing based on your interests, and delivers it to your Telegram or dashboard.
Prerequisites
Before starting, you need:
- An Azure VM with OpenClaw installed and running (see our Azure Setup guide)
- An LLM provider connected (Anthropic, OpenAI, or Azure OpenAI)
- SSH access to your VM
- Optionally: Telegram set up (so the briefing arrives on your phone)
If your VM is deallocated, start it first:
az vm start --resource-group rg-openclaw --name vm-openclaw
SSH in:
ssh openclaw@<YOUR_VM_IP>
Verify the gateway is running:
openclaw gateway status
Step 1: Give Your Agent Context
For a useful briefing, your agent needs to know who you are and what you care about. OpenClaw uses two workspace files for this: USER.md (who you are) and SOUL.md (how the agent should behave). These files get loaded into every conversation, so the agent always has context.
Create USER.md
nano ~/.openclaw/workspace/USER.md
Paste the template below and edit it to match you. Remove sections that don't apply, add your own interests.
# About Me
Name: [Your name]
Location: [Your city/country]
Timezone: [e.g. Europe/Amsterdam, America/New_York]
Language: [e.g. English (native), Spanish (fluent)]
# What I Do
Role: [e.g. Software developer, IT manager, Student, Freelancer]
Industry: [e.g. Tech, Finance, Healthcare]
Currently working on: [brief description]
# What I Care About
- [Interest 1, e.g. AI and automation]
- [Interest 2, e.g. Cloud infrastructure]
- [Interest 3, e.g. Job market trends in my field]
- [Interest 4, e.g. Cybersecurity news]
# Communication Preferences
- Direct and concise
- [Your preferred language for responses]
- Actionable over informational
Save: press Ctrl+X, then Y, then Enter.
Create SOUL.md
This tells the agent how to behave. Keep it short. every line gets loaded into every message, which costs tokens.
nano ~/.openclaw/workspace/SOUL.md
# Soul
You are a practical personal assistant.
## Rules
- Be direct and concise. Skip filler.
- When given a task, do it. Don't describe what you would do.
- If you search the web, always include source URLs.
- Never invent facts. If you don't know something, say so.
- For morning briefings: focus on what's actionable, not just informational.
## Autonomy
- You may search the web without asking permission.
- You may read and write files in your workspace without asking.
- Do NOT send emails, messages, or make purchases without explicit approval.
Save: Ctrl+X, then Y, then Enter.
Verify it works
openclaw gateway restart
Open the dashboard (via SSH tunnel or Telegram) and ask:
What do you know about me?
The agent should mention your name, location, and interests from USER.md. If it gives a generic answer, the file didn't load. check the file path is exactly ~/.openclaw/workspace/USER.md.
Step 2: Enable Web Search
A briefing without live information is just a chatbot making things up. Your agent needs web search so it can find real news, weather, and current data.
Configure DuckDuckGo (free, no API key needed)
nano ~/.openclaw/openclaw.json
Find the tools section (or add one if it doesn't exist) and set:
"tools": {
"web": {
"search": {
"provider": "duckduckgo"
}
}
}
Save and restart:
openclaw gateway restart
Test it
In the dashboard or Telegram, ask:
Search the web for "latest AI news today" and give me 3 results with URLs.
If the agent returns actual results with links, web search is working.
If DuckDuckGo doesn't work: It sometimes blocks automated requests temporarily. If it fails consistently, sign up for a free Brave Search API key (1,000 queries/month on the free tier) and set the provider to
braveinstead.
Step 3: Create the Morning Briefing
Now the main event. You'll create a scheduled cron job that runs every day and sends your agent a prompt. The agent processes it, searches the web, and delivers the result.
Write your briefing prompt
The prompt tells the agent exactly what to include. Here's a template. customize it for your interests:
Morning briefing for today. Include:
1) Top 3 news items in [YOUR FIELD] from the past 24 hours (search the web, include URLs).
2) One interesting development in [YOUR INTEREST AREA] from this week.
3) Weather forecast for [YOUR CITY] today.
Keep it concise. no more than 300 words total.
For example, if you're a cybersecurity professional in London, your prompt might be:
Morning briefing for today. Include:
1) Top 3 cybersecurity news items from the past 24 hours (search the web, include URLs).
2) One interesting AI or cloud security development from this week.
3) Weather forecast for London today.
Keep it concise. no more than 300 words total.
Or if you're a freelance designer in Berlin interested in AI tools:
Morning briefing for today. Include:
1) Top 3 AI tool launches or updates from the past 24 hours (search the web, include URLs).
2) One trending topic on Dribbble or Behance this week.
3) Weather forecast for Berlin today.
Keep it concise. no more than 300 words total.
Create the cron job
Once you've written your prompt, create the cron job. Replace YOUR PROMPT HERE with your actual prompt:
openclaw cron add \
--name "Morning briefing" \
--cron "0 8 * * *" \
--tz "Europe/Amsterdam" \
--session isolated \
--message "YOUR PROMPT HERE" \
--announce
What each flag does:
| Flag | What it does |
|---|---|
--cron "0 8 * * *" |
Runs at 8:00 AM every day. Change the 8 to your preferred hour. |
--tz "Europe/Amsterdam" |
Your timezone. Use America/New_York, Asia/Tokyo, etc. |
--session isolated |
Runs in a fresh context so it doesn't mix with your other chats. |
--message "..." |
The prompt the agent receives every morning. |
--announce |
Shows the result in the dashboard. |
Verify it was created
openclaw cron list
You should see "Morning briefing" listed with the schedule 0 8 * * * and enabled = true.
Step 4: Test It Right Now
Don't wait until tomorrow. Run the briefing manually:
openclaw cron run <JOB_ID>
Replace <JOB_ID> with the ID shown in openclaw cron list (it's a long string like ecae2e71-1331-4ebf-94ab-cc643e550cfe).
Check the dashboard or Telegram. your briefing should appear within a minute or two.
You can also check the run history:
openclaw cron runs --id <JOB_ID>
If it fails:
- Check the logs:
cat /tmp/openclaw/openclaw-*.log | tail -50 - Web search not returning results → go back to Step 2
- API errors → verify your LLM provider key is set correctly
- Timeout → simplify your prompt (remove one section, reduce from 3 items to 2)
Tips
Your VM must be running for the briefing to fire
If you deallocate the VM at night, the 8 AM briefing won't run. Your options:
- Keep the VM running on days you want the briefing (costs ~€0.04/hr)
- Set up Azure auto-start to boot the VM at 7:30 AM before the briefing runs
- Change the cron time to when the VM is already on
- Run it manually with
openclaw cron run <JOB_ID>whenever you start the VM
Costs
A single morning briefing uses roughly 5,000-15,000 tokens depending on web search results. With most LLM providers, that costs about $0.005-0.01 per run. roughly $0.15-0.30 per month if you run it daily.
Deliver to Telegram instead of dashboard
If you have Telegram set up (covered in the Azure Setup guide), the briefing is automatically delivered there too when you use --announce. No extra configuration needed.
Managing your cron job
# Edit the prompt or schedule:
openclaw cron edit <JOB_ID>
# Temporarily disable without deleting:
openclaw cron disable <JOB_ID>
# Re-enable:
openclaw cron enable <JOB_ID>
# Delete entirely:
openclaw cron rm <JOB_ID>
Customize Your Briefing
After running the briefing for a few days, you'll notice what you actually read and what you skip. Refine the prompt. Here are some ideas for sections you can add or swap in:
- Calendar summary. "What meetings do I have today?" (requires calendar integration)
- Stock prices or crypto. "Current price of BTC and ETH"
- Job listings. "3 new [your field] jobs posted yesterday in [your region]"
- Study/learning. "One practice question for [certification you're studying for]"
- Project status. "Read my ~/projects/status.md and remind me what's next"
- Social media trends. "What's trending in [subreddit or hashtag] today"
You can change the prompt at any time with openclaw cron edit and the next morning you get a completely different briefing.
Quick Reference
| What | Command |
|---|---|
| SSH into VM | ssh openclaw@<YOUR_VM_IP> |
| Gateway status | openclaw gateway status |
| Gateway restart | openclaw gateway restart |
| List cron jobs | openclaw cron list |
| Run cron job now | openclaw cron run <JOB_ID> |
| Check run history | openclaw cron runs --id <JOB_ID> |
| Edit cron job | openclaw cron edit <JOB_ID> |
| Disable cron job | openclaw cron disable <JOB_ID> |
| View logs | cat /tmp/openclaw/openclaw-*.log \| tail -50 |
| USER.md location | ~/.openclaw/workspace/USER.md |
| SOUL.md location | ~/.openclaw/workspace/SOUL.md |
| Config file | ~/.openclaw/openclaw.json |
What's Next
Once your morning briefing runs reliably, check out these guides:
- Secret Management. your API keys are in a config file right now. Learn how to store them properly.
- LinkedIn Scraper with Telegram. build an automated job search pipeline with AI-powered filtering.
What's Next?
Ready for something more advanced? The LinkedIn Job Scraper guide shows you how to build a full job search pipeline with AI-powered fit scoring and a daily Telegram digest.
If you haven't secured your API keys yet, the Secret Management guide covers .env files, Azure Key Vault, and safe credential rotation.