Marrow Health
TH
ดาวน์โหลด

การทำงานอัตโนมัติ: ข้อมูลของคุณ ส่งตามกำหนดเวลา

Marrow POST ไฟล์ข้อมูลสุขภาพของคุณไปยัง URL ใดก็ได้ที่คุณเลือก ตามความถี่ที่คุณเลือก โดยส่งจากโทรศัพท์โดยตรง หน้านี้คือเอกสารอ้างอิง ได้แก่ วิธีตั้งค่า payload แต่ละแบบหน้าตาเป็นอย่างไร และวิธีเขียนตัวรับ

การตั้งค่าสำเร็จรูปสำหรับ n8n, Zapier, Make, Home Assistant, Google Sheets และ InfluxDB อยู่ในการเชื่อมต่อ.

คู่มือ Marrow ทั้งหมด: MCP · มิเรอร์ที่โฮสต์เอง · การทำงานอัตโนมัติ · ไฟล์ · ความช่วยเหลือ

การทำงานอัตโนมัติคืออะไร

งานที่บันทึกไว้ใน ส่งออก, อัตโนมัติ: ข้อมูลหนึ่งชนิด หนึ่งรูปแบบ หนึ่งช่วงวันที่ หนึ่ง URL หนึ่งความถี่ Marrow สร้างไฟล์จากที่เก็บข้อมูลที่ตรวจสอบแล้ว และ POST ไปที่ URL แม้ปิดแอปอยู่ หลังการซิงค์ทุกครั้งและในแต่ละรอบรีเฟรชเบื้องหลัง เมื่อครบความถี่ที่ตั้งไว้ ไม่มีอะไรผ่านเซิร์ฟเวอร์ของเรา โทรศัพท์คุยกับ endpoint ของคุณโดยตรง

วิธีตั้งค่า

  1. แท็บส่งออก, อัตโนมัติ: เปิดใช้ แล้วเลือก การทำงานอัตโนมัติใหม่ ถ้าสร้างจากหน้าของเครื่องมือ (n8n, Zapier, Home Assistant และอื่นๆ ในการเชื่อมต่อ) การทำงานอัตโนมัติจะใช้ชื่อของเครื่องมือนั้น และบอกข้างแต่ละช่องว่าเครื่องมือต้องการอะไรในช่องนั้น
  2. ที่อยู่: URL แบบ https ที่ต้องการ POST ไป หัวข้อ (header): ที่ตัวรับของคุณต้องใช้ (bearer token แบบ Authorization, X-Gitlab-Token หรืออะไรก็ได้) ถ้าเครื่องมือไม่ต้องใช้เลย เพิ่มหัวข้อ อยู่ใต้ตัวเลือกเพิ่มเติม
  3. ข้อมูล: ตัวชี้วัดสุขภาพ การออกกำลังกาย บันทึกเวทเทรนนิ่ง ไดอารี่โภชนาการ หรืออาการและอารมณ์ เป็น JSON หรือ CSV หนึ่งการทำงานอัตโนมัติส่งได้หนึ่งชนิด จึงสร้างหนึ่งรายการต่อหนึ่งชนิดที่ต้องการ แต่ละรายการที่เปิดอยู่นับเป็นหนึ่งการเชื่อมต่อ แพลนฟรีเปิดได้ 1 การเชื่อมต่อในแต่ละครั้ง Marrow Pro ได้สูงสุด 10 รวม AI และเซิร์ฟเวอร์
  4. ความถี่: ทุกกี่นาที ชั่วโมง หรือวัน ช่วงวันที่ การรวมข้อมูล และเวลาหมดอยู่ใต้ ตัวเลือกเพิ่มเติม.
  5. สั่งทำงานตอนนี้ ส่ง payload แรกไปให้ คุณจะได้ตรวจตัวรับก่อนรอถึงเวลาตามกำหนด

ช่วงวันที่

รูปแบบของ payload

ตัวชี้วัดสุขภาพ (ยอดรวมรายวัน, JSON)

โครงสร้างเดียวกับตัวชี้วัดของ Health Auto Export (รายการ metrics ที่มี name, units และ data ซึ่งมี qty) ตัวรับที่เขียนไว้สำหรับแอปนั้นจึงแก้เพียงเล็กน้อย วันที่ในที่นี้เป็นวันธรรมดา ไม่ใช่ timestamp และ payload ของการออกกำลังกายและเวทเทรนนิ่งด้านล่างเป็นของ 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}}
  ]}
]}}

การเขียนตัวรับ

อะไรก็ได้ที่รับ HTTPS POST และตอบกลับ 2xx ใช้ได้ทั้งนั้น ไม่ว่าจะเป็นบริการ webhook ฟังก์ชันแบบ serverless หรือสคริปต์บนเซิร์ฟเวอร์ที่บ้าน สามกฎนี้ช่วยให้ระบบแข็งแรง:

ตัวรับ Python สิบสองบรรทัดที่เก็บทุกโพสต์:

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 และเปิดใช้งานเวิร์กโฟลว์ ตรวจดูว่า path ท้ายที่อยู่ขาดไปหรือไม่
Server answered 405ที่อยู่นี้ไม่รับ POST ชี้ไปที่ endpoint ที่ออกแบบมาเพื่อรับข้อมูลเข้า
Server answered 413payload ใหญ่เกินไปสำหรับตัวรับ เลือกช่วงวันที่ให้สั้นลง ตัวชี้วัดให้น้อยลง หรือใช้ยอดรวมรายวันแทนตัวอย่างดิบ
Server answered 500 หรือ 5xx อื่นๆตัวรับทำงานล้มเหลวขณะจัดการข้อมูล ดูบันทึกของตัวรับเอง เก็บเนื้อหาดิบไว้ก่อน แล้วค่อยแยกวิเคราะห์
คำขอหมดเวลาตัวรับใช้เวลานานกว่าเวลาหมดที่ตั้งไว้ ให้ตอบกลับก่อนแล้วค่อยทำงานต่อ หรือเพิ่ม เวลาหมด ใต้ตัวเลือกเพิ่มเติม (สูงสุด 300 วินาที)
นโยบาย App Transport Security กำหนดให้ใช้การเชื่อมต่อที่ปลอดภัยที่อยู่เป็น http ธรรมดาบนอินเทอร์เน็ต ให้ใช้ https iOS อนุญาตให้ Marrow ใช้ http ธรรมดาเฉพาะในเครือข่ายของคุณเอง
ไม่พบเซิร์ฟเวอร์ที่มีชื่อโฮสต์ที่ระบุพิมพ์ที่อยู่ผิด หรือเป็นชื่อที่รู้กันเฉพาะในเครือข่ายบ้านของคุณ ลองเปิดใน 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, URL ใดก็ได้.