首页龙虾技能列表 › Email to Calendar Extraction Engine — Email to Calendar — 邮件到日历提取引擎

Email to Calendar Extraction Engine — Email to Calendar — 邮件到日历提取引擎

v1.0.0

从邮件中提取日历事件、截止日期、行动项目和跟进事项。适用于任何日历提供商(Google、Outlook、Apple、Notion等)。无外部依赖——纯代理智能。当用户转发邮件、要求检查收件箱中的事件,或想要从任何文本中提取结构化调度数据时使用。

0· 821·3 当前·3 累计
by @1kalin·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/8
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
可疑
medium confidence
该技能的指令需要收件箱/日历访问和外部连接器,但包声明无凭证、安装或二进制文件——能力和要求不一致。
评估建议
在作者澄清它将如何访问您的邮件和日历之前,请勿安装或启用此技能。要求提供:(1) 所需权限/范围的明确列表(OAuth客户端ID、令牌或连接器名称),(2) 它期望哪些二进制文件或平台提供的连接器(例如'gog' CLI),(3) 提取的数据和提醒存储或发送位置的清晰描述,以及(4) 处理邮箱内容的隐私/安全策略。如果您继续,授予最小范围(如果仅提取,则只读收件箱访问,仅在审查后显式日历写入范围),使用非敏感邮箱进行测试,并验证技能不会将邮箱内容传输到未知外部端点。当前打包不一致——在应该被信任之前需要澄清。...
详细分析 ▾
用途与能力
该技能声称扫描收件箱、解析ICS附件、检测与现有日历的冲突、在Google/Outlook/Apple/Notion中创建事件并发送提醒——所有这些操作通常需要显式连接器、OAuth令牌或CLI工具。然而注册表元数据未列出所需的环境变量、所需二进制文件、配置路径和安装步骤。README或SKILL.md未解释这种不匹配,表明声明的包元数据不完整或误导。
指令范围
SKILL.md明确告诉代理'检查我的收件箱'、解析附件、'使用用户的日历工具创建已确认的事件'、'跟踪截止日期并发送提醒'以及'标记与现有日历的冲突'——涉及读写用户数据和潜在发送出站消息的操作。指令未定义如何获得用户同意、使用哪些凭证、代理应调用哪些端点或数据收集的任何限制。该范围比包清单声称的更广。
安装机制
这是纯指令技能,无安装规范或代码文件,因此没有安装程序将任意代码写入磁盘。这减少了安装时风险。README引用'clawhub install'示例和外部登陆页面,但包本身中不存在下载URL或提取步骤。
凭证需求
该技能需要访问邮件收件箱和日历,并引用使用'gog'或API进行日历创建,但requires.env和主凭证为空。未声明OAuth客户端ID、API令牌、邮箱访问范围或配置路径。在指导需要特权访问的操作时不请求凭证是不成比例和不一致的。
持久化与权限
该技能不请求always:true,不声明系统范围的更改。默认允许自主调用(正常)。没有证据表明技能尝试持久化凭证或修改其他技能,但上述缺失的认证细节增加了操作模糊性。
安装前注意事项
  1. 所需权限/范围的明确列表(OAuth客户端ID、令牌或连接器名称)
  2. 它期望哪些二进制文件或平台提供的连接器(例如'gog' CLI)
  3. 提取的数据和提醒存储或发送位置的清晰描述
  4. 处理邮箱内容的隐私/安全策略。如果您继续,授予最小范围(如果仅提取,则只读收件箱访问,仅在审查后显式日历写入范围),使用非敏感邮箱进行测试,并验证技能不会将邮箱内容传输到未知外部端点。当前打包不一致——在应该被信任之前需要澄清。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/2/13

