Morning Email Rollup
Daily morning rollup of important emails and calendar events at 8am with AI-generated summaries
am-will
@am-will
What This Skill Does
Daily morning email and calendar rollup that runs at 8am, fetches important or starred emails from the last 24 hours, lists today's calendar events, and sends an AI-summarized digest to Telegram. Uses Gemini to generate natural language summaries for each email.
Replaces manually checking Gmail and Google Calendar each morning by delivering a curated, AI-summarized digest to Telegram at a scheduled time.
When to Use It
- Get a quick morning overview of important emails without opening Gmail
- See today's calendar events alongside email highlights in one message
- Catch up on overnight emails while commuting or starting the day
- Receive AI-generated summaries of starred or important emails instead of reading full threads
- Stay on top of unread important emails with visual read/unread indicators
Install
$ openclaw skills install @am-will/morning-email-rollupMorning Email Rollup
Automatically generates a daily summary of important emails and delivers it to Telegram at 8am Denver time.
Setup
Required: Set your Gmail account email:
export GOG_ACCOUNT="your-email@gmail.com"
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
- Uses AI (Gemini CLI) to generate natural language summaries of each email
- 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
- AI Summarization - Uses Gemini CLI to generate natural language summaries
- 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
gogis 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:
gogmust be installed and authenticated- Uses the same Google account configured for Gmail (set via
GOG_ACCOUNTenvironment 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
Each email is summarized using the Gemini CLI (gemini):
- Extracts the email body (cleans HTML/CSS)
- Sends to
gemini --model gemini-2.0-flashwith a prompt to summarize in 1 sentence - The summary is medium-to-long length natural language (not scraped content)
- Falls back to cleaned body text if Gemini is unavailable
Important: The email body is passed as part of the prompt (not via stdin) because the gemini CLI doesn't handle piped input with prompts correctly.
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) - Summaries from Gemini are also cleaned of leading/trailing quotes
- 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 \
--message "GOG_ACCOUNT=your-email@gmail.com bash /path/to/skills/morning-email-rollup/rollup.sh"
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:boss@company.com OR from:client@example.com 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
Edit the gemini command in summarize_email():
# Current: gemini-2.0-flash (fast)
gemini --model gemini-2.0-flash "Summarize..."
# Use a different model
gemini --model gemini-pro "Summarize..."
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
- Check if
geminiCLI is installed:which gemini - Test manually:
echo "test" | gemini "Summarize this:" - Verify Gemini is authenticated (it should prompt on first run)
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
Related skills
Clippy - Microsoft 365 CLI
@foekenMicrosoft 365 / Outlook CLI for calendar and email. Use when managing Outlook calendar (view, create, update, delete events, find meeting times, respond to invitations), sending/reading emails, or searching for people/rooms in the organization.
Automatically logs into email accounts (Gmail, Outlook, QQ Mail, etc.) and generates daily email summaries. Use when the user wants to get a summary of their emails, check important messages, or create daily email digests.
@10e9928aAutomatically logs into email accounts (Gmail, Outlook, QQ Mail, etc.) and generates daily email summaries. Use when the user wants to get a summary of their emails, check important messages, or create daily email digests.
Outlook Inbox
@hith3shSearch Outlook mail, read threads, manage drafts, send or reply to email, and manage calendar events via Microsoft Graph. Use this skill when users want to m...
Tmp.DsJv7e0ZVB
@chrischallRead and manage your Skylight Calendar family hub โ calendar events, chores and reward stars, and shared lists (grocery/to-do). Triggers on phrases like "che...
Email To Calendar
@tonimelismaTurn emails into Google Calendar events. Scans your Gmail inbox (or only forwarded emails) to extract meetings, appointments, RSVPs, and deadlines, then crea...
Office 365 Connector
@tirandaganOffice 365 / Outlook connector for email (read/send), calendar (read/write), and contacts (read/write) using resilient OAuth authentication. NOW WITH MULTI-ACCOUNT SUPPORT! Manage multiple Microsoft 365 identities from a single skill. Solves the difficulty connecting to Office 365 email, calendar, and contacts. Uses Microsoft Graph API with comprehensive Azure App Registration setup guide. Perfect for accessing your Microsoft 365/Outlook data from OpenClaw.