{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ilove323-outlook-calendar",
    "name": "Outlook Calendar (M365)",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/ilove323/ilove323-outlook-calendar",
    "canonicalUrl": "https://clawhub.ai/ilove323/ilove323-outlook-calendar",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ilove323-outlook-calendar",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ilove323-outlook-calendar",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "login.py",
      "owa_calendar.py"
    ],
    "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/ilove323-outlook-calendar"
    },
    "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/ilove323-outlook-calendar",
    "agentPageUrl": "https://openagent3.xyz/skills/ilove323-outlook-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ilove323-outlook-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ilove323-outlook-calendar/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": "触发条件",
        "body": "只要用户问任何涉及日程、会议、安排、日历、工作、任务、事情的问题，必须调用此技能。\n\n\"明天有什么安排\" / \"这周有什么会\" / \"本月日程\"\n\"帮我看看日历\" / \"我今天几点有会\"\n\"这个月会议一共多少小时\"\n\"我下周有啥工作\" / \"明天要做啥\" / \"这周有什么事\"\n\"下周安排\" / \"有啥任务\" / \"日程表看一下\"\n任何时间 + 安排/会议/事件/工作/任务/事情的组合问法"
      },
      {
        "title": "首次配置",
        "body": "敏感信息（账号密码、Cookie、Token）存放在 ~/.outlook/，不在 skill 目录内。"
      },
      {
        "title": "1. 创建配置文件",
        "body": "创建 ~/.outlook/config.json，内容如下：\n\n{\n  \"email\": \"your@company.com\",\n  \"password\": \"your_password\",\n  \"cookie_file\": \"/root/.outlook/cookies.json\",\n  \"cookie_max_age_days\": 7,\n  \"mfa_type\": \"authenticator_number_match\"\n}"
      },
      {
        "title": "2. 安装依赖",
        "body": "pip install playwright requests\nplaywright install chromium"
      },
      {
        "title": "3. 首次登录（MFA）",
        "body": "cd ~/.agents/skills/outlook-calendar\npython login.py\n\n脚本输出 [NUMBER:XX] 时，在 Microsoft Authenticator App 输入数字 XX 并批准，Cookie 自动保存到 ~/.outlook/cookies.json。"
      },
      {
        "title": "第一步：读取日历",
        "body": "cd ~/.agents/skills/outlook-calendar\npython owa_calendar.py --today          # 今天\npython owa_calendar.py --tomorrow       # 明天\npython owa_calendar.py --week           # 本周\npython owa_calendar.py --month 2026-03  # 指定月份\npython owa_calendar.py --range 2026-03-01 2026-03-31  # 自定义范围"
      },
      {
        "title": "第二步：处理 AUTH_FAILED",
        "body": "若输出 [AUTH_FAILED]，Cookie 或 Token 过期，重新登录：\n\npython login.py"
      },
      {
        "title": "第三步：整理输出",
        "body": "按用户问题整理回答：列出事件、统计总时长、按周分组等。\n注意：API 返回时间为 UTC，需 +8 转换为上海时间。"
      },
      {
        "title": "文件结构",
        "body": "skill 目录（无敏感信息）：\n~/.agents/skills/outlook-calendar/\n├── SKILL.md\n├── login.py          # MFA 登录，保存 Cookie 到 ~/.outlook/\n└── owa_calendar.py   # 日历读取（Token 模式）\n\n敏感数据目录：\n~/.outlook/\n├── config.json       # 账号密码（自行创建）\n├── cookies.json      # 登录 Cookie（login.py 自动生成）\n└── token.json        # Bearer Token 缓存（自动生成，1h 有效）"
      },
      {
        "title": "MFA 说明",
        "body": "类型：Authenticator 数字匹配\nCookie 有效期：通常 1-7 天，过期重跑 login.py\n多次失败会触发微软限速，等 15 分钟再试"
      }
    ],
    "body": "Outlook 日历技能\n触发条件\n\n只要用户问任何涉及日程、会议、安排、日历、工作、任务、事情的问题，必须调用此技能。\n\n\"明天有什么安排\" / \"这周有什么会\" / \"本月日程\"\n\"帮我看看日历\" / \"我今天几点有会\"\n\"这个月会议一共多少小时\"\n\"我下周有啥工作\" / \"明天要做啥\" / \"这周有什么事\"\n\"下周安排\" / \"有啥任务\" / \"日程表看一下\"\n任何时间 + 安排/会议/事件/工作/任务/事情的组合问法\n首次配置\n\n敏感信息（账号密码、Cookie、Token）存放在 ~/.outlook/，不在 skill 目录内。\n\n1. 创建配置文件\n\n创建 ~/.outlook/config.json，内容如下：\n\n{\n  \"email\": \"your@company.com\",\n  \"password\": \"your_password\",\n  \"cookie_file\": \"/root/.outlook/cookies.json\",\n  \"cookie_max_age_days\": 7,\n  \"mfa_type\": \"authenticator_number_match\"\n}\n\n2. 安装依赖\npip install playwright requests\nplaywright install chromium\n\n3. 首次登录（MFA）\ncd ~/.agents/skills/outlook-calendar\npython login.py\n\n\n脚本输出 [NUMBER:XX] 时，在 Microsoft Authenticator App 输入数字 XX 并批准，Cookie 自动保存到 ~/.outlook/cookies.json。\n\n调用步骤\n第一步：读取日历\ncd ~/.agents/skills/outlook-calendar\npython owa_calendar.py --today          # 今天\npython owa_calendar.py --tomorrow       # 明天\npython owa_calendar.py --week           # 本周\npython owa_calendar.py --month 2026-03  # 指定月份\npython owa_calendar.py --range 2026-03-01 2026-03-31  # 自定义范围\n\n第二步：处理 AUTH_FAILED\n\n若输出 [AUTH_FAILED]，Cookie 或 Token 过期，重新登录：\n\npython login.py\n\n第三步：整理输出\n\n按用户问题整理回答：列出事件、统计总时长、按周分组等。 注意：API 返回时间为 UTC，需 +8 转换为上海时间。\n\n文件结构\nskill 目录（无敏感信息）：\n~/.agents/skills/outlook-calendar/\n├── SKILL.md\n├── login.py          # MFA 登录，保存 Cookie 到 ~/.outlook/\n└── owa_calendar.py   # 日历读取（Token 模式）\n\n敏感数据目录：\n~/.outlook/\n├── config.json       # 账号密码（自行创建）\n├── cookies.json      # 登录 Cookie（login.py 自动生成）\n└── token.json        # Bearer Token 缓存（自动生成，1h 有效）\n\nMFA 说明\n类型：Authenticator 数字匹配\nCookie 有效期：通常 1-7 天，过期重跑 login.py\n多次失败会触发微软限速，等 15 分钟再试"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ilove323/ilove323-outlook-calendar",
    "publisherUrl": "https://clawhub.ai/ilove323/ilove323-outlook-calendar",
    "owner": "ilove323",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ilove323-outlook-calendar",
    "downloadUrl": "https://openagent3.xyz/downloads/ilove323-outlook-calendar",
    "agentUrl": "https://openagent3.xyz/skills/ilove323-outlook-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ilove323-outlook-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ilove323-outlook-calendar/agent.md"
  }
}