Marrow Health
HI
डाउनलोड

Apple Health डेटा को वेबहुक पर भेजें

Apple Health का कोई वेब API नहीं है, इसलिए आपका डेटा वेबहुक तक तभी पहुँचता है जब आपके iPhone का कोई ऐप उसे भेजे। Marrow Health यह मुफ़्त में करता है: एक ऑटोमेशन आपके स्वास्थ्य मेट्रिक्स, वर्कआउट, स्ट्रेंथ सेट, फ़ूड डायरी, या लक्षण और मूड को किसी भी URL पर JSON या CSV में POST करता है, आपके चुने समय पर, ऐप बंद होने पर भी। नीचे सेटअप, पेलोड, और n8n, Home Assistant और एक सादे सर्वर के लिए चालू रिसीवर हैं। Marrow हम बनाते हैं।

ऑटोमेशन सेट करें

  1. Marrow Health में एक्सपोर्ट टैब खोलें, फिर स्वचालित, फिर नया ऑटोमेशन.
  2. अपना वेबहुक URL पेस्ट करें (HTTPS इस्तेमाल करें)। आपका रिसीवर जो भी हेडर जाँचता हो वे जोड़ें, जैसे Authorization बेयरर टोकन या n8n का हेडर-ऑथ की।
  3. डेटा का प्रकार चुनें: स्वास्थ्य मेट्रिक्स, वर्कआउट, स्ट्रेंथ लॉग, पोषण डायरी, या लक्षण और मूड। एक ऑटोमेशन एक ही प्रकार भेजता है, और आप दस तक बना सकते हैं।
  4. JSON या CSV चुनें, तारीख़ों का दायरा (पिछली दौड़ के बाद से डिफ़ॉल्ट है) और यह कितनी बार चले, मिनट, घंटे या दिन में।
  5. इसे चालू करें और अभी चलाएं पर टैप करके पहला पेलोड भेजें, जबकि आप रिसीवर को देख रहे हों।

हर अनुरोध एक POST है, जिसमें Content-Type: application/json (या text/csv) और आपके हेडर होते हैं। हर रन, अपने रिस्पॉन्स कोड के साथ, ऐप में उस ऑटोमेशन के इतिहास में दिखता है।

क्या पहुँचता है

स्वास्थ्य मेट्रिक्स दैनिक योग के रूप में आते हैं, उस इकाई में जो units में लिखी है। हार्ट रेट हर दिन के औसत, न्यूनतम और अधिकतम के रूप में आती है, और नींद हर रात के रूप में उसके चरणों के साथ, घंटों में:

{"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 का ढाँचा ऑटोमेशन संदर्भ में हैं.

n8n में पाएँ

  1. एक Webhook नोड जोड़ें। HTTP Method को POST पर रखें और उसे एक पाथ दें, जैसे apple-health.
  2. सीक्रेट के लिए Authentication को Header Auth पर रखें और वही हेडर नाम और मान Marrow के ऑटोमेशन में भी जोड़ें।
  3. Listen for test event पर क्लिक करें, फिर दो मिनट के भीतर Marrow में अभी चलाएं पर टैप करें। पेलोड एडिटर में दिख जाएगा।
  4. वर्कफ़्लो पब्लिश करें और Marrow को Production URL पर लगाएँ (वह जिसमें /webhook/ हो, /webhook-test/ नहीं)। टेस्ट URL एक टेस्ट के बाद सुनना बंद कर देता है।

पेलोड body के नीचे होता है, इसलिए एक्सप्रेशन में आज के कदम {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }} हैं। हर मेट्रिक को अलग आइटम की तरह सँभालने के लिए body.data.metrics पर एक Split Out नोड जोड़ें। n8n डिफ़ॉल्ट रूप से 16 MB तक के पेलोड लेता है, जो सालों के दैनिक योग के लिए काफ़ी है। प्रोडक्शन रन Executions में दिखते हैं, एडिटर में नहीं। (n8n Webhook दस्तावेज़)

Home Assistant में पाएँ

वेबहुक ट्रिगर /api/webhook/<webhook_id> पर POST लेता है। यह ऑटोमेशन ताज़ा कदम संख्या को input_number.steps_today नाम के नंबर हेल्पर में रखता है (इसे पहले बनाएँ, अधिकतम मान आपके सबसे अच्छे दिन से ऊपर रखकर):

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 }}

(Home Assistant वेबहुक ट्रिगर के दस्तावेज़)

अपने सर्वर पर पाएँ

जो भी एंडपॉइंट HTTPS POST ले और 2xx से जवाब दे, वह चलेगा। यह वाला हर पेलोड को एक फ़ाइल में सहेज लेता है:

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()

इसे Cloudflare Tunnel, Tailscale Funnel या रिवर्स प्रॉक्सी के पीछे HTTPS पर रखें। अगर आपको फ़ाइलों के फ़ोल्डर की जगह ऐसा डेटाबेस चाहिए जिससे सवाल पूछे जा सकें, तो Marrow का सेल्फ़-होस्टेड मिरर वही रिसीवर है जो पहले से लिखा हुआ है, और AI एजेंट भी उससे पूछ सकते हैं।

ऐसे रिसीवर के तीन नियम जो डेटा कभी नहीं खोता

यह कब चलता है?

जब भी iOS Marrow को चलने दे: Apple Health से सिंक के बाद, आपके खोलने पर, और बैकग्राउंड रिफ़्रेश के दौरान, जब आपका चुना हुआ अंतराल बीत चुका हो। बैकग्राउंड रिफ़्रेश कब होगा, यह iOS तय करता है, इसलिए दिन भर लॉक पड़ा फ़ोन अगली बार अनलॉक होने पर भेजता है, और पिछली दौड़ के बाद से बीच के अंतराल को भर देता है।

दूसरे तरीके