skills/email-assistant/SKILL.md
智能邮箱管理助手,支持收发邮件、分析总结、识别待办事项和会议、辅助拟稿回复。 触发场景: (1) 用户说"帮我查看邮箱"、"检查邮件"、"未读邮件"、"发送邮件" (2) 用户需要总结未读邮件内容 (3) 用户需要识别邮件中的待办事项和会议安排 (4) 用户需要拟稿回复邮件或发送新邮件 (5) 发送邮件支持使用缓存的凭据,无需重复输入密码 支持: Gmail、Outlook、QQ、163等IMAP/SMTP邮箱服务
npx skillsauth add laborany/laborany 邮箱助手Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
智能邮箱管理助手,自动化处理邮件收发、阅读、分析和回复拟稿。
连接邮箱 → 获取未读 → AI分析总结 → 识别待办/会议 → 辅助拟稿 → [发送邮件]
发送邮件功能已集成凭据缓存,使用已保存的凭据自动发送。
方式一:自动模式(推荐,用于 AI 调用)
自动使用缓存的凭据,无需用户交互:
# 自动使用第一个缓存的凭据
python scripts/fetch_with_cache.py <用户ID> --auto
方式二:带缓存的智能模式
自动保存凭据,下次无需重复登录,与用户绑定安全加密:
# 首次使用 - 需要提供邮箱和密码
python scripts/fetch_with_cache.py <用户ID>
# 指定邮箱(首次或更换邮箱)
python scripts/fetch_with_cache.py <用户ID> [email protected]
注意:
<用户ID>应该是 LaborAny 的当前用户ID,用于隔离不同用户的凭据。--auto参数启用非交互模式,直接使用第一个缓存的凭据,无需用户确认。
方式二:命令行模式
# 获取未读邮件
python scripts/fetch_emails.py <邮箱地址> <密码/授权码> [数量]
# 示例
python scripts/fetch_emails.py [email protected] YOUR_AUTH_CODE
方式三:批处理模式
python scripts/imap_client_batch.py <邮箱地址> <密码/授权码> [数量] [--all]
# 示例
python scripts/imap_client_batch.py [email protected] YOUR_AUTH_CODE 50
方式四:交互式模式
python scripts/imap_client.py
邮件会自动保存到 emails.json。
python scripts/email_analyzer.py emails.json
查看摘要:
python scripts/email_analyzer.py --summary emails_analyzed.json
| 邮箱 | IMAP服务器 | SMTP服务器 | 特殊要求 | |------|-----------|-----------|---------| | Gmail | imap.gmail.com:993 | smtp.gmail.com:587 | 需应用专用密码 | | Outlook | outlook.office365.com:993 | smtp.office365.com:587 | - | | QQ邮箱 | imap.qq.com:993 | smtp.qq.com:587 | 需开启SMTP服务 | | 163邮箱 | imap.163.com:993 | smtp.163.com:465 | 需授权码 + IMAP ID | | 126邮箱 | imap.126.com:993 | smtp.126.com:465 | 需授权码 + IMAP ID | | Yahoo | imap.mail.yahoo.com:993 | smtp.mail.yahoo.com:587 | - |
网易邮箱要求客户端发送 IMAP ID 信息,否则会报 "Unsafe Login" 错误。
本技能已在所有脚本中添加了 IMAP ID 支持,但使用时仍需注意:
带缓存功能的智能邮件获取脚本,推荐使用。
特点:
--auto 自动模式,无需用户交互命令行用法:
# 自动模式:直接使用缓存,适合 AI 调用
python scripts/fetch_with_cache.py <用户ID> --auto
# 交互模式:首次使用或需要用户确认
python scripts/fetch_with_cache.py <用户ID>
# 指定邮箱
python scripts/fetch_with_cache.py <用户ID> [email protected]
Python API:
from scripts.fetch_with_cache import fetch_with_cache
# 自动模式:使用缓存的凭据,无需交互
result = fetch_with_cache(
laborany_user_id="user_123",
limit=50,
auto_mode=True # 启用自动模式
)
if result['success']:
if result['from_cache']:
print("使用已保存的凭据")
print(f"获取到 {result['count']} 封邮件")
核心邮件获取模块,可被其他脚本导入。
from scripts.fetch_emails import fetch_emails
result = fetch_emails("[email protected]", "password", limit=20)
if result['success']:
for email in result['emails']:
print(email['subject'])
批处理模式,支持命令行参数。
python scripts/imap_client_batch.py [email protected] password 50 --all
参数说明:
--all: 获取所有邮件,不只未读凭据加密缓存模块,提供安全的凭据存储功能。
from scripts.credential_cache import CredentialCache
# 获取当前用户的缓存实例
cache = CredentialCache(laborany_user_id="user_123")
# 列出已保存的凭据
credentials = cache.list_credentials()
# 保存凭据(加密)
cache.save("[email protected]", "password")
# 加载凭据(自动解密)
credential = cache.load("[email protected]")
# 删除凭据
cache.delete("[email protected]")
# 清除所有凭据
cache.clear_all()
分析邮件内容,提取待办事项、会议等。
新增:发送邮件模块,支持使用缓存的凭据
# 使用缓存的凭据发送草稿
python scripts/send_email.py --draft draft.json --user <用户ID>
# 直接发送邮件(会使用缓存或询问密码)
python scripts/send_email.py --from [email protected] --to [email protected] --subject "测试" --user <用户ID>
Python API:
from scripts.send_email import send_email_with_cache
# 使用缓存的凭据发送邮件
result = send_email_with_cache(
user_id="Axel",
from_email="[email protected]",
to_emails=["[email protected]"],
subject="邮件主题",
body="邮件正文"
)
if result['success']:
print(f"✅ {result['message']}")
if result['from_cache']:
print("使用已保存的凭据")
else:
print(f"❌ {result['error']}")
# 发送草稿文件
from scripts.send_email import send_draft
result = send_draft("draft.json", user_id="Axel")
支持的参数:
to_emails: 收件人列表cc_emails: 抄送列表(可选)bcc_emails: 密送列表(可选)is_html: 是否为HTML格式from_name: 发件人名称(可选)自动使用缓存:
ask_password=True,会提示用户输入当用户使用本技能时,按以下步骤工作:
重要: 使用 fetch_with_cache.py 的非交互模式自动处理缓存。
from scripts.credential_cache import CredentialCache
# 获取当前 LaborAny 用户的缓存实例
cache = CredentialCache(laborany_user_id="<当前用户ID>")
# 列出已保存的凭据
saved_credentials = cache.list_credentials()
场景判断:
fetch_with_cache.py <user_id> --auto 获取邮件当检测到有缓存的凭据时,使用自动模式直接获取邮件:
python scripts/fetch_with_cache.py <用户ID> --auto
Python API 方式:
from scripts.fetch_with_cache import fetch_with_cache
# 自动模式:直接使用第一个缓存的凭据,无需用户交互
result = fetch_with_cache(
laborany_user_id="<用户ID>",
limit=50,
auto_mode=True # 关键:启用自动模式
)
if result['success']:
emails = result['emails']
print(f"获取到 {len(emails)} 封邮件")
else:
print(f"获取失败: {result['error']}")
如果没有缓存的凭据,用问题引导用户:
请问您的邮箱地址是什么? (比如 [email protected])
用户回答后,继续询问:
好的,请问您的邮箱密码或授权码是什么?
提示: 根据用户邮箱类型,给出相应提示:
- Gmail: "需要应用专用密码,您可以在 https://myaccount.google.com/apppasswords 生成"
- QQ邮箱: "请确保已在设置中开启IMAP服务"
- 163/126: "请使用授权码而非登录密码,并确保IMAP服务已开启"
获取凭据后,系统会自动验证并保存到缓存:
from scripts.fetch_with_cache import fetch_with_cache
# 提供邮箱和密码(成功后会自动保存到缓存)
result = fetch_with_cache(
laborany_user_id="<用户ID>",
email_address="[email protected]",
password="<密码或授权码>",
limit=50
)
重要: 凭据只在首次成功登录时缓存。后续使用时直接读取缓存,不再重复缓存。
## 📧 邮件摘要 (X封未读)
### 🔴 高优先级 (2封)
- [ ] 张三 - 项目进度确认 - 需回复
- [ ] 李四 - 紧急会议邀请 - 今天下午3点
### 🟡 中等优先级 (3封)
- [ ] 系统通知 - 周报提醒
- ...
### ⚪ 一般邮件 (5封)
- ...
## ✅ 待办事项 (5项)
1. [ ] 回复张三关于项目进度的询问
2. [ ] 准备下午3点的会议材料
3. [ ] 提交周报 (截止周五)
...
## 📅 日程安排 (3项)
1. 今天 15:00 - 项目评审会议
2. 明天 10:00 - 客户电话会议
...
分析完成后,主动询问:
发现 4 封邮件需要回复,是否需要我帮您拟稿?
对于需要回复的邮件,我可以:
- 根据邮件内容生成回复草稿
- 您确认后再发送
用户确认草稿后,使用 send_email.py 发送:
from scripts.send_email import send_draft, send_email_with_cache
# 方式一:发送草稿文件
result = send_draft("draft.json", user_id="Axel")
# 方式二:直接构造并发送
result = send_email_with_cache(
user_id="Axel",
from_email="[email protected]",
to_emails=["[email protected]"],
subject="Re: 原始邮件主题",
body="邮件正文内容"
)
优势:
缓存逻辑总结:
场景一:有缓存的用户(自动模式,无交互)
用户: 检查我的邮箱
助手: [检查缓存] 发现已保存的邮箱: [email protected]
[自动获取邮件...]
📬 您有 1 封未读邮件:
📊 AlphaQuant - 收盘总结 - 2026-02-09
- 今日收益率: -1.49%
- 总资产: 284,273.04 元
- 持仓: 6只股票
场景二:新用户(需要输入凭据)
用户: 检查我的邮箱
助手: [检查缓存] 未发现已保存的凭据
请问您的邮箱地址是什么? (比如 [email protected])
用户: [email protected]
助手: 好的,请问您的密码或授权码是什么?
(提示: 163邮箱需要使用授权码,而非登录密码)
用户: ********
助手: [连接并验证] ✅ 登录成功!
凭据已加密保存,下次可直接使用。
📬 您有 5 封未读邮件...
场景三:AI 实现参考
# AI 处理"检查我的邮箱"请求的参考实现
from scripts.credential_cache import CredentialCache
from scripts.fetch_with_cache import fetch_with_cache
def check_user_email(user_id: str):
"""检查用户邮箱的完整流程"""
cache = CredentialCache(laborany_user_id=user_id)
saved = cache.list_credentials()
if saved:
# ===== 有缓存:直接使用,不需要用户输入 =====
print(f"[检查缓存] 发现已保存的邮箱: {saved[0]['email_address']}")
result = fetch_with_cache(
laborany_user_id=user_id,
auto_mode=True # 自动模式,直接使用缓存
)
# result['from_cache'] 将为 True,不会重复缓存
return result
else:
# ===== 无缓存:询问用户输入,成功后自动缓存 =====
print("[检查缓存] 未发现已保存的凭据")
email = input("请问您的邮箱地址是什么? ")
password = input("请问您的邮箱密码或授权码是什么? ")
result = fetch_with_cache(
laborany_user_id=user_id,
email_address=email,
password=password
)
# 如果登录成功,凭据会自动保存到缓存
# 下次使用时 result['from_cache'] 将为 True
return result
无外部依赖 - 使用Python标准库:
imaplib - IMAP连接email - 邮件解析re - 正则表达式提取html.parser - HTML标签清理凭据缓存功能推荐使用 cryptography 库以获得最佳安全性:
pip install cryptography
如果未安装 cryptography,会自动降级到标准库实现(安全性较低)。
~/.laborany/email_assistant/credentials/<hash_user_id>/<hash_email>.json
from scripts.credential_cache import CredentialCache
from scripts.fetch_emails import fetch_emails
# 获取当前用户的缓存实例(需要提供 LaborAny 用户ID)
cache = CredentialCache(laborany_user_id="user_123")
# 检查是否有缓存的凭据
credential = cache.load("[email protected]")
if credential:
# 使用缓存的凭据
result = fetch_emails(
credential['email_address'],
credential['password']
)
else:
# 没有缓存,提示用户输入
email = input("邮箱地址: ")
password = input("密码/授权码: ")
# 验证凭据后保存到缓存
result = fetch_emails(email, password)
if result['success']:
cache.save(email, password)
# 删除指定邮箱的凭据
cache.delete("[email protected]")
# 清除当前用户的所有凭据
cache.clear_all()
用户: 帮我查看邮箱
助手: 请问您的邮箱地址是什么?
用户: [email protected]
助手: 好的,请问您的邮箱密码或授权码是什么?
(提示: 163邮箱需要使用授权码,而非登录密码)
用户: ********
助手: [获取邮件] 您有 1 封未读邮件:
今日天气......
这是系统自动发送的日报,通常不需要回复。是否需要我帮您分析详情?
data-ai
AI 视频工厂,用于完整测试和执行 LaborAny 的多模态视频生产链路。 适用于: (1) 用户给一个爆款视频,要求拆解脚本、分镜、动作、配乐、镜头语言并复刻或改写; (2) 用户给一个想法,要求规划完整短视频、生成角色一致的关键帧图片、调用视频生成模型生成分段视频; (3) 用户要求把多个 15s 视频片段剪辑合成为最终成片; (4) 用户明确说“测试完整图片/视频理解和生成流程”“AI剧集”“分镜视频”“爆款视频拆解”。
testing
Inspect Playwright trace files from the command line — list actions, view requests, console, errors, snapshots and screenshots.
tools
Automate browser interactions, test web pages and work with Playwright tests.
development
LaborAny 设计大师——用 HTML 做高保真原型、交互 Demo、幻灯片、动画、设计变体探索 + 设计方向顾问 + 专家评审的一体化设计能力。HTML 是工具不是媒介,根据任务 embody 不同专家(UX 设计师 / 动画师 / 幻灯片设计师 / 原型师),避免 web design tropes。 触发场景:做原型、设计 Demo、交互原型、HTML 演示、动画 Demo、设计变体、hi-fi 设计、UI mockup、prototype、设计探索、做个 HTML 页面、做个可视化、app 原型、iOS 原型、移动应用 mockup、导出 MP4、导出 GIF、60fps 视频、设计风格、设计方向、设计哲学、配色方案、视觉风格、推荐风格、选个风格、做个好看的、评审、好不好看、review this design。 主干能力:Junior Designer 工作流、反 AI slop 清单、React+Babel 最佳实践、Tweaks 变体切换、Speaker Notes 演示、Starter Components、App 原型专属守则、Playwright 验证、HTML 动画 → MP4/GIF 视频导出(25fps 基础 + 60fps 插帧 + palette 优化 GIF + 6 首场景化 BGM + 自动 fade)。 需求模糊时的 Fallback:设计方向顾问模式——从 5 流派 × 20 种设计哲学推荐 3 个差异化方向。 交付后可选:专家级 5 维度评审。