Guides

Automation(自動記録)

iOSショートカットでヘルスケアを自動記録

iPhone のショートカット オートメーションで、ヘルスケアの睡眠・歩数を毎朝 Tsumu に自動記録する手順です。タップ不要で勝手に貯まります。

更新日 公開日

はじめての方はTsumu とはから(どんなアプリか)

PWA のままでは、Tsumu はヘルスケアに直接触れません。そこで iOS ショートカットの「オートメーション」 を使い、毎朝決まった時刻にヘルスケアの数値を Tsumu へ自動送信します。実装ゼロで、体験は「毎朝勝手に記録される」になります。

全体像は、次のようにデータが流れます。

ヘルスケア(睡眠・歩数)
   ↓ 毎朝7時に自動で
ショートカットのオートメーション
   ↓ POST(Authorization: Bearer tsumu_...)
Tsumu の REST API → 記録が貯まる

まずは 歩数だけ で組むのがおすすめです。歩数は「1日の合計」という1つの数字なので、最短の手数で最後まで動きます。睡眠は少し事情が違うので、後の「睡眠は歩数より一手多い」で扱います。

1. 用意するもの

  • 発行済みのパーソナルトークン(下の画面・スコープは「読み取り + 書き込み」)
  • エンドポイント: https://tsumu.juriscodeai.com/api/v1/items
  • 記録先カテゴリ: 睡眠・体調は health、歩数は workout(お好みで)

トークンは、マイページ →「AI・外部連携」→「パーソナルトークン」から発行します。

トークン発行フォーム。スコープは「読み取り + 書き込み」を選ぶ
トークン発行フォーム。スコープは「読み取り + 書き込み」を選ぶ

2. ショートカットを組む

ここからは iPhone の「ショートカット」アプリでの操作です(Tsumu の外なので画像はありません)。

  1. ショートカット アプリ →「オートメーション」タブ →「+」→「時刻」を選びます。
  2. 実行時刻を「毎日・午前7時」などに設定し、「すぐに実行」をオンにします(確認なしで走らせる設定)。
  3. 「ヘルスケアサンプルを検索」 アクションを追加します(種類・開始日・終了日・並び順序・制限を指定できます)。歩数なら 種類=歩数 / 開始日=今日。初回は「ヘルスケアへのアクセスを許可しますか」と聞かれるので許可します。
  4. 「統計を計算」 アクションを追加し、3 の結果に対して 「合計」 を選びます。歩数は「1日1件」ではなく 移動のたびに1件 記録されるので、この合計がないと最後の1件だけが送られます。
  5. 「日付をフォーマット」 アクションで、happened_on に入れる日付を作ります(カスタム形式 yyyy-MM-dd)。
  6. 「テキスト」 アクションで、送信する JSON を組み立てます(次の節の雛形をそのまま貼り、数字の部分を 4・5 の変数に置き換えます)。
  7. 「URL の内容を取得」 アクションを追加し、次のように設定します。
  • URL: https://tsumu.juriscodeai.com/api/v1/items
  • 方法: POST
  • ヘッダー: Authorization に Bearer tsumu_...、Content-Type に application/json
  • 本文: ファイル を選び、6 の「テキスト」を渡します(JSON を選ぶとキーを1つずつ手で組むことになります)

アクション名は「検索して合計する」という順番で覚えると迷いません。探す →「ヘルスケアサンプルを検索」/まとめる →「統計を計算」/形を整える →「日付をフォーマット」「テキスト」/送る →「URL の内容を取得」 の4段です。

3. 送信する JSON の例

歩数を workout に記録する例:

{
  "category_key": "workout",
  "title": "歩数",
  "note": "8420 歩",
  "happened_on": "2026-09-06"
}

睡眠を health に記録する例:

{
  "category_key": "health",
  "title": "睡眠",
  "attrs": { "sleep_hours": 7.2 },
  "happened_on": "2026-09-06"
}

8420 と 7.2 を手順4の変数に、2026-09-06 を手順5の変数に置き換えてください。`"` と `{` `}` は消さない ようにだけ気をつけます(変数を貼るときに引用符ごと選択してしまうのが、いちばん多い失敗です)。

使える項目は次のとおりです。

  • category_key(必須)… health workout など、カテゴリのキー
  • title / note … どちらか一方は必ず入れます(両方空だと保存されません)
  • happened_on … YYYY-MM-DD。省略すると日付なしの記録になります
  • happened_precision … day(既定)か month。月ごとの合計を入れるときだけ month にします(その月の1日として保存されます)
  • attrs … カテゴリごとの項目。health は sleep_hours(時間)・weight_kg(kg)、workout は exercise・minutes(分)・weight(kg)・reps(回)
  • tags … 文字列の配列(例: ["自動記録"])

4. 入ったかどうかを確かめる

オートメーションを1回「実行」して、その場で確かめます。

  1. Tsumu のカテゴリ一覧から Workout または Health を開きます。
  2. 今日の日付で記録が1件増えていれば成功です。API 経由の記録には 「自動記録」バッジ が付くので、手で書いたものと見分けられます。
  3. 増えていなければ、ショートカット側で「URL の内容を取得」の結果を確認します。成功時は `201`、失敗時は下の表のいずれかが返ります。

5. うまくいかないとき

返ってきた番号で原因が切り分けられます。

  • 401 … トークンが違うか、失効しています。Bearer の後ろに tsumu_ から始まる文字列が入っているか、余計な空白・改行が混じっていないかを見ます。
  • 403 … トークンのスコープが「読み取り」だけです。トークン画面で「読み取り + 書き込み」のものを発行し直します。
  • 404 … category_key の綴りが違います(health workout はすべて小文字)。
  • 400 … JSON の形が壊れているか、title も note も空です。日付は YYYY-MM-DD 以外を受け付けません。
  • 429 … 送りすぎです。上限は1トークンあたり 1時間 120リクエスト。毎朝1回なら当たりません。

