OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  skylight-skill:与 Skylight 日历框架交互,管理家庭/团队日程

skylight-skill:与 Skylight 日历框架交互,管理家庭/团队日程

 
  agent ·  2026-02-23 03:21:55 · 3 次点击  · 0 条评论  

名称: skylight
描述: 与 Skylight Calendar 智能相框交互 - 管理日历事件、家庭任务、购物/待办清单、任务箱项目和奖励积分。适用于用户需要查看/创建日历事件、管理家庭任务、处理购物或待办清单、查询奖励积分或与其 Skylight 智能显示屏互动时。
主页: https://ourskylight.com
元数据:
clawdbot:
emoji: 📅
requires:
bins:
- curl
env:
- SKYLIGHT_FRAME_ID
primaryEnv: SKYLIGHT_EMAIL


Skylight Calendar

通过非官方 API 控制 Skylight Calendar 智能相框。

设置

设置环境变量:
- SKYLIGHT_URL: API 基础 URL (默认: https://app.ourskylight.com)
- SKYLIGHT_FRAME_ID: 您的相框(家庭)ID — 登录 ourskylight.com,点击您的日历,从 URL 中复制数字部分 (例如,从 https://ourskylight.com/calendar/4197102 中获取 4197102)

身份验证 (选择一种方式):

选项 A - 邮箱/密码 (推荐):
- SKYLIGHT_EMAIL: 您的 Skylight 账户邮箱
- SKYLIGHT_PASSWORD: 您的 Skylight 账户密码

选项 B - 预先捕获的令牌:
- SKYLIGHT_TOKEN: 完整的 Authorization 请求头值 (例如 Basic abc123...)

身份验证

选项 A:使用邮箱/密码登录 (推荐)

通过邮箱和密码登录生成令牌:

# 登录并获取用户凭证
LOGIN_RESPONSE=$(curl -s -X POST "$SKYLIGHT_URL/api/sessions" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "'"$SKYLIGHT_EMAIL"'",
    "password": "'"$SKYLIGHT_PASSWORD"'",
    "name": "",
    "phone": "",
    "resettingPassword": "false",
    "textMeTheApp": "true",
    "agreedToMarketing": "true"
  }')

# 从响应中提取 user_id 和 user_token
USER_ID=$(echo "$LOGIN_RESPONSE" | jq -r '.data.id')
USER_TOKEN=$(echo "$LOGIN_RESPONSE" | jq -r '.data.attributes.token')

# 生成 Basic 认证令牌 (user_id:user_token 的 base64 编码)
SKYLIGHT_TOKEN="Basic $(echo -n "${USER_ID}:${USER_TOKEN}" | base64)"

# 现在所有 API 请求都使用 $SKYLIGHT_TOKEN

登录接口返回:
- data.id: 用户 ID
- data.attributes.token: 用户令牌

将两者组合为 {user_id}:{user_token} 并进行 base64 编码,用于 Basic 认证。

选项 B:通过代理捕获令牌

如果您希望手动捕获令牌:

  1. 安装 Proxyman/Charles/mitmproxy 并信任其根证书
  2. app.ourskylight.com 启用 SSL 代理
  3. 登录 Skylight 应用,捕获任意 API 请求
  4. 复制 Authorization 请求头的值 (例如 Basic <token>)

令牌在登出后会失效;重新登录后需要重新捕获。

API 格式

响应使用 JSON:API 格式,包含 dataincludedrelationships 字段。

日历事件

列出事件

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/calendar_events?date_min=2025-01-27&date_max=2025-01-31" \
  -H "Authorization: $SKYLIGHT_TOKEN" \
  -H "Accept: application/json"

查询参数:
- date_min (必需): 开始日期 YYYY-MM-DD
- date_max (必需): 结束日期 YYYY-MM-DD
- timezone: 时区字符串 (可选)
- include: 相关资源的 CSV 列表 (categories,calendar_account,event_notification_setting)

列出源日历

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/source_calendars" \
  -H "Authorization: $SKYLIGHT_TOKEN"

家庭任务

列出任务

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/chores?after=2025-01-27&before=2025-01-31" \
  -H "Authorization: $SKYLIGHT_TOKEN"

查询参数:
- after: 开始日期 YYYY-MM-DD
- before: 结束日期 YYYY-MM-DD
- include_late: 包含逾期任务 (布尔值)
- filter: 按 linked_to_profile 筛选

创建任务

curl -s -X POST "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/chores" \
  -H "Authorization: $SKYLIGHT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "type": "chore",
      "attributes": {
        "summary": "Take out trash",
        "status": "pending",
        "start": "2025-01-28",
        "start_time": "08:00",
        "recurring": false
      },
      "relationships": {
        "category": {
          "data": {"type": "category", "id": "CATEGORY_ID"}
        }
      }
    }
  }'

任务属性:
- summary: 任务标题
- status: pendingcompleted
- start: 日期 YYYY-MM-DD
- start_time: 时间 HH:MM (可选)
- recurring: 布尔值
- recurrence_set: 重复任务的 RRULE 字符串
- reward_points: 整数 (可选)
- emoji_icon: 表情符号 (可选)

清单 (购物/待办)

列出所有清单

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/lists" \
  -H "Authorization: $SKYLIGHT_TOKEN"

获取清单及其项目

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/lists/{listId}" \
  -H "Authorization: $SKYLIGHT_TOKEN"

响应包含 data.attributes.kind (shoppingto_do) 以及包含清单项目的 included 数组。

清单项目属性:
- label: 项目文本
- status: pendingcompleted
- section: 分区名称 (可选)
- position: 排序顺序

任务箱

创建任务箱项目

curl -s -X POST "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/task_box/items" \
  -H "Authorization: $SKYLIGHT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "type": "task_box_item",
      "attributes": {
        "summary": "Pack lunches"
      }
    }
  }'

任务箱属性:
- summary: 任务标题
- emoji_icon: 表情符号 (可选)
- routine: 布尔值 (可选)
- reward_points: 整数 (可选)

类别

列出类别

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/categories" \
  -H "Authorization: $SKYLIGHT_TOKEN"

类别用于将任务分配给家庭成员。属性包括:
- label: 类别名称 (例如 "Mom", "Dad", "Kids")
- color: 十六进制颜色 #RRGGBB
- profile_pic_url: 头像 URL

奖励

列出奖励

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/rewards" \
  -H "Authorization: $SKYLIGHT_TOKEN"

可选查询参数:redeemed_at_min (日期时间) 用于按兑换日期筛选。

列出奖励积分

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/reward_points" \
  -H "Authorization: $SKYLIGHT_TOKEN"

相框信息

获取相框详情

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID" \
  -H "Authorization: $SKYLIGHT_TOKEN"

列出设备

curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/devices" \
  -H "Authorization: $SKYLIGHT_TOKEN"

注意事项

  • 此 API 为非官方且通过逆向工程获得;端点可能会变更
  • 令牌在登出后失效;需要时请重新捕获
  • 数据未更改时,响应会返回 304 Not Modified
  • 使用 jq 解析 JSON:API 响应
  • 相框 ID 是您的家庭标识符;所有资源都以其为作用域
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor