Most health apps are good at collecting data and surprisingly bad at letting me use it. I could see sleep, recovery, activity, and workout information in polished dashboards, but I could not pass the underlying data directly to my own AI. I wanted something much simpler than another dashboard: a short morning briefing that would tell me how I was recovering, what had changed over the last week, and what to do for the rest of the day.

This article describes the actual implementation, including the settings, folder layout, iOS Shortcuts, ChatGPT task prompt, failure checks, and the parts that did not work as expected. The final pipeline is:

Apple Watch / Withings / nutrition apps
                  ↓
              Apple Health ← Bevel reads the same source
                  ↓
          Health Auto Export on iPhone
                  ↓
        JSON files in a dedicated Google Drive
                  ↓  Viewer share
       Google Drive app connected to ChatGPT
                  ↓
        ChatGPT Cloud Scheduled Task at 10:30
                  ↓
        120–180 word morning report in Bulgarian

Bevel remains my visual health dashboard, but it is not the integration layer. The AI works with Apple Health data exported independently of Bevel. This means proprietary Bevel scores and some Strength Builder details may not be available.

What you need

  • An iPhone with health data in Apple Health.
  • Health Auto Export with Google Drive automations.
  • The iOS Shortcuts app.
  • A separate Google account used only for health exports.
  • A ChatGPT account with Scheduled Tasks and the Google Drive app available.

This guide uses Google Drive, not Google Docs. The source files are ordinary JSON files. I did not convert them to Google Sheets because the AI needs structured machine-readable data, not a manually maintained document.

Step 1: Create a health-only Google account

I created a separate Google account whose Drive contains only exported health data. Health Auto Export authenticates directly with this account and creates its folders there. This avoids giving the export app access to my main Drive.

My existing ChatGPT Google Drive connection was already using my main Google account, and one connection could not conveniently represent both accounts in this setup. The practical solution was:

  1. Let Health Auto Export write to the dedicated health account.
  2. Share only the export folder with my main Google account.
  3. Give the main account Viewer access.
  4. Keep ChatGPT connected to the main account.

Google Drive applies a folder’s permissions to files and subfolders added later, so new daily exports inherit the Viewer share. See Google’s folder-sharing documentation.

This creates a useful hard boundary: the account used by ChatGPT can read this folder but cannot change or delete its contents. The task prompt also says “read-only,” but the Viewer role is the more important protection because it is enforced by Google rather than by wording alone.

Step 2: Configure the Health Metrics export

In Health Auto Export, open Automated Exports → New Automation → Google. Connect the dedicated health Google account, not the main account. The app creates a top-level Health Auto Export folder and an automation subfolder. The official Google Drive automation guide documents the same flow.

These are the settings used for the daily health file:

  • Automation/folder name: DailyExport
  • Data type: Health Metrics
  • Format: JSON
  • Export version: Version 2
  • Custom file-name prefix: Health
  • Summarize Data: On
  • Time Grouping: Days
  • Sync cadence: Daily
  • Notify on Cache Update: Off
  • Notify When Run: Off

The resulting files follow this convention:

Health Auto Export/
└── DailyExport/
    ├── Health-2026-08-13.json
    ├── Workout-2026-08-13.json
    ├── Health-2026-08-14.json
    └── Workout-2026-08-14.json

An earlier version of my task expected a folder called DailyExportAI, while the actual files were found in DailyExport. That tiny naming mismatch was enough to make a correct automation see no data. The production rule is simple: copy the real folder name from Drive and use it verbatim in the scheduled-task instructions. Do not add a silent fallback to a different folder unless you deliberately want that behaviour.

I selected only metrics that influence the report:

  • sleep analysis and sleep stages;
  • heart-rate variability;
  • resting heart rate and heart rate;
  • respiratory rate and blood oxygen;
  • wrist or body temperature when available;
  • steps, active energy, and exercise minutes;
  • VO₂ max;
  • weight and body-fat percentage;
  • dietary energy, protein, carbohydrate, fat, fibre, and water when present in Apple Health.

I did not export ECG, medications, symptoms, reproductive data, or GPS routes because the report did not need them. Selecting fewer metrics also keeps the JSON smaller and makes iOS background execution more reliable.

Step 3: Configure the Workout export

Create a second Google Drive automation for workouts and point it to the same export folder:

  • Data type: Workouts
  • Format: JSON
  • Export version: Version 2
  • Custom file-name prefix: Workout
  • Include Workout Metrics: On
  • Include Route Data: Off
  • Sync cadence: Daily
  • Notifications: Off

Workout metrics provide duration, type, heart rate, and energy expenditure. They do not necessarily contain the exercises, sets, repetitions, or weights stored inside Bevel’s Strength Builder, so the AI can evaluate physiological load but not complete strength progression.

Step 4: Seed the baseline and verify the files

Before scheduling anything, I used Manual Export in both automations:

  1. Select at least the previous 14 days.
  2. Run the Health Metrics export.
  3. Run the Workout export.
  4. Open Google Drive and verify that the files exist.
  5. Open one Health JSON file and confirm that it contains sleep, HRV, and the other selected metrics.
  6. Open one Workout JSON file and confirm that it contains the workout list and metrics.

