Apple Health verilerini bir webhook'a gönderin
Apple Health'in bir web API'si yoktur, bu yüzden verileriniz bir webhook'a ancak iPhone'unuzdaki bir uygulama gönderirse ulaşır. Marrow Health bunu ücretsiz yapar: bir otomasyon, sağlık ölçümlerinizi, antrenmanlarınızı, kuvvet setlerinizi, beslenme günlüğünüzü veya belirtilerinizi ve ruh halinizi, seçtiğiniz zamanlamayla, uygulama kapalıyken, JSON ya da CSV olarak herhangi bir URL'ye POST eder. Aşağıda kurulum, yük ve n8n, Home Assistant ile sade bir sunucu için çalışan alıcılar var. Marrow'u biz yapıyoruz.
Otomasyonu kurun
- Marrow Health'te Dışa aktar sekmesini, ardından Otomatik'i, sonra Yeni otomasyon'u açın.
- Webhook URL'nizi yapıştırın (HTTPS kullanın). Alıcınızın kontrol ettiği başlıkları ekleyin, örneğin bir
Authorizationbearer token'ı ya da bir n8n header-auth anahtarı. - Veri türünü seçin: Sağlık ölçümleri, Antrenmanlar, Kuvvet günlüğü, Beslenme günlüğü veya Belirtiler ve ruh hali. Bir otomasyon tek tür gönderir ve en fazla on tane olabilir.
- JSON ya da CSV'yi, tarih aralığını (varsayılan Son çalıştırmadan beri) ve ne sıklıkta çalışacağını seçin: dakika, saat veya gün olarak.
- Açın ve alıcıyı izlerken ilk yükü göndermek için Şimdi çalıştır'a dokunun.
Her istek, Content-Type: application/json (veya text/csv) ve başlıklarınızla bir POST'tur. Yanıt koduyla birlikte her çalıştırma, uygulamadaki otomasyonun geçmişinde listelenir.
Ne ulaşır
Sağlık ölçümleri, units içinde belirtilen birimle günlük toplamlar olarak gelir. Kalp atış hızı her günün ortalaması, en düşüğü ve en yükseği olarak, uyku ise her gece evreleriyle ve saat olarak gelir:
{"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"}]}
]}}
Antrenman, kuvvet, beslenme ve ruh hali yükleri, günlük toplamlar yerine ham örnekler ve CSV düzeni otomasyon başvuru sayfasında.
n8n'de alın
- Bir Webhook düğümü ekleyin. HTTP Method'u
POSTyapın ve onaapple-healthgibi bir yol verin. - Bir gizli anahtar için Authentication'ı Header Auth yapın ve aynı başlık adını ve değerini Marrow otomasyonuna ekleyin.
- Listen for test event'e tıklayın, ardından iki dakika içinde Marrow'da Şimdi çalıştır'a dokunun. Yük düzenleyicide görünür.
- İş akışını yayımlayın ve Marrow'u Production URL'ye yönlendirin (
/webhook-test/olanı değil,/webhook/olanı). Test URL'si bir testten sonra dinlemeyi bırakır.
Yük body altındadır, bu yüzden bugünün adımları bir ifadede {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }} olur. Her ölçümü ayrı bir öğe olarak işlemek için body.data.metrics üzerine bir Split Out düğümü ekleyin. n8n varsayılan olarak 16 MB'a kadar yük kabul eder, bu da yıllarca günlük toplamı kapsar. Üretim çalıştırmaları düzenleyicide değil, Executions altında görünür. (n8n Webhook belgeleri)
Home Assistant'ta alın
Bir webhook tetikleyicisi POST'u /api/webhook/<webhook_id> adresinde alır. Bu otomasyon, en son adım sayısını input_number.steps_today adlı bir sayı yardımcısında saklar (önce onu oluşturun, en iyi gününüzün üstünde bir azami değerle):
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 }}
- Marrow
Content-Type: application/jsongönderdiği için JSON gövdesitrigger.jsoniçindedir. local_onlyvarsayılan olarak açıktır ve yalnızca ev ağınızdan ya da bir Nabu Casa bulut webhook URL'sinden gelen gönderileri kabul eder. Telefon, kendi HTTPS adresinize internet üzerinden gönderiyorsa bunufalseyapın.- Tek gizli bilgi webhook kimliğidir, bu yüzden uzun ve rastgele yapın.
(Home Assistant webhook tetikleyici belgeleri)
Kendi sunucunuzda alın
HTTPS POST kabul edip 2xx ile yanıt veren her uç nokta işe yarar. Bu, her yükü bir dosyaya arşivler:
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()
Bir Cloudflare Tunnel, Tailscale Funnel veya ters vekil sunucuyla HTTPS'in arkasına koyun. Dosya klasörü yerine sorgulanabilir bir veritabanı isterseniz, Marrow'un kendi barındırdığınız yansısı zaten yazılmış o alıcıdır ve yapay zeka ajanları da onu sorgulayabilir.
Hiç veri kaybetmeyen bir alıcı için üç kural
- Sonuncusu geçerlidir. Her değeri ölçüm ve güne göre anahtarlayarak saklayın ve tekrar gelince üzerine yazın. Son çalıştırmadan beri son iki günü bilerek yeniden gönderir, çünkü Apple Health bir günü bittikten sonra da doldurmaya devam eder.
- Önce ham gövdeyi kaydedin, sonra ayrıştırın. Bir ayrıştırma hatası size asla veri kaybettirmemeli.
- Hızlı yanıt verin. Marrow, belirlediğiniz zaman aşımına kadar (varsayılan 60 saniye) bekler ve başarısız bir çalıştırmayı sonraki sırasında son başarılı pencereden yeniden dener.
Ne zaman çalışır?
iOS, Marrow'un çalışmasına izin verdiği her an: Apple Health ile eşzamanlandıktan sonra, onu açtığınızda ve arka plan yenilemesi sırasında, seçtiğiniz aralık geçtiği anda. Arka plan yenilemenin ne zaman olacağına iOS karar verir. Bu yüzden gün boyu kilitli kalan bir telefon, kilidi bir sonraki açılışında gönderir ve Son çalıştırmadan beri aradaki boşluğu kapatır.
Başka yollar
- Health Auto Export da Apple Health verilerini webhook'lara gönderir ve ölçüm JSON'u Marrow'unkiyle aynı yapıdadır. Otomasyonları Premium katmanını gerektirir.
- Apple Kestirmeler sağlık örneklerini okuyup belirli bir saatteki kişisel bir otomasyonda Get Contents of URL ile gönderebilir. Ücretsizdir, Sağlık verilerini yalnızca telefonun kilidi açıkken okuyabilir ve her ölçümü kendiniz kurup bakımını yaparsınız.
- Apple'ın export.zip dosyası tek seferlik tam bir yedektir, bir akış değildir. Birini CSV'ye çevirmek için tarayıcıdaki dönüştürücümüzü kullanın.