そもそもオートメーションが動かないときは、次の2つを疑います。

  • 「すぐに実行」がオフ … 通知をタップするまで走りません。オンにすると確認なしで実行されます。
  • 同じ記録が2件できる … オートメーションを重複して作っているか、テスト実行の分が残っています。余分な1件は Tsumu 側で削除してください(削除には5秒の「元に戻す」猶予があります)。

歩数の値そのものが実際より多いときは、Apple Watch と iPhone の両方が歩数を記録している ことを疑ってください。「ヘルスケアサンプルを検索」のフィルタで ソースをどちらか一方に絞る と、二重に足される分がなくなります。

過去のぶんは、まとめて取り込むほうが速い

オートメーションが貯めるのは これから先 の分だけです。ヘルスケアにすでに何年ぶんも入っている過去のデータは、ここまでの手順では Tsumu に入りません。

ショートカットの中で日付を1日ずつずらして POST を繰り返す形も組めますが、トークンの上限は1時間あたり120リクエスト です。半年ぶん(約180日)を遡るだけで途中で 429 に当たり、2時間近く待つことになります。過去のぶんは CSV で一括取り込みするほうが速くて確実です(1回で500行)。

作るのは、こういう CSV です。列名を タイトル 日付 メモ にしておくと、取り込み画面の 対応づけが自動で入ります。

タイトル,日付,メモ
歩数,2026-04-01,8420 歩
歩数,2026-04-02,11240 歩
  1. ヘルスケアアプリ → 右上のプロフィール写真 → 一番下の 「すべての健康データを書き出す」 を選びます。zip ファイルが書き出されます(データ量によっては数分かかり、数百MBになることがあります)。
  2. zip を展開すると `export.xml` が入っています。表計算ソフトや変換ツールで、日付と歩数の2列だけ を取り出します。
  3. 上の形に整えて、CSV として保存します。
  4. あとは CSVインポート の手順で Workout カテゴリに取り込みます。

取り込む前に、次の4点だけ押さえておくと取り直しになりません。

  • 日付は `2026-04-01` の形に揃えます。 2026/04/01 0:00 のように時刻が付いていると、日付が空のまま取り込まれます(エラーにはなりません)。
  • 歩数は数値の項目ではなく `メモ` に入れています。 8420歩 のように単位が付いた値は数値として読めないためです。並べて眺める・AI に渡すだけなら、メモで足ります。
  • CSV の取り込みには重複を防ぐ仕組みがありません。 まず3行だけのファイルで試して、列の対応を確かめてから本番のファイルを取り込んでください。
  • 1回500行まで = 500日ぶんです。それより長い期間は、ファイルを年ごとに分けます。

取り込んだ記録は 一覧の先頭には出ません。Tsumu の並びは「できごとの日」の順なので、過去の日付の記録はその日付の場所に入ります(正しい動きです)。入ったかどうかは、取り込みが終わった画面に並ぶ 「入った記録」 で確かめてください。題と読み取れた日付がそこに出るので、日付の列を取り違えていればその場で分かります。

睡眠は歩数より一手多い

歩数は「1日の合計」ですが、睡眠は区間データ です。ヘルスケアの睡眠分析は「コア・深い・レム・覚醒」を時間帯ごとに記録するため、一晩が何十件ものサンプルに分かれます。「ヘルスケアサンプルを検索」の結果をそのまま数えても睡眠時間にはなりません。

さらに、就寝が前日の夜・起床が当日の朝にまたがるので、「今日」で検索すると前半が落ちます。ショートカットの中で時間計算まで組むこともできますが、ブロックがかなり増えます。まずは次のどちらかで始めるのが現実的です。

  • ヘルスケアアプリが出している睡眠時間を、朝いちばんの通知から手で入れる(1日10秒)。自動化は歩数だけにしておく。
  • 就寝・起床の時刻だけを送る(note に「23:40 → 6:50」の形で入れる)。時間の計算は後から AI に任せられます(コピペで使えるプロンプト集の要領で「先月の平均睡眠時間は?」と聞けます)。

貯まったあとの読み解きは Tsumu 側でも AI 側でもできるので、入口はできるだけ単純にしておく ほうが続きます。

Android の場合

Android では Tasker や HTTP Request Shortcuts などのアプリで、同じ POST を毎朝実行するタスクを組めば同型のことができます(URL・ヘッダー・本文は上と同じ)。返ってくる番号の意味も同じです。

スマホの使用時間について(正直な注記)

iOS では、スマホ全体やアプリ別の使用時間(スクリーンタイム)を全自動で取り出すことはできません。 Apple がスクリーンタイムのデータを外部提供していないためです。現実的な運用は次の2つです。

  • スクリーンタイム画面のスクショを撮り、AI に読み取らせて記録する(半自動・週1回 の運用)。
  • 主要な3〜5アプリだけなら、ショートカットの「アプリを開いたとき/閉じたとき」トリガーで使用時間を記録する運用も可能です。

この制約が将来変われば、すぐに対応します。

安全のために

  • API 経由の記録には source=api が付き、「自動記録」バッジで見分けられます。
  • レート制限は 1時間あたり 120リクエストです。毎朝1回のPOSTなら十分に収まります。
  • トークンはトークン画面からいつでも失効できます。
  • 同じトークンで Claude と Tsumu をつなぐこともできます。自動記録と AI からの読み書きを1本でまかなえます。