Marrow Health
HE
הורדה

אוטומציות: הנתונים שלכם, נדחפים לפי לוח זמנים

Marrow יכול לשלוח POST עם קובץ של נתוני הבריאות שלכם לכל כתובת שתבחרו, בתדירות שתבחרו, ישירות מהטלפון. הדף הזה הוא ההפניה: איך מגדירים אחת, איך נראה כל מטען, ואיך כותבים משהו שמקבל אותו.

הגדרות מוכנות ל-n8n, Zapier, Make, Home Assistant, Google Sheets ו-InfluxDB נמצאות תחת חיבורים.

כל המדריכים של Marrow: MCP · מראה באירוח עצמי · אוטומציות · קבצים · תמיכה

מהי אוטומציה

משימה שמורה ב-ייצוא, אוטומטי: סוג נתונים אחד, פורמט אחד, טווח תאריכים אחד, כתובת אחת, תדירות אחת. Marrow בונה את הקובץ מהמאגר המאומת שלו ושולח אותו ב-POST לכתובת כשהאפליקציה סגורה, אחרי כל סנכרון ובכל רענון ברקע, בכל פעם שהתדירות עברה. שום דבר לא עובר דרכנו: הטלפון מדבר ישירות עם נקודת הקצה שלכם.

הגדרת אוטומציה

  1. לשונית ייצוא, אוטומטי: הפעילו אותה, ואז אוטומציה חדשה. אוטומציה שנוצרה מהדף של כלי (n8n, Zapier, Home Assistant והשאר תחת חיבורים) נושאת את שם הכלי, ולצד כל שדה כתוב מה הכלי רוצה שם.
  2. כתובת: כתובת ה-https שאליה היא שולחת POST. כותרות: כל מה שהמקבל שלכם צריך (אסימון bearer של Authorization, X-Gitlab-Token, כל דבר). כשהכלי לא צריך כלום, הוספת כותרת נמצאת תחת אפשרויות נוספות.
  3. נתונים: מדדי בריאות, אימונים, יומן כוח, יומן תזונה, או תסמינים ומצב רוח, כ-JSON או כ-CSV. אוטומציה אחת נושאת סוג אחד, ולכן צרו אחת לכל סוג שאתם רוצים. כל אחת שפועלת נחשבת לחיבור: במסלול החינמי חיבור אחד פועל בכל רגע, ב-Marrow Pro עד 10, כולל AI ושרתים.
  4. תדירות: כל כמה דקות, שעות או ימים. טווח התאריכים, האגרגציה וזמן ההמתנה נמצאים תחת אפשרויות נוספות.
  5. הפעל כעת שולח מטען ראשון כדי שתוכלו לבדוק את המקבל לפני שתחכו ללוח הזמנים.

טווחי תאריכים

מבני המטען

מדדי בריאות (סיכומים יומיים, JSON)

אותו מבנה כמו של המדדים ב-Health Auto Export (רשימת metrics של name, units ו-data עם qty), ולכן מקבל שנכתב לאפליקציה ההיא צריך רק שינויים קטנים: התאריכים כאן הם ימים רגילים ולא חותמות זמן, ומטעני האימונים והכוח שלמטה הם של 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}}
  ]}
]}}

כתיבת מקבל

כל דבר שמקבל POST ב-HTTPS ועונה 2xx מתאים: שירות webhook, פונקציית serverless, סקריפט בשרת ביתי. שלושה כללים שומרים עליו יציב:

מקבל 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 או כל reverse proxy) והפנו אליו את האוטומציה. אם מה שאתם רוצים הוא עותק שאפשר לשאול עליו שאילתות ולא תיקייה של קבצים, המראה באירוח עצמי היא המקבל הזה כבר כתוב.

טוב לדעת

פתרון בעיות

בדקו עם הפעל כעת. השורה שמתחתיו אומרת מה קרה, ובאפשרויות נוספות, יומן פעילות נשמרות 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 אחרהמקבל נכשל בעת הטיפול בבקשה. הסתכלו ביומן שלו עצמו. ארכבו קודם את הגוף הגולמי, ואז פענחו.
תם הזמן הקצוב לבקשה (The request timed out)המקבל לקח יותר זמן מהזמן הקצוב. ענו קודם ועבדו אחר כך, או הגדילו את זמן קצוב תחת אפשרויות נוספות (עד 300 שניות).
מדיניות App Transport Security דורשת חיבור מאובטח (The App Transport Security policy requires the use of a secure connection)הכתובת היא http רגיל באינטרנט. השתמשו ב-https. iOS מאפשר ל-Marrow להשתמש ב-http רגיל רק ברשת שלכם.
לא נמצא שרת עם שם המארח שצוין (A server with the specified hostname could not be found)שגיאת הקלדה בכתובת, או שם שרק רשת הבית שלכם מכירה. בדקו אותה ב-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, כל כתובת.