Fitbit Analytics
Fitbit health and fitness data integration. Fetch steps, heart rate, sleep, activity, calories, and trends from Fitbit Web API. Generate automated health reports and alerts. Requires FITBIT_CLIENT_ID,
Fitbit health and fitness data integration. Fetch steps, heart rate, sleep, activity, calories, and trends from Fitbit Web API. Generate automated health reports and alerts. Requires FITBIT_CLIENT_ID,
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
# Set Fitbit API credentials export FITBIT_CLIENT_ID="your_client_id" export FITBIT_CLIENT_SECRET="your_client_secret" export FITBIT_ACCESS_TOKEN="your_access_token" export FITBIT_REFRESH_TOKEN="your_refresh_token"Generate morning briefing with Active Zone Minutes
python scripts/fitbit_briefing.py
Fetch daily steps
python scripts/fitbit_api.py steps --days 7
Get heart rate data
python scripts/fitbit_api.py heartrate --days 7
Sleep summary
python scripts/fitbit_api.py sleep --days 7
Generate weekly health report
python scripts/fitbit_api.py report --type weekly
Get activity summary
python scripts/fitbit_api.py summary --days 7
Use this skill when:
# Generate morning health briefing (includes Active Zone Minutes) python scripts/fitbit_briefing.py # Today's briefing python scripts/fitbit_briefing.py --date 2026-01-20 # Specific date python scripts/fitbit_briefing.py --format brief # 3-line summary python scripts/fitbit_briefing.py --format json # JSON outputExample output includes:
- Yesterday's activities (logged exercises)
- Yesterday's Active Zone Minutes (total, Fat Burn, Cardio, Peak)
- Today's activity summary (steps, calories, floors, distance)
- Heart rate (resting, average, zones)
- Sleep (duration, efficiency, awake episodes)
- Trends vs 7-day average
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, "yesterday_activities": [ {"name": "Run", "duration": 35, "calories": 320} ], "yesterday_azm": { "activeZoneMinutes": 61, "fatBurnActiveZoneMinutes": 39, "cardioActiveZoneMinutes": 22 } }
Note: Cardio Load is NOT available via Fitbit API - it's a Fitbit Premium feature only visible in the mobile app.
# Available commands: python scripts/fitbit_api.py steps --days 7 python scripts/fitbit_api.py calories --days 7 python scripts/fitbit_api.py heartrate --days 7 python scripts/fitbit_api.py sleep --days 7 python scripts/fitbit_api.py summary --days 7 python scripts/fitbit_api.py report --type weekly
export PYTHONPATH="{baseDir}/scripts" python - <<'PY' from fitbit_api import FitbitClientclient = FitbitClient() # Uses env vars for credentials
Fetch data (requires start_date and end_date)
steps_data = client.get_steps(start_date="2026-01-01", end_date="2026-01-16") hr_data = client.get_heartrate(start_date="2026-01-01", end_date="2026-01-16") sleep_data = client.get_sleep(start_date="2026-01-01", end_date="2026-01-16") activity_summary = client.get_activity_summary(start_date="2026-01-01", end_date="2026-01-16") PY
export PYTHONPATH="{baseDir}/scripts" python - <<'PY' from fitbit_api import FitbitAnalyzeranalyzer = FitbitAnalyzer(steps_data, hr_data) summary = analyzer.summary() print(summary) # Returns: avg_steps, avg_resting_hr, step_trend PY
python {baseDir}/scripts/alerts.py --days 7 --steps 8000 --sleep 7
scripts/fitbit_api.py - Fitbit Web API wrapper, CLI, and analysisscripts/fitbit_briefing.py - Morning briefing CLI (text/brief/json output)scripts/alerts.py - Threshold-based notifications| Method | Description |
|---|---|
| Daily step counts |
| Daily calories burned |
| Daily distance |
| Activity summary |
| Heart rate data |
| Sleep data |
| Detailed sleep stages |
| Blood oxygen levels |
| Weight measurements |
| Active Zone Minutes (AZM) breakdown |
references/api.md - Fitbit Web API documentationreferences/metrics.md - Metric definitions and interpretationsFitbit API requires OAuth 2.0 authentication:
Required:
FITBIT_CLIENT_IDFITBIT_CLIENT_SECRETFITBIT_ACCESS_TOKENFITBIT_REFRESH_TOKENCron jobs are configured in OpenClaw's gateway, not in this repo. Add these to your OpenClaw setup:
openclaw cron add \ --name "Morning Fitbit Health Report" \ --cron "0 8 * * *" \ --tz "America/Los_Angeles" \ --session isolated \ --wake next-heartbeat \ --deliver \ --channel telegram \ --target "<YOUR_TELEGRAM_CHAT_ID>" \ --message "python3 /path/to/your/scripts/fitbit_briefing.py --format text"
Note: Replace
/path/to/your/ with your actual path and <YOUR_TELEGRAM_CHAT_ID> with your Telegram channel/group ID.No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.