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:

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 brave instead.

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:

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:

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:

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:

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.