Fourteen days are the minimum needed for the report’s comparison: the latest seven complete days against the preceding seven. A longer history is useful, but it is not required for the first working version.

Step 5: Build the Shortcuts actions

Health Auto Export cannot guarantee that a background export will happen at an exact time. iOS does not expose health data while the phone is locked and controls when apps receive background execution. The app’s automation documentation explicitly lists Background App Refresh, Low Power Mode, device inactivity, and system resources as factors.

To make the morning export more predictable, I created Shortcuts that explicitly run the two configured exports. For each export:

  1. Open Shortcuts and select the Shortcuts tab, not Automation.
  2. Tap +.
  3. Tap Add Action.
  4. Search for Auto Export.
  5. Select Run Automation.
  6. Tap the blue automation field and select the corresponding Google Drive automation.
  7. Name the shortcuts Run Daily Health AI and Run Daily Workouts AI.
  8. Run each shortcut manually once and approve every iOS permission request.

You can also place both Run Automation actions in one master shortcut named Morning Health Export. The important distinction is that Bevel is not selected inside the Health Auto Export action. Bevel is only the trigger for the personal automation described next. HealthyApps documents the same Run Automation action.

Step 6: Use opening Bevel as the morning trigger

I chose opening Bevel as the primary trigger because I normally open it after waking and, critically, the phone is unlocked at that moment.

  1. Open Shortcuts → Automation.
  2. Tap + and choose App.
  3. Tap Choose and select Bevel.
  4. Select Is Opened.
  5. Select Run Immediately (or disable Ask Before Running on older iOS versions).
  6. Tap Next.
  7. Choose New Blank Automation.
  8. Add the Run Shortcut action.
  9. Select the health shortcut, then add the workout shortcut—or select the single master shortcut if you combined them.
  10. Save with Done.

Apple confirms that App and Time of Day personal automations can run without asking, although individual actions may still have their own interaction requirements. See the Apple Shortcuts guide.

The test procedure is simple: close Bevel, reopen it, wait for the export to finish, then check that today’s JSON files have a new modification time in Drive.

The annoying Shortcuts popup

This was the least elegant part. The Health Auto Export action sometimes returned a “ran successfully” result and opened the Shortcuts app with a Done button. It was not a push notification.

I disabled Notify When Run and Notify on Cache Update inside Health Auto Export. Where the action exposed advanced options, I also disabled Show When Run or Open When Run. These settings reduce notifications, but some versions of the action may still present an interactive result.

If the popup cannot be suppressed, a less intrusive alternative is a single Time of Day personal automation at 09:30 that runs the same shortcuts. Select Run After Confirmation, unlock the phone, and run it once. This produces at most one popup rather than one on every Bevel launch. The trade-off is that it is no longer completely unattended.

Step 7: Share the export folder with the ChatGPT-connected account

  1. Open the health-only Google Drive account.
  2. Share the Health Auto Export root folder—or only DailyExport for narrower access—with the Google account already connected to ChatGPT.
  3. Assign the Viewer role.
  4. Do not enable public link access.
  5. From the connected account, open Shared with me and confirm that the JSON files are visible.

In ChatGPT, connect Google Drive from Profile → Settings → Apps → Google Drive → Connect. OpenAI’s Google Drive app documentation notes that Google Docs, Sheets, and Slides access is now unified under the Google Drive app.

Before creating the scheduled task, I ran a read-only test prompt:

Open this Google Drive folder in read-only mode.
List the latest Health and Workout JSON filenames.
Open the latest Health file and return only its date and the metric types present.
Do not modify, move, rename, or share anything.

The test must prove that ChatGPT can read the JSON contents, not merely see the filename.

Step 8: Create the Cloud Scheduled Task

The first implementation used a local Codex heartbeat. Its name suggested “Cloud,” but it still depended on my Mac and Codex being active. I paused it and recreated the workflow as a genuine ChatGPT Scheduled Task. This distinction matters: a local automation does not become cloud-based because it has “Cloud” in its name.

Open ChatGPT’s Scheduled page, create a task named Morning Health Report, and set it to run every day at 10:30 Europe/Sofia. The 10:30 time leaves a gap after the morning Shortcut. ChatGPT’s Scheduled Tasks documentation confirms that recurring tasks run from ChatGPT and can use supported connected apps when available.

This is the production prompt, translated into English so it can be reused:

Check the specified Google Drive folder and its DailyExport subfolder
for Health Auto Export data. Work strictly read-only. Do not modify,
move, rename, share, or delete files.

Use the Europe/Sofia time zone. Require a file named
Health-YYYY-MM-DD.json for today's date. It must contain
sleep_analysis with a sleepEnd timestamp from this morning.
If the file is missing, unreadable, sleep_analysis is missing, or
sleepEnd is not from today, finish without producing a health report.
Never use yesterday's file as today's report.

When valid data exists, read at least the latest 14 Health files and
all available Workout files needed for the period. Compare the most
recent seven complete days with the preceding seven days whenever
there is enough data.

