health-data
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseApple 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.dbQuery Methods
查询方法
1. Python Script (Recommended for Common Queries)
1. Python脚本(推荐用于常规查询)
Use for pre-built queries with automatic formatting:
scripts/health_query.pybash
undefined使用进行预构建查询,支持自动格式化:
scripts/health_query.pybash
undefinedDaily 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 for table structures and query templates.
references/schema.mdbash
sqlite3 ~/data/health.db "SELECT AVG(value) FROM health_records WHERE record_type LIKE '%HeartRate%' AND start_date LIKE '2025-11%'"如需灵活查询,可直接对数据库运行SQL。查看获取表结构和查询模板。
references/schema.mdbash
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 dailyReturns: 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 4Returns: 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 14Returns: 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 vitalsReturns: 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 30Returns: 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 RunningReturns: 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 for code mappings.
references/fhir_mappings.md医疗互操作性格式。输出为包含Observation资源的FHIR Bundle,使用LOINC编码。查看获取编码映射关系。
references/fhir_mappings.mdASCII
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.mdHeart 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/目录
- - Main query tool with Markdown/JSON/FHIR output
health_query.py
- - 主查询工具,支持Markdown/JSON/FHIR输出
health_query.py
references/
references/目录
- - Database schema, record type mappings, SQL query templates
schema.md - - LOINC codes and FHIR R4 templates
fhir_mappings.md
- - 数据库结构、记录类型映射、SQL查询模板
schema.md - - LOINC编码及FHIR R4模板
fhir_mappings.md
Troubleshooting
故障排查
Database not found:
Ensure exists. Run the import script from :
~/data/health.db/Users/server/apple_health_export/bash
python import_health.py --statusNo 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