fitbit-analytics
✓Verified·Scanned 2/18/2026
This skill integrates with Fitbit to fetch steps, heart rate, sleep, and generate reports and alerts. It reads/writes ~/.config/systemd/user/secrets.conf, persists tokens to ~/.fitbit-analytics/tokens.json, uses env vars FITBIT_CLIENT_ID, FITBIT_CLIENT_SECRET, FITBIT_ACCESS_TOKEN, FITBIT_REFRESH_TOKEN, and calls https://api.fitbit.com.
from clawhub.ai·vd52d2c0·56.3 KB·0 installs
Scanned from 1.0.0 at d52d2c0 · Transparency log ↗
$ vett add clawhub.ai/kesslerio/fitbit-analytics
Fitbit Analytics Skill for OpenClaw 🦞
Fitbit health and fitness data integration for OpenClaw. Fetch steps, heart rate, sleep, activity, calories, and trends from Fitbit Web API. Generate automated health reports, correlations, and alerts.
Features
- Activity Tracking: Fetch daily steps, distance, calories, and active minutes.
- Heart Rate: Access continuous heart rate data and resting heart rate trends.
- Sleep Analytics: Analyze sleep stages (Deep, Light, REM, Wake) and efficiency.
- Reports: Generate daily/weekly health reports with trend analysis.
- Automation: Scripts ready for cron jobs (e.g., daily summaries).
Setup
1. Create a Fitbit Developer App
- Go to dev.fitbit.com/apps and log in.
- Click "Register an App".
- Fill in the details:
- Application Name:
Personal Assistant(or your choice) - Description:
Personal AI analytics. - OAuth 2.0 Application Type:
Personal - Redirect URL:
http://localhost:8080/ - Default Access Type:
Read & Write
- Application Name:
- Save and note your Client ID and Client Secret.
2. Configure Credentials
Add keys to your secrets.conf or environment variables:
export FITBIT_CLIENT_ID="YOUR_CLIENT_ID"
export FITBIT_CLIENT_SECRET="YOUR_CLIENT_SECRET"
3. Authorization Flow
- Construct the URL:
https://www.fitbit.com/oauth2/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=activity%20heartrate%20location%20nutrition%20profile%20settings%20sleep%20social%20weight&expires_in=604800 - Authorize in browser.
- Copy the
codefrom the redirect URL (http://localhost:8080/?code=...). - Exchange code for tokens:
curl -X POST https://api.fitbit.com/oauth2/token \ -u "CLIENT_ID:CLIENT_SECRET" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code" \ -d "code=YOUR_CODE" \ -d "redirect_uri=http://localhost:8080/" - Save
access_tokenandrefresh_tokentoFITBIT_ACCESS_TOKENandFITBIT_REFRESH_TOKEN.
Usage
Note: For Python imports, set
PYTHONPATHto thescripts/folder:export PYTHONPATH="$(pwd)/scripts"
Fetch Daily Stats
# Get steps for today
python scripts/fitbit_api.py steps --days 1
# Get sleep data
python scripts/fitbit_api.py sleep --days 1
Generate Weekly Report
python scripts/fitbit_api.py report --type weekly
Daily Morning Briefing
# Text format (for Telegram)
python scripts/fitbit_briefing.py --format text
# Brief format (3-line summary)
python scripts/fitbit_briefing.py --format brief
# JSON format (for programmatic use)
python scripts/fitbit_briefing.py --format json
Example brief output:
📊 8,543 steps • 2,340 cal
❤️ Resting HR: 58 • 💤 7.2h sleep
🏃 Moderate • ↑ 12% vs avg
Example JSON output:
{
"date": "2026-01-21",
"steps_today": 8543,
"calories_today": 2340,
"distance_today": 6.8,
"floors_today": 12,
"active_minutes": 47,
"resting_hr": 58,
"avg_hr": 72,
"sleep_hours": 7.2,
"sleep_efficiency": 89,
"awake_minutes": 12,
"activity_level": "Moderate",
"steps_trend": 12,
"yesterday_azm": {
"activeZoneMinutes": 61,
"fatBurnActiveZoneMinutes": 39,
"cardioActiveZoneMinutes": 22
}
}
Structure
scripts/fitbit_api.py: Main API wrapper and CLI tool.scripts/fitbit_briefing.py: Morning briefing CLI (text/brief/json output).scripts/alerts.py: Threshold-based notifications.references/: API and metrics documentation.docs/: Privacy Policy and Terms of Service.
License
Apache 2.0