SKILL.md
readonly只读
name
gmail-skill
description
读取、搜索、发送和草拟 Gmail 邮件以及 Google 联系人。当用户要求查看邮件、查找邮件、搜索消息、发送邮件、创建草稿、查找联系人或查找某人的电子邮件/电话时使用。支持多个账户。
Gmail 技能 - 邮件与联系人访问
读取、搜索和发送 Gmail 邮件。访问 Google 联系人。
关键:发送邮件前需确认
在发送任何邮件之前,您必须获得用户的明确确认。
当用户要求发送邮件时:
- 首先,向他们展示完整的邮件详情:
- 发件人(哪个账户)
- 收件人
- 抄送/密送(如果有)
- 主题
- 完整正文
- 询问:“您希望我发送这封邮件吗?”
- 只有在用户明确确认后(例如“是”、“发送”、“继续”),才能运行发送命令
- 即使没有此确认,也绝不发送邮件,即使用户最初要求您发送
这适用于以下情况:
- 用户说“给 X 发送一封邮件”
- 您处于“危险地跳过权限”模式
- 用户似乎很着急
始终先确认。没有例外。
首次设置(一次性,约 2 分钟)
首次运行时,脚本将引导您完成设置。您需要创建一次 Google Cloud OAuth 客户端:
- 前往 Google Cloud 控制台
- 创建一个项目(或选择现有项目)
- 启用 Gmail API 和 People API(API 和服务 → 库)
- 配置 OAuth 同意屏幕:
- 用户类型:外部
- 应用名称:Gmail Skill
- 将您自己添加为测试用户
- 添加范围:
gmail.readonly、gmail.send、gmail.modify、contacts.readonly
- 创建 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 天需要重新认证(发布应用可避免)






