health-data

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Apple Health Data Query Skill

Apple Health数据查询技能

Query and analyze health data from the local SQLite database containing 6.3M+ records across 43 health metrics.
查询并分析本地SQLite数据库中的健康数据,该数据库包含43项健康指标的630万+条记录。

Database Location

数据库位置

~/data/health.db
~/data/health.db

Query Methods

查询方法

1. Python Script (Recommended for Common Queries)

1. Python脚本(推荐用于常规查询)

Use
scripts/health_query.py
for pre-built queries with automatic formatting:
bash
undefined
使用
scripts/health_query.py
进行预构建查询,支持自动格式化:
bash
undefined

Daily summary

每日摘要

python ~/.claude/skills/health-data/scripts/health_query.py --format markdown daily --date 2025-11-29
python ~/.claude/skills/health-data/scripts/health_query.py --format markdown daily --date 2025-11-29

Weekly trends

周趋势

python ~/.claude/skills/health-data/scripts/health_query.py --format json weekly --weeks 4
python ~/.claude/skills/health-data/scripts/health_query.py --format json weekly --weeks 4

Sleep analysis

睡眠分析

python ~/.claude/skills/health-data/scripts/health_query.py --format fhir sleep --days 7
python ~/.claude/skills/health-data/scripts/health_query.py --format fhir sleep --days 7

Latest vitals

最新生命体征

python ~/.claude/skills/health-data/scripts/health_query.py vitals
python ~/.claude/skills/health-data/scripts/health_query.py vitals

Activity rings

活动圆环

python ~/.claude/skills/health-data/scripts/health_query.py --format json activity --days 30
python ~/.claude/skills/health-data/scripts/health_query.py --format json activity --days 30

Workout history

锻炼历史

python ~/.claude/skills/health-data/scripts/health_query.py workouts --days 30 --type Running
python ~/.claude/skills/health-data/scripts/health_query.py workouts --days 30 --type Running

Custom SQL

自定义SQL

python ~/.claude/skills/health-data/scripts/health_query.py --format json query "SELECT * FROM workouts LIMIT 5"

**Output formats:** `markdown`, `json`, `fhir`, `ascii`
python ~/.claude/skills/health-data/scripts/health_query.py --format json query "SELECT * FROM workouts LIMIT 5"

**输出格式:** `markdown`, `json`, `fhir`, `ascii`

2. Direct SQL (For Custom/Ad-hoc Queries)

2. 直接SQL查询(用于自定义/临时查询)

For flexible queries, run SQL directly against the database. See
references/schema.md
for table structures and query templates.
bash
sqlite3 ~/data/health.db "SELECT AVG(value) FROM health_records WHERE record_type LIKE '%HeartRate%' AND start_date LIKE '2025-11%'"
如需灵活查询,可直接对数据库运行SQL。查看
references/schema.md
获取表结构和查询模板。
bash
sqlite3 ~/data/health.db "SELECT AVG(value) FROM health_records WHERE record_type LIKE '%HeartRate%' AND start_date LIKE '2025-11%'"

Pre-built Queries

预构建查询

Daily Health Summary

每日健康摘要

Get today's key metrics:
bash
python ~/.claude/skills/health-data/scripts/health_query.py daily
Returns: steps, calories, heart rate (avg/min/max), exercise minutes, distance, activity ring status.
获取当日关键指标:
bash
python ~/.claude/skills/health-data/scripts/health_query.py daily
返回数据:步数、卡路里、心率(平均/最低/最高)、运动分钟数、距离、活动圆环状态。

Weekly Trends

周趋势对比

Compare week-over-week performance:
bash
python ~/.claude/skills/health-data/scripts/health_query.py weekly --weeks 4
Returns: average daily steps, resting HR, exercise minutes, workout count per week.
对比周度表现:
bash
python ~/.claude/skills/health-data/scripts/health_query.py weekly --weeks 4
返回数据:日均步数、静息心率、运动分钟数、每周锻炼次数。

Sleep Analysis

睡眠分析

Analyze sleep patterns:
bash
python ~/.claude/skills/health-data/scripts/health_query.py sleep --days 14
Returns: nightly duration, sleep stages (Core, Deep, REM), average sleep hours.
分析睡眠模式:
bash
python ~/.claude/skills/health-data/scripts/health_query.py sleep --days 14
返回数据:夜间睡眠时长、睡眠阶段(核心睡眠、深度睡眠、快速眼动睡眠)、平均睡眠小时数。

