# oura-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-based alerts for low recovery days. Requires OURA_API_TOKEN (get at cloud.ouraring.com). - Author: 0xturboblitz - Repository: sundial-org/awesome-openclaw-skills - Version: 20260201003509 - Stars: 38 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/sundial-org/awesome-openclaw-skills - Web: https://mule.run/skillshub/@@sundial-org/awesome-openclaw-skills~oura-analytics:20260201003509 --- --- name: oura-analytics description: 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-based alerts for low recovery days. Requires OURA_API_TOKEN (get at cloud.ouraring.com). metadata: {"openclaw":{"requires":{"bins":["python3"],"env":["OURA_API_TOKEN"]},"homepage":"https://github.com/kesslerio/oura-analytics-openclaw-skill"}} --- # Oura Analytics ## Quick Start ```bash # 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 ``` ## When to Use Use this skill when: - Fetching Oura Ring metrics (sleep, readiness, activity, HRV) - Analyzing recovery trends over time - Correlating sleep quality with productivity/events - Setting up automated alerts for low readiness - Generating daily/weekly/monthly health reports ## Core Workflows ### 1. Data Fetching ```bash export PYTHONPATH="{baseDir}/scripts" python - <<'PY' from oura_api import OuraClient client = 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 ``` ### 2. Trend Analysis ```bash export PYTHONPATH="{baseDir}/scripts" python - <<'PY' from oura_api import OuraClient, OuraAnalyzer client = 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 ``` ### 3. Alerts ```bash python {baseDir}/scripts/alerts.py --days 7 --readiness 60 --efficiency 80 ``` ## Environment Required: - `OURA_API_TOKEN` Optional (used for alerts/reports/timezone/output): - `KESSLER_TELEGRAM_BOT_TOKEN` (fallback to `TELEGRAM_BOT_TOKEN`) - `TELEGRAM_CHAT_ID` - `USER_TIMEZONE` - `OURA_OUTPUT_DIR` ## Scripts - `scripts/oura_api.py` - Oura Cloud API wrapper with OuraAnalyzer and OuraReporter classes - `scripts/alerts.py` - Threshold-based notifications (CLI: `python {baseDir}/scripts/alerts.py --days 7 --readiness 60`) - `scripts/weekly_report.py` - Weekly report generator ## References - `references/api.md` - Oura Cloud API documentation - `references/metrics.md` - Metric definitions and interpretations ## Automation (Cron Jobs) Cron jobs are configured in OpenClaw's gateway, not in this repo. Add these to your OpenClaw setup: ### Daily Morning Briefing (8:00 AM) ```bash 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 "" \ --message "Run the daily Oura health report with hybrid format: Execute bash /path/to/your/scripts/daily-oura-report-hybrid.sh" ``` ### Weekly Sleep Report (Sunday 8:00 AM) ```bash 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 "" \ --message "Run weekly Oura sleep report: bash /path/to/your/oura-weekly-sleep-alert.sh" ``` ### Daily Obsidian Note (8:15 AM) ```bash 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 `` with your Telegram channel/group ID.