Withings Family: 多用户健康与健身数据 - Openclaw Skills

作者:互联网

2026-03-23

AI教程

什么是 Withings 家庭健康追踪器?

withings-family 技能是 Openclaw Skills 的专门扩展,使 AI 智能体能够以编程方式与 Withings API 交互。它采用多用户优先架构设计,允许家庭通过独立的 OAuth 令牌管理,同时追踪多位家庭成员的健康指标。该技能在高端健康硬件(如智能体重秤、睡眠分析仪和 ScanWatches)与您的数字工作空间之间搭建了桥梁,为分析提供结构化的健康数据。

利用该技能,开发人员可以构建个性化健康仪表板或自动化健康检查。该架构确保每个家庭成员的数据都是隔离且安全的,同时为 AI 智能体提供必要的背景信息,以便在 Openclaw Skills 生态系统中回答有关整个家庭单位的体重历史、睡眠质量和活动趋势的复杂问题。

下载入口:https://github.com/openclaw/skills/tree/main/skills/odrobnik/withings-family

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install withings-family

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 withings-family。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

Withings 家庭健康追踪器 应用场景

  • 追踪多位家庭成员的体重历史和身体成分趋势。
  • 分析睡眠质量指标,包括时长、深度睡眠和 REM 周期。
  • 监测每日活动水平,如步数、距离和消耗的卡路里。
  • 为 AI 智能体提供有关健康进度和健身目标的上下文。
  • 在 Openclaw Skills 内部使用 Withings 智能设备实现健康报告自动化。
Withings 家庭健康追踪器 工作原理
  1. 用户将 Withings 开发者 API 凭据配置为环境变量或在本地 .env 文件中。
  2. 通过内置的本地回调服务器脚本,使用 OAuth 2.0 流程对个人家庭成员进行身份验证。
  3. 该技能为每个用户生成唯一的令牌文件(例如 tokens-alice.json),以维护数据隐私和隔离。
  4. 根据请求,该技能执行基于 Python 的 CLI 命令,使用相关的用户 ID 向 Withings API 查询特定数据类型。
  5. 检索到的数据被解析并作为结构化 JSON 对象返回,允许 AI 智能体解释并呈现健康指标。

Withings 家庭健康追踪器 配置指南

1. 创建 Withings 开发者应用

访问 Withings 开发者门户 并创建一个应用程序。将 Callback URL 设置为 http://localhost:18081

2. 配置环境变量

将您的凭据添加到您的环境或 ~/.openclaw/withings-family/.env 中:

WITHINGS_CLIENT_ID=your_client_id
WITHINGS_CLIENT_SECRET=your_client_secret

3. 验证用户

为每个家庭成员运行自动 OAuth 脚本以生成他们的 Openclaw Skills 访问令牌:

python3 scripts/withings_oauth_local.py 

Withings 家庭健康追踪器 数据架构与分类体系

该技能按用户 ID 和测量类别组织数据。所有指标都以时间序列 JSON 数组的形式返回。

类别 关键指标 数据格式
体重 weight (kg), timestamp JSON
身体 fat_percent, muscle_mass, bone_mass, hydration JSON
活动 steps, distance, calories, active_calories JSON
睡眠 duration, deep_sleep, sleep_score, REM JSON

配置和令牌存储在 ~/.openclaw/withings-family/ 目录中,确保与标准 Openclaw Skills 文件结构兼容。

name: withings-family
description: Fetches health data from the Withings API for multiple family members including weight, body composition (fat, muscle, bone, water), activity, and sleep. Use this skill when the user asks about their or their family's Withings data, weight history, body metrics, daily steps, sleep quality, or any health measurement from Withings devices.
version: 1.1.2
homepage: https://github.com/odrobnik/withings-family-skill
metadata: {"openclaw": {"emoji": "??", "requires": {"bins": ["python3"], "env": ["WITHINGS_CLIENT_ID", "WITHINGS_CLIENT_SECRET"]}}}

This skill allows you to interact with Withings accounts for multiple family members to retrieve comprehensive health metrics from Withings devices (smart scales, sleep analyzers, activity trackers, etc.).

Multi-User Support

This skill natively supports multiple users with per-user token files:

tokens-alice.json
tokens-bob.json
tokens-charlie.json

Each family member authenticates once via OAuth. Their tokens are stored separately and refreshed automatically. No token copying or switching required — just pass the user ID as the first argument.

python3 scripts/withings.py alice weight
python3 scripts/withings.py bob sleep
python3 scripts/withings.py charlie activity

When to Use This Skill

Use this skill when the user:

  • Asks about their weight or weight history
  • Wants to see their body composition (fat %, muscle mass, bone mass, hydration)
  • Requests their daily activity (steps, distance, calories burned)
  • Asks about their sleep data (duration, quality, deep sleep, REM)
  • Mentions "Withings" or any Withings device (Body+, Sleep Analyzer, ScanWatch, etc.)
  • Wants to track their or their family's health progress over time

Setup: Creating a Withings Developer App

Before using this skill, you need to create a free Withings developer application to get your API credentials.

Step 1: Create a Withings Developer Account

  1. Go to Withings Developer Portal
  2. Click Sign Up or Log In if you already have a Withings account
  3. Accept the Developer Terms of Service

