gmail-skill

gmail-skill

读取、搜索、发送和草拟 Gmail 邮件以及 Google 联系人。当用户要求查看邮件、查找邮件、搜索消息、发送邮件、创建草稿、查找联系人或查找某人的电子邮件/电话时使用。支持多个账户。

12Star
3Fork
更新于 2026/7/22
SKILL.md
readonly只读
name
gmail-skill
description

读取、搜索、发送和草拟 Gmail 邮件以及 Google 联系人。当用户要求查看邮件、查找邮件、搜索消息、发送邮件、创建草稿、查找联系人或查找某人的电子邮件/电话时使用。支持多个账户。

Gmail 技能 - 邮件与联系人访问

读取、搜索和发送 Gmail 邮件。访问 Google 联系人。

关键:发送邮件前需确认

在发送任何邮件之前,您必须获得用户的明确确认。

当用户要求发送邮件时:

  1. 首先,向他们展示完整的邮件详情:
    • 发件人(哪个账户)
    • 收件人
    • 抄送/密送(如果有)
    • 主题
    • 完整正文
  2. 询问:“您希望我发送这封邮件吗?”
  3. 只有在用户明确确认后(例如“是”、“发送”、“继续”),才能运行发送命令
  4. 即使没有此确认,也绝不发送邮件,即使用户最初要求您发送

这适用于以下情况:

  • 用户说“给 X 发送一封邮件”
  • 您处于“危险地跳过权限”模式
  • 用户似乎很着急

始终先确认。没有例外。

首次设置(一次性,约 2 分钟)

首次运行时,脚本将引导您完成设置。您需要创建一次 Google Cloud OAuth 客户端:

  1. 前往 Google Cloud 控制台
  2. 创建一个项目(或选择现有项目)
  3. 启用 Gmail APIPeople API(API 和服务 → 库)
  4. 配置 OAuth 同意屏幕:
    • 用户类型:外部
    • 应用名称:Gmail Skill
    • 将您自己添加为测试用户
    • 添加范围:gmail.readonlygmail.sendgmail.modifycontacts.readonly
  5. 创建 OAuth 客户端 ID:
    • 应用类型:桌面应用
    • 下载 JSON → 保存为 ~/.claude/skills/gmail-skill/credentials.json

然后只需运行任何命令 - 浏览器打开,您批准,完成。适用于您的所有账户。

注意: 如果您之前使用过 gmail-reader,您需要重新认证以授予新的 gmail.send 范围。

命令

搜索邮件

python3 ~/.claude/skills/gmail-skill/gmail_skill.py search "查询" [--max-results N] [--account EMAIL]

查询示例:

  • from:john@example.com - 来自特定发件人
  • subject:meeting after:2026/01/01 - 主题 + 日期
  • has:attachment filename:pdf - 带有 PDF 附件
  • is:unread - 未读邮件
  • "exact phrase" - 精确匹配

阅读邮件

python3 ~/.claude/skills/gmail-skill/gmail_skill.py read EMAIL_ID [--account EMAIL]

列出最近邮件

python3 ~/.claude/skills/gmail-skill/gmail_skill.py list [--max-results N] [--label LABEL] [--account EMAIL]

发送邮件(需要确认)

python3 ~/.claude/skills/gmail-skill/gmail_skill.py send --to EMAIL --subject "主题" --body "正文" [--cc EMAIL] [--bcc EMAIL] [--account EMAIL]

必需参数:

  • --to / -t - 收件人电子邮件地址
  • --subject / -s - 邮件主题行
  • --body / -b - 邮件正文

可选参数:

  • --cc - 抄送收件人(逗号分隔)
  • --bcc - 密送收件人(逗号分隔)
  • --account / -a - 从特定账户发送

示例:

python3 ~/.claude/skills/gmail-skill/gmail_skill.py send \
  --to "recipient@example.com" \
  --subject "明天会议" \
  --body "你好,确认我们明天下午2点的会议。" \
  --account work@company.com

标记为已读

python3 ~/.claude/skills/gmail-skill/gmail_skill.py mark-read EMAIL_ID [--account EMAIL]

标记为未读

python3 ~/.claude/skills/gmail-skill/gmail_skill.py mark-unread EMAIL_ID [--account EMAIL]

mark-read 和 mark-unread 都支持多个 ID(逗号分隔):

python3 ~/.claude/skills/gmail-skill/gmail_skill.py mark-read "id1,id2,id3" --account user@gmail.com

标记完成(归档)

通过从收件箱中移除来归档邮件。相当于 Gmail 的 'e' 键盘快捷键。

