Posílejte data z Apple Health na webhook
Apple Health nemá webové API, takže vaše data se na webhook dostanou jen tehdy, když je odešle aplikace v iPhonu. Marrow Health to umí zdarma: automatizace odešle metodou POST vaše zdravotní metriky, tréninky, silové série, jídelní deník nebo příznaky a náladu na libovolnou adresu URL, jako JSON nebo CSV, podle rozvrhu, který zvolíte, i se zavřenou aplikací. Níže najdete nastavení, strukturu dat a fungující příjemce pro n8n, Home Assistant a běžný server. Marrow děláme my.
Nastavení automatizace
- V Marrow Health otevřete záložku Export, pak Automatické a Nová automatizace.
- Vložte adresu URL webhooku (použijte HTTPS). Přidejte všechna záhlaví, která váš příjemce kontroluje, například token
Authorizationtypu bearer nebo klíč n8n pro ověření záhlavím. - Vyberte druh dat: Zdravotní metriky, Tréninky, Deník silového tréninku, Deník výživy nebo Příznaky a nálada. Jedna automatizace posílá jeden druh a můžete jich mít až deset.
- Vyberte JSON nebo CSV, rozsah dat (výchozí je Od posledního spuštění) a jak často se to má spouštět, v minutách, hodinách nebo dnech.
- Zapněte ji a klepnutím na Spustit hned odešlete první data, zatímco sledujete příjemce.
Každý požadavek je POST s Content-Type: application/json (nebo text/csv) a vašimi záhlavími. Každé spuštění i s kódem odpovědi najdete v historii automatizace v aplikaci.
Co dorazí
Zdravotní metriky dorazí jako denní součty v jednotce uvedené v units. Tepová frekvence přijde jako denní průměr, minimum a maximum a spánek jako jednotlivé noci s fázemi, v hodinách:
{"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"}]}
]}}
Data tréninků, silového tréninku, výživy a nálady, surové vzorky místo denních součtů a rozvržení CSV jsou v referenci automatizací.
Příjem v n8n
- Přidejte uzel Webhook. Nastavte HTTP Method na
POSTa zadejte cestu, napříkladapple-health. - Pro tajný klíč nastavte Authentication na Header Auth a stejný název a hodnotu záhlaví přidejte do automatizace v Marrow.
- Klikněte na Listen for test event a do dvou minut v Marrow klepněte na Spustit hned. Data se objeví v editoru.
- Publikujte workflow a nasměrujte Marrow na Production URL (tu s
/webhook/, ne s/webhook-test/). Testovací adresa po testu přestane naslouchat.
Data jsou pod body, takže dnešní kroky jsou ve výrazu {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }}. Přidejte uzel Split Out na body.data.metrics, aby se každá metrika zpracovala jako samostatná položka. n8n ve výchozím nastavení přijímá data do 16 MB, což pokryje denní součty za několik let. Ostré běhy se zobrazují v části Executions, ne v editoru. (dokumentace webhooku v n8n)
Příjem v Home Assistant
Spouštěč webhooku přijme POST na /api/webhook/<webhook_id>. Tato automatizace uloží poslední počet kroků do číselného pomocníka s názvem input_number.steps_today (nejdřív ho vytvořte s maximem nad vaším nejlepším dnem):
automation:
- alias: "Apple Health from Marrow"
triggers:
- trigger: webhook
webhook_id: "pick-a-long-random-id"
allowed_methods:
- POST
local_only: false
actions:
- action: input_number.set_value
target:
entity_id: input_number.steps_today
data:
value: >-
{{ ((trigger.json.data.metrics
| selectattr('name', 'eq', 'step_count') | first).data
| last).qty }}
- Tělo JSON je v
trigger.json, protože Marrow posíláContent-Type: application/json. local_onlyje ve výchozím stavu zapnuté, takže přijímá požadavky jen z vaší domácí sítě nebo z adresy webhooku v cloudu Nabu Casa. Pokud telefon posílá data přes internet na vaši vlastní adresu HTTPS, nastavte ho nafalse.- ID webhooku je jediné tajemství, takže ho zvolte dlouhé a náhodné.
(Dokumentace ke spouštěči webhooku v Home Assistant)
Příjem na vlastním serveru
Funguje libovolný koncový bod, který přijme HTTPS POST a odpoví kódem 2xx. Tento ukládá každá přijatá data do souboru:
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()
Zveřejněte ho přes HTTPS pomocí Cloudflare Tunnel, Tailscale Funnel nebo reverzní proxy. Pokud byste raději měli databázi, kterou lze dotazovat, než složku souborů, je vlastní zrcadlo od Marrow takovým příjemcem už napsaným a dotazovat se ho mohou i AI agenti.
Tři pravidla pro příjemce, který nikdy nepřijde o data
- Poslední vyhrává. Každou hodnotu ukládejte podle metriky a dne a při opakování ji přepište. Od posledního spuštění záměrně znovu pošle poslední dva dny, protože Apple Health den doplňuje ještě po jeho skončení.
- Nejdřív uložte surové tělo požadavku, teprve pak ho zpracujte. Chyba při zpracování vás nikdy nesmí stát data.
- Odpovídejte rychle. Marrow čeká až do nastaveného limitu (výchozích 60 sekund) a neúspěšné spuštění při dalším průchodu zopakuje od posledního úspěšného okna.
Kdy se to spouští?
Kdykoli iOS Marrow dovolí běžet: po synchronizaci s Apple Health, při otevření aplikace a při obnovení na pozadí, jakmile uplyne zvolený interval. O tom, kdy se obnovení na pozadí provede, rozhoduje iOS, takže telefon celý den zamčený odešle data, až bude příště odemčený, a Od posledního spuštění tuto mezeru pokryje.
Jiné způsoby
- Health Auto Export také posílá data z Apple Health na webhooky a jeho JSON s metrikami má stejnou strukturu jako ten z Marrow. Jeho automatizace vyžadují tarif Premium.
- Zkratky od Apple umějí číst zdravotní vzorky a posílat je akcí Get Contents of URL v osobní automatizaci ve stanovený čas. Je to zdarma, data ze Zdraví se dají číst jen při odemčeném telefonu a každou metriku si musíte sami vytvořit a udržovat.
- Soubor export.zip od Applu je jednorázová úplná záloha, ne průběžný přísun dat. Chcete-li z něj udělat CSV, použijte náš převodník v prohlížeči.