Install
openclaw skills install whoop-openclaw-skillFetch and analyze Whoop recovery, strain, sleep, and HRV data via the Whoop API. Use when the user asks about their Whoop metrics, recovery status, sleep quality, daily strain, HRV trends, workout data, or wants health/training insights based on Whoop data. Also use for daily morning briefings, weekly analysis, trend tracking, or real-time health alerts.
openclaw skills install whoop-openclaw-skillInteract with the Whoop API to fetch and analyze recovery, strain, sleep, HRV, and workout data.
Prerequisites:
requests library: pip install requestsStep 1: Create Whoop Developer App
Privacy Policy & Redirect URI Options:
Option A - Quick GitHub Pages Setup:
whoop-oauth)references/oauth-pages/https://yourusername.github.io/whoop-oauth/privacy.htmlhttps://yourusername.github.io/whoop-oauth/redirect.htmlOption B - Use your own domain:
Option C - Local testing only:
http://localhost/privacy.html (Whoop may not accept this)http://localhost:8080/callbackStep 2: Complete OAuth Flow
Create whoop-config.json with your app credentials:
{
"client_id": "your-client-id-here",
"client_secret": "your-client-secret-here",
"redirect_uri": "https://yourusername.github.io/whoop-oauth/redirect.html"
}
Generate authorization URL and authorize:
python3 scripts/whoop_oauth.py --config whoop-config.json
Click the authorization URL, log in to Whoop, and authorize
Copy the authorization code from the redirect page
Exchange code for access token:
python3 scripts/whoop_oauth.py --config whoop-config.json exchange <CODE>
Token is automatically saved to ~/.whoop_token
Step 3: Test Connection
python3 scripts/whoop_client.py --action profile
You should see your Whoop profile information!
Today's summary (recovery + sleep + strain):
python3 scripts/whoop_client.py --action today
Specific metrics:
# Recovery data (last 7 days)
python3 scripts/whoop_client.py --action recovery --days 7
# Sleep data
python3 scripts/whoop_client.py --action sleep --days 7
# Cycle data (strain, HRV, calories)
python3 scripts/whoop_client.py --action cycle --days 7
# Workout history
python3 scripts/whoop_client.py --action workout --days 10
Get raw JSON (for parsing/analysis):
python3 scripts/whoop_client.py --action today --json
Fetch today's data:
python3 scripts/whoop_client.py --action today --json
Analyze and provide insights:
Example briefing:
"🔋 Recovery: 85% (Green) - Your body is well-recovered!
📊 HRV: 68ms (up 8% from baseline) ❤️ RHR: 52 bpm (stable)
😴 Sleep: 8.2 hours, 92% performance
💪 Ready for a high-strain day. Go crush that workout!"
Fetch week of data:
python3 scripts/whoop_client.py --action recovery --days 7 --json
python3 scripts/whoop_client.py --action sleep --days 7 --json
python3 scripts/whoop_client.py --action cycle --days 7 --json
Identify trends:
Provide recommendations:
Monitor for warning signs:
For detailed metric interpretation and optimal ranges, see references/whoop-api.md.
Key principles:
"Privacy Policy URL must be HTTPS":
localhost) won't work for production apps"Redirect URI mismatch":
https://example.com/redirect.html ≠ https://example.com/redirect.html/OAuth code expired:
401 Unauthorized:
~/.whoop_token file exists and contains valid token404 Not Found (for sleep/cycle endpoints):
No data returned:
Rate limit errors:
next_token) for large data fetchesMissing metrics:
Unexpected values:
--action profile (simplest endpoint)