Skylight
v1.0.0与Skylight Calendar框架交互 - 管理日历事件、家务、列表、任务箱项目和奖励。当用户想要查看/创建日历事件时使用...
运行时依赖
安装命令
点击复制技能文档
Skylight 日历控制 通过非官方 API 控制 Skylight 日历框架。 设置 设置环境变量: SKYLIGHT_URL:基础 URL(默认:https://app.ourskylight.com) SKYLIGHT_FRAME_ID:您的框架(家庭)ID —— 可以通过登录 ourskylight.com,点击您的日历,并从 URL 中复制数字(例如,4197102 从 https://ourskylight.com/calendar/4197102) 身份验证: 使用纯环境变量或 1Password 引用: 纯环境变量:SKYLIGHT_EMAIL,SKYLIGHT_PASSWORD 1Password 引用:SKYLIGHT_EMAIL_OP_REF,SKYLIGHT_PASSWORD_OP_REF(op://vault/item/field) SKYLIGHT_TOKEN:完整的 Authorization 标头值,通常为 Bearer 身份验证 使用捆绑的 OAuth 辅助工具获取访问令牌。 如果使用 1Password 服务账户/访问令牌,请使 OP_SERVICE_ACCOUNT_TOKEN 对 Gateway 进程可用: export OP_SERVICE_ACCOUNT_TOKEN='ops_...' export SKYLIGHT_EMAIL_OP_REF='op://AIVault/Skylight/username' export SKYLIGHT_PASSWORD_OP_REF='op://AIVault/Skylight/password' export SKYLIGHT_TOKEN="$(./scripts/get-access-token.sh)" 纯环境变量仍然有效: export SKYLIGHT_EMAIL='you@example.com' export SKYLIGHT_PASSWORD='...' export SKYLIGHT_TOKEN="$(./scripts/get-access-token.sh)" 脚本遵循 Skylight 的当前 Web/Mobile OAuth 流程: 解析 SKYLIGHT_EMAIL 和 SKYLIGHT_PASSWORD;如果任一值是 op://... 引用,或匹配的 *_OP_REF 环境变量已设置,则读取秘密以 op read 启动 /oauth/authorize 以客户端 skylight-mobile 和范围 everything 获取 /auth/session/new 并提取 Rails 真实性令牌 将解析的电子邮件/密码发布到 /auth/session 遵循第一个重定向,提取第二个重定向的 OAuth 代码 在 /oauth/token 中交换代码 打印 Bearer 以直接用作 SKYLIGHT_TOKEN 可选覆盖: SKYLIGHT_URL:基础 URL,默认 https://app.ourskylight.com SKYLIGHT_COOKIE_JAR:用于调试的 cookie 路径;默认情况下,脚本使用并删除临时 jar SKYLIGHT_DEVICE_FINGERPRINT:OAuth 设备指纹;默认值与观察到的 Web 流程匹配 除非必要,请勿打印或持久化 Skylight 或 1Password 令牌。 当使用 OP_SERVICE_ACCOUNT_TOKEN 时,请勿在 shell 命令中内联它,例如 OP_SERVICE_ACCOUNT_TOKEN='...' op read ...;请依赖进程环境,以便 tmux/pane 日志不会回显令牌。 令牌可能会过期或轮换;当 API 调用返回 401 时,请重新运行辅助工具。 API 格式 响应使用 JSON:API 格式,具有 data、included 和 relationships 字段。 日历事件 列出事件 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:按链接的个人资料过滤 创建家务 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:pending 或 completed 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(shopping 或 to_do)和 included 数组中的列表项目。 列表项目属性: label:项目文本 status:pending 或 completed 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"