Curated operator playbooks Get Weekly Skills Browse All Skills
Skill skill

Morning Email Rollup

Automatically generates a daily summary of important emails and delivers it to Telegram at 8am Denver time. Setup export GOG_ACCOUNT="[email protected]" Or edit the script dire…

Updated Apr 3, 2026 By One Person Company Editorial Team Skill system

Overview

Automatically generates a daily summary of important emails and delivers it to Telegram at 8am Denver time. Setup export GOG_ACCOUNT="[email protected]" Or edit the script directly to set the default. What It Does Runs every day at 8:00 AM (configurable timezone) Shows today's calendar events from Google Calendar Searches for emails marked as important or starred from the last 24 hours

Shows up to 20 most important emails with:

  • 🔴 Unread indicator (red)
  • 🟢 Read indicator (green)
  • Sender name/email
  • Subject line
  • AI-generated 1-sentence summary (natural language, not scraped content)
  • Delivers formatted summary to Telegram
  • Usage
  • Manual Run
  • # Default (10 emails)
  • bash skills/morning-email-rollup/rollup.sh
  • # Custom number of emails
  • MAX_EMAILS=20 bash skills/morning-email-rollup/rollup.sh
  • MAX_EMAILS=5 bash skills/morning-email-rollup/rollup.sh
  • View Log
  • cat $HOME/clawd/morning-email-rollup-log.md
  • How It Works
  • Checks calendar - Lists today's events from Google Calendar via gog
  • Searches Gmail - Query: is:important OR is:starred newer_than:1d
  • Fetches details - Gets sender, subject, date, and body for each email
  • Formats output - Creates readable summary with read/unread markers
  • Sends to Telegram - Delivers via Clawdbot's messaging system
  • Calendar Integration
  • The script automatically includes today's calendar events from your Google Calendar using the same gog CLI that queries Gmail.
  • Graceful Fallback:
  • If gog is not installed → Calendar section is silently skipped (no errors)
  • If no events today → Calendar section is silently skipped
  • If events exist → Shows formatted list with 12-hour times and titles
  • Requirements:
  • gog must be installed and authenticated
  • Uses the same Google account configured for Gmail (set via GOG_ACCOUNT environment variable)
  • Email Criteria
  • Emails are included if they match any of:
  • Marked as Important by Gmail (lightning bolt icon)
  • Manually Starred by you
  • Received in the last 24 hours
  • AI Summarization
  • Extracts the email body (cleans HTML/CSS)
  • The summary is medium-to-long length natural language (not scraped content)
  • Example output:
  • 🔴 William Ryan: Invitation to team meeting
  • The email invites you to a team meeting tomorrow at 2pm to discuss the Q1 roadmap and assign tasks for the upcoming sprint.
  • Read/Unread Indicators
  • 🔴 Red dot = Unread email
  • 🟢 Green dot = Read email
  • All emails show one of these markers for visual consistency.
  • Formatting Notes
  • Subject and Summary Cleanup:
  • Extra quotes are automatically stripped from subject lines (e.g., ""Agent Skills"" → Agent Skills)
  • This ensures clean, readable output in Telegram/other channels
  • Cron Schedule
  • Set up a daily cron job at your preferred time:
  • cron add --name "Morning Email Rollup" \
  • --schedule "0 8 *" \
  • --tz "America/Denver" \
  • --session isolated \
  • Adjust the time (8:00 AM) and timezone to your preference.
  • Customization
  • Change Number of Emails
  • By default, the rollup shows 10 emails. To change this:
  • Temporary (one-time):
  • MAX_EMAILS=20 bash skills/morning-email-rollup/rollup.sh
  • Permanent:
  • Edit skills/morning-email-rollup/rollup.sh:
  • MAX_EMAILS="${MAX_EMAILS:-20}" # Change 10 to your preferred number
  • Change Search Criteria
  • Edit skills/morning-email-rollup/rollup.sh:
  • # Current: important or starred from last 24h
  • IMPORTANT_EMAILS=$(gog gmail search 'is:important OR is:starred newer_than:1d' --max 20 ...)
  • # Examples of other searches:
  • # Unread important emails only
  • IMPORTANT_EMAILS=$(gog gmail search 'is:important is:unread newer_than:1d' --max 20 ...)
  • # Specific senders
  • IMPORTANT_EMAILS=$(gog gmail search 'from:[email protected] OR from:[email protected] newer_than:1d' --max 20 ...)
  • # By label/category
  • IMPORTANT_EMAILS=$(gog gmail search 'label:work is:important newer_than:1d' --max 20 ...)
  • Change Time
  • Update the cron schedule:
  • # List cron jobs to get the ID
  • cron list
  • # Update schedule (example: 7am instead of 8am)
  • cron update <job-id> --schedule "0 7 *" --tz "America/Denver"
  • Change Summary Style
  • Edit the prompt in the summarize_email() function in rollup.sh:
  • # Current: medium-to-long 1 sentence
  • "Summarize this email in exactly 1 sentence of natural language. Make it medium to long length. Don't use quotes:"
  • # Shorter summaries
  • "Summarize in 1 short sentence:"
  • # More detail
  • "Summarize in 2-3 sentences with key details:"
  • Change AI Model Routing
  • # Current: balanced (speed/quality tradeoff)
  • "prefer": "balanced"
  • # Prefer quality (uses best available LLM)
  • "prefer": "quality"
  • # Prefer price (uses most cost-efficient model)
  • "prefer": "price"
  • Troubleshooting
  • Not receiving rollups
  • # Check if cron job is enabled
  • cron list
  • # Check last run status
  • cron runs <job-id>
  • # Test manually
  • bash skills/morning-email-rollup/rollup.sh
  • Missing emails
  • Gmail's importance markers may filter out expected emails
  • Check if emails are actually marked important/starred in Gmail
  • Try running manual search: gog gmail search 'is:important newer_than:1d'
  • Summaries not appearing
  • If key is missing, the script falls back to a plain text excerpt
  • Wrong timezone
  • Cron uses America/Denver (MST/MDT)
  • Update with: cron update <job-id> --tz "Your/Timezone"
  • Log History
  • All rollup runs are logged to:
  • $HOME/clawd/morning-email-rollup-log.md
  • Format:
  • - [2026-01-15 08:00:00] 🔄 Starting morning email rollup
  • - [2026-01-15 08:00:02] ✅ Rollup complete: 15 emails

FAQ

What is Morning Email Rollup?

Automatically generates a daily summary of important emails and delivers it to Telegram at 8am Denver time. Setup export GOG_ACCOUNT="[email protected]" Or edit the script directly to set the default. What It Does Ru…

When should you use Morning Email Rollup?

Automatically generates a daily summary of important emails and delivers it to Telegram at 8am Denver time. Setup export GOG_ACCOUNT="[email protected]" Or edit the script directly to set the default. What It Does Ru…

What should the output of Morning Email Rollup look like?

A usable operating asset that helps a solo operator execute morning email rollup faster and with less guesswork.

Comments & Discussion

Add a comment