← Back to Skills Marketplace
2p1c

Gmail-digester

by 朱禹同 · GitHub ↗ · v1.1.4
cross-platform ⚠ suspicious
310
Downloads
0
Stars
1
Active Installs
5
Versions
Install in OpenClaw
/install gmail-summarize
Description
Fetch recent unread Gmail (yesterday + today) and send a digest to the user.
README (SKILL.md)

Gmail Recent Digest

Requirements

  • Python 3 must be available in the container environment (python command).
  • 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 email fields 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

  1. Run the fetch script via exec tool: python {workspace}/skills/gmail-summarize/scripts/fetch_unseen.py (replace {workspace} with your actual workspace root)

  2. Parse the JSON array. Each item has: sender, subject, date, body

  3. For each email compose one line: [date] sender | subject — one-sentence body summary

  4. Send the full digest via MessageTool in this format:

    📬 邮件摘要 (N封,覆盖 MM/DD–MM/DD)

    • [日期] 发件人 | 主题 — 一句话摘要 • [日期] 发件人 | 主题 — 一句话摘要 ...

  5. 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.
Usage Guidance
This skill will connect to an IMAP server and fetch unread messages; it requires IMAP_USERNAME and IMAP_PASSWORD (or a config file) even though the registry metadata claims no credentials — that's a red flag in the package metadata. Before installing or running: (1) verify the source/owner and prefer not to use your primary account password (use an app password or dedicated mailbox). (2) Understand that email bodies will be passed to the agent/model for summarization (sensitive content may be exposed to your LLM provider). (3) If you use a config file, ensure EMAIL_CONFIG_PATH points only to a file you control and contains only the expected fields. (4) Consider running this in an isolated environment or with a throwaway mailbox first. (5) Ask the publisher to correct the registry metadata to declare the required environment variables and to clarify any telemetry or external endpoints; lack of accurate metadata is the primary inconsistency here.
Capability Analysis
Type: OpenClaw Skill Name: gmail-summarize Version: 1.1.4 The skill is a standard utility for fetching and summarizing unread Gmail messages via IMAP. The Python script `fetch_unseen.py` uses standard libraries to authenticate and retrieve email metadata, while `SKILL.md` provides clear instructions for the AI agent to format the output as a digest. No evidence of data exfiltration to third parties, malicious execution, or obfuscation was found.
Capability Assessment
Purpose & Capability
The SKILL.md and included script clearly require IMAP credentials (IMAP_USERNAME, IMAP_PASSWORD) or an EMAIL_CONFIG_PATH config file. However the registry metadata above lists "Required env vars: none" and "Primary credential: none", which is inconsistent with the skill's stated purpose (fetching Gmail). Requiring IMAP creds is reasonable for this functionality, but the package/registry metadata failing to declare them is a serious coherence issue.
Instruction Scope
Runtime instructions are narrowly scoped: run the included Python script, parse its JSON output, and produce the digest message. The script will read an optional config file at ~/.config/gmail-summarize/config.json (or EMAIL_CONFIG_PATH) if env vars are not provided. Important privacy note: the agent is expected to summarize email bodies (translate one-sentence summaries into Chinese) — that means full or truncated email content will be provided to the agent/model for processing, which is exposure of sensitive data to the model/runtime.
Install Mechanism
No install spec — the skill is instruction+script only. Nothing is downloaded at install time; the only executable code is the included Python script.
Credentials
Requesting IMAP_USERNAME and IMAP_PASSWORD is proportionate for accessing a mailbox. The concern is that these required credentials are not declared in the registry metadata; additionally, the skill allows reading a config file from the user's home directory which may contain sensitive data if mispointed. Ensure you supply an app-specific password (not your primary Google password) and understand where the config file is read from.
Persistence & Privilege
The skill does not request persistent/always presence and does not modify other skills or system configs. It runs on-demand (user-invocable) and has normal agent invocation settings.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install gmail-summarize
  3. After installation, invoke the skill by name or use /gmail-summarize
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.1.4
No changes detected in this version. - Version 1.1.4 introduces no updates or modifications to the skill.
v1.1.3
- Improved and clarified documentation about required and optional environment variables. - Explicitly marked IMAP_USERNAME and IMAP_PASSWORD as required environment variables. - Added a 'runtime' field specifying Python 3 is required in skill metadata. - Noted that the config file is only used if environment variables are absent. - No changes to code; documentation and metadata improvements only.
v1.1.1
- Expanded and clarified configuration options: now supports both environment variables (recommended) and config file for IMAP credentials. - Updated requirements and security notes to emphasize best practices for storing sensitive credentials. - Improved documentation with clearer instructions, config file format example, and explicit external connection information. - No changes to the digest output rules or the core functionality.
v1.0.1
- Added explicit requirements for Python 3 and valid email credentials in `~/.nanobot/config.json` - Clarified authentication details and error handling if email credentials are missing or incorrect - Specified that email channel state (`enabled`) does not affect credential usage; credentials are always required - No changes to workflow or output format
v1.0.0
Initial release: Fetches recent unread Gmail messages (yesterday + today) and sends a concise digest in Chinese. - Triggers via user request or scheduled cron message. - Summarizes each email in one line: `[date] sender | subject — one-sentence Chinese summary`. - All text outside sender and subject is translated to Chinese. - If no unread emails: displays a notification message in Chinese. - Output strictly follows the digest format with no extra commentary.
Metadata
Slug gmail-summarize
Version 1.1.4
License
All-time Installs 1
Active Installs 1
Total Versions 5
Frequently Asked Questions

What is Gmail-digester?

Fetch recent unread Gmail (yesterday + today) and send a digest to the user. It is an AI Agent Skill for Claude Code / OpenClaw, with 310 downloads so far.

How do I install Gmail-digester?

Run "/install gmail-summarize" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Gmail-digester free?

Yes, Gmail-digester is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Gmail-digester support?

Gmail-digester is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Gmail-digester?

It is built and maintained by 朱禹同 (@2p1c); the current version is v1.1.4.

💬 Comments