Skip to content
Back to skills

Likes Training Planner

DSecurity

Complete training plan solution for My Likes platform. Fetches historical data, analyzes training patterns, generates personalized plans, converts to Likes format, and pushes to calendar. All-in-one skill for running, cycling, swimming, and strength training.

  • 33 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 5, 2026
documentationgobashnodegitapidocumentation

Works with

  • cli
  • api

Security analysis

D42/100
  • criticalPipes output to a shell interpreter
  • mediumUses curl or wget to download content
  • criticalDownloads and executes remote scripts — classic supply chain attack

Pro scans all 20 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add dvcrn/openclaw-skills-marketplace --skill likes-training-planner --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Likes Training Planner?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Likes Training Planner
[![Security: D — Skills Directory](https://www.skillsdirectory.com/api/skills/dvcrn-likes-training-planner-openclaw-skills-marketplace/badge)](https://www.skillsdirectory.com/skills/dvcrn-likes-training-planner-openclaw-skills-marketplace)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: likes-training-planner
description: Complete training plan solution for My Likes platform. Fetches historical data, analyzes training patterns, generates personalized plans, converts to Likes format, and pushes to calendar. All-in-one skill for running, cycling, swimming, and strength training.
metadata:
  {
    "openclaw":
      {
        "emoji": "🏃",
        "requires": { "env": ["LIKES_API_KEY"] },
        "primaryEnv": "LIKES_API_KEY",
      },
  }
---

# Likes Training Planner

Complete training plan solution for My Likes platform. **One skill does it all**: fetch data → analyze → generate → push.

## Quick Start

### 1. Configure API Key

**OpenClaw Skill Center (Recommended):**
1. Open http://127.0.0.1:18789 → Skills
2. Find "likes-training-planner" 🏃
3. Click Configure, enter your Likes API Key
4. Save

Get API Key: https://my.likes.com.cn → 设置 → API 文档

### 2. Use the Skill

Just ask:
> "分析我过去30天的运动数据"
> 
> "根据我的记录,生成下周的训练计划"
> 
> "帮我制定一个8周马拉松备赛计划"

## Complete Workflow

### Step 1: Fetch Data

```bash
# Fetch activities (rate limit: 1 req/min, max 30 days)
node scripts/fetch_activities.cjs --days 7 --output data.json

# Fetch plans for next 42 days
node scripts/fetch_plans.cjs --start 2026-03-01 --output plans.json

# Fetch training feedback
node scripts/fetch_feedback.cjs --start 2026-03-01 --end 2026-03-07

# Fetch your training camps
node scripts/fetch_games.cjs --output camps.json

# Fetch camp details and members
node scripts/fetch_game.cjs --game-id 973 --output camp_details.json

# Fetch running ability (by run force or by race times)
node scripts/fetch_ability.cjs --runforce 51 --output ability.json
```

### Step 2: Analyze

```bash
node scripts/analyze_data.cjs data.json
```

Output includes:
- Total runs, distance, time
- Average pace, frequency
- Training characteristics
- Personalized recommendations

### Step 3: Generate Plan

Based on analysis, create a plan:
```json
{
  "plans": [
    {
      "name": "40min@(HRR+1.0~2.0)",
      "title": "轻松有氧跑",
      "start": "2026-03-10",
      "weight": "q3",
      "type": "qingsong",
      "sports": 1,
      "description": "根据近期数据,保持有氧基础"
    }
  ]
}
```

### Step 4: Push to Calendar

**Push to yourself:**
```bash
node scripts/push_plans.cjs plans.json
```

**Push to specific user(s):**
```bash
node scripts/push_plans.cjs plans.json --user-ids 123
```

**Bulk push to training camp members (coach only):**
```bash
node scripts/push_plans.cjs plans.json --game-id 973 --user-ids "4,5,6"
```

## API Scripts Reference

| Script | Purpose | Rate Limit |
|--------|---------|------------|
| `fetch_activities.cjs` | Download training history | 1 req/min, max 30 days |
| `fetch_plans.cjs` | Get calendar plans (42 days) | Standard |
| `fetch_feedback.cjs` | Get training feedback | Standard |
| `fetch_games.cjs` | List your training camps | Standard |
| `fetch_game.cjs` | Get camp details & members | Coach only |
| `fetch_ability.cjs` | Get run force, predicted times & pace zones (or estimate from race times) | Standard |
| `analyze_data.cjs` | Analyze patterns | N/A |
| `push_plans.cjs` | Push plans (supports bulk) | Standard |
| `configure.cjs` | Interactive setup | N/A |
| `set-config.cjs` | Quick config setter | N/A |

## fetch_activities.cjs Options

```bash
node scripts/fetch_activities.cjs [options]

Options:
  --days <n>        Number of days (default: 7, max: 30)
  --start <date>    Start date (YYYY-MM-DD)
  --end <date>      End date (YYYY-MM-DD, max 30 days from start)
  --user-id <id>    Query specific user (coach only)
  --page <n>        Page number (default: 1)
  --limit <n>       Items per page (default: 200, max: 2000)
  --order-by <field> Sort: sign_date, run_km, run_time, tss
  --order <asc|desc> Sort order (default: desc)
  --output <file>   Output file
```

## fetch_ability.cjs Options

```bash
node scripts/fetch_ability.cjs [options]
```

Mode 1 — by run force (get predicted times and pace zones):
  --runforce <0-99>   Ability value, e.g. 50 or 50.5 (required for mode 1)
  --celsius <0-40>   Optional. Temperature in Celsius, default 6

Mode 2 — by race times (get estimated run force, at least one required):
  --time-5km <sec|M:SS|H:MM:SS>
  --time-10km, --time-hm, --time-fm, --time-3km, --time-mile   Same format

Optional:
  --output <file>   Output file (default: stdout)
  --key <api_key>   Override API key

Examples:
  node scripts/fetch_ability.cjs --runforce 51
  node scripts/fetch_ability.cjs --time-5km 32:28 --time-10km 1:07:20 --output ability.json
```

## push_plans.cjs Options

```bash
node scripts/push_plans.cjs <plans.json> [options]

Options:
  --key <api_key>    Use specific API key
  --game-id <id>     Training camp ID (for bulk push)
  --user-ids <ids>   Comma-separated user IDs (e.g., "4,5,6")
  --dry-run          Preview without pushing
```

**Bulk Push Requirements:**
- Must provide `game_id` when using `user_ids`
- You must be creator or coach of the camp
- All user_ids must be camp members
- Max 200 plans per request

## Training Code Format (name field)

Format: `task1;task2;...`

**Basic task**: `duration@(type+range)`
- `30min@(HRR+1.0~2.0)` - 30 min easy run
- `5km@(PACE+5'00~4'30)` - 5km with pace target

**Interval group**: `{task1;task2}xN`
- Example: `{5min@(HRR+3.0~4.0);1min@(rest)}x3`

**Rest**: `duration@(rest)` (parentheses required)
- Example: `2min@(rest)`

### Intensity Types

| Type | Description | Example |
|------|-------------|---------|
| HRR | Heart rate reserve % | `HRR+1.0~2.0` |
| VDOT | VDOT pace zone | `VDOT+4.0~5.0` |
| PACE | Absolute pace (min'sec) | `PACE+5'30~4'50` |
| t/ | Threshold pace % | `t/0.88~0.99` |
| MHR | Max heart rate % | `MHR+0.85~0.95` |
| LTHR | Lactate threshold HR % | `LTHR+1.0~1.05` |
| EFFORT | Perceived effort | `EFFORT+0.8~1.0` |
| FTP | Power % (cycling) | `FTP+0.75~0.85` |
| CP | Absolute power W | `CP+200~240` |
| CSS | Critical swim speed % | `CSS+0.95~1.05` |
| TSP | Threshold swim pace % | `TSP+0.95~1.05` |
| OPEN | Open-ended | `OPEN+1` |

### Duration Units

- `min` = minutes
- `s` = seconds
- `m` = meters
- `km` = kilometers
- `c` = count/reps

## Training Type Mapping

| Type Code | Description |
|-----------|-------------|
| qingsong | Easy run |
| xiuxi | Rest day |
| e | Aerobic training |
| lsd | Long slow distance |
| m | Marathon pace |
| t | Threshold/lactate training |
| i | Interval training |
| r | Speed/repetition |
| ft | Fartlek |
| com | Combined workout |
| ch | Variable pace |
| jili | Strength training |
| max | Max HR test |
| drift | Aerobic stability test |
| other | Other |
| 1/7/2/3/4/5/6 | 1.6km/2km/3km/5km/10km/HM/FM test |

## Intensity Weights

| Weight | Color | Description |
|--------|-------|-------------|
| q1 | Red | High intensity |
| q2 | Orange | Medium intensity |
| q3 | Green | Low intensity |
| xuanxiu | Blue | Optional/recovery |

## Example Usage

### Coach: Bulk Push to Camp Members

```bash
# 1. Get your camps
node scripts/fetch_games.cjs

# 2. Get camp members
node scripts/fetch_game.cjs --game-id 973

# 3. Create plan for members
# ... edit plan.json ...

# 4. Bulk push to specific members
node scripts/push_plans.cjs plan.json --game-id 973 --user-ids "4,5,6"
```

### Analyze and Generate in One Go

```bash
# Fetch and analyze
cd /opt/homebrew/lib/node_modules/openclaw/skills/likes-training-planner
node scripts/fetch_activities.cjs --days 14 | node scripts/analyze_data.cjs
```

## Configuration

### Priority (highest to lowest):
1. Command line `--key`
2. Environment variable `LIKES_API_KEY`
3. OpenClaw config: `skills.likes-training-planner.apiKey`
4. User config: `~/.openclaw/likes-training-planner.json`

## References

- **API documentation**: See [references/api-docs.md](references/api-docs.md)
- **Code format details**: See [references/code-format.md](references/code-format.md)
- **Sport-specific examples**: See [references/sport-examples.md](references/sport-examples.md)

## Installation

```bash
curl -fsSL https://raw.githubusercontent.com/chenwynn/likes-training-planner/main/install.sh | bash
```

Files in this skill

  • SKILL.md8 KB
  • references/api-docs.md11.8 KB
  • references/code-format.md4.2 KB
  • references/sport-examples.md6.5 KB
  • scripts/add_feedback_comment.cjs5.3 KB
  • scripts/analyze_data.cjs4.5 KB
  • scripts/bot-config.cjs5 KB
  • scripts/bot-router.js2 KB
  • scripts/configure.cjs2.2 KB
  • scripts/fetch_ability.cjs8 KB
  • scripts/fetch_activities.cjs8.4 KB
  • scripts/fetch_feedback.cjs7.1 KB
  • scripts/fetch_game.cjs5.2 KB
  • scripts/fetch_games.cjs4.7 KB
  • scripts/fetch_plans.cjs4.6 KB
  • scripts/get_activity_detail.cjs5.8 KB
  • scripts/preview_plan.cjs5.5 KB
  • scripts/push_plans.cjs10.4 KB
  • scripts/push_plans.js3.3 KB
  • scripts/push_plans.sh529 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…