Kirim data Apple Health ke webhook
Apple Health tidak punya API web, jadi datamu hanya sampai ke webhook kalau ada aplikasi di iPhone yang mengirimnya. Marrow Health melakukannya secara gratis: sebuah otomatisasi mengirim POST berisi metrik kesehatan, latihan, set kekuatan, buku harian makanan, atau gejala dan suasana hati kamu ke URL mana pun, sebagai JSON atau CSV, sesuai jadwal yang kamu pilih, bahkan saat aplikasi ditutup. Di bawah ini ada langkah pengaturan, payload, dan penerima yang berfungsi untuk n8n, Home Assistant, dan server biasa. Kami membuat Marrow.
Mengatur otomatisasi
- Di Marrow Health, buka tab Ekspor, lalu Otomatis, lalu Otomatisasi Baru.
- Tempel URL webhook kamu (gunakan HTTPS). Tambahkan header apa pun yang diperiksa penerimamu, seperti token bearer
Authorizationatau kunci header-auth n8n. - Pilih jenis data: Metrik kesehatan, Latihan, Catatan kekuatan, Buku harian nutrisi, atau Gejala dan suasana hati. Satu otomatisasi mengirim satu jenis, dan kamu bisa punya hingga sepuluh.
- Pilih JSON atau CSV, rentang tanggal (Sejak proses terakhir adalah default) dan seberapa sering dijalankan, dalam menit, jam, atau hari.
- Aktifkan, lalu ketuk Jalankan sekarang untuk mengirim payload pertama sambil kamu memantau penerimanya.
Setiap permintaan adalah POST dengan Content-Type: application/json (atau text/csv) dan header kamu. Setiap proses, beserta kode responsnya, tercantum di riwayat otomatisasi di aplikasi.
Yang diterima
Metrik kesehatan tiba sebagai total harian, dalam satuan yang disebut di units. Detak jantung datang sebagai rata-rata, minimum, dan maksimum tiap hari, dan tidur sebagai tiap malam beserta tahapnya, dalam jam:
{"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"}]}
]}}
Payload latihan, kekuatan, nutrisi, dan suasana hati, sampel mentah sebagai ganti total harian, serta tata letak CSV ada di referensi otomatisasi.
Menerimanya di n8n
- Tambahkan node Webhook. Atur HTTP Method ke
POSTdan beri path, misalnyaapple-health. - Untuk menambahkan kunci rahasia, atur Authentication ke Header Auth dan tambahkan nama dan nilai header yang sama ke otomatisasi Marrow.
- Klik Listen for test event, lalu ketuk Jalankan sekarang di Marrow dalam dua menit. Payload muncul di editor.
- Publikasikan workflow dan arahkan Marrow ke Production URL (yang berisi
/webhook/, bukan/webhook-test/). URL tes berhenti mendengarkan setelah satu tes.
Payload ada di bawah body, jadi langkah hari ini adalah {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }} dalam sebuah ekspresi. Tambahkan node Split Out pada body.data.metrics untuk menangani tiap metrik sebagai item tersendiri. n8n menerima payload hingga 16 MB secara default, cukup untuk total harian bertahun-tahun. Proses produksi muncul di Executions, bukan di editor. (Dokumentasi n8n Webhook)
Menerimanya di Home Assistant
Pemicu webhook menerima POST di /api/webhook/<webhook_id>. Otomatisasi ini menyimpan jumlah langkah terbaru di number helper bernama input_number.steps_today (buat dulu, dengan nilai maksimum di atas hari terbaikmu):
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 }}
- Isi JSON ada di
trigger.jsonkarena Marrow mengirimContent-Type: application/json. local_onlyaktif secara default, yang hanya menerima kiriman dari jaringan rumahmu atau URL webhook cloud Nabu Casa. Atur kefalsesaat ponsel mengirim lewat internet ke alamat HTTPS milikmu sendiri.- ID webhook adalah satu-satunya rahasia, jadi buat panjang dan acak.
(Dokumentasi pemicu webhook Home Assistant)
Menerimanya di server kamu sendiri
Endpoint apa pun yang menerima POST HTTPS dan menjawab 2xx bisa dipakai. Yang ini mengarsipkan setiap payload ke sebuah file:
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()
Letakkan di balik HTTPS dengan Cloudflare Tunnel, Tailscale Funnel, atau reverse proxy. Kalau kamu lebih suka database yang bisa di-query daripada folder berisi file, mirror self-hosted Marrow adalah penerima yang sudah jadi, dan agen AI juga bisa melakukan query ke dalamnya.
Tiga aturan untuk penerima yang tidak pernah kehilangan data
- Yang terbaru menang. Simpan tiap nilai dengan kunci metrik dan hari, lalu timpa saat ada pengiriman ulang. Sejak proses terakhir sengaja mengirim ulang dua hari terakhir, karena Apple Health terus melengkapi sebuah hari setelah hari itu berakhir.
- Simpan body mentah dulu, baru parse. Bug saat parsing tidak boleh membuatmu kehilangan data.
- Jawab dengan cepat. Marrow menunggu hingga batas waktu yang kamu atur (60 detik secara default) dan mencoba ulang proses yang gagal dari jendela sukses terakhir pada giliran berikutnya.
Kapan otomatisasi berjalan?
Kapan pun iOS mengizinkan Marrow berjalan: setelah sinkron dengan Apple Health, saat kamu membukanya, dan saat penyegaran latar belakang, setelah interval yang kamu pilih terlewati. iOS yang menentukan kapan penyegaran latar belakang terjadi, jadi ponsel yang dibiarkan terkunci seharian mengirim saat berikutnya dibuka kuncinya, dan Sejak proses terakhir menutup selisihnya.
Cara lain
- Health Auto Export juga mengirim data Apple Health ke webhook, dan JSON metriknya punya struktur yang sama dengan milik Marrow. Otomatisasinya membutuhkan tingkat Premium.
- Apple Shortcuts bisa membaca sampel kesehatan dan mengirimnya dengan Get Contents of URL, lewat otomatisasi pribadi pada waktu tertentu. Gratis, hanya bisa membaca data Kesehatan saat ponsel tidak terkunci, dan kamu membuat serta merawat tiap metrik sendiri.
- export.zip dari Apple adalah cadangan penuh sekali jalan, bukan aliran data. Untuk mengubahnya menjadi CSV, pakai konverter di browser kami.