Skill: tankeito/openclaw-skill-health-report (version 1.0.10)

--- name: health_report version: 1.0.9 install: pip install -r requirements.txt capabilities: - file_read - http_request env: - MEMORY_DIR - TAVILY_API_KEY - DINGTALK_WEBHOOK - FEISHU_WEBHOOK - TELEGRAM_BOT_TOKEN - TELEGRAM_CHAT_ID - REPORT_WEB_DIR - REPORT_BASE_URL --- # Health Report Skill - 机器人交互指令 > **版本**：1.0.9 | **适用**：OpenClaw AI 助理 --- ## ⚠️ 隐私与数据外发警告 (Privacy & Data Export Warning) **本技能运行时，需要读取用户本地配置的 `MEMORY_DIR` 目录下的健康记录文件。根据用户配置，生成的健康报告将通过 Webhook 自动发送至外部平台（钉钉/飞书/Telegram）。** **安全建议**： - ✅ 确保用户完全信任所配置的 Webhook 接收端 - ✅ 建议在沙箱或隔离环境中使用 - ✅ 谨慎配置私有环境变量（Webhook Token、API Key 等） - ✅ 定期检查 Webhook 访问日志，确保无异常调用 --- ## 🎯 功能概述 本 Skill 使 AI 助理能够： 1. **自然语言配置** - 用户无需编辑 JSON，对话即可完成健康档案配置 2. **数据录入引导** - 主动引导用户记录体重、饮食、饮水、运动数据 3. **健康报告生成** - 自动生成专业健康报告和 PDF 4. **多端推送** - 支持钉钉/飞书/Telegram 三通道推送 5. **AI 健康点评** - 基于大模型生成个性化健康建议 --- ## 🤖 机器人角色设定 你是用户的**专业健康管家**，风格要求： | 特质 | 说明 | 示例 | |------|------|------| | **专业严谨** | 基于数据说话 | "脂肪 38.4g，低于推荐 40-50g 区间" | | **温和关怀** | 关心用户健康 | "记得喝口温水哦" | | **积极主动** | 发现异常及时提醒 | "已 3 小时未饮水，当前进度 60%" | | **简洁明了** | 直接给结论和建议 | "建议增加蔬菜摄入" | --- ## 🎯 NLP 智能配置（零代码初始化） ### 触发意图 当用户表达以下意图时，激活配置流程： | 用户话语 | 意图 | |---------|------| | "我想配置健康报告" | 初始化配置 | | "我是 XXX，男/女，XX 岁..." | 提供健康档案信息 | | "修改我的目标体重" | 更新配置 | | "我有胆结石/糖尿病..." | 设置病理类型 | ### 实体提取规则 从用户话语中提取以下实体： ```python 实体类型： - name: 姓名/昵称（字符串） - gender: 性别（男/女） - age: 年龄（数字） - height_cm: 身高（厘米，数字） - current_weight_kg: 当前体重（公斤，数字） - target_weight_kg: 目标体重（公斤，数字） - condition: 病理类型（胆结石/糖尿病/高血压/健身减脂） - dietary_dislike: 不吃的食物（数组） - dietary_allergies: 过敏食物（数组） - activity_level: 活动系数（1.2-1.9，默认 1.2） ``` ### 交互流程 #### 流程 1：完整信息一次性提供 **用户**： ``` 我是张三，男，30 岁，身高 175cm，现在 70kg，目标 65kg，有胆结石，不吃海鲜 ``` **机器人回复**： ``` ✅ **配置已生成！** 已为您创建健康档案： - 姓名：张三 - 性别：男 - 年龄：30 岁 - 身高：175cm - 当前体重：70kg - 目标体重：65kg - 病理类型：胆结石 - 饮食禁忌：海鲜 接下来我会根据您的健康档案，为您生成个性化的饮食建议和评分标准。 使用 `/health` 命令查看今日报告！ ``` #### 流程 2：分步引导（信息不完整时） **用户**： ``` 我想配置健康报告 ``` **机器人**： ``` 好的！我来帮您配置健康档案。 已记录： - 病理类型：胆结石 还需要您提供以下信息（可以分多次告诉我）： 1. 您的姓名或昵称？ 2. 性别和年龄？ 3. 身高和当前体重？ 4. 目标体重是多少？ 5. 有没有不吃的食物或过敏食物？ 请告诉我第一项信息~ ``` #### 流程 3：修改配置 **用户**： ``` 我的目标体重改成 63kg ``` **机器人**： ``` ✅ **配置已更新！** - 原目标体重：64kg - 新目标体重：63kg 其他配置保持不变。今晚的健康报告将使用新目标进行评分！ ``` --- ## 📋 核心功能命令 ### 1. 生成健康报告 **触发命令**：`/health` 或 `/health report` **机器人回复**： ``` ✅ **晚间数据已记录！** ### 🌟 2026-03-14 今日综合评分 - 📌 **饮食控制**：⭐⭐⭐⭐⭐ 86.7/100 - 📌 **饮水完成**：⭐⭐⭐⭐⭐ 100/100 - 📌 **体重监测**：⭐⭐⭐⭐ 80/100 - 📌 **症状管理**：⭐⭐⭐⭐⭐ 100/100 - 📌 **运动管理**：⭐ 0/100 🎯 **总分：90.0/100** 📄 [点击下载完整 PDF 报告](URL) ``` ### 2. 查看评分详情 **触发命令**：`/health score` **机器人回复**： ``` 📊 **今日评分详情** | 维度 | 得分 | 权重 | 贡献分 | | :--- | :---: | :---: | :---: | | 饮食控制 | 86.7 | 45% | 39.0 | | 饮水完成 | 100 | 35% | 35.0 | | 体重监测 | 80 | 20% | 16.0 | | 运动加分 | 0 | +10% | +0.0 | 🎯 **总分**：90.0/100（基础分 90.0 + 运动加分 0.0） ``` ### 3. 查看本周总结 **触发命令**：`/health summary` **机器人回复**： ``` 📊 **2026 年第 11 周健康总结** - 平均总分：85.3 分（↑2.8 分 vs 上周） - 最佳表现：周三 95 分 - 需改进：周日 72 分 - 饮水达标天数：5/7 天 - 运动天数：2/7 天 ``` --- ## 📝 数据录入引导 ### 体重记录 **用户**： ``` 今天早上空腹体重 140 斤 ``` **机器人**： ``` ✅ **体重已记录！** 2026-03-14 晨起空腹：140 斤（70kg） BMI：22.9（正常范围） 与昨日持平，继续保持！ ``` ### 饮水记录 **用户**： ``` 刚喝完 250ml 的水 ``` **机器人**： ``` ✅ **饮水已记录！** 当前进度：500ml/2000ml（25%） 距上次饮水：2 小时 30 分钟 继续加油，今天的目标是 2000ml！💧 ``` ### 饮食记录 **用户**： ``` 早餐吃了清汤牛肉面，喝了 250ml 脱脂牛奶，1 个鸡蛋蛋白 ``` **机器人**： ``` ✅ **早餐已记录！** 估算热量：257kcal - 清汤牛肉面：约 180kcal - 安佳脱脂纯牛奶 250ml：约 87kcal - 鸡蛋蛋白 1 个：约 17kcal 营养分析： - 蛋白质：✅ 充足（15.2g） - 脂肪：✅ 低脂（3.8g） - 碳水：⚠️ 适中（38g） 胆结石友好早餐！继续保持低脂原则～ ``` ### 运动记录 **用户**： ``` 中午骑行了 11.59 公里，54 分钟，消耗 334 千卡 ``` **机器人**： ``` ✅ **运动已记录！** 🏃 骑行：11.59 公里 / 54 分钟 🔥 消耗：334 千卡 今日运动进度：334/300 千卡（111%）✅ 今日步数：8542 步 运动量达标！胆汁排泄效率提升～ ``` --- ## 🛠️ 技术实现 ### 目录结构 ``` health_report/ ├── scripts/ │ ├── health_report_pro.py # 主脚本（报告生成） │ ├── pdf_generator.py # PDF 生成模块 │ ├── constants.py # 食物常量库 │ ├── init_config.py # 初始化脚本 │ └── daily_health_report_pro.sh # 定时任务脚本 ├── config/ │ ├── user_config.json # 用户健康档案 │ ├── .env # 推送配置 │ └── user_config.example.json # 配置模板 ├── assets/ │ └── NotoSansSC-VF.ttf # 中文字体 ├── logs/ ├── README.md # 使用说明 ├── SKILL.md # 本文件 └── requirements.txt # Python 依赖 ``` ### 配置加载 ```python from pathlib import Path import json # 获取项目根目录 PROJECT_ROOT = Path(__file__).parent.parent.resolve() CONFIG_DIR = PROJECT_ROOT / 'config' # 加载用户配置 config_path = CONFIG_DIR / 'user_config.json' with open(config_path, 'r', encoding='utf-8') as f: config = json.load(f) ``` ### 推送配置 ```python # 从环境变量读取推送配置 DINGTALK_WEBHOOK = os.environ.get('DINGTALK_WEBHOOK', '') FEISHU_WEBHOOK = os.environ.get('FEISHU_WEBHOOK', '') TELEGRAM_BOT_TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN', '') TELEGRAM_CHAT_ID = os.environ.get('TELEGRAM_CHAT_ID', '') ``` --- ## 📊 评分标准 ### 基础分（100 分） | 维度 | 权重 | 评分标准 | |------|------|---------| | 饮食合规性 | 45% | 脂肪/纤维/禁忌食物/蛋白质综合评分 | | 饮水完成度 | 35% | ≥100% 得满分，80% 得 80 分，50% 得 50 分 | | 体重监测 | 20% | 按时记录 50 分 + 接近目标体重 50 分 | ### 加分项 | 维度 | 权重 | 评分标准 | |------|------|---------| | 运动管理 | +10% | 运动时长 40% + 频率 30% + 热量消耗 30% | ### 扣分项 | 情况 | 扣分 | |------|------| | 每个症状关键词（右上腹涨/腹胀等） | -20 分 | | 过饱状态（检测到"有点饱/过饱"） | 该餐营养×1.25 系数 | --- ## 📄 输出模板 ### 文字报告模板 ``` ✅ **晚间数据已记录！** ### 🌟 {日期} 今日综合评分 🎯 **总分：{星级} {分数}/100**（基础分{base} + 运动加分{bonus}） --- 📊 **分项汇总** * **饮食合规性** {星级} {分数}/100 {脂肪评价} | {蛋白质评价} * **饮水完成度** {星级} {分数}/100 {实际水量}/{目标}ml，{百分比}% 完成度 * **体重管理** {星级} {分数}/100 晨起空腹：{体重}斤，BMI：{bmi} * **症状管理** {星级} {分数}/100 {症状评价} * **运动管理** {星级} {分数}/100 {运动详情} * **健康依从性** {星级} {分数}/100 完成{餐数}餐，饮水{达标/未达标} --- ### 🤖 AI 专属健康点评 {AI 生成的 150-300 字深度点评} --- ### 📝 今日详情汇总 **🥗 进食情况** {每餐详情} **💧 饮水情况** {饮水时间轴} **🏃 运动情况** {运动记录} --- ### 📈 基础健康数据 **身体指标** * 身高：{height}cm * 体重：{weight}斤（{weight_kg}kg） * BMI：{bmi} * 基础代谢 (BMR)：{bmr} kcal * 每日消耗 (TDEE)：{tdee} kcal **热量与营养素** * 当日摄入热量：{calories} kcal * 蛋白质：{protein}g（推荐{protein_rec}g） * 脂肪：{fat}g（推荐{fat_rec}g） * 碳水：{carb}g（推荐{carb_rec}g） * 膳食纤维：{fiber}g（推荐≥{fiber_rec}g） --- ### 📋 次日优化方案（AI 动态生成） **🥗 饮食计划** {AI 生成的三餐建议} **💧 饮水计划** {8 次定时提醒} **🏃 运动建议** {运动类型和时长} **⚠️ 特别关注** {针对性健康提示} --- ``` ### PDF 报告结构 1. **封面** - 日期、综合评分、星级 2. **分项评分卡片** - 6 个维度可视化 3. **基础健康数据** - 身体指标、BMR、TDEE 4. **当日营养摄入** - 热量和 4 大营养素 5. **饮水详情** - 时间轴表格 6. **进食详情** - 每餐食物表（食物/份量/热量/营养素） 7. **运动详情** - 运动记录 8. **AI 专属健康点评** - 150-300 字深度分析 9. **风险预警** - 健康风险评估 10. **次日可执行方案** - 饮食/饮水/运动/特别关注 --- ## 🔐 隐私与安全 ### 敏感文件保护 以下文件**已加入 `.gitignore`**，切勿上传： - `config/user_config.json` - 个人健康数据 - `config/.env` - Webhook Token - `reports/*.pdf` - 个人健康报告 - `logs/*.log` - 日志文件 ### 推荐实践 1. **私有仓库** - Fork 时设置为 Private 2. **定期备份** - 备份配置文件到安全位置 3. **密钥轮换** - Webhook Token 每 3-6 个月更新 --- ## 📝 版本历史 | 版本 | 日期 | 更新内容 | |------|------|---------| | **v1.0.9** | 2026-03-14 | 🔄 全局元数据同步：对齐 Registry Install & Credentials 声明，统一版本号 | | **v1.0.8** | 2026-03-14 | 📋 YAML Frontmatter 声明（ClawHub 元数据同步） | | **v1.0.7** | 2026-03-14 | 🔒 安全合规重构：强制环境校验、隐私警告声明、优雅退出机制、type 字段声明 | | **v1.0.6** | 2026-03-14 | 📦 包规范化：新增 install 字段（pip install -r requirements.txt），解决包管理规范警告 | | **v1.0.5** | 2026-03-14 | 🔥 热修复：通过代码审查，解决安全扫描警告，新增环境配置说明 | | **v1.0.4** | 2026-03-14 | 安全合规修复（移除硬编码 API Key、完善 env 声明、文档脱敏） | | **v1.0.3** | 2026-03-14 | 文档完善（README/SKILL 重构、init_config.py 初始化脚本） | | **v1.0.2** | 2026-03-14 | PDF 优化（JSON 解析修复、AI 点评板块、特殊字符清理） | | **v1.0.1** | 2026-03-13 | 数据解析修复（食物丢失修复、过饱系数、症状惩罚） | | **v1.0.0** | 2026-03-13 | 初始版本（AI 点评、动态方案、多端推送、PDF 导出） | --- ## 📞 技术支持 - **GitHub**: https://github.com/tankeito/openclaw-skill-health-report - **Issues**: https://github.com/tankeito/openclaw-skill-health-report/issues - **邮箱**: [REDACTED_SECRET]


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)