python3 ~/.claude/skills/gmail-skill/gmail_skill.py mark-done EMAIL_ID [--account EMAIL]

取消归档

将邮件移回收件箱(撤销归档)。

python3 ~/.claude/skills/gmail-skill/gmail_skill.py unarchive EMAIL_ID [--account EMAIL]

加星标 / 取消星标

python3 ~/.claude/skills/gmail-skill/gmail_skill.py star EMAIL_ID [--account EMAIL]
python3 ~/.claude/skills/gmail-skill/gmail_skill.py unstar EMAIL_ID [--account EMAIL]

所有标签命令支持多个 ID(逗号分隔):

python3 ~/.claude/skills/gmail-skill/gmail_skill.py star "id1,id2,id3" --account user@gmail.com

创建草稿

创建草稿邮件。在回复现有邮件时使用 --reply-to-id 以确保在 Superhuman 等邮件客户端中正确线程化。

python3 ~/.claude/skills/gmail-skill/gmail_skill.py draft --to EMAIL --subject "主题" --body "正文" [--reply-to-id EMAIL_ID] [--cc EMAIL] [--bcc EMAIL] [--account EMAIL]

必需参数:

  • --to / -t - 收件人电子邮件地址
  • --subject / -s - 邮件主题行
  • --body / -b - 邮件正文

可选参数:

  • --reply-to-id / -r - 要回复的消息 ID(添加适当的 In-Reply-To 和 References 头以实现线程化)
  • --cc - 抄送收件人(逗号分隔)
  • --bcc - 密送收件人(逗号分隔)
  • --account / -a - 在特定账户中创建草稿

示例(新邮件):

python3 ~/.claude/skills/gmail-skill/gmail_skill.py draft \
  --to "recipient@example.com" \
  --subject "待审草稿" \
  --body "这是我的草稿消息。"

示例(回复现有邮件):

python3 ~/.claude/skills/gmail-skill/gmail_skill.py draft \
  --to "sender@example.com" \
  --subject "Re: 原始主题" \
  --body "谢谢您的邮件..." \
  --reply-to-id 19b99b3127793843 \
  --account work@company.com

列出标签

python3 ~/.claude/skills/gmail-skill/gmail_skill.py labels [--account EMAIL]

列出联系人

python3 ~/.claude/skills/gmail-skill/gmail_skill.py contacts [--max-results N] [--account EMAIL]

搜索联系人

python3 ~/.claude/skills/gmail-skill/gmail_skill.py search-contacts "查询" [--account EMAIL]

管理账户

# 列出所有已认证的账户
python3 ~/.claude/skills/gmail-skill/gmail_skill.py accounts

# 移除一个账户
python3 ~/.claude/skills/gmail-skill/gmail_skill.py logout --account user@gmail.com

多账户支持

通过使用 --account 和新电子邮件添加账户 - 浏览器会为该账户打开:

# 第一个账户(自动认证)
python3 ~/.claude/skills/gmail-skill/gmail_skill.py list

# 添加工作账户
python3 ~/.claude/skills/gmail-skill/gmail_skill.py list --account work@company.com

# 添加个人账户
python3 ~/.claude/skills/gmail-skill/gmail_skill.py list --account personal@gmail.com

# 使用特定账户
python3 ~/.claude/skills/gmail-skill/gmail_skill.py search "from:boss" --account work@company.com

令牌按账户存储在 ~/.claude/skills/gmail-skill/tokens/

示例

查找本周未读邮件

python3 ~/.claude/skills/gmail-skill/gmail_skill.py search "is:unread after:2026/01/01"

阅读特定邮件

python3 ~/.claude/skills/gmail-skill/gmail_skill.py read 18d5a3b2c1f4e5d6

发送快速邮件

python3 ~/.claude/skills/gmail-skill/gmail_skill.py send \
  --to "friend@example.com" \
  --subject "你好!" \
  --body "只是想打个招呼。"

查找某人的联系信息

python3 ~/.claude/skills/gmail-skill/gmail_skill.py search-contacts "张三"

在个人电脑上查看工作邮件

python3 ~/.claude/skills/gmail-skill/gmail_skill.py list --account work@company.com --max-results 5

输出

所有命令输出 JSON,便于解析。

要求

  • Python 3.9+
  • pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client requests

安全说明

  • 发送确认必需 - Claude 在发送邮件前必须始终与用户确认
  • 令牌本地存储在 ~/.claude/skills/gmail-skill/tokens/
  • 随时撤销访问权限:https://myaccount.google.com/permissions
  • “测试”模式下的应用可能每 7 天需要重新认证(发布应用可避免)