Marrow Health
繁
下載

自動化操作:依排程推送你的資料

Marrow 可以依你選的頻率,由手機直接把一份健康資料檔 POST 到你指定的任何網址。這個頁面是參考資料:如何設定、每種資料內容長什麼樣子,以及如何寫一個接收它的程式。

n8n、Zapier、Make、Home Assistant、Google Sheets 和 InfluxDB 的現成設定,在連線底下.

所有 Marrow 指南: MCP · 自架鏡像 · 自動化操作 · 檔案 · 支援

什麼是自動化操作

匯出、自動化裡的一項已儲存工作:一種資料、一種格式、一個日期範圍、一個網址、一種頻率。Marrow 從它驗證過的資料庫建立檔案,在 App 關閉時 POST 到該網址,時機是每次同步提交之後,以及每次背景更新時,只要頻率設定的時間已過。沒有任何東西經過我們:手機直接對你的端點傳送。

設定方式

  1. 「匯出」分頁,自動化:開啟它,再點新增自動化操作。如果是從某個工具的頁面建立的(連線底下的 n8n、Zapier、Home Assistant 等),這個自動化操作會帶有該工具的名稱,並在每個欄位旁說明該工具要填什麼。
  2. 網址:要 POST 到的 https 網址。標頭:接收端需要的任何標頭(Authorization bearer token、X-Gitlab-Token,什麼都可以)。如果工具不需要任何標頭,「新增標題」在「更多選項」底下。
  3. 資料:健康指標、體能訓練、重訓記錄、營養日記,或症狀與心情,格式為 JSON 或 CSV。一個自動化操作只送一種資料,所以想要幾種就各建一個。每個開啟中的自動化操作都算一個連線:免費方案同一時間可開 1 個連線,Marrow Pro 最多 10 個,AI 和伺服器也包含在內。
  4. 頻率:每隔幾分鐘、幾小時或幾天。日期範圍、彙總方式和逾時設定都在更多選項底下.
  5. 立即執行會送出第一筆資料,讓你在等排程之前,先確認接收端沒問題。

日期範圍

資料內容的格式

健康指標(每日總計,JSON)

結構和 Health Auto Export 的指標相同(一個 metrics 清單,內含 name、units 和帶有 qty 的 data),所以為那個 App 寫的接收端只需要小幅修改:這裡的日期是單純的日子,不是時間戳記,而且下面的體能訓練和重訓資料內容是 Marrow 自己的格式。數值採用 units 中寫明的儲存單位(kg、m、mL、degC、kcal、count)。心率以每天的 Avg、Min 和 Max 表示,單位是 bpm,睡眠則是每個夜晚及其各階段,以小時計。如果你要英制單位,請在你那邊自行轉換。

{"data": {"metrics": [
  {"name": "body_mass", "units": "kg",
   "data": [{"date": "2026-09-11", "qty": 81.3}]},
  {"name": "step_count", "units": "count",
   "data": [{"date": "2026-09-11", "qty": 8746}]},
  {"name": "heart_rate", "units": "bpm",
   "data": [{"date": "2026-09-11", "Avg": 71, "Min": 52, "Max": 148}]},
  {"name": "sleep_analysis", "units": "h",
   "data": [{"date": "2026-09-11", "totalSleep": 7.2, "asleep": 7.2, "deep": 1.1, "rem": 1.6, "core": 4.3, "awake": 0.2,
             "sleepStart": "2026-09-10 23:36:00 -0400", "sleepEnd": "2026-09-11 07:02:00 -0400"}]}
]}}

原始樣本(原始樣本分組)會送出每一筆樣本及其開始和結束時間,而不是每日總計。CSV 指標是檔案頁面中說明的寬表格.

體能訓練

{"data": {"workouts": [
  {"activity": "Running", "start": "2026-09-11T18:43:41Z", "end": "2026-09-11T19:13:53Z",
   "duration_min": 30.2, "kcal": 512, "distance_mi": 3.06, "avg_hr": 174, "source": "Apple Watch"}
]}}

重訓記錄

