gmail-summarize
v1.1.4Fetch recent unread Gmail (yesterday + today) and send a digest to the user.
Installation
Please help me install the skill `gmail-summarize` from SkillHub official store.
npx skills add 2p1c/gmail-summarize
Gmail Recent Digest
Requirements
- Python 3 must be available in the container environment (
pythoncommand). - IMAP credentials must be supplied via one of the following methods (env vars take precedence):
Option A — Environment variables (recommended)
| Variable | Description | Default |
|---|---|---|
IMAP_HOST |
IMAP server hostname | imap.gmail.com |
IMAP_PORT |
IMAP server port | 993 |
IMAP_USERNAME |
IMAP login username | (required) |
IMAP_PASSWORD |
IMAP login password / app-password | (required) |
IMAP_MAX_BODY_CHARS |
Max body characters per email | 2000 |
Option B — Config file
Set EMAIL_CONFIG_PATH to point to a JSON file, or place the file at ~/.config/gmail-summarize/config.json.
The file must contain only the fields below (no other sensitive data should be stored in this file):
{
"email": {
"imapHost": "imap.gmail.com",
"imapPort": 993,
"imapUsername": "[email protected]",
"imapPassword": "your-app-password",
"maxBodyChars": 2000
}
}
Security notes
- Preferred: supply credentials via environment variables (
IMAP_HOST,IMAP_PORT,IMAP_USERNAME,IMAP_PASSWORD) so no file on disk is read at all. - When a config file is used, it should contain only the
emailfields listed above. The script reads only those four fields and nothing else from the file. - The only external connection made is to the IMAP server declared in
IMAP_HOST/email.imapHost. No other endpoints are contacted. - Credentials are used solely to authenticate the IMAP session and are not logged or stored elsewhere by this skill.
When to use
- User asks "check my Gmail", "summarize my emails", "邮件摘要"
- Cron trigger message contains "gmail_digest"
Workflow
- Run the fetch script via exec tool:
python {workspace}/skills/gmail-summarize/scripts/fetch_unseen.py(replace {workspace} with your actual workspace root) - Parse the JSON array. Each item has: sender, subject, date, body
- For each email compose one line:
[date] sender | subject — one-sentence body summary - Send the full digest via MessageTool in this format:
📬 邮件摘要 (N封,覆盖 MM/DD–MM/DD)
• [日期] 发件人 | 主题 — 一句话摘要 • [日期] 发件人 | 主题 — 一句话摘要 ...
- If result is empty, send: 📭 近两日暂无未读邮件
Output Rules
- Send the digest message ONLY. Do NOT add any extra comments, greetings, explanations, or follow-up questions before or after the digest.
- Do NOT say things like "主人,以下是您的邮件摘要" or "如需了解详情请告知" etc.
- The digest message itself is the complete and final response.
- The one-sentence body summary MUST be translated into Chinese. Sender names and subjects should keep their original text as-is.