Pear iCloud 集成:同步日历、提醒事项和联系人 - Openclaw Skills

作者:互联网

2026-03-29

AI教程

什么是 Pear iCloud 集成?

Pear iCloud 集成是一套功能强大的工具集,专为使用 Openclaw Skills 的开发者设计,用于将 AI 智能体与 Apple 生态系统连接起来。通过利用标准的 CalDAV 和 CardDAV 协议,该技能使智能体能够执行复杂的排程、任务管理和联系人组织任务,而无需本地 macOS 脚本。该技能充当 PIM(个人信息管理)的桥梁,允许创建复杂的 AI 助手,以管理每日议程、查找最佳会议时间,并使联系人数据库在 iCloud 云端基础架构中保持同步。它提供了一种安全的、API 驱动的方式,使用 App 专用密码和专用 API 密钥与用户数据进行交互。

下载入口:https://github.com/openclaw/skills/tree/main/skills/ashtonau/pear-apple

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install pear-apple

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 pear-apple。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

Pear iCloud 集成 应用场景

  • 查看每日议程、即将举行的活动或常规日程安排。
  • 创建和更新支持周期性、参与者和地点的日历活动。
  • 管理待办事项列表和提醒事项,包括设置优先级和将任务标记为已完成。
  • 执行联系人查找或对联系人群组和 vCard 数据进行批量更新。
  • 生成考虑工作时间和用户偏好的 AI 评分会议时段。
Pear iCloud 集成 工作原理
  1. 用户提供 Pear API 密钥并使用 Apple App 专用密码连接其 iCloud 账户。
  2. 发出请求时,智能体会从 27 个可用函数中选择适当的 pear_ 工具。
  3. 该技能通过 CalDAV 或 CardDAV 协议与 iCloud 通信以获取或修改数据。
  4. 对于排程等复杂任务,该技能使用 AI 评分逻辑根据用户偏好评估空闲时段。
  5. 更改将提交至 iCloud 服务器,并立即在用户的所有 Apple 设备上同步。

Pear iCloud 集成 配置指南

要集成这些 Openclaw Skills,您必须首先获得 Pear API 密钥和 Apple App 专用密码。

# 在您的环境中设置 Pear API 密钥
export PEAR_API_KEY="pear_sk_your_key_here"

# 可选:如果不使用默认 URL,请设置自定义 MCP URL
export PEAR_MCP_URL="https://pearmcp.com/api/mcp"

在发起请求之前,请确保您已在 Pear 仪表板上授权了您的 iCloud 账户。

Pear iCloud 集成 数据架构与分类体系

该技能根据标准 Apple PIM 结构组织数据:

类别 协议 关键数据点
活动 CalDAV ISO 8601 时间戳、循环对象、参与者列表、地点
提醒事项 VTODO 标题、截止日期、优先级(1-9)、完成状态
联系人 CardDAV vCard 字段(电话、电子邮件、地址、生日、Base64 照片)
简报 聚合 今日活动和待办任务的综合视图
批量操作 JSON 数组 每次请求支持多达 50 个项目进行批量操作
name: pear-apple
description: iCloud Calendar, Reminders & Contacts via Pear. Manage events, reminders, contacts, daily briefings, and AI scheduling. 27 tools for Apple iCloud via CalDAV/CardDAV.
homepage: https://pearmcp.com
metadata:
  openclaw:
    emoji: "??"
    primaryEnv: PEAR_API_KEY
    requires:
      env:
        - PEAR_API_KEY
      network:
        - pearmcp.com

Pear — iCloud Integration

Pear provides read/write access to iCloud Calendar, Reminders, and Contacts through 27 MCP tools. All tools are prefixed with pear_ and communicate with iCloud via CalDAV/CardDAV protocols.

When to Use

Activate this skill when the user wants to:

  • Check their schedule, upcoming events, or daily agenda
  • Create, update, or delete calendar events
  • Manage reminders or to-do lists
  • Look up, create, or update contacts
  • Find free time slots or schedule meetings
  • Get a daily briefing of events and tasks
  • Check availability for a specific time
  • Work with contact groups
  • Perform bulk operations on events, reminders, or contacts