afrexai-email-to-calendar v1.0.0 - 初始发布,用于从邮件中提取日历事件、截止日期、行动和物流的技能。- 支持任何日历提供商(Google、Outlook、Apple、Notion等),无外部依赖。- 解析邮件中的硬事件、截止日期、重复事件、行动项目、旅行和隐式调度信号。- 提供带置信度评分和类别优先级的结构化提取模板。- 在创建之前以编号列表形式呈现检测到的事件供用户确认。- 包括重复事件检测和可自定义的提醒建议。- 导出到各种格式(Google日历、Apple日历、Notion、ICS)。

● 可疑

安装命令 点击复制

官方npx clawhub@latest install afrexai-email-to-calendar
镜像加速npx clawhub@latest install afrexai-email-to-calendar --registry https://cn.clawhub-mirror.com

技能文档

Turn emails into structured calendar events with zero missed deadlines.

Quick 开始

When you receive an email (forwarded, pasted, or from inbox):

  • 解析 — Extract every 时间-relevant item 使用 框架 下面
  • Classify — Score 每个 item 由 类型 和 confidence
  • Present — Show structured results 带有 numbered selection
  • 创建 — 使用 用户's 日历 tool 到 创建 confirmed events
  • 关注 up — Track deadlines 和 发送 reminders

1. Extraction 框架

什么 到 Look 对于

Scan every email for ALL of these categories:

CategorySignalsPriority
Hard Events"meeting at", "call on", "event on", specific date+time🔴 High
Deadlines"due by", "submit before", "RSVP by", "register by", "expires"🔴 High
Soft Events"sometime next week", "let's meet soon", "planning for March"🟡 Medium
Recurring"every Monday", "weekly", "monthly", "standing meeting"🟡 Medium
Action Items"please review", "can you send", "follow up on", "action required"🟡 Medium
Travel/LogisticsFlight numbers, hotel confirmations, check-in times, gate info🔴 High
Implicit DeadlinesEvent is Feb 20 → ticket deadline is likely 1-2 weeks before🟡 Medium

Extraction 模板

For each item found, extract:

- title: "Descriptive name (max 80 chars)"
  type: event | deadline | action_item | travel | recurring
  date: "YYYY-MM-DD"
  day_of_week: "Monday"  # Always include for verification
  time_start: "14:00"    # 24h format, default 09:00 if unclear
  time_end: "15:00"      # Default: start + 1h for meetings, all-day for deadlines
  timezone: "America/New_York"  # Extract from email headers or content
  is_all_day: false
  is_multi_day: false     # If true, include end_date
  end_date: null
  recurrence: null        # "weekly" | "biweekly" | "monthly" | "MWF" | custom RRULE
  location: null          # Physical address or video link
  url: null               # Registration link, event page, or action URL
  attendees: []           # Names/emails mentioned
  confidence: high | medium | low
  source_quote: "exact text from email that indicates this event"
  notes: "any context the user should know"
  deadline_action: null   # "RSVP" | "register" | "buy tickets" | "submit"
  deadline_url: null      # Direct link to take action
  reminder_minutes: 30    # Suggested reminder (15 for calls, 60 for travel, 1440 for deadlines)

Confidence Scoring

ConfidenceCriteria
HighExplicit date + time + clear event type. E.g. "Meeting on Feb 15 at 2pm"
MediumDate but no time, or time but approximate date. E.g. "next Tuesday afternoon"
LowVague reference. E.g. "we should catch up soon", "sometime in March"

Smart Defaults

  • 否 时间 given 对于 meeting → 09:00-10:00 (mark confidence: medium)
  • 否 时间 given 对于 deadline → 23:59 (end 的 day)
  • 否 timezone → 使用 用户's 默认 timezone, note assumption
  • "Morning" → 09:00, "Afternoon" → 14:00, "Evening" → 18:00, "EOD" → 17:00
  • "下一个 week" → Following Monday (mark confidence: medium)
  • Multi-day 事件 → 设置 is_multi_day: 真, include 开始 和 end dates

2. Email Classification

Before extracting, classify the email:

