# Send Withings Family to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "withings-family",
    "name": "Withings Family",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/odrobnik/withings-family",
    "canonicalUrl": "https://clawhub.ai/odrobnik/withings-family",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/withings-family",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=withings-family",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "scripts/withings.py",
      "scripts/withings_oauth_local.py"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/withings-family"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/withings-family",
    "downloadUrl": "https://openagent3.xyz/downloads/withings-family",
    "agentUrl": "https://openagent3.xyz/skills/withings-family/agent",
    "manifestUrl": "https://openagent3.xyz/skills/withings-family/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/withings-family/agent.md"
  }
}
```
## Documentation

### 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

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

### Step 2: Create Your Application

Navigate to My Apps → Create an Application
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


Submit the application

### Step 3: Get Your Credentials

Once your application is created:

Go to My Apps and select your application
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-<userId>.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.

### Method A: Automatic OAuth (Recommended)

Uses a local callback server to capture the code automatically:

python3 {baseDir}/scripts/withings_oauth_local.py <userId>

Example:

python3 {baseDir}/scripts/withings_oauth_local.py alice

The script will:

Print the authorization URL
Start a local server on localhost:18081
Wait for the redirect
Automatically capture the code and exchange for tokens
Save tokens to tokens-<userId>.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 <userId> <command> [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:

ErrorCauseSolution"No token found"User not authenticatedRun python3 scripts/withings.py <userId> auth and follow the OAuth flow"Failed to refresh token"Token expired and refresh failedRe-authenticate with python3 scripts/withings.py <userId> auth"API Error Status: 401"Invalid or expired credentialsCheck your CLIENT_ID and CLIENT_SECRET, re-authenticate"API Error Status: 503"Withings API temporarily unavailableWait and retry laterEmpty dataNo measurements in the requested periodUser 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)
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: odrobnik
- Version: 1.1.2
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-05-07T17:22:31.273Z
- Expires at: 2026-05-14T17:22:31.273Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/withings-family)
- [Send to Agent page](https://openagent3.xyz/skills/withings-family/agent)
- [JSON manifest](https://openagent3.xyz/skills/withings-family/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/withings-family/agent.md)
- [Download page](https://openagent3.xyz/downloads/withings-family)