個人健康數據基礎設施
從 10 年 Apple Health 到 AI 驅動的交叉分析
十年前,我並沒有刻意開始一項健康計畫。只是把手機放在口袋裡,手錶戴在手上,日子就這樣過去。
直到最近,我第一次完整匯出 iPhone「健康」App 的所有資料。解壓縮後,是一個 1.3GB 的 XML 檔案。十年、超過 300 萬筆紀錄——步數、心率、睡眠、運動軌跡、自律神經指標。一段身體與時間共同書寫的歷史,橫跨了我的創業、轉型、離開舒適圈到重新開始。
那一刻我意識到:我們並不是沒有資料,而是沒有基礎設施。
為什麼需要自建分析系統?
主流穿戴裝置各有封閉生態與專利演算法,這造成兩個根本問題。
第一是數據孤島。 Apple Health 有它的判讀邏輯,Fitbit 有它的演算法。我同時佩戴兩種裝置,它們對同一晚的總睡眠時長高度一致(差距僅 2 分鐘),但對深層睡眠的判讀差了 21 分鐘,REM 差了 15 分鐘。該信誰?答案是:都不能全信,只能交叉比對看趨勢。
第二是維度缺失。 手機 App 專注於讓你看「今天」與「這週」,不擅長做跨越三五年的長趨勢分析,更無法將運動量下滑、HRV 惡化與睡眠債累積進行多維度的交叉比對。而這些指標之間的關聯,往往才是最重要的訊號。
要看見全貌,需要的不是另一台穿戴裝置,而是自己的分析基礎設施。
十年的數位足跡
從 2015 年 8 月起,iPhone 就持續記錄我的活動。2016 年 Apple Watch 加入後,心率與睡眠開始被更精細地量測。2023 年起,Fitbit 成為第二台穿戴裝置,提供另一套獨立的測量基線。
十年間的累積:步數紀錄 279,537 筆,步行與跑步距離 231,300 筆,心率紀錄超過 113 萬筆,睡眠紀錄 29,532 筆。運動方面,跑步 1,420 次、騎車 435 次、游泳 19 次,留下 966 條 GPS 運動軌跡。
2023 年 9 月起,Apple Watch 開始記錄更深層的指標——HRV(心率變異)7,710 筆、靜止心率 753 筆、血氧飽和度 9,837 筆、腕部體溫 439 筆、VO2Max 122 筆。這些才是穿戴裝置真正有價值的數據:不是步數,而是自律神經系統的運作狀態。
單看數字沒有情緒。但當年度分佈攤開來看,很多事就清楚了。
技術架構:三條資料管線
即時管線:Fitbit → MCP → Claude
透過 Anthropic 的 MCP(Model Context Protocol)協議,Fitbit API 直接接入 Claude Desktop。
運作方式: 我可以直接對 Claude 說「分析我最近一週的壓力負荷」,Claude 透過 MCP 呼叫 Fitbit API,取得睡眠(含各階段時長)、心率時序、活動摘要等原始 JSON,即時分析。拿到的是 API 回傳的原始數據,不是 App 已經翻譯過的摘要。
技術點: OAuth 2.0 驗證,Token 自動刷新。全程本機運行,資料不經過第三方伺服器。
深度管線:Apple Health → XML → 結構化分析
Apple 不提供個人用途的 Health API,唯一出口是從 iPhone 手動匯出。
處理流程: 用 Python 串流解析 1.3GB 的 XML(不試圖一次載入),先建立資料類型索引,再分類萃取各指標到獨立 JSON——睡眠、HRV、靜止心率、血氧等,最後建立日度與月度彙總。
解決痛點: Apple 的睡眠分 Core / Deep / REM 三階段,Fitbit 分 Light / Deep / REM。Apple 的 Core 大致對應 Fitbit 的 Light,但演算法判定標準不同。處理時只對齊趨勢方向,不比較絕對數值。
自動化管線:CI/CD 持續部署
Mac 上的 crontab 每 10 分鐘執行更新腳本,透過 Fitbit OAuth API 拉即時資料,git push 觸發 GitHub Actions 自動 build,Cloudflare Pages 部署。健康儀表板永遠保持最新狀態,從資料產生到網站更新,全程無人工介入。
這不是炫技。我不想偶爾看一次圖表。我希望它成為長期運作的基礎設施。
數據真正說的話
當十年的曲線疊合起來,數字比感覺更誠實。
運動量的消長:從日日三鐵到歸零
2018 年,我開始參加三鐵賽事,每年至少一場。同時加入「日日三鐵」——每天從游泳、騎車、跑步中選一項執行的自律社群。我最常選跑步,門檻最低,穿上鞋就能出門。
開始這件事有兩個原因。一個是私人的:做兒子的表率,讓他看到父親怎麼管理自己的身體和紀律。另一個是從創業經歷中學到的——健康是承載所有決策和執行力的硬體。幾乎所有我認識的優秀 CEO 都有規律的運動習慣,甚至樂於挑戰極限運動。那不是因為他們「有時間」,而是因為他們理解:身體的恢復週期不可被壓縮。
GPS 軌跡的年度分佈記錄了這段歷程:2021 年 93 條、2022 年 340 條、2023 年 294 條、2024 年 200 條、2025 年 39 條。2022 年幾乎每天都有運動紀錄,是日日三鐵執行最徹底的一年。
之後幾年,工作轉型、責任增加、生活結構改變。我並沒有意識到自己正在放棄恢復週期。當運動被擠出日程,數據顯示身體隨即開始「負債」。
睡眠債:連續 33 個月未達標
結合 Fitbit(2023/05-2026/02,883 晚)和 Apple Watch(2023/09-2025/12,537 晚)的紀錄:33 個月,沒有任何一個月的平均值達到建議的 7 小時。全期平均約 5 小時 50 分。
每天少一小時,三年就是超過一千小時的睡眠債。
趨勢更值得在意:2023-2024 年約 6 小時上下,2025 年降到 5 小時 41 分,Q2 觸底 5 小時 16 分。睡眠效率從 83% 滑落至 74%。不只是睡得少——躺得更久,但真正入睡的比例越來越低。身體在休息,神經系統還在運轉。
HRV 與靜止心率:最誠實的指標
HRV 從 2023 年的 42ms 下滑到 2025 年中的 31ms,降幅超過 25%。同時靜止心率從 60 bpm 上升到 72 bpm。兩條線同時指向同一件事:自律神經系統長期處於壓力狀態。
這不是情緒判斷,是生理訊號。而且這是 Apple Watch 獨有的資料——如果只看 Fitbit,永遠不會知道。這正是跨裝置交叉分析的價值:單一 App 不會主動跳出的警告,在多維度對照下無所遁形。
經驗教訓:資料管線的脆弱性
在這次分析中,我發現 2022 年後的體重數據完全中斷。原因非常平庸:智慧體重計壞了,而我一直沒有替換。
這是一個典型的數據教訓——硬體故障是個人數據基礎設施最大的威脅。 資料一旦斷裂,那段時間的身體變化就成了永遠的黑洞。不是不想記錄,而是斷了就沒有再接回來。
同樣的脆弱性也出現在 Apple Health 匯出上:這是一個需要手動觸發的流程,如果不定期匯出,最新的資料就只存在於 iPhone 裡,無法被外部分析。
認識到這種脆弱性,是建立可持續基礎設施的第一步。
裝置搭配的實務建議
26 個月的雙裝置重疊資料讓我得出一套原則:總睡眠時長以 Fitbit 為主(覆蓋率高,每月 25-31 晚),REM 睡眠參考 Apple Watch(加速度計對微動作偵測更精準),深層睡眠只看趨勢不看絕對值(兩裝置演算法差異最大的指標)。HRV、靜止心率、血氧是 Apple Watch 獨有的領先指標。
Fitbit 是日常追蹤的主力,Apple Watch 是深度健康評估的輔助。兩者互補,不是互相取代。
下一步:從觀察到介入
這套系統的下一階段不是增加圖表,而是三件事:AI 異常偵測(當 HRV 連續三天低於基線,Claude 主動發出介入建議)、生活型態標註(記錄介入行為的前後對照)、以及更多數據源整合(Oura Ring 體溫、智慧血壓計、體脂計——每多一條管線,交叉分析的維度就多一層)。
從「看數據」進化到「用數據驅動行為改變」——這才是個人健康基礎設施(Personal Health Infrastructure)的真正價值。
結語
十年的資料證明了兩件事。
第一,身體一直在發出訊號。HRV 下降、靜止心率上升、睡眠效率崩塌、運動量歸零——這些分散在不同裝置裡的訊號,在各自的 App 裡看起來都還「在範圍內」。是自建的分析基礎設施,讓它們匯聚成一個無法忽視的趨勢。
第二,我曾經做得到。1,420 次跑步、435 次騎車、每年一場三鐵——2022 年的 340 條 GPS 軌跡證明日日三鐵是可行的。衰退不是命運,而是結構。
健康不該只是「今天走了幾步」。它應該是一套可被驗證、可被修正、可被持續優化的個人系統。
十年的資料不是為了懷舊,而是提醒自己——趨勢一旦看清,就沒有再假裝看不見的理由。
本文的健康數據分析儀表板可在 paulkuo.tw/health 查看。
技術細節:Fitbit MCP 設定、Apple Health XML 解析流程、Chart.js 視覺化、CI/CD 自動化管線等,歡迎聯繫交流。
💬 留言討論
載入中...