Daily Workflow Automation
Start your day with an AI-generated briefing, automate standup notes from git history, and close the day with automatic progress summaries.
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.mdAutomatic 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).mdEnd-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>&1Custom 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 || trueAutomated 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 -lExpected 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
- Scheduling — advanced cron and systemd timer patterns
- Script Execution