Oura Ring Analytics
Oura Ring data integration and analytics. Fetch sleep scores, readiness, activity, HRV, and trends from the Oura Cloud API. Generate automated reports, correlations with productivity, and trigger-base
Oura Ring data integration and analytics. Fetch sleep scores, readiness, activity, HRV, and trends from the Oura Cloud API. Generate automated reports, correlations with productivity, and trigger-base
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
# Set Oura API token export OURA_API_TOKEN="your_personal_access_token"Fetch sleep data (last 7 days)
python {baseDir}/scripts/oura_api.py sleep --days 7
Get readiness summary
python {baseDir}/scripts/oura_api.py readiness --days 7
Generate weekly report
python {baseDir}/scripts/oura_api.py report --type weekly
Use this skill when:
export PYTHONPATH="{baseDir}/scripts" python - <<'PY' from oura_api import OuraClientclient = OuraClient(token="YOUR_TOKEN") sleep_data = client.get_sleep(start_date="2026-01-01", end_date="2026-01-16") readiness_data = client.get_readiness(start_date="2026-01-01", end_date="2026-01-16") print(len(sleep_data), len(readiness_data)) PY
export PYTHONPATH="{baseDir}/scripts" python - <<'PY' from oura_api import OuraClient, OuraAnalyzerclient = OuraClient(token="YOUR_TOKEN") sleep_data = client.get_sleep(start_date="2026-01-01", end_date="2026-01-16") readiness_data = client.get_readiness(start_date="2026-01-01", end_date="2026-01-16")
analyzer = OuraAnalyzer(sleep_data, readiness_data) avg_sleep = analyzer.average_metric(sleep_data, "score") avg_readiness = analyzer.average_metric(readiness_data, "score") trend = analyzer.trend(sleep_data, "average_hrv") print(avg_sleep, avg_readiness, trend) PY
python {baseDir}/scripts/alerts.py --days 7 --readiness 60 --efficiency 80
Required:
OURA_API_TOKENOptional (used for alerts/reports/timezone/output):
KESSLER_TELEGRAM_BOT_TOKEN (fallback to TELEGRAM_BOT_TOKEN)TELEGRAM_CHAT_IDUSER_TIMEZONEOURA_OUTPUT_DIRscripts/oura_api.py - Oura Cloud API wrapper with OuraAnalyzer and OuraReporter classesscripts/alerts.py - Threshold-based notifications (CLI: python {baseDir}/scripts/alerts.py --days 7 --readiness 60)scripts/weekly_report.py - Weekly report generatorreferences/api.md - Oura Cloud API documentationreferences/metrics.md - Metric definitions and interpretationsCron jobs are configured in OpenClaw's gateway, not in this repo. Add these to your OpenClaw setup:
openclaw cron add \ --name "Daily Oura Health Report (Hybrid)" \ --cron "0 8 * * *" \ --tz "America/Los_Angeles" \ --session isolated \ --wake next-heartbeat \ --deliver \ --channel telegram \ --target "<YOUR_TELEGRAM_CHAT_ID>" \ --message "Run the daily Oura health report with hybrid format: Execute bash /path/to/your/scripts/daily-oura-report-hybrid.sh"
openclaw cron add \ --name "Weekly Oura Sleep Report" \ --cron "0 8 * * 0" \ --tz "America/Los_Angeles" \ --session isolated \ --wake next-heartbeat \ --deliver \ --channel telegram \ --target "<YOUR_TELEGRAM_CHAT_ID>" \ --message "Run weekly Oura sleep report: bash /path/to/your/oura-weekly-sleep-alert.sh"
openclaw cron add \ --name "Daily Obsidian Note" \ --cron "15 8 * * *" \ --tz "America/Los_Angeles" \ --session isolated \ --wake next-heartbeat \ --message "Create daily Obsidian note with Oura data. Run: source /path/to/venv/bin/activate && python /path/to/daily-note.py"
Note: Replace
/path/to/your/ with your actual paths 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.