{
  "schemaVersion": "1.0",
  "item": {
    "slug": "feishu-calendar-event",
    "name": "feishu-calendar-event",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/TEweitao/feishu-calendar-event",
    "canonicalUrl": "https://clawhub.ai/TEweitao/feishu-calendar-event",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/feishu-calendar-event",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=feishu-calendar-event",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "calendar-client.js",
      "example.md",
      "package.json",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/feishu-calendar-event"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/feishu-calendar-event",
    "agentPageUrl": "https://openagent3.xyz/skills/feishu-calendar-event/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feishu-calendar-event/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feishu-calendar-event/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Feishu Calendar Skill",
        "body": "飞书日历操作技能，用于读取、创建、管理飞书日历事件，支持个人和企业日历操作。"
      },
      {
        "title": "基本信息",
        "body": "名称: feishu-calendar\n版本: 1.0.0\n作者: nuonuo\n描述: 飞书日历管理技能，支持日程查询、创建、更新、删除和重复规则设置\n标签: feishu, calendar, 日历, 飞书\n依赖: Node.js >= 18"
      },
      {
        "title": "功能特性",
        "body": "✅ 获取日历列表\n✅ 查询日程事件（支持时间范围、分页）\n✅ 创建日程（支持全天事件、定时事件）\n✅ 更新日程（修改内容、设置重复规则）\n✅ 删除日程\n✅ 设置提醒（支持多层级提醒）\n✅ 支持每年/每月/每周重复\n✅ 正确处理时区和全天事件"
      },
      {
        "title": "安装",
        "body": "复制 feishu-calendar 目录到你的 OpenClaw skills 目录\n配置飞书应用凭证（见下方配置说明）\n在飞书开放平台开通日历权限"
      },
      {
        "title": "1. 创建飞书应用",
        "body": "访问 飞书开放平台 创建企业自建应用：\n\n点击「创建企业自建应用」\n填写应用名称（如「日历助手」）\n进入「权限管理」开通以下权限：\n\ncalendar:calendar:read - 读取日历\ncalendar:calendar.event:read - 读取日程\ncalendar:calendar.event:create - 创建日程\ncalendar:calendar.event:update - 更新日程\ncalendar:calendar.event:delete - 删除日程"
      },
      {
        "title": "2. 获取凭证",
        "body": "在「凭证与基础信息」中获取：\n\nApp ID: cli_xxxxxxxxxxxx\nApp Secret: xxxxxxxxxxxxx"
      },
      {
        "title": "3. 配置环境变量",
        "body": "# 在 OpenClaw 环境或脚本中设置\nexport FEISHU_APP_ID=cli_xxxxxxxxxxxx\nexport FEISHU_APP_SECRET=xxxxxxxxxxxxx\n\n或者在代码中直接使用：\n\nconst config = {\n  appId: 'cli_xxxxxxxxxxxx',\n  appSecret: 'xxxxxxxxxxxxx'\n};"
      },
      {
        "title": "获取 Access Token",
        "body": "const response = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\n    app_id: FEISHU_APP_ID,\n    app_secret: FEISHU_APP_SECRET\n  })\n});\n\nconst { tenant_access_token } = await response.json();"
      },
      {
        "title": "获取日历列表",
        "body": "const calendars = await fetch('https://open.feishu.cn/open-apis/calendar/v4/calendars?page_size=100', {\n  headers: { 'Authorization': `Bearer ${tenant_access_token}` }\n});"
      },
      {
        "title": "获取日程事件",
        "body": "// 时间戳格式（秒）\nconst startTime = Math.floor(new Date('2026-03-01T00:00:00+08:00').getTime() / 1000);\nconst endTime = Math.floor(new Date('2026-03-01T23:59:59+08:00').getTime() / 1000);\n\nconst events = await fetch(\n  `https://open.feishu.cn/open-apis/calendar/v4/calendars/${calendarId}/events?start_time=${startTime}&end_time=${endTime}`,\n  { headers: { 'Authorization': `Bearer ${tenant_access_token}` } }\n);"
      },
      {
        "title": "创建日程",
        "body": "// 全天事件示例\nconst event = {\n  summary: '🎂 生日',\n  description: '祝生日快乐！',\n  start_time: { date: '2026-05-01', timezone: 'Asia/Shanghai' },\n  end_time: { date: '2026-05-01', timezone: 'Asia/Shanghai' },\n  is_all_day: true,\n  reminders: [\n    { minutes: 7200 },  // 提前5天\n    { minutes: 1440 }   // 提前1天\n  ],\n  recurrence: 'FREQ=YEARLY;INTERVAL=1'  // 每年重复\n};\n\nconst result = await fetch(`https://open.feishu.cn/open-apis/calendar/v4/calendars/${calendarId}/events`, {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${tenant_access_token}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify(event)\n});"
      },
      {
        "title": "更新日程为每年重复",
        "body": "const update = {\n  recurrence: 'FREQ=YEARLY;INTERVAL=1'\n};\n\nawait fetch(`https://open.feishu.cn/open-apis/calendar/v4/calendars/${calendarId}/events/${eventId}`, {\n  method: 'PATCH',\n  headers: {\n    'Authorization': `Bearer ${tenant_access_token}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify(update)\n});"
      },
      {
        "title": "API 参考",
        "body": "功能方法API 路径获取 TokenPOST/auth/v3/tenant_access_token/internal获取日历列表GET/calendar/v4/calendars获取日程GET/calendar/v4/calendars/{calendar_id}/events创建日程POST/calendar/v4/calendars/{calendar_id}/events更新日程PATCH/calendar/v4/calendars/{calendar_id}/events/{event_id}删除日程DELETE/calendar/v4/calendars/{calendar_id}/events/{event_id}"
      },
      {
        "title": "时间格式",
        "body": "全天事件：\n\n{\n  \"start_time\": { \"date\": \"2026-05-01\", \"timezone\": \"Asia/Shanghai\" },\n  \"end_time\": { \"date\": \"2026-05-01\", \"timezone\": \"Asia/Shanghai\" },\n  \"is_all_day\": true\n}\n\n定时事件：\n\n{\n  \"start_time\": { \"timestamp\": \"1772366400\", \"timezone\": \"Asia/Shanghai\" },\n  \"end_time\": { \"timestamp\": \"1772373600\", \"timezone\": \"Asia/Shanghai\" }\n}"
      },
      {
        "title": "重复规则",
        "body": "规则说明FREQ=DAILY;INTERVAL=1每天重复FREQ=WEEKLY;INTERVAL=1每周重复FREQ=MONTHLY;INTERVAL=1每月重复FREQ=YEARLY;INTERVAL=1每年重复"
      },
      {
        "title": "提醒设置",
        "body": "{\n  \"reminders\": [\n    { \"minutes\": 5 },      // 提前5分钟\n    { \"minutes\": 60 },     // 提前1小时\n    { \"minutes\": 1440 },   // 提前1天\n    { \"minutes\": 7200 }    // 提前5天\n  ]\n}"
      },
      {
        "title": "注意事项",
        "body": "Token 有效期: tenant_access_token 有效期 2 小时，生产环境需要缓存和刷新机制\n时间戳单位: 飞书 API 使用 Unix 时间戳（秒），JavaScript Date 使用毫秒，注意转换\n时区处理: 建议统一使用 Asia/Shanghai 时区\n全天事件: 使用 date 字段而非 timestamp，并设置 is_all_day: true\n已取消事件: API 会返回 status: cancelled 的事件，需要过滤\n分页处理: 大量事件需要处理 has_more 和 page_token"
      },
      {
        "title": "示例代码",
        "body": "见 example.md 和 calendar-client.js 获取完整示例。"
      },
      {
        "title": "故障排除",
        "body": "问题解决方案99991661 - Missing access token检查 token 是否正确传递403 - 权限不足在飞书后台开通相应权限事件查询不到扩大时间范围，检查是否已取消创建失败检查必填字段（summary, start_time, end_time）"
      },
      {
        "title": "参考文档",
        "body": "飞书日历 API 文档\n获取 Access Token\n飞书开放平台"
      },
      {
        "title": "v1.0.0 (2026-03-01)",
        "body": "✅ 初始版本发布\n✅ 支持日历列表查询\n✅ 支持日程增删改查\n✅ 支持重复规则设置\n✅ 支持多层级提醒\n✅ 正确处理全天事件和时区\n\nLicense: MIT\nAuthor: nuonuo\nRepository: https://github.com/openclaw-community/feishu-calendar"
      }
    ],
    "body": "Feishu Calendar Skill\n\n飞书日历操作技能，用于读取、创建、管理飞书日历事件，支持个人和企业日历操作。\n\n基本信息\n名称: feishu-calendar\n版本: 1.0.0\n作者: nuonuo\n描述: 飞书日历管理技能，支持日程查询、创建、更新、删除和重复规则设置\n标签: feishu, calendar, 日历, 飞书\n依赖: Node.js >= 18\n功能特性\n\n✅ 获取日历列表\n✅ 查询日程事件（支持时间范围、分页）\n✅ 创建日程（支持全天事件、定时事件）\n✅ 更新日程（修改内容、设置重复规则）\n✅ 删除日程\n✅ 设置提醒（支持多层级提醒）\n✅ 支持每年/每月/每周重复\n✅ 正确处理时区和全天事件\n\n安装\n复制 feishu-calendar 目录到你的 OpenClaw skills 目录\n配置飞书应用凭证（见下方配置说明）\n在飞书开放平台开通日历权限\n配置\n1. 创建飞书应用\n\n访问 飞书开放平台 创建企业自建应用：\n\n点击「创建企业自建应用」\n填写应用名称（如「日历助手」）\n进入「权限管理」开通以下权限：\ncalendar:calendar:read - 读取日历\ncalendar:calendar.event:read - 读取日程\ncalendar:calendar.event:create - 创建日程\ncalendar:calendar.event:update - 更新日程\ncalendar:calendar.event:delete - 删除日程\n2. 获取凭证\n\n在「凭证与基础信息」中获取：\n\nApp ID: cli_xxxxxxxxxxxx\nApp Secret: xxxxxxxxxxxxx\n3. 配置环境变量\n# 在 OpenClaw 环境或脚本中设置\nexport FEISHU_APP_ID=cli_xxxxxxxxxxxx\nexport FEISHU_APP_SECRET=xxxxxxxxxxxxx\n\n\n或者在代码中直接使用：\n\nconst config = {\n  appId: 'cli_xxxxxxxxxxxx',\n  appSecret: 'xxxxxxxxxxxxx'\n};\n\n使用方法\n获取 Access Token\nconst response = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\n    app_id: FEISHU_APP_ID,\n    app_secret: FEISHU_APP_SECRET\n  })\n});\n\nconst { tenant_access_token } = await response.json();\n\n获取日历列表\nconst calendars = await fetch('https://open.feishu.cn/open-apis/calendar/v4/calendars?page_size=100', {\n  headers: { 'Authorization': `Bearer ${tenant_access_token}` }\n});\n\n获取日程事件\n// 时间戳格式（秒）\nconst startTime = Math.floor(new Date('2026-03-01T00:00:00+08:00').getTime() / 1000);\nconst endTime = Math.floor(new Date('2026-03-01T23:59:59+08:00').getTime() / 1000);\n\nconst events = await fetch(\n  `https://open.feishu.cn/open-apis/calendar/v4/calendars/${calendarId}/events?start_time=${startTime}&end_time=${endTime}`,\n  { headers: { 'Authorization': `Bearer ${tenant_access_token}` } }\n);\n\n创建日程\n// 全天事件示例\nconst event = {\n  summary: '🎂 生日',\n  description: '祝生日快乐！',\n  start_time: { date: '2026-05-01', timezone: 'Asia/Shanghai' },\n  end_time: { date: '2026-05-01', timezone: 'Asia/Shanghai' },\n  is_all_day: true,\n  reminders: [\n    { minutes: 7200 },  // 提前5天\n    { minutes: 1440 }   // 提前1天\n  ],\n  recurrence: 'FREQ=YEARLY;INTERVAL=1'  // 每年重复\n};\n\nconst result = await fetch(`https://open.feishu.cn/open-apis/calendar/v4/calendars/${calendarId}/events`, {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${tenant_access_token}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify(event)\n});\n\n更新日程为每年重复\nconst update = {\n  recurrence: 'FREQ=YEARLY;INTERVAL=1'\n};\n\nawait fetch(`https://open.feishu.cn/open-apis/calendar/v4/calendars/${calendarId}/events/${eventId}`, {\n  method: 'PATCH',\n  headers: {\n    'Authorization': `Bearer ${tenant_access_token}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify(update)\n});\n\nAPI 参考\n功能\t方法\tAPI 路径\n获取 Token\tPOST\t/auth/v3/tenant_access_token/internal\n获取日历列表\tGET\t/calendar/v4/calendars\n获取日程\tGET\t/calendar/v4/calendars/{calendar_id}/events\n创建日程\tPOST\t/calendar/v4/calendars/{calendar_id}/events\n更新日程\tPATCH\t/calendar/v4/calendars/{calendar_id}/events/{event_id}\n删除日程\tDELETE\t/calendar/v4/calendars/{calendar_id}/events/{event_id}\n字段说明\n时间格式\n\n全天事件：\n\n{\n  \"start_time\": { \"date\": \"2026-05-01\", \"timezone\": \"Asia/Shanghai\" },\n  \"end_time\": { \"date\": \"2026-05-01\", \"timezone\": \"Asia/Shanghai\" },\n  \"is_all_day\": true\n}\n\n\n定时事件：\n\n{\n  \"start_time\": { \"timestamp\": \"1772366400\", \"timezone\": \"Asia/Shanghai\" },\n  \"end_time\": { \"timestamp\": \"1772373600\", \"timezone\": \"Asia/Shanghai\" }\n}\n\n重复规则\n规则\t说明\nFREQ=DAILY;INTERVAL=1\t每天重复\nFREQ=WEEKLY;INTERVAL=1\t每周重复\nFREQ=MONTHLY;INTERVAL=1\t每月重复\nFREQ=YEARLY;INTERVAL=1\t每年重复\n提醒设置\n{\n  \"reminders\": [\n    { \"minutes\": 5 },      // 提前5分钟\n    { \"minutes\": 60 },     // 提前1小时\n    { \"minutes\": 1440 },   // 提前1天\n    { \"minutes\": 7200 }    // 提前5天\n  ]\n}\n\n注意事项\nToken 有效期: tenant_access_token 有效期 2 小时，生产环境需要缓存和刷新机制\n时间戳单位: 飞书 API 使用 Unix 时间戳（秒），JavaScript Date 使用毫秒，注意转换\n时区处理: 建议统一使用 Asia/Shanghai 时区\n全天事件: 使用 date 字段而非 timestamp，并设置 is_all_day: true\n已取消事件: API 会返回 status: cancelled 的事件，需要过滤\n分页处理: 大量事件需要处理 has_more 和 page_token\n示例代码\n\n见 example.md 和 calendar-client.js 获取完整示例。\n\n故障排除\n问题\t解决方案\n99991661 - Missing access token\t检查 token 是否正确传递\n403 - 权限不足\t在飞书后台开通相应权限\n事件查询不到\t扩大时间范围，检查是否已取消\n创建失败\t检查必填字段（summary, start_time, end_time）\n参考文档\n飞书日历 API 文档\n获取 Access Token\n飞书开放平台\n更新日志\nv1.0.0 (2026-03-01)\n✅ 初始版本发布\n✅ 支持日历列表查询\n✅ 支持日程增删改查\n✅ 支持重复规则设置\n✅ 支持多层级提醒\n✅ 正确处理全天事件和时区\n\nLicense: MIT\nAuthor: nuonuo\nRepository: https://github.com/openclaw-community/feishu-calendar"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/TEweitao/feishu-calendar-event",
    "publisherUrl": "https://clawhub.ai/TEweitao/feishu-calendar-event",
    "owner": "TEweitao",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/feishu-calendar-event",
    "downloadUrl": "https://openagent3.xyz/downloads/feishu-calendar-event",
    "agentUrl": "https://openagent3.xyz/skills/feishu-calendar-event/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feishu-calendar-event/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feishu-calendar-event/agent.md"
  }
}