Email TypeHow to Handle
Calendar notification (from calendar-notification@google.com, outlook, etc.)SKIP — these are responses to existing events
Newsletter/marketingExtract only if contains relevant event dates
Personal/work emailFull extraction
Travel confirmationExtract ALL logistics: flights, hotels, car rentals, check-ins
Meeting invite (ICS attachment or structured invite)Extract directly, high confidence
Thread/replyOnly extract NEW events, not ones from quoted text
Forwarded emailProcess the forwarded content, note original sender

Ignore Patterns (Skip These)

  • Automated 日历 responses (Accepted, Declined, Tentative)
  • 退订 confirmations
  • 读取 receipts
  • Auto-replies / Out 的 office
  • Spam/promotional (unless 用户 explicitly forwards )

3. Presentation 格式

Always present extracted items in this format:

📧 From: [sender] | Subject: [subject] | Date: [received date]

Found [N] calendar items:

  • 🔴 Team Standup — Mon Feb 17, 9:00-9:30 AM EST
📍 Zoom (link in email) | 👥 Alice, Bob, Charlie 🔁 Recurring: Every weekday ✅ Confidence: High

  • 🔴 Project Deadline: Q1 Report — Fri Feb 28, EOD
⚠️ ACTION REQUIRED: Submit report 🔗 Submission portal ⏰ Suggested reminder: 3 days before ✅ Confidence: High

  • 🟡 Team Lunch — "sometime next week"
📍 TBD ⚠️ Confidence: Medium — date needs confirmation


Reply with numbers to create (e.g. "1, 2"), "all", or "none". Type "edit 3" to modify before creating.

Presentation Rules

  • Always show day 的 week — humans 验证 dates 由 day name
  • 分组 由 日期 当...时 >5 items
  • 标志 conflicts — 如果 新的 事件 overlaps existing 日历
  • Highlight deadlines 带有 ⚠️ 和 days remaining
  • Show source quote 对于 medium/low confidence items
  • Never auto-创建 没有 用户 confirmation

4. 日历 Creation

After user confirms, create events using their calendar tool:

Google 日历 (通过 gog 或 API)

gog calendar create \
  --title "Event Title" \
  --start "2026-02-17T09:00:00-05:00" \
  --end "2026-02-17T10:00:00-05:00" \
  --description "Extracted from email: [subject]" \
  --location "Zoom link or address"

Apple 日历 (通过 osascript)

osascript -e 'tell application "Calendar"
  tell calendar "Work"
    make new event with properties {summary:"Event Title", 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:"Extracted from email", location:"Zoom"}
  end tell
end tell'

Notion / 其他

  • 格式 作为 structured data 和 使用 appropriate API
  • 或 输出 作为 .ics file 用户 可以 导入 anywhere

ICS 导出 (Universal)

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTART:20260217T090000
DTEND:20260217T100000
SUMMARY:Event Title
DESCRIPTION:Extracted from email
LOCATION:Zoom link
END:VEVENT
END:VCALENDAR

5. Duplicate Detection

Before creating any event, check for duplicates:

  • 搜索 日历 对于 events 在...上 相同 日期 带有 similar title (fuzzy match)
  • Check tracking file — maintain log 的 created events:
// memory/email-calendar-log.json
{
  "created_events": [
    {
      "email_id": "msg-123",
      "email_subject": "Team Offsite",
      "event_title": "Team Offsite",
      "event_date": "2026-02-17",
      "calendar_event_id": "cal-456",
      "created_at": "2026-02-13T10:00:00Z"
    }
  ]
}
  • 如果 duplicate found: Show 用户 和 ask — " looks similar 到 [existing 事件]. Skip, 更新, 或 创建 anyway?"

6. Deadline & Reminder Engine

Deadline Patterns 到 Detect

