Likes Training Planner
by @chenwynn
Complete training plan solution for My Likes platform. Fetches historical data, analyzes training patterns, generates personalized plans, converts to Likes f...
clawhub install grouptraining📖 About This Skill
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.
🤖 Bot 自动路由(多Bot支持)
本Skill支持多个Telegram Bot自动路由,不同Bot有不同的专注领域:
| Bot | 角色 | 专注功能 | |-----|------|---------| | @likes_training_bot | 训练分析师 | 数据分析、反馈点评 | | @likes_traning_2_bot | 训练计划师 | 计划制定、推送日历 |
系统会自动识别当前使用的Bot,提供对应的功能和交互体验。
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
# Fetch activities (rate limit: 1 req/min, max 30 days)
node scripts/fetch_activities.cjs --days 7 --output data.jsonFetch plans for next 42 days
node scripts/fetch_plans.cjs --start 2026-03-01 --output plans.jsonFetch training feedback
node scripts/fetch_feedback.cjs --start 2026-03-01 --end 2026-03-07Fetch your training camps
node scripts/fetch_games.cjs --output camps.jsonFetch camp details and members
node scripts/fetch_game.cjs --game-id 973 --output camp_details.jsonFetch running ability (by run force or by race times)
node scripts/fetch_ability.cjs --runforce 51 --output ability.json
Step 2: Analyze
node scripts/analyze_data.cjs data.json
Output includes:
Step 3: Generate Plan
Based on analysis, create a plan:
{
"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:
node scripts/push_plans.cjs plans.json
Push to specific user(s):
node scripts/push_plans.cjs plans.json --user-ids 123
Bulk push to training camp members (coach only):
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
node scripts/fetch_activities.cjs [options]Options:
--days Number of days (default: 7, max: 30)
--start Start date (YYYY-MM-DD)
--end End date (YYYY-MM-DD, max 30 days from start)
--user-id Query specific user (coach only)
--page Page number (default: 1)
--limit Items per page (default: 200, max: 2000)
--order-by Sort: sign_date, run_km, run_time, tss
--order Sort order (default: desc)
--output Output file
fetch_ability.cjs Options
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
Optional:
--output
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 Options:
--key
Bulk Push Requirements:
game_id when using user_ids
Training Code Format (name field)
Format: task1;task2;...
Basic task: duration@(type+range)
30min@(HRR+1.0~2.0) - 30 min easy run5km@(PACE+5'00~4'30) - 5km with pace targetInterval group: {task1;task2}xN
{5min@(HRR+3.0~4.0);1min@(rest)}x3Rest: duration@(rest) (parentheses required)
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 = minutess = secondsm = meterskm = kilometersc = count/repsTraining 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.cjs2. Get camp members
node scripts/fetch_game.cjs --game-id 9733. 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.jsonReferences
API documentation: See references/api-docs.md
Code format details: See references/code-format.md
Sport-specific examples: See references/sport-examples.md Installation
bash
curl -fsSL https://gitee.com/chenyinshu/likes-training-planner/raw/main/install.sh | bash
```
💡 Examples
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周马拉松备赛计划"
⚙️ 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