Evaluate the trend against these goals: increase muscle and strength,
control or reduce body fat, maintain good metabolic health, and avoid
unnecessary accumulated fatigue. Do not diagnose medical conditions
or draw strong conclusions from a single value. Treat Withings body-fat
measurements as a trend, not as an exact daily measurement.

Write the report in Bulgarian and keep it approximately 120–180 words:

## [green/yellow/red dot] Today: [short status]
Recovery: 1–2 sentences about sleep, HRV, resting heart rate,
respiration, and meaningful deviations from the personal seven-day baseline.
Seven-day trend: 2–3 sentences covering only important changes in
recovery, activity/training, weight/body composition, and nutrition.
Today: mention a workout only if one has already been completed.
Do not judge current calories, water, steps, or protein as a completed
daily result because the morning is incomplete.
For the rest of the day: give 2–3 concrete actions matched to recovery,
training load, and the stated goals.

Use specific numbers only when they change a decision. No tables,
generic lectures, or exhaustive metric lists.

The task was verified in the Scheduled list, and the old local heartbeat was paused to prevent duplicate reports.

Step 9: The freshness gate

The most important logic is not the health analysis; it is deciding when not to analyse.

A file named for today is necessary but not sufficient. An export can be created before the night’s sleep has synchronized, or contain a stale date range. The scheduled task therefore checks both:

  1. The filename equals Health-[today].json.
  2. sleep_analysis.sleepEnd falls on today’s date in Europe/Sofia.

If either check fails, the task says nothing. It does not rename yesterday’s data, infer the missing night, or produce a report from the most recent available file. I prefer a missing report to a confident but stale one.

Because the cloud task runs once at 10:30, a late iOS export can still cause a skipped day. A more fault-tolerant variant can run hourly during a morning window, but it also needs reliable deduplication so that only one report is published for each calendar date. ChatGPT Tasks currently do not run more frequently than hourly.

Step 10: How the analysis works

The AI reads at least fourteen Health files and the relevant Workout files. It compares two windows:

current trend  = latest 7 complete days
baseline       = preceding 7 complete days

The report is not a readiness score. It interprets the data against my goals: build muscle and strength, reduce or control fat, preserve metabolic health, and avoid unnecessary fatigue.

Several guardrails prevent false precision:

  • One unusual HRV or resting-heart-rate value is not a diagnosis.
  • Withings body-fat readings are treated as a direction over time, not an exact daily truth.
  • Morning nutrition, water, calories, and steps are incomplete-day values.
  • A workout is mentioned only if it has already happened.
  • Numbers are included only when they affect a decision.

Why I did not use the Health Auto Export MCP server

Health Auto Export includes a Start MCP Server action, but it does not solve this cloud workflow. The phone and client must be reachable on the same local network, the app must remain active, and a cloud task cannot connect to the iPhone’s private LAN address. It is useful for an interactive session while the phone is available, not for an unattended morning report.

Google Drive is less direct, but it gives the cloud task a stable hand-off point and a history of immutable daily files.

Troubleshooting checklist

No file appears in Drive

  • Confirm the Google account shown under Health Auto Export’s connection.
  • Check that Background App Refresh is enabled.
  • Disable Low Power Mode during testing.
  • Run Manual Export and inspect Activity Logs.
  • Verify the actual folder name and connected Google account.

The Shortcut runs but the report is missing

  • Open today’s JSON and confirm that sleep_analysis exists.
  • Check that sleepEnd is from the current morning in the expected time zone.
  • Confirm that the scheduled prompt uses the real folder name.
  • Test whether ChatGPT can open the JSON, not only list it.

The report uses stale data

  • Remove any instruction that says “use the latest available file.”
  • Require today’s filename and today’s sleepEnd.
  • Do not silently fall back from DailyExportAI to DailyExport; fix the path instead.

Shortcuts opens with a success message

  • Turn off both notification options in Health Auto Export.
  • Disable Show When Run or Open When Run if the action exposes them.
  • If the action remains interactive, replace the Bevel trigger with one daily Time of Day trigger.

Privacy and limitations

The JSON files contain sensitive personal data. The dedicated Google account keeps the export app away from my normal documents, and the Viewer share prevents the ChatGPT-connected account from changing the source folder. I did not expose the folder publicly, include GPS routes, or export medical categories that the report did not need.

The remaining limitations are real:

  • iOS does not guarantee exact background execution.
  • The phone must be unlocked when health data is accessed.
  • Bevel-specific scores and strength details may remain unavailable.
  • A scheduled AI report is decision support, not medical diagnosis.
  • A cloud task can run without my laptop, but it cannot repair a missing iPhone export.

The reusable lesson

The useful part of this project is not a clever health prompt. It is the reliability pattern:

automate collection
→ isolate access
→ validate freshness
→ compare trends
→ stay silent when inputs are invalid
→ produce a small, actionable output

The same design applies to engineering metrics, customer-support summaries, finance reports, or any workflow where “the latest file” is not necessarily the correct file. A trustworthy AI system needs explicit rules for missing, stale, and incomplete data. Once those rules were in place, the morning health report stopped being a chatbot experiment and became a useful personal system.