Install
openclaw skills install open-health-linkOpen Health Link 健康数据授权与连接助手。当前接入倍轻松(breo)Scalp5 设备数据, 可查看头皮检测报告、头皮护理方案,或绑定/解绑倍轻松(breo)账号。 仅当用户明确提出“账号绑定/解绑”“报告查询”“护理方案查询” 或明确提到 Open Health Link、breo Scalp5 相关数据查询时使用此技能。
openclaw skills install open-health-linkOpen Health Link 用于承载多设备、多品牌的健康数据授权与连接能力。 当前版本接入倍轻松(breo)Scalp5,支持账号绑定、头皮检测报告查看与护理方案解读。
当用户的意图涉及以下任一场景时触发:
无必填用户输入,无需配置环境变量。安装 skill 即可使用。 所有凭证通过授权流程自动获取和管理,授权服务地址已内置。
根据用户意图分三大场景处理。在执行任何脚本前,必须先确保依赖已安装。
以下内容仅可在 skill 内部执行与使用,禁止在用户对话中直接展示:
node ...)authToken、schemeName、reportSchemeMap) 作为图片发送方式对用户只输出业务流程与结果:
为避免“瞎编/脑补”,所有结论必须满足以下规则:
推荐保底话术(信息不足时优先复用):
首次使用或依赖缺失时,先告知用户将进行依赖安装并征得确认,然后执行:
npm ci --prefix "{baseDir}/scripts" --omit=dev --no-audit --no-fund --registry=https://registry.npmmirror.com
安装完成后再继续后续流程;常规查询过程中不应静默触发安装。
当用户明确要求绑定账号,或首次查看数据时本地无有效 token,执行此流程:
运行 token 检查脚本,确认是否已有有效 token:
node {baseDir}/scripts/token-manager.js check
{"valid": true, "uid": "..."},告知用户"您已绑定倍轻松账号",然后询问是否要重新绑定或进行其他操作。{"valid": false},继续下面的授权流程。运行二维码生成脚本,从后端获取授权码并生成二维码图片:
node {baseDir}/scripts/generate-qrcode.js
脚本输出 JSON(内部使用,关注字段):{"qrPath": "...", "code": "...", "expiresAt": "..."}
收到脚本输出后,立即按以下格式直接回复用户(不要补充任何技术过程):
qrPath 对应的图片文件消息,而不是文本或 Markdown 图片语法)严格要求:
qrPath 完整路径对应的本地 PNG 文件)。、 等 Markdown 图片语法来“引用路径”。二维码图片发送后,立即执行前台轮询并自动保存授权结果:
node {baseDir}/scripts/poll-auth.js <code> --save
{"status": "authorized", "uid": "...", "authType": ..., "saved": true}{"status": "timeout"}{"status": "expired"}授权成功后告知用户:"账号授权成功!现在可以为您查看头皮检测报告和护理方案了。"
如果超时或过期,提示用户:"授权已超时(10分钟),请重新发起绑定。确保已在breo App中完成扫码授权。"
如果查询失败,提示用户:"授权结果查询失败,请重试绑定流程。如已扫码,请稍候重试。"
场景一用户可见话术白名单(优先复用):
先检查 token 有效性:
node {baseDir}/scripts/token-manager.js check
如果 token 无效,自动跳转到场景一的授权流程,完成后再继续。
根据用户语义调用报告列表接口脚本:
--day(取接口默认范围)--day 7--day 30--day 45--day 90命令示例:
node {baseDir}/scripts/fetch-report-list.js --day 30
脚本输出 JSON:
{"day":30,"total":N,"latestSchemeName":"...","reportSchemeMap":[...],"reports":[...],"rawData":{...}}
根据返回数据处理用户需求:
total = 0:提示用户“最近 90 天内暂无检测记录,请先完成一次检测”。reports[0](最新一条)并给出简要结论。reports 按时间从新到旧排序,给出最近 3~5 条分数变化(↑/↓/→)。同场景二,先检查并获取 token。
通过报告列表接口获取最近检测数据(护理方案名在该接口返回):
node {baseDir}/scripts/fetch-report-list.js --day 90
重点字段:
latestSchemeName:最新可用方案名reportSchemeMap:报告与方案映射reports:原始报告列表(含 schemeName)确定要讲解的方案名:
latestSchemeName。latestSchemeName 且列表里也无 schemeName:提示用户“当前报告未返回护理方案名,先为您展示最近报告摘要”并回退场景二。通过远程方案知识库检索方案内容(默认从 OBS 拉取 CSV):
node {baseDir}/scripts/plan-catalog.js "<schemeName>" --view summary
node {baseDir}/scripts/plan-catalog.js "<schemeName>" --view full
返回策略(先摘要后展开):
found = true:先用 summary 组织回答。full 中的步骤说明、更多养护建议、温馨提示、参考文献。found = false:告知“该方案在当前知识库中暂未收录”,并回退展示接口返回中的方案名与基础建议。当用户要求解绑或退出倍轻松账号时:
node {baseDir}/scripts/token-manager.js clear
告知用户:"已解除倍轻松账号绑定。如需再次使用,请重新绑定。"
当展示头皮检测报告时,使用以下格式:
## 🔬 头皮检测报告
**检测日期**:YYYY-MM-DD HH:mm
**综合评分**:XX / 100
### 各维度指标
| 指标 | 得分 | 状态 |
|------|------|------|
| 头皮油脂 | XX | 正常/偏高/偏低 |
| 头皮敏感度 | XX | 正常/轻度/中度 |
| 毛囊健康 | XX | 良好/一般/需关注 |
| 头皮角质 | XX | 正常/偏厚/偏薄 |
| 头发密度 | XX | 正常/偏少 |
### 检测图像
[展示头皮检测图片]
### 分析建议
[基于报告数据给出的个性化解读]
当有多次报告时,先展示最新报告摘要,然后附上趋势对比:
### 📊 近期趋势(最近 N 次检测)
| 日期 | 综合评分 | 变化 |
|------|----------|------|
| MM-DD | XX | ↑/↓/→ |
## 💆 个性化头皮护理方案
**方案生成日期**:YYYY-MM-DD
**基于检测**:YYYY-MM-DD 的检测报告
### 护理步骤
1. **步骤名称**
- 频率:每周 X 次
- 方法:具体操作说明
- 时长:X 分钟
2. **步骤名称**
...
### 推荐产品
- 产品名称 — 使用说明
### 注意事项
- [护理注意事项列表]
头皮报告列表接口(已接入):
https://op.breo.cn/op/cla/auth/dt/{authToken}/listGETday(可选,范围 1-90)node {baseDir}/scripts/fetch-report-list.js --day 30护理方案说明来源:报告列表接口返回的 schemeName + 远程知识库 https://breo-obs.obs.cn-south-1.myhuaweicloud.com/agents/plan-catalog.csv。