ClawSkills logoClawSkills

Morning Email Rollup

每天上午 8 点汇总重要电子邮件和日历事件,并提供 AI 生成的摘要

介绍

# Morning Email Rollup

自动生成每日重要邮件摘要,并于丹佛时间上午 8 点发送至 Telegram。

## 设置

**必填:**设置您的 Gmail 账户邮箱: ```bash export GOG_ACCOUNT="[email protected]" ```

或者直接编辑脚本以设置默认值。

## 功能

- 每天上午 8:00 运行(时区可配置) - **显示今日日历事件**,来源为 Google Calendar - 搜索过去 24 小时内标记为 **重要** 或 **加星标** 的邮件 - 使用 AI (Gemini CLI) 为每封邮件生成自然语言摘要 - 显示最多 20 封最重要的邮件,包含: - 🔴 未读指示器(红色) - 🟢 已读指示器(绿色) - 发件人姓名/邮箱 - 邮件主题 - **AI 生成的单句摘要**(自然语言,非抓取内容) - 将格式化后的摘要发送至 Telegram

## 使用方法

### 手动运行 ```bash # 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 ```

### 查看日志 ```bash cat $HOME/clawd/morning-email-rollup-log.md ```

## 工作原理

1. **检查日历** - 通过 `gog` 列出 Google Calendar 中的今日事件 2. **搜索 Gmail** - 查询条件:`is:important OR is:starred newer_than:1d` 3. **获取详细信息** - 获取每封邮件的发件人、主题、日期和正文 4. **AI 摘要** - 使用 Gemini CLI 生成自然语言摘要 5. **格式化输出** - 创建带有已读/未读标记的可读摘要 6. **发送至 Telegram** - 通过 Clawdbot 的消息系统发送

## 日历集成

该脚本使用与查询 Gmail 相同的 `gog` CLI,自动包含您 Google Calendar 中的今日事件。

**优雅降级处理:** - 如果未安装 `gog` → 默默跳过日历部分(不会报错) - 如果今天没有事件 → 默默跳过日历部分 - 如果存在事件 → 显示带有 12 小时制时间和标题的格式化列表

**要求:** - 必须安装并验证 `gog` - 使用与 Gmail 配置相同的 Google 账户(通过 `GOG_ACCOUNT` 环境变量设置)

## 邮件筛选标准

如果邮件满足以下 **任意** 条件,则会被包含: - 被 Gmail 标记为 **重要**(闪电图标) - 被您手动 **加星标** - **过去 24 小时内** 收到

## AI 摘要

每封邮件都使用 Gemini CLI (`gemini`) 进行摘要: - 提取邮件正文(清理 HTML/CSS) - 发送至 `gemini --model gemini-2.0-flash` 并附带提示词以生成单句摘要 - 摘要为中等长度的自然语言(非抓取内容) - 如果 Gemini 不可用,则回退使用清理后的正文文本

**注意:** 邮件正文是作为提示词的一部分传递的(而非通过 stdin),因为 gemini CLI 无法正确处理带提示词的管道输入。

**输出示例:** ``` 🔴 **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. ```

## 已读/未读指示器

- 🔴 红点 = 未读邮件 - 🟢 绿点 = 已读邮件

所有邮件都会显示这些标记之一,以保持视觉一致性。

## 格式化说明

**主题和摘要清理:** - 主题行中多余的引号会自动去除(例如 `""Agent Skills""` → `Agent Skills`) - Gemini 生成的摘要也会去除前后的引号 - 这确保了在 Telegram/其他频道中输出整洁易读

## Cron 计划

在您偏好的时间设置每日 cron 任务: ```bash cron add --name "Morning Email Rollup" \ --schedule "0 8 * * *" \ --tz "America/Denver" \ --session isolated \ --message "[email protected] bash /path/to/skills/morning-email-rollup/rollup.sh" ```

根据您的偏好调整时间(上午 8:00)和时区。

## 自定义

### 更改邮件数量

默认情况下,汇总显示 **10 封邮件**。要更改此设置:

**临时(一次性):** ```bash MAX_EMAILS=20 bash skills/morning-email-rollup/rollup.sh ```

**永久:** 编辑 `skills/morning-email-rollup/rollup.sh`: ```bash MAX_EMAILS="${MAX_EMAILS:-20}" # Change 10 to your preferred number ```

### 更改搜索标准

编辑 `skills/morning-email-rollup/rollup.sh`:

```bash # 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 ...) ```

### 更改时间

更新 cron 计划: ```bash # 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" ```

### 更改摘要风格

编辑 `rollup.sh` 中 `summarize_email()` 函数内的提示词:

```bash # 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:" ```

### 更改 AI 模型

编辑 `summarize_email()` 中的 gemini 命令: ```bash # Current: gemini-2.0-flash (fast) gemini --model gemini-2.0-flash "Summarize..."

# Use a different model gemini --model gemini-pro "Summarize..." ```

## 故障排除

### 未收到汇总 ```bash # 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 ```

### 缺少邮件 - Gmail 的重要性标记可能会过滤掉预期的邮件 - 检查邮件在 Gmail 中是否确实标记为重要/加星标 - 尝试运行手动搜索:`gog gmail search 'is:important newer_than:1d'`

### 摘要不显示 - 检查是否安装了 `gemini` CLI:`which gemini` - 手动测试:`echo "test" | gemini "Summarize this:"` - 验证 Gemini 是否已通过身份验证(首次运行时应该会提示)

### 时区错误 - Cron 使用 `America/Denver` (MST/MDT) - 使用以下命令更新:`cron update <job-id> --tz "Your/Timezone"`

## 日志历史

所有汇总运行都记录在: ``` $HOME/clawd/morning-email-rollup-log.md ```

格式: ```markdown - [2026-01-15 08:00:00] 🔄 Starting morning email rollup - [2026-01-15 08:00:02] ✅ Rollup complete: 15 emails ```

更多产品