Latest Vitals

最新生命体征

Get most recent vital readings:
bash
python ~/.claude/skills/health-data/scripts/health_query.py vitals
Returns: Heart Rate, HRV, Resting HR, Blood Oxygen, Respiratory Rate with timestamps.
获取最新的生命体征读数:
bash
python ~/.claude/skills/health-data/scripts/health_query.py vitals
返回数据:心率、心率变异性(HRV)、静息心率、血氧饱和度、呼吸频率及对应时间戳。

Activity Rings

活动圆环追踪

Track ring completion:
bash
python ~/.claude/skills/health-data/scripts/health_query.py activity --days 30
Returns: daily ring values/goals, completion percentages, perfect day count.
追踪圆环完成情况:
bash
python ~/.claude/skills/health-data/scripts/health_query.py activity --days 30
返回数据:每日圆环数值/目标、完成百分比、完美天数统计。

Workout History

锻炼历史回顾

Review exercise sessions:
bash
python ~/.claude/skills/health-data/scripts/health_query.py workouts --days 30 --type Running
Returns: workout type, duration, distance, calories, summary by type.
查看锻炼记录:
bash
python ~/.claude/skills/health-data/scripts/health_query.py workouts --days 30 --type Running
返回数据:锻炼类型、时长、距离、卡路里消耗、按类型汇总的统计。

Output Formats

输出格式

Markdown (default)

Markdown(默认)

Human-readable tables and lists. Best for reports and summaries.
易读的表格和列表格式,最适合生成报告和摘要。

JSON

JSON

Structured data for programmatic use:
json
{
  "date": "2025-11-29",
  "metrics": {
    "steps": 8542,
    "active_calories": 450.5,
    "heart_rate": {"avg": 72.3, "min": 52, "max": 145}
  }
}
结构化数据,适用于程序调用:
json
{
  "date": "2025-11-29",
  "metrics": {
    "steps": 8542,
    "active_calories": 450.5,
    "heart_rate": {"avg": 72.3, "min": 52, "max": 145}
  }
}

FHIR R4

FHIR R4

Healthcare interoperability format. Outputs as FHIR Bundle with Observation resources using LOINC codes. See
references/fhir_mappings.md
for code mappings.
医疗互操作性格式。输出为包含Observation资源的FHIR Bundle,使用LOINC编码。查看
references/fhir_mappings.md
获取编码映射关系。

ASCII

ASCII

Terminal-friendly output with bar charts and statistics:
============================================================
  DAILY SUMMARY - 2025-11-29
============================================================

METRICS
----------------------------------------
  steps                      2620
  active_calories           234.5
  heart_rate           avg:  67.5  min:  52  max: 108

ACTIVITY RINGS
----------------------------------------
  move       [███████░░░░░░░░░░░░░]  36.7% (238/650)
  exercise   [░░░░░░░░░░░░░░░░░░░░]   0.0% (0/35)
  stand      [████████████████████] 100.0% (10/10)
终端友好的输出格式,包含柱状图和统计数据:
============================================================
  DAILY SUMMARY - 2025-11-29
============================================================

METRICS
----------------------------------------
  steps                      2620
  active_calories           234.5
  heart_rate           avg:  67.5  min:  52  max: 108

ACTIVITY RINGS
----------------------------------------
  move       [███████░░░░░░░░░░░░░]  36.7% (238/650)
  exercise   [░░░░░░░░░░░░░░░░░░░░]   0.0% (0/35)
  stand      [████████████████████] 100.0% (10/10)

Common SQL Patterns

常见SQL查询模式

For ad-hoc queries, use these patterns from
references/schema.md
:
Heart rate by hour (circadian pattern):
sql
SELECT strftime('%H', start_date) as hour, ROUND(AVG(value), 1) as avg_hr
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierHeartRate'
AND value BETWEEN 40 AND 200
GROUP BY hour ORDER BY hour;
Steps per day this month:
sql
SELECT DATE(start_date) as day, SUM(value) as steps
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierStepCount'
AND start_date >= DATE('now', 'start of month')
GROUP BY day ORDER BY day;
Sleep quality (deep + REM hours):
sql
SELECT DATE(start_date) as night,
       ROUND(SUM(duration_minutes)/60.0, 1) as quality_hours
FROM sleep_sessions
WHERE sleep_stage IN ('Deep', 'REM')
GROUP BY night ORDER BY night DESC LIMIT 14;
Workout summary:
sql
SELECT REPLACE(workout_type, 'HKWorkoutActivityType', '') as type,
       COUNT(*) as count, ROUND(SUM(duration_minutes)) as total_min
