afrexai-邮件转日历 afrexai-email-to-calendar

afrexai-邮件转日历是一款智能邮件日程提取工具,能够自动从电子邮件中识别并提取日历事件、截止日期、待办事项和旅行安排,转换为结构化日历格式。该工具支持Google、Outlook、Apple、Notion等多种日历服务,具备智能解析、置信度评分、重复检测和自动提醒功能,帮助用户高效管理日程,不错过重要事件和截止日期。关键词:邮件解析、日历管理、日程提取、智能提醒、自动化工具、时间管理、AI智能体、邮件处理、事件提取、截止日期跟踪。

AI智能体 0 次安装 0 次浏览 更新于 2/24/2026

名称: afrexai-邮件转日历 版本: 1.0.0 描述: > 从电子邮件中提取日历事件、截止日期、待办事项和后续跟进。 兼容任何日历服务提供商(Google、Outlook、Apple、Notion等)。 无外部依赖——纯智能体智能。 当用户转发邮件、要求检查收件箱中的事件,或希望从任何文本中提取结构化日程数据时使用。

邮件 → 日历提取引擎

将邮件转换为结构化日历事件,不错过任何截止日期。

快速开始

当您收到邮件(转发、粘贴或来自收件箱)时:

  1. 解析 — 使用以下框架提取每个与时间相关的项目
  2. 分类 — 按类型和置信度对每个项目进行评分
  3. 呈现 — 显示带编号选择的结构化结果
  4. 创建 — 使用用户的日历工具创建确认的事件
  5. 跟进 — 跟踪截止日期并发送提醒

1. 提取框架

查找内容

扫描每封邮件中的所有以下类别:

类别 信号 优先级
硬性事件 “会议时间”, “通话于”, “活动于”, 具体日期+时间 🔴 高
截止日期 “截止于”, “提交前”, “RSVP截止”, “注册截止”, “到期” 🔴 高
软性事件 “下周某个时间”, “我们尽快见面”, “计划三月” 🟡 中
重复事件 “每周一”, “每周”, “每月”, “例会” 🟡 中
待办事项 “请审阅”, “你能发送”, “跟进”, “需要行动” 🟡 中
旅行/后勤 航班号、酒店确认、入住时间、登机口信息 🔴 高
隐含截止日期 活动是2月20日 → 购票截止日期可能在1-2周前 🟡 中

提取模板

对于找到的每个项目,提取:

- 标题: "描述性名称(最多80字符)"
  类型: event | deadline | action_item | travel | recurring
  日期: "YYYY-MM-DD"
  星期几: "Monday"  # 始终包含用于验证
  开始时间: "14:00"    # 24小时格式,如果不明确则默认为09:00
  结束时间: "15:00"      # 默认:会议为开始时间+1小时,截止日期为全天
  时区: "America/New_York"  # 从邮件头或内容中提取
  全天事件: false
  多日事件: false     # 如果为true,包含结束日期
  结束日期: null
  重复规则: null        # "weekly" | "biweekly" | "monthly" | "MWF" | 自定义RRULE
  地点: null          # 物理地址或视频链接
  网址: null               # 注册链接、活动页面或行动URL
  参与者: []           # 提到的姓名/邮箱
  置信度: high | medium | low
  来源引用: "指示此事件的邮件原文"
  备注: "用户应了解的任何上下文"
  截止行动: null   # "RSVP" | "register" | "buy tickets" | "submit"
  截止网址: null      # 直接行动链接
  提醒分钟数: 30    # 建议提醒(通话15分钟,旅行60分钟,截止日期1440分钟)

置信度评分

置信度 标准
明确日期 + 时间 + 清晰事件类型。例如:“2月15日下午2点会议”
有日期但无时间,或有时间但日期近似。例如:“下周二下午”
模糊提及。例如:“我们应该尽快联系”, “三月某个时间”