Activation triggers:

  • "What's on my calendar", "my schedule", "upcoming events"
  • "Remind me to", "add a reminder", "my tasks", "to-do"
  • "Find contact", "add a contact", "phone number for"
  • "Schedule a meeting", "find a time", "when am I free"
  • "Daily briefing", "what's today look like"
  • "Birthday", "anniversaries"

Do NOT activate for:

  • Apple Notes (not supported — CalDAV only)
  • Apple Mail or iMessage
  • iCloud Drive or file storage
  • Apple Music, Photos, or other non-PIM services
  • Local macOS Calendar.app scripting (Pear works cross-platform via API)

Prerequisites

Required Environment Variable:

  • PEAR_API_KEY — Your Pear API key (format: pear_sk_...)
    • Sign up at pearmcp.com
    • Generate an API key from the dashboard
    • Connect your iCloud account (requires an app-specific password)

Optional:

  • PEAR_MCP_URL — Custom endpoint URL (defaults to https://pearmcp.com/api/mcp)

Tool Reference

Events (8 tools)

Tool Description
pear_list_calendars List all iCloud calendars (including read-only subscriptions)
pear_list_events List events in a time range, with pagination and calendar filtering
pear_search_events Search events by title or description within a date range
pear_create_event Create an event with optional recurrence, alarms, attendees, and location
pear_update_event Update an existing event's properties
pear_delete_event Delete an event by filename
pear_find_free_slots Find available time slots of a given duration
pear_check_availability Check if a specific time slot is free, returns conflicts

Reminders (4 tools)

Tool Description
pear_list_reminders List reminders with optional list filtering, includes completed toggle
pear_create_reminder Create a reminder with optional due date, priority (1=high, 5=med, 9=low), and notes
pear_update_reminder Update a reminder's properties
pear_complete_reminder Mark a reminder as completed

Contacts (9 tools)

Tool Description
pear_list_contacts List all contacts with full vCard data (phones, emails, addresses, birthdays)
pear_search_contacts Search by name, email, phone, or organization
pear_create_contact Create a contact with full vCard support including photo
pear_update_contact Update contact fields (merges with existing data)
pear_delete_contact Delete a contact
pear_list_contact_groups List all contact groups with member counts
pear_create_contact_group Create a new contact group
pear_add_contact_to_group Add a contact to a group by name or email
pear_update_contact_photo Update a contact's photo (Base64, data URI, or external URL)

Briefing (1 tool)

Tool Description
pear_get_daily_briefing Get today's events and pending reminders in one call. Enriches attendees with contact data.

Scheduling (1 tool)

Tool Description
pear_find_best_time AI-scored optimal meeting slots. Considers work hours, time-of-day preference, day-of-week preference, buffer time, and reminder deadlines.

Batch Operations (4 tools)

Tool Description
pear_create_events_batch Create up to 50 events in one call
pear_create_reminders_batch Create up to 50 reminders in one call
pear_create_contacts_batch Create up to 50 contacts in one call
pear_delete_contacts_batch Delete up to 50 contacts in one call

Workflow Guidelines

Dates and Times

  • Always use ISO 8601 format: 2025-06-15T14:30:00Z or 2025-06-15T14:30:00+10:00
  • Timezone parameter: Pass timezone (IANA format like America/New_York or Australia/Sydney) for user-friendly display times
  • All-day events: Set isAllDay: true and use date-only format 2025-06-15
  • Date ranges: pear_list_events requires a timeRange object: { start: "...", end: "..." }

Creating Events

When creating events, follow this pattern:

  1. If the user doesn't specify a calendar, omit calendarName — Pear auto-selects the default
  2. For recurring events, use the recurrence object: { frequency: "WEEKLY", interval: 1, count: 10 }
  3. For attendees, you can pass names — Pear resolves them against the user's contacts automatically
  4. Use idempotencyKey when retrying to prevent duplicate events
  5. Alarms use minutes before: { action: "display", trigger: 15 } for a 15-minute reminder

Finding Meeting Times

For scheduling, prefer pear_find_best_time over pear_find_free_slots:

  • pear_find_best_time returns AI-scored slots considering work hours, preferences, and existing commitments
  • Pass preferences to customize: { timeOfDay: "morning", focusTime: true, workHoursStart: 9, workHoursEnd: 17 }
  • pear_find_free_slots is simpler — just returns raw available slots without scoring

Reminders

  • Reminders are accessed via CalDAV (VTODO protocol) — basic operations work well (title, due date, priority, notes, completion). Modern Apple Reminders features like subtasks, tags, smart lists, and location-based reminders are not available via CalDAV.
  • Priority values: 1 = high, 5 = medium, 9 = low, 0 = none
  • To list only incomplete reminders, use includeCompleted: false (default)
  • Reminder lists are auto-created if they don't exist when using listName

Contacts

  • pear_update_contact merges fields — it won't erase data you don't include in the update
  • Birthday format: YYYY-MM-DD for full date, --MM-DD for year-unknown
  • Phone/email can be a single string or an array for multiple entries
  • Contact photos accept Base64 or data URI format

Virtual Birthdays

Pear generates all-day birthday events from contact birthday fields. These appear as events on a "Birthdays" calendar when listing events. This is a synthesized feature — Apple's native Birthdays calendar is not exposed via CalDAV.

Daily Briefing

pear_get_daily_briefing is the most efficient way to give the user an overview:

  • Returns today's events + pending reminders in a single call
  • Automatically enriches event attendees with contact details (name, email, phone)
  • Pass timezone for correct day boundaries
  • Pass date to get a briefing for a different day

Safety & Confirmation

Actions Requiring Care

Action Risk Guidance
pear_delete_event Removes event permanently Confirm event title and date with user before deleting
pear_delete_contact Removes contact permanently Always confirm — show contact name first
pear_delete_contacts_batch Bulk delete up to 50 contacts Require explicit user confirmation with count
pear_update_event Overwrites event fields Summarize changes before applying
pear_complete_reminder Marks as done Safe — can be undone by updating completed: false
Batch create operations Creates up to 50 items Confirm count and summarize before executing

Data Safety

  • Read operations are always safe — listing, searching, and briefings have no side effects
  • Updates merge, not replacepear_update_contact preserves fields you don't mention
  • Batch operations are rate-limited — chunks of 5 with 200ms delays, no need to throttle manually
  • Never expose the user's PEAR_API_KEY — treat it as a secret

Error Handling

Error Code Meaning What to Do
-32001 Missing or invalid API key Check PEAR_API_KEY is set correctly
-32602 Invalid parameters Check parameter names and types against tool reference
-32603 Server error Retry once, then report to user
404 on event/reminder Item not found The filename may have changed — re-list to get current filenames
Calendar is read-only Cannot modify subscription calendars List calendars first to check which are writable

Common Patterns

Error Recovery (Idempotency)

Event creation failed mid-request or timed out:
→ Retry pear_create_event with the same idempotencyKey
→ Pear deduplicates — no double-booking even if the first request succeeded silently

Morning Briefing

User: "What's on my plate today?"
→ Call pear_get_daily_briefing with timezone
→ Summarize events chronologically, then pending reminders

Schedule a Meeting

User: "Find time for a 1-hour meeting this week"
→ Call pear_find_best_time with durationMinutes: 60 and this week's range
→ Present top 3 options with scores
→ On user selection, call pear_create_event

Quick Reminder

User: "Remind me to call the dentist tomorrow"
→ Call pear_create_reminder with title and dueDate set to tomorrow

Contact Lookup

User: "What's Sarah's phone number?"
→ Call pear_search_contacts with query: "Sarah"
→ Return matching contacts with phone numbers

Bulk Event Creation

User: "Add these 5 meetings to my calendar"
→ Call pear_create_events_batch with all events in one request
→ Summarize results (created count, any failures)

References

  • Pear Documentation
  • Apple App-Specific Passwords
  • CalDAV Protocol (RFC 4791)
  • CardDAV Protocol (RFC 6352)
  • IANA Timezone Database

相关推荐