Marrow Health
UK
Завантажити

Автоматизації: ваші дані, надіслані за розкладом

Marrow може надсилати POST-запитом файл із вашими даними про здоров'я на будь-який URL, який ви оберете, з обраною вами періодичністю, просто з телефона. Ця сторінка це довідник: як налаштувати автоматизацію, як виглядає кожен пакет даних і як написати те, що його приймає.

Готові налаштування для n8n, Zapier, Make, Home Assistant, Google Sheets та InfluxDB зібрано в розділі підключень.

Усі посібники Marrow: MCP · Дзеркало на власному сервері · Автоматизації · Файли · Підтримка

Що таке автоматизація

Збережене завдання в розділі Експорт, Автоматизовано: один вид даних, один формат, один діапазон дат, один URL, одна періодичність. Marrow формує файл зі свого перевіреного сховища й надсилає його на URL POST-запитом, коли застосунок закрито, після кожної синхронізації та під час кожного фонового оновлення, щойно минула задана періодичність. Через нас нічого не проходить: телефон спілкується просто з вашою кінцевою точкою.

Як налаштувати

  1. Вкладка Експорт, Автоматизовано: увімкніть, потім Нова автоматизація. Якщо створити її зі сторінки інструмента (n8n, Zapier, Home Assistant та інші в розділі підключень), автоматизація матиме назву цього інструмента, а біля кожного поля буде підказано, що саме туди очікує інструмент.
  2. Адреса: URL із https, на який надсилати POST. Заголовки: усе, що потрібне вашому приймачу (токен Authorization типу bearer, X-Gitlab-Token, будь-що). Якщо інструменту заголовки не потрібні, «Додати заголовок» ховається в розділі «Більше параметрів».
  3. Дані: Показники здоров'я, Тренування, Журнал силових, Щоденник харчування або Симптоми та настрій, у форматі JSON чи CSV. Одна автоматизація несе один вид, тож робіть по одній на кожен потрібний вид. Кожна ввімкнена рахується як підключення: у безкоштовному тарифі одночасно може бути ввімкнено 1 підключення, у Marrow Pro до 10, враховуючи ШІ та сервери.
  4. Періодичність: раз на стільки-то хвилин, годин або днів. Діапазон дат, агрегація й тайм-аут містяться в розділі Більше параметрів.
  5. Запустити зараз надсилає перший пакет, щоб ви могли перевірити приймач, не чекаючи на розклад.

Діапазони дат

Вигляд даних

Показники здоров'я (денні підсумки, JSON)

Та сама структура, що й у метрик Health Auto Export (список metrics з name, units і data із qty), тож приймач, написаний для цього застосунку, потребує лише невеликих змін: дати тут це прості дні, а не позначки часу, а наведені нижче дані про тренування й силові це власний формат Marrow. Значення подано в одиницях зберігання, названих у units (kg, m, mL, degC, kcal, count). Пульс надходить як Avg, Min і Max за кожен день у уд/хв, а сон як кожна ніч із фазами в годинах. Якщо вам потрібні імперські одиниці, переведіть їх у себе.

{"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: вебхук-сервіс, безсерверна функція, скрипт на домашньому сервері. Три правила роблять його надійним:

Приймач на 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 або будь-який зворотний проксі) і вкажіть його в автоматизації. Якщо вам потрібна копія, до якої можна робити запити, а не тека з файлами, то дзеркало на власному сервері це вже написаний приймач.

Корисно знати

Усунення несправностей

Перевіряйте через Запустити зараз. Рядок під кнопкою каже, що сталося, а Більше параметрів, Журнал активності зберігає останні 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 с).
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, будь-який URL.