智能默认值

  • 会议未给时间 → 09:00-10:00(标记置信度:中)
  • 截止日期未给时间 → 23:59(当天结束)
  • 无时区 → 使用用户默认时区,注明假设
  • “上午” → 09:00, “下午” → 14:00, “晚上” → 18:00, “EOD” → 17:00
  • “下周” → 下周一(标记置信度:中)
  • 多日活动 → 设置is_multi_day: true,包含开始和结束日期

2. 邮件分类

提取前,先对邮件分类:

邮件类型 处理方式
日历通知(来自calendar-notification@google.com、outlook等) 跳过——这些是对现有事件的响应
新闻通讯/营销邮件 仅当包含相关活动日期时提取
个人/工作邮件 完全提取
旅行确认 提取所有后勤:航班、酒店、租车、入住
会议邀请(ICS附件或结构化邀请) 直接提取,高置信度
线程/回复 仅提取新事件,不提取引用文本中的事件
转发邮件 处理转发内容,注明原始发件人

忽略模式(跳过这些)

  • 自动日历响应(已接受、已拒绝、暂定)
  • 退订确认
  • 已读回执
  • 自动回复/外出
  • 垃圾/促销邮件(除非用户明确转发)

3. 呈现格式

始终按此格式呈现提取的项目:

📧 发件人: [发件人] | 主题: [主题] | 日期: [接收日期]

找到 [N] 个日历项目:

1. 🔴 **团队站会** — 2月17日周一,上午9:00-9:30 EST
   📍 Zoom(邮件中链接) | 👥 Alice, Bob, Charlie
   🔁 重复:每个工作日
   ✅ 置信度:高

2. 🔴 **项目截止:Q1报告** — 2月28日周五,EOD
   ⚠️ 需要行动:提交报告
   🔗 [提交门户](url)
   ⏰ 建议提醒:3天前
   ✅ 置信度:高

3. 🟡 **团队午餐** — "下周某个时间"
   📍 待定
   ⚠️ 置信度:中——日期需要确认

---
回复数字以创建(例如"1, 2")、"全部"或"无"。
输入"编辑 3"在创建前修改。

呈现规则

  1. 始终显示星期几 — 人类通过星期名称验证日期
  2. 当>5个项目时按日期分组
  3. 标记冲突 — 如果新事件与现有日历重叠
  4. 高亮截止日期,使用⚠️和剩余天数
  5. 显示中/低置信度项目的来源引用
  6. 未经用户确认绝不自动创建

4. 日历创建

用户确认后,使用其日历工具创建事件:

Google日历(通过gog或API)

gog calendar create \
  --title "事件标题" \
  --start "2026-02-17T09:00:00-05:00" \
  --end "2026-02-17T10:00:00-05:00" \
  --description "从邮件提取:[主题]" \
  --location "Zoom链接或地址"

