360 Secure SkillHub
360 安全技能中心

WHOOP (Official API)

核心功能:通过OAuth完成WHOOP账号授权并管理令牌;可拉取恢复、睡眠、运动等健康数据,支持标准化处理,生成适配多聊天渠道的可读报告,还能定时推送。典型场景:用户连接WHOOP账号、查看今日/昨日健康数据、生成或推送每日/每周健康报告。输入为脚本命令及环境变量配置,输出为JSON数据或适配渠道的文本/Markdown。

gavinchengcool
gavinchengcool
热度 49.33
最近更新 2026-05-11 17:31:12
分类:数据依赖:代码执行 / 读写文件 / 第三方 API / MCP 服务应用场景:数据处理 / 报告撰写 / 自动化脚本 / 健康

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add openclaw-slug
Metadata
name
whoop
description
Connect to the WHOOP Developer Platform via official OAuth (authorization code flow), store and refresh tokens, and fetch WHOOP v2 data (recovery, sleep, cycle/strain, workout, profile, body measurements). Use when a user asks to connect/authorize WHOOP, pull WHOOP metrics, summarize today/yesterday, generate daily/weekly WHOOP reports, or send WHOOP updates to any OpenClaw chat channel (TUI/webchat/Slack/Discord/WhatsApp/Telegram/etc.).

WHOOP (official API)

Keep this skill WHOOP-only (data source). Do not hardcode any destination channel. Generate a clean text/markdown message and either reply in the current chat or use OpenClaw’s message tool to send it to a chosen target.

Configuration (required)

Provide these via environment variables (preferred) or direct CLI args to scripts:

  • WHOOP_CLIENT_ID
  • WHOOP_CLIENT_SECRET
  • WHOOP_REDIRECT_URI (must exactly match the value in the WHOOP developer dashboard)

Optional:

  • WHOOP_TOKEN_PATH (default: ~/.config/openclaw/whoop/token.json)
  • WHOOP_TZ (default: Asia/Shanghai)

Workflow 1 — Connect WHOOP (OAuth login)

  1. Run:
python3 scripts/whoop_oauth_login.py
  1. The script prints an authorization URL. Open it, log in, and approve.

  2. After redirect, either:

  • paste the full redirect URL into the prompt (recommended), or
  • paste the code.
  1. The script stores tokens at WHOOP_TOKEN_PATH.

If you need to revoke later, use delete /v2/user/access (see references/whoop_api.md).

Workflow 2 — Fetch metrics (today / yesterday)

Fetch raw WHOOP API objects:

python3 scripts/whoop_fetch.py --date today --out /tmp/whoop_raw_today.json
python3 scripts/whoop_fetch.py --date yesterday --out /tmp/whoop_raw_yday.json

Tip: `whoop_fetch.py` uses WHOOP’s `start`/`end` query params + `nextToken` pagination. Use `--tz` to control which local day is fetched (default from `WHOOP_TZ`).

Normalize into a stable schema:

python3 scripts/whoop_normalize.py /tmp/whoop_raw_today.json --out /tmp/whoop_today.json

Render a message for humans:

python3 scripts/whoop_render.py /tmp/whoop_today.json --format markdown --channel generic

Channel formatting presets:
- `--channel discord` (uses **bold**)
- `--channel slack` / `--channel whatsapp` (uses *bold*, avoids fancy markup)
- `--channel telegram` (plain text)

Then either:

  • reply with the rendered text in the current chat, or
  • send it to another channel via OpenClaw message(action=send, ...).

Workflow 3 — Daily/weekly push (cron)

If the user wants scheduled push messages, create an OpenClaw cron job that runs an isolated agent turn which:

  • calls scripts/whoop_fetch.py + scripts/whoop_normalize.py + scripts/whoop_render.py
  • sends the rendered message to the desired destination

Keep the cron job channel-agnostic: the destination should be a parameter in the cron payload text.

Notes on API details

  • For scopes, endpoints, and pagination/rate-limits, read: references/whoop_api.md.
  • For the normalized JSON schema contract, read: references/output_schemas.md.
  • If OAuth fails (redirect mismatch, invalid_scope, 401/429), read: references/troubleshooting.md.