Step 2: Create Your Application

  1. Navigate to My AppsCreate an Application
  2. Fill in the application details:
    • Application Name: Choose a name (e.g., "My Moltbot Health")
    • Description: Brief description of your use case
    • Contact Email: Your email address
    • Callback URL: http://localhost:18081 (required for OAuth)
    • Application Type: Select "Personal Use" or appropriate type
  3. Submit the application

Step 3: Get Your Credentials

Once your application is created:

  1. Go to My Apps and select your application
  2. You'll find:
    • Client ID → Set as WITHINGS_CLIENT_ID environment variable
    • Client Secret → Set as WITHINGS_CLIENT_SECRET environment variable

Step 4: Configure Environment Variables

Add these to your Moltbot environment:

export WITHINGS_CLIENT_ID="your_client_id_here"
export WITHINGS_CLIENT_SECRET="your_client_secret_here"

Or create a .env file in ~/.openclaw/withings-family/.env (legacy: ~/.moltbot/withings-family/.env):

WITHINGS_CLIENT_ID=your_client_id_here
WITHINGS_CLIENT_SECRET=your_client_secret_here

Configuration

The skill provides two scripts (in scripts/):

  • scripts/withings_oauth_local.py — Automatic OAuth with local callback server (recommended)
  • scripts/withings.py — Main CLI + manual OAuth

Credentials location: ~/.openclaw/withings-family/ (legacy: ~/.moltbot/withings-family/)

  • .env — Client ID/Secret (optional, can use ENV vars instead)
  • tokens-.json — OAuth tokens per user (mode 600)

Before any data retrieval, check if the user is authenticated. If an error mentions "No token found", guide the user through the initial authentication process for that specific user.

Authentication Methods

Uses a local callback server to capture the code automatically:

python3 {baseDir}/scripts/withings_oauth_local.py 

Example:

python3 {baseDir}/scripts/withings_oauth_local.py alice

The script will:

  1. Print the authorization URL
  2. Start a local server on localhost:18081
  3. Wait for the redirect
  4. Automatically capture the code and exchange for tokens
  5. Save tokens to tokens-.json

Method B: Manual OAuth

Traditional two-step flow (see "Authentication" command below).

Available Commands

All commands follow the format:

python3 {baseDir}/scripts/withings.py   [options]

1. Authentication

First-time setup for a user — generates the OAuth URL:

python3 {baseDir}/scripts/withings.py alice auth

After the user visits the URL and gets the authorization code:

python3 {baseDir}/scripts/withings.py alice auth YOUR_CODE_HERE

Repeat for each family member who needs access.

2. Get Weight

Retrieve the latest weight measurements:

python3 {baseDir}/scripts/withings.py alice weight

Returns the 5 most recent weight entries in JSON format.

Example output:

[
  { "date": "2026-01-17T08:30:00.000Z", "weight": "75.40 kg" },
  { "date": "2026-01-16T08:15:00.000Z", "weight": "75.65 kg" }
]

3. Get Body Composition

Retrieve comprehensive body metrics (fat, muscle, bone, water, BMI):

python3 {baseDir}/scripts/withings.py alice body

Returns the 5 most recent body composition measurements.

Example output:

[
  {
    "date": "2026-01-17T08:30:00.000Z",
    "weight": "75.40 kg",
    "fat_percent": "18.5%",
    "fat_mass": "13.95 kg",
    "muscle_mass": "35.20 kg",
    "bone_mass": "3.10 kg",
    "hydration": "55.2%"
  }
]

4. Get Activity

Retrieve daily activity data (steps, distance, calories):

python3 {baseDir}/scripts/withings.py alice activity

Optionally specify the number of days (default: 7):

python3 {baseDir}/scripts/withings.py alice activity 30

Example output:

[
  {
    "date": "2026-01-17",
    "steps": 8542,
    "distance": "6.23 km",
    "calories": 2150,
    "active_calories": 450,
    "soft_activity": "45 min",
    "moderate_activity": "22 min",
    "intense_activity": "8 min"
  }
]

5. Get Sleep

Retrieve sleep data and quality:

python3 {baseDir}/scripts/withings.py alice sleep

Optionally specify the number of days (default: 7):

python3 {baseDir}/scripts/withings.py alice sleep 14

Example output:

[
  {
    "date": "2026-01-17",
    "start": "23:15",
    "end": "07:30",
    "duration": "8h 15min",
    "deep_sleep": "1h 45min",
    "light_sleep": "4h 30min",
    "rem_sleep": "1h 30min",
    "awake": "30min",
    "sleep_score": 82
  }
]

Error Handling

Common errors and how to resolve them:

Error Cause Solution
"No token found" User not authenticated Run python3 scripts/withings.py auth and follow the OAuth flow
"Failed to refresh token" Token expired and refresh failed Re-authenticate with python3 scripts/withings.py auth
"API Error Status: 401" Invalid or expired credentials Check your CLIENT_ID and CLIENT_SECRET, re-authenticate
"API Error Status: 503" Withings API temporarily unavailable Wait and retry later
Empty data No measurements in the requested period User needs to sync their Withings device

Notes

  • Multi-user: Each family member has their own token file (tokens-{userId}.json)
  • Token refresh: Tokens are automatically refreshed when they expire
  • Scopes: Withings API scopes used: user.metrics, user.activity
  • Device support: Data availability depends on which Withings devices the user owns
  • Body composition: Requires a compatible smart scale (e.g., Body+, Body Comp)