FROM workouts
WHERE start_date >= DATE('now', '-30 days')
GROUP BY type ORDER BY count DESC;
如需临时查询,可使用
references/schema.md
中的以下模式:
按小时统计心率(昼夜节律模式):
sql
SELECT strftime('%H', start_date) as hour, ROUND(AVG(value), 1) as avg_hr
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierHeartRate'
AND value BETWEEN 40 AND 200
GROUP BY hour ORDER BY hour;
本月每日步数统计:
sql
SELECT DATE(start_date) as day, SUM(value) as steps
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierStepCount'
AND start_date >= DATE('now', 'start of month')
GROUP BY day ORDER BY day;
睡眠质量(深度+快速眼动睡眠时长):
sql
SELECT DATE(start_date) as night,
       ROUND(SUM(duration_minutes)/60.0, 1) as quality_hours
FROM sleep_sessions
WHERE sleep_stage IN ('Deep', 'REM')
GROUP BY night ORDER BY night DESC LIMIT 14;
锻炼汇总:
sql
SELECT REPLACE(workout_type, 'HKWorkoutActivityType', '') as type,
       COUNT(*) as count, ROUND(SUM(duration_minutes)) as total_min
FROM workouts
WHERE start_date >= DATE('now', '-30 days')
GROUP BY type ORDER BY count DESC;

Record Types Available

可用记录类型

The database contains 43 health metric types including:
Vitals: Heart Rate, HRV, Resting HR, Blood Oxygen, Respiratory Rate, Blood Pressure
Activity: Steps, Distance, Active Calories, Basal Calories, Flights Climbed, Exercise Time, Stand Time
Mobility: Walking Speed, Step Length, Walking Asymmetry, Stair Speed, Walking Steadiness
Body: Weight, BMI, Body Fat %
Audio: Environmental Noise, Headphone Exposure
Other: VO2 Max, Time in Daylight, UV Exposure
数据库包含43项健康指标类型,包括:
生命体征: 心率、心率变异性(HRV)、静息心率、血氧饱和度、呼吸频率、血压
活动数据: 步数、距离、活动卡路里、基础卡路里、爬楼数、运动时长、站立时长
移动能力: 步行速度、步长、步行不对称性、爬楼速度、步行稳定性
身体指标: 体重、BMI、体脂率
音频相关: 环境噪音、耳机暴露时长
其他指标: 最大摄氧量(VO2 Max)、日光暴露时长、紫外线暴露量

Data Coverage

数据覆盖范围

  • Records: 6.3M+ measurements
  • Date range: 2015-10-13 to present
  • Workouts: 1,435 sessions
  • Sleep sessions: 40,514 records
  • Activity days: 1,875 daily summaries
  • 记录数: 630万+条测量数据
  • 时间范围: 2015-10-13至今
  • 锻炼记录: 1435次会话
  • 睡眠记录: 40514条会话记录
  • 活动日汇总: 1875条每日摘要

Resources

资源文件

scripts/

scripts/目录

  • health_query.py
    - Main query tool with Markdown/JSON/FHIR output
  • health_query.py
    - 主查询工具,支持Markdown/JSON/FHIR输出

references/

references/目录

  • schema.md
    - Database schema, record type mappings, SQL query templates
  • fhir_mappings.md
    - LOINC codes and FHIR R4 templates
  • schema.md
    - 数据库结构、记录类型映射、SQL查询模板
  • fhir_mappings.md
    - LOINC编码及FHIR R4模板

Troubleshooting

故障排查

Database not found: Ensure
~/data/health.db
exists. Run the import script from
/Users/server/apple_health_export/
:
bash
python import_health.py --status
No data for date range: Check available date range:
sql
SELECT MIN(start_date), MAX(start_date) FROM health_records;
Outlier values: Filter physiologically valid ranges (e.g., heart rate 40-200 bpm):
sql
WHERE value BETWEEN 40 AND 200
数据库未找到: 确保
~/data/health.db
存在。运行
/Users/server/apple_health_export/
目录下的导入脚本:
bash
python import_health.py --status
指定时间范围无数据: 检查可用时间范围:
sql
SELECT MIN(start_date), MAX(start_date) FROM health_records;
异常值处理: 过滤生理上合理的数值范围(例如:心率40-200次/分钟):
sql
WHERE value BETWEEN 40 AND 200