# Bohe Diet Notion Checkin

> Extract daily diet check-in data from Bohe Health/薄荷健康 screenshots and upsert it into the user's Notion 饮食记录 database. Use when the user sends one or more 薄荷健康 diet screenshots, says 更新饮食数据库, 每日饮食打卡, 饮食记录, record calories/macros/meals, or asks to save nutrition screenshots to Notion.

- Skill: `babyracoonbbq/bohe-diet-notion-checkin` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add babyracoonbbq/bohe-diet-notion-checkin`
- Raw SKILL.md: https://api.skillmd.com/api/skills/babyracoonbbq/bohe-diet-notion-checkin/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: BabyRacoonBBQ (https://skillmd.com/u/babyracoonbbq)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/babyracoonbbq/bohe-diet-notion-checkin

---


# Bohe Diet Notion Check-in

## Required reference

Before writing to Notion, read `references/notion-diet-schema.md`. It contains the target data source, view, field names, type conventions, and upsert rules.

## Workflow

1. Inspect every attached screenshot.
   - If the image is available as a local path, use `view_image`.
   - Extract only the diet record fields; do not record avatar, username, or account ID unless the user explicitly asks.

2. Extract these fields from each screenshot:
   - Date.
   - Total intake, budget, remaining or over-budget calories, exercise calories.
   - Carbs/protein/fat actual and target grams.
   - Breakfast/lunch/dinner/snack calories and food text.

3. Normalize values.
   - Convert dates to `YYYY-MM-DD`.
   - Title format: `YYYY-MM-DD 饮食记录`.
   - Source: `薄荷健康`.
   - `热量结余(千卡)` is positive when the screenshot says `还可以吃`; negative when it says `多吃了`.
   - `超预算` is `__YES__` only when the record is over budget; otherwise `__NO__`.
   - Use `0` and empty text for a missing meal slot only when the screenshot clearly has no such slot.

4. Upsert into Notion.
   - Query the `每日饮食记录` view and look for an existing row with the same `date:日期:start`.
   - If found, update that page.
   - If not found, create a new page in the 饮食记录 data source.
   - Never create a duplicate for a date that already exists.

5. Verify after writing.
   - Query the same view after create/update.
   - Confirm the target date(s), total intake, calories balance, and meal text are present.

## Reading rules

- Prefer exact visible text over inference.
- Preserve food names as shown. If OCR/visual reading is uncertain, write the best-effort text and mention the uncertain item in the final response.
- Do not invent macro values, meal calories, or food details. If a required number is unreadable, ask the user for that number instead of guessing.

## Notion reliability

- Notion connector calls may intermittently fail with transport errors. Retry the same read/write once or twice.
- If a create/update call returns an async task ID, treat it as accepted, then verify by querying the view.
- If verification does not show the new row immediately after an accepted async create, do not blindly create it again; query once more before deciding it failed.

## Final response

Report only the useful result:

- dates created;
- dates updated;
- any uncertain OCR/visual items that the user may want to correct.