每一組正式組(不含熱身組),再加上各動作的進步情況和各肌群的訓練量。重量採用你在設定、單位中選的單位,unit 欄位會寫明是哪一種。每組的 set_type 是 work、failure 或 drop,如果你記錄了保留次數,該組也會帶有 rir。set_credits 計算記入某個肌群的組數,如果一個動作練到多個肌群,就會以分數計算。

{"data": {"unit": "lb",
  "sets": [{"time": "2026-09-11T17:02:00Z", "session": "Push day", "exercise": "Bench Press",
            "set": 1, "weight": 185, "reps": 8, "est_1rm": 229.6, "set_type": "work"}],
  "exercises": [{"exercise": "Bench Press", "best_est_1rm": 229.6,
                 "sessions": [{"date": "2026-09-11T17:02:00Z", "sets": 3, "top_weight": 185, "top_reps": 8, "est_1rm": 229.6, "volume": 3885}]}],
  "muscle_groups": [{"group": "Chest", "volume": 3108.0, "set_credits": 2.4}]
}}

營養日記

{"data": {"days": [
  {"day": "2026-09-11", "entries": [
    {"meal": "breakfast", "name": "Oatmeal", "grams": 250, "kcal": 300,
     "protein_g": 10, "carbs_g": 54, "fat_g": 5, "logged_at": "2026-09-11T12:10:00Z",
     "nutrients": {"dietary_fiber": 8.0, "dietary_sugar": 1.2}}
  ]}
]}}

寫一個接收端

任何接受 HTTPS POST 並回應 2xx 的東西都行:webhook 服務、無伺服器函式,或家用伺服器上的腳本。三個原則可以讓它穩固耐用:

一個十二行的 Python 接收端,會把每次 POST 存檔:

from http.server import BaseHTTPRequestHandler, HTTPServer
import time

class H(BaseHTTPRequestHandler):
    def do_POST(self):
        body = self.rfile.read(int(self.headers.get("Content-Length", 0)))
        with open(f"marrow-{int(time.time())}.json", "wb") as f:
            f.write(body)
        self.send_response(200)
        self.end_headers()

HTTPServer(("0.0.0.0", 8798), H).serve_forever()

讓它走 HTTPS(Cloudflare Tunnel、Tailscale Funnel 或任何反向代理),再把自動化操作指向它。如果你想要的是可以查詢的副本,而不是一個放滿檔案的資料夾,自架鏡像就是寫好的接收端。

值得知道的事

疑難排解

用立即執行測試。下方那一行會說明發生了什麼,而更多選項、活動記錄會保留最近 30 次執行的同樣說明。開啟執行時通知(更多選項),在你檢查期間,每次執行都會收到通知。

Marrow 顯示的訊息該怎麼做
已送出內容的摘要,例如 12 diary entries已送達:接收端回應了 2xx。如果接收端那邊什麼都沒出現,請看下面最後幾列。
Server answered 401 或 403接收端需要標頭,或你加的標頭不對。請檢查它的名稱和值,包括 Bearer 以及後面的空格。
Server answered 404位址錯誤,或接收端沒有在監聽。在 n8n 請使用 Production URL 並啟用工作流程。也檢查結尾是否漏了路徑。
Server answered 405這個位址不接受 POST。請改指向專門接收資料的端點。
Server answered 413資料內容對接收端來說太大了。請選較短的日期範圍、較少的指標,或用每日總計取代原始樣本。
Server answered 500 或其他 5xx接收端在處理時失敗了。請看它自己的記錄檔。先存下原始內容,再解析。
要求逾時接收端花的時間超過逾時設定。請先回應再處理,或到「更多選項」把逾時調高(最多 300 秒)。
App Transport Security 政策要求使用安全連線。這個位址是網際網路上的一般 http。請改用 https。iOS 只允許 Marrow 在你自己的網路上使用一般 http。
找不到使用指定主機名稱的伺服器。位址打錯了,或是只有你家中網路才認得的名稱。請用手機上的 Safari 檢查。
No valid URL - set an https endpoint first位址是空的,或不是以 https:// 開頭(在你自己的網路上則可以是 http://)。
Nothing to export in this range這個日期範圍內沒有該種資料。請在「更多選項」選較長的範圍,或先記錄一些東西。

各工具個別的解法在它們自己的頁面:n8n、Zapier、Make、Home Assistant、Google Sheets、InfluxDB、任何網址.