Prerequisites

  • OpenClaw v1.0.0+ installed
  • API key for OpenAI, Claude, or Ollama configured
  • A cron-capable OS (Linux/macOS) or Windows Task Scheduler
  • Optional: Telegram or Discord bot token for notifications (Telegram Guide)

Morning Briefing Script

#!/bin/bash
# morning.sh — run at 8:00 AM via cron
TODAY=$(date +%Y-%m-%d)
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

# Collect context
git_changes=$(git -C ~/projects/myapp log --oneline --since="$YESTERDAY" 2>/dev/null)
open_prs=$(gh pr list --json title,author,updatedAt 2>/dev/null)
tasks=$(cat ~/tasks.md 2>/dev/null)

# Generate briefing
cat <<EOF | openclaw run --stdin --output ~/briefings/$TODAY.md
Generate a morning briefing for $TODAY with sections:
1. Yesterday's git activity summary
2. Open PRs needing review
3. Today's top 3 priorities (from task list)
4. Motivational note (1 sentence)

Git activity:
$git_changes

Open PRs:
$open_prs

Task list:
$tasks
EOF

# Display it
cat ~/briefings/$TODAY.md

Automatic Standup Notes

#!/bin/bash
# standup.sh — generate daily standup notes from git
git log --oneline --since="yesterday" --author="$(git config user.email)" | \
  openclaw run \
    "Generate a standup update in this format:
     DONE: (bullet list of what was completed yesterday)
     TODAY: (bullet list of what to work on today, inferred from context)
     BLOCKERS: (any blockers or questions, if none say 'None')
     
     Keep each bullet to one sentence. Be concise." \
  --output standup-$(date +%Y-%m-%d).md

End-of-Day Summary

#!/bin/bash
# eod.sh — run at 5:30 PM via cron
git log --oneline --since="today" --author="$(git config user.email)" > /tmp/today-commits.txt
ls -lt ~/Downloads/ | head -20 > /tmp/downloads.txt

openclaw run \
  "Write a brief end-of-day summary: what was accomplished today, key decisions made, and what to pick up tomorrow. Use bullet points." \
  --file /tmp/today-commits.txt \
  --output ~/journals/$(date +%Y-%m-%d)-eod.md

echo "EOD summary saved."

Setting Up the Daily Schedule

# Add to crontab (run: crontab -e)
# Morning briefing at 8:00 AM Mon-Fri
0 8 * * 1-5 /home/user/scripts/morning.sh >> /var/log/openclaw-morning.log 2>&1

# Standup notes at 9:00 AM Mon-Fri
0 9 * * 1-5 /home/user/scripts/standup.sh >> /var/log/openclaw-standup.log 2>&1

# EOD summary at 5:30 PM Mon-Fri
30 17 * * 1-5 /home/user/scripts/eod.sh >> /var/log/openclaw-eod.log 2>&1

Custom Notifications and Delivery

Send your daily briefing to multiple destinations depending on your setup:

#!/usr/bin/env bash
# deliver.sh — send output to multiple channels

MESSAGE=$(cat /tmp/briefing.txt)

# Desktop notification (macOS)
if [[ "$OSTYPE" == "darwin"* ]]; then
  osascript -e "display notification \"$MESSAGE\" with title \"Morning Briefing\""
fi

# Desktop notification (Linux, with notify-send)
if command -v notify-send >/dev/null; then
  notify-send "Morning Briefing" "$MESSAGE"
fi

# Append to a daily journal file
DATE=$(date +%F)
echo "## $DATE" >> ~/journal.md
echo "$MESSAGE" >> ~/journal.md
echo "" >> ~/journal.md

# Send via Telegram (if configured)
openclaw telegram send "$MESSAGE" 2>/dev/null || true

Automated Weekly Review

At the end of each week, generate a personal performance and productivity review:

#!/usr/bin/env bash
# weekly-review.sh — runs every Friday at 5 PM

# Gather this week's data
GIT_LOG=$(git log --oneline --since="7 days ago" --all 2>/dev/null)
JOURNAL=$(cat ~/journal.md 2>/dev/null | tail -n 200)
TASKS=$(cat ~/completed-tasks.txt 2>/dev/null)

# Generate review
printf "Git activity:\n%s\n\nJournal:\n%s\n\nCompleted tasks:\n%s" \
  "$GIT_LOG" "$JOURNAL" "$TASKS" | \
  openclaw run "
  Generate a concise weekly review:
  1. Key accomplishments (bullet list)
  2. What went well
  3. What could improve next week
  4. Priority for Monday (top 3 tasks)
  Keep it under 250 words." \
  --output ~/weekly-reviews/$(date +%F).md

echo "Weekly review saved to ~/weekly-reviews/$(date +%F).md"

Productivity Tips for Daily Automation

  • Keep scripts idempotent — they should be safe to run multiple times
  • Save outputs to dated files — use $(date +%F) in filenames for easy lookup
  • Use local models for daily tasks — Ollama with llama3 avoids API costs for high-frequency tasks
  • Set up smart defaults — configure a default provider and model so scripts run without flags
  • Review logs weekly — periodically check your cron job logs to catch failures

Try It Yourself

Start your automated daily workflow in minutes with these ready-to-run examples:

1 — Your first morning briefing

# Run a morning briefing right now
openclaw run "Give me a concise morning briefing for a software developer: today's date, day of week, a productivity tip, and a reminder to check emails and Slack messages before diving into code."

2 — Schedule it for 8 AM every day

# Add to crontab (Linux/Mac)
(crontab -l 2>/dev/null; echo "0 8 * * 1-5 openclaw run 'Morning briefing for a developer' --output ~/morning-brief.md") | crontab -

# Verify it was added
crontab -l

Expected result: Every weekday at 8:00 AM, OpenClaw generates a fresh briefing and saves it to ~/morning-brief.md.

3 — End-of-day git summary

# Run at end of workday to summarize what you did
openclaw run "Run 'git log --oneline --since=8am --author=$(git config user.email)' and write a human-readable summary of today's commits suitable for a standup update."
💡
Combine the morning briefing with the EOD git summary using a single bash script that runs both via OpenClaw and formats the output as a daily log file.

What's Next

  • Scheduling — advanced cron setup with retry logic and monitoring
  • Telegram Integration — receive your daily briefing on your phone
  • Task Automation — expand beyond daily workflows to full task pipelines
  • AI Pipelines — chain your daily workflow scripts into multi-stage pipelines
💡
See Also