PatternExampleAction
RSVP deadline"RSVP by Feb 10"Create reminder 3 days before
Registration"Register by March 1"Create reminder 1 week before
Early bird"Early bird ends Feb 15"Create reminder 2 days before
Ticket sales"Tickets on sale until..."Create reminder + calendar event
Submission"Submit proposal by..."Create reminder 3 days before
Expiration"Offer expires..."Create reminder 1 day before

Reminder Strategy

  • >30 days away: Remind 1 week 之前
  • 7-30 days away: Remind 3 days 之前
  • <7 days away: Remind 1 day 之前
  • Deadlines 带有 URLs: Include action URL 在...中 reminder
  • 创建 reminder 作为 separate 日历 事件: "⚠️ DEADLINE: [action] 对于 [事件]"

7. Travel Email Handling

Travel confirmations get special treatment:

Extract 所有 的 these:

  • ✈️ Flights: airline, flight #, departure/arrival 乘以+airports, terminal, gate, confirmation #
  • 🏨 Hotels: name, address, check-在...中/out 乘以, confirmation #
  • 🚗 Car rentals: company, pickup/dropoff 乘以+locations, confirmation #
  • 📋 Transfers: shuttle 乘以, train bookings

创建 these 日历 events:

  • Flight departure — include terminal, gate, flight # 在...中 description
  • Flight arrival — 对于 connecting flights too
  • Hotel check-在...中 — 带有 address 和 confirmation #
  • Hotel check-out — 带有 reminder 到 pack
  • Car pickup/dropoff — 带有 location details

Travel-specific reminders:

  • Flight: 3 hours 之前 (domestic), 4 hours 之前 (international)
  • Hotel check-out: Morning 的 departure
  • Include 所有 confirmation numbers 在...中 事件 descriptions

8. Batch 处理中

When scanning an inbox for events:

  • 获取 unread emails (或 emails 从 最后的 N days)
  • 过滤 out noise — apply ignore patterns
  • Extract 从 每个 — run extraction 框架
  • Deduplicate 穿过 emails — 相同 事件 mentioned 在...中 multiple threads
  • 排序 由 日期 — nearest 第一个
  • Present grouped summary:
📬 Inbox Scan: 47 unread → 12 with calendar items → 18 events found

THIS WEEK (Feb 13-19):

  • 🔴 Sprint Review — Thu Feb 13, 3:00 PM
  • 🔴 1:1 with Manager — Fri Feb 14, 10:00 AM
...

NEXT WEEK (Feb 20-26):

  • 🟡 Team Lunch — date TBD (mentioned in 2 emails)
...

DEADLINES: ⚠️ Q1 Report — Due Feb 28 (15 days) → Submit here ⚠️ Conference RSVP — Due Feb 20 (7 days) → RSVP


9. Edge Cases

SituationHow to Handle
Multiple timezones in one emailExtract each event in its stated timezone, convert to user's TZ for display
"TBD" or "TBA" timesCreate all-day event, flag for follow-up
Cancelled eventsCheck if already in calendar → offer to delete
Rescheduled eventsFind original → offer to update (not create new)
Recurring with exceptionsNote specific exception dates in description
Date ambiguity (02/03 = Feb 3 or Mar 2?)Use email's locale/origin for MM/DD vs DD/MM, ask if unclear
Events in quoted/forwarded textOnly process if user explicitly forwarded it
Attachments with .ics filesParse ICS directly — highest confidence source
"Save the date" emailsCreate tentative event, mark as placeholder
Conference with multiple sessionsExtract all sessions as separate events with shared description

10. 会话 Memory

Track user preferences across sessions:

# memory/email-calendar-prefs.yaml
default_timezone: "America/New_York"
default_calendar: "Work"
default_reminder_minutes: 30
auto_create_patterns:
  - "standup"
  - "1:1"
ignore_patterns:
  - "newsletter"
  - "marketing"
preferred_format: "12h"  # or "24h"
travel_reminder_hours: 3

Update preferences when user corrects you or states a preference.

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务