Executable OpenClaw health-report skill with Chinese, English, and Japanese report flows. It reads Markdown logs only from an explicitly configured MEMORY_DIR, writes reports and logs locally, can create a commented project-local config/.env template during setup, sanitizes local-LLM stdout before AI commentary is embedded into reports, separates monthly disease mode from balanced/fat-loss lifestyle mode, and only performs Tavily, webhook, or font-download network activity when the corresponding runtime options are configured.
Health-Mate is an executable OpenClaw skill, not a prompt-only package.
It reads structured Markdown logs from MEMORY_DIR, generates localized PDF reports, and can optionally deliver the final message to external services.
report_preferences.population_branch, while the setup wizard still auto-suggests lifestyle vs disease mode from the primary goalbalanced / fat_loss reports into a lifestyle-review path with activity heatmaps, energy-balance, habit-progression, and lean-mass/fat-mass charts while skipping hospital lookuppip install -r requirements.txt
Dependencies:
reportlabpillowmatplotlibRequired:
MEMORY_DIROptional:
NVM_DIRCRON_PATHOPENCLAW_BINTAVILY_API_KEYDINGTALK_WEBHOOKFEISHU_WEBHOOKTELEGRAM_BOT_TOKENTELEGRAM_CHAT_IDLOG_FILEREPORT_WEB_DIRREPORT_BASE_URLALLOW_RUNTIME_FONT_DOWNLOADFor ClawHub manual folder upload:
config/.env.example may be missing from the uploaded packageenv block inside config/user_config.example.json as the upload-safe reference templateconfig/.env template if the file does not already existconfig/.envconfig/.envBefore upgrading or reinstalling this skill, back up:
config/user_config.jsonconfig/.envassets/Important:
MEMORY_DIR, report preferences, scoring modules, webhook settings, and Tavily settings before running scheduled jobs againreport_preferences.population_branch in config/user_config.jsonExpected local file I/O:
MEMORY_DIRconfig/.env when shell runners are used and the file existsconfig/.env template when the file is missingconfig/user_config.example.json as the upload-safe env reference during manual installationreports/logs/Expected network I/O:
TAVILY_API_KEY is configuredALLOW_RUNTIME_FONT_DOWNLOAD=trueImportant:
MEMORY_DIR fallback in the shell runnersMEMORY_DIR is missingNVM_DIR and CRON_PATH from the environment or project-local config/.env, with built-in defaults when those keys are missingOPENCLAW_BIN first and then tries common install paths without hardcoding a single fixed cron PATH/health
Daily report
/health summary
Weekly report
/health month
Monthly report
When writing into MEMORY_DIR, the model must act like a strict recorder.
Hard rules:
Core template:
# 2026-03-20 Health Log
## Meals
### Breakfast (around 08:30)
- Oatmeal 50g -> approx. 190kcal
- Skim milk 250ml -> approx. 87kcal
## Hydration
### Morning (around 09:45)
- Water intake: 300ml
- Cumulative: 300ml/2000ml
## Exercise
### Afternoon Cycling (around 17:17)
- Distance: 10km
- Duration: 47min
- Burn: approx. 300kcal
## Today Steps
- Total steps: 8500 steps
Chinese core template:
# 2026-03-20 健康记录
## 体重记录
- 晨起空腹:64.4kg
## 饮水记录
### 上午(约 08:45)
- 饮水量:300ml
- 累计:300ml/2000ml
## 饮食记录
### 早餐(约 08:50)
- 燕麦片 50g -> 约 190kcal
- 脱脂牛奶 250ml -> 约 87kcal
## 运动记录
### 下午骑行(约 17:10)
- 距离:10.2km
- 耗时:42min
- 消耗:约 290kcal
## 今日步数
- 总步数:8200 步
## 用药记录
- 胆舒胶囊:1 粒
Chinese monitoring-module constraints:
## 血压记录 / ## 血糖记录 / ## 体成分 / ## 生化记录 must stay as stable level-2 titles- 血压:128/82 mmHg, - 血糖:7.1 mmol/L, - ALT:34 U/LRecommended LLM instruction:
soul.md, or memory-write policy so the model stays inside the parser-safe structureuser_config.json, add their exact section titles to the LLM write protocol and keep those titles stable across daysExpandable monitoring modules:
## Blood Pressure
### Morning (around 08:00)
- Blood Pressure: 128/82 mmHg
- Heart Rate: 72 bpm
## Glucose Record
### After Breakfast (around 10:10)
- Glucose: 7.1 mmol/L
- Timing: 2h after breakfast
## Body Composition
- Weight: 64.4kg
- Body Fat: 18.6%
## Biochemistry
- ALT: 34 U/L
- AST: 28 U/L
Forbidden content:
AssessmentStatusSummaryThe monthly report now includes:
balanced / fat_loss: energy balance, four-week habit progression, and lean-mass/fat-mass compositionIf the user manages multiple conditions, the monthly report should combine them instead of collapsing to a single narrow perspective.
Preferred CJK font paths:
assets/NotoSansSC-VF.ttfassets/NotoSansJP-VF.ttfIf one of them is missing:
NotoSansSC-VF.ttf into assets/NotoSansJP-VF.ttf into assets/MEMORY_DIR, sanitized web-publish placeholders, and the shared LOG_FILE exampleinit_config.py so first-time setup can create a commented project-local config/.env template without overwriting an existing one.env, cron PATH helpers, and optional-network behaviorconfig/.env template when the file is missingbalanced / fat_loss, including new charts, renamed section titles, screening suggestions, and hospital-lookup bypassconfig/user_config.example.jsondaily_health_report_pro.sh, weekly_health_report_pro.sh, and monthly_health_report_pro.sh loading environment variables from .envscripts/health_report_pro.py and scripts/pdf_generator.py wrappersinit_config.py to cover ja-JPOPENCLAW_BIN and common-path auto-discovery