morning-email-rollup

0
0
Source

Daily morning rollup of important emails and calendar events at 8am with AI-generated summaries

Install

mkdir -p .claude/skills/morning-email-rollup && curl -L -o skill.zip "https://mcp.directory/api/skills/download/8002" && unzip -o skill.zip -d .claude/skills/morning-email-rollup && rm skill.zip

Installs to .claude/skills/morning-email-rollup

About this skill

Morning 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

  1. Checks calendar - Lists today's events from Google Calendar via gog
  2. Searches Gmail - Query: is:important OR is:starred newer_than:1d
  3. Fetches details - Gets sender, subject, date, and body for each email
  4. AI Summarization - Uses Gemini CLI to generate natural language summaries
  5. Formats output - Creates readable summary with read/unread markers
  6. 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

Each email is summarized using the Gemini CLI (gemini):

  • Extracts the email body (cleans HTML/CSS)
  • Sends to gemini --model gemini-2.0-flash with 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 gemini CLI 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

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

9521,094

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

846846

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

571700

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

548492

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

673466

fastapi-templates

wshobson

Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.

514280

Stay ahead of the MCP ecosystem

Get weekly updates on new skills and servers.