Apple日历(通过osascript

osascript -e 'tell application "Calendar"
  tell calendar "Work"
    make new event with properties {summary:"事件标题", start date:date "Monday, February 17, 2026 at 9:00:00 AM", end date:date "Monday, February 17, 2026 at 10:00:00 AM", description:"从邮件提取", location:"Zoom"}
  end tell
end tell'

Notion / 其他

  • 格式化为结构化数据并使用相应API
  • 或输出为.ics文件供用户在任何地方导入

ICS导出(通用)

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTART:20260217T090000
DTEND:20260217T100000
SUMMARY:事件标题
DESCRIPTION:从邮件提取
LOCATION:Zoom链接
END:VEVENT
END:VCALENDAR

5. 重复检测

创建任何事件前,检查重复:

  1. 搜索日历中相同日期且标题相似的事件(模糊匹配)
  2. 检查跟踪文件 — 维护已创建事件的日志:
// memory/email-calendar-log.json
{
  "created_events": [
    {
      "email_id": "msg-123",
      "email_subject": "团队外出",
      "event_title": "团队外出",
      "event_date": "2026-02-17",
      "calendar_event_id": "cal-456",
      "created_at": "2026-02-13T10:00:00Z"
    }
  ]
}
  1. 如果发现重复:显示给用户并询问——“这看起来与[现有事件]相似。跳过、更新还是仍然创建?”

6. 截止日期和提醒引擎

要检测的截止日期模式

模式 示例 行动
RSVP截止 “2月10日前RSVP” 创建3天前提醒
注册 “3月1日前注册” 创建1周前提醒
早鸟价 “早鸟价2月15日截止” 创建2天前提醒
售票 “售票截止至…” 创建提醒+日历事件
提交 “提案提交截止…” 创建3天前提醒
过期 “优惠到期…” 创建1天前提醒

提醒策略

  • >30天:1周前提醒
  • 7-30天:3天前提醒
  • <7天:1天前提醒
  • 带URL的截止日期:在提醒中包含行动URL
  • 创建单独日历事件作为提醒:“⚠️ 截止:[事件]的[行动]”

7. 旅行邮件处理

旅行确认需特殊处理:

提取所有这些:

  • ✈️ 航班:航空公司、航班号、出发/到达时间+机场、航站楼、登机口、确认号
  • 🏨 酒店:名称、地址、入住/退房时间、确认号
  • 🚗 租车:公司、取车/还车时间+地点、确认号
  • 📋 接送:班车时间、火车预订

创建这些日历事件:

  1. 航班出发 — 在描述中包含航站楼、登机口、航班号
  2. 航班到达 — 包括转机航班
  3. 酒店入住 — 带地址和确认号
  4. 酒店退房 — 带打包提醒
  5. 取车/还车 — 带位置详情

旅行特定提醒:

  • 航班:国内3小时前,国际4小时前
  • 酒店退房:出发当天上午
  • 在事件描述中包含所有确认号

8. 批量处理

扫描收件箱查找事件时:

  1. 获取未读邮件(或最近N天的邮件)
  2. 过滤噪音 — 应用忽略模式
  3. 从每封邮件提取 — 运行提取框架
  4. 跨邮件去重 — 多个线程中提到的相同事件
  5. 按日期排序 — 最近优先
  6. 呈现分组摘要
📬 收件箱扫描:47封未读 → 12封含日历项目 → 找到18个事件

本周(2月13-19日):
1. 🔴 冲刺评审 — 2月13日周四,下午3:00
2. 🔴 与经理1:1 — 2月14日周五,上午10:00
...

下周(2月20-26日):
5. 🟡 团队午餐 — 日期待定(在2封邮件中提到)
...

截止日期:
⚠️ Q1报告 — 2月28日截止(15天)→ [在此提交](url)
⚠️ 会议RSVP — 2月20日截止(7天)→ [RSVP](url)

9. 边缘情况

情况 处理方式
一封邮件中多个时区 提取每个事件在其声明的时区,转换为用户的时区显示
"TBD"或"TBA"时间 创建全天事件,标记为待跟进
已取消事件 检查是否已在日历中 → 提供删除选项
重新安排的事件 查找原始事件 → 提供更新选项(非创建新事件)
有例外的重复事件 在描述中注明特定例外日期
日期歧义(02/03 = 2月3日或3月2日?) 使用邮件的区域设置/来源判断MM/DD vs DD/MM,如果不明确则询问
引用/转发文本中的事件 仅当用户明确转发时才处理
带.ics文件的附件 直接解析ICS——最高置信度来源
"保存日期"邮件 创建暂定事件,标记为占位符
含多个分会的会议 提取所有分会作为单独事件,共享描述

10. 会话记忆

跨会话跟踪用户偏好:

# memory/email-calendar-prefs.yaml
默认时区: "America/New_York"
默认日历: "Work"
默认提醒分钟数: 30
自动创建模式:
  - "standup"
  - "1:1"
忽略模式:
  - "newsletter"
  - "marketing"
首选格式: "12h"  # 或 "24h"
旅行提醒小时数: 3

当用户纠正您或陈述偏好时更新偏好。