【免费下载链接】workout-guide
302 open exercise illustrations and a framework-neutral npm package by Bryl Lim
workout-guide 是一个框架无关的开源 npm 包(@bryllim/workout-guide),核心是一份包含302 个健身动作元数据的 manifest.json,覆盖 17 类器械、20 个主肌群,每个动作附带 3 帧 512×512 的动作插画(共 906 帧)。这篇文章带你逐字段读懂这份动作元数据清单,帮你在健身 App、训练计划工具或动作检索功能中直接复用这套 workout 动作数据。
一、manifest.json 是什么?整体结构一眼看懂
整个包的数据灵魂就是这一个文件:
[ { "id": "exercise-bench-press", "slug": "bench-press", "name": "Bench Press", "exerciseType": "weight_reps", "equipment": "Barbell", "primaryMuscle": "Chest", "secondaryMuscles": ["Triceps", "Shoulders"], "isStretch": false, "frames": [ ... 3 帧 ... ], "attribution": { ... } }, ... ]顶层是一个长度为 302 的 JSON 数组,每个元素是一个动作对象,字段高度统一。项目里还有自动化校验脚本 validate-catalog.mjs,它会强制检查:数量必须恰好是 302 条、id 与 slug 全局唯一、每个动作必须有 3 帧、每帧必须是带透明通道的 512×512 SVG。数据质量有脚本兜底,你可以放心消费。
卧推(Bench Press)动作插画:equipment 为 Barbell、primaryMuscle 为 Chest
二、动作标识三字段:id / slug / name
| 字段 | 示例 | 用途建议 |
|---|---|---|
id | exercise-bench-press | 包内唯一标识,带exercise-前缀,适合做数据库主键 |
slug | bench-press | 短横线分隔的小写形式,适合做 URL、路由和 CDN 资源路径 |
name | Bench Press | 展示给用户看的英文名称 |
npm 包提供的getExercise()同时支持按 id 或 slug 查询(见 index.ts),查不到时返回null,使用上很省心。
三、exerciseType:5 种训练类型字段完全对照
exerciseType决定了一个动作"怎么计数",只有 5 个枚举值:
| 枚举值 | 数量 | 计数方式 | 典型例子 |
|---|---|---|---|
weight_reps | 136 | 负重 + 次数 | 卧推、硬拉 |
bodyweight_reps | 114 | 自重 + 次数 | 俯卧撑、深蹲 |
duration | 39 | 按时间 | 平板支撑、死挂 |
distance_duration | 10 | 按距离/时间 | 跑步、骑行 |
assisted_bodyweight | 3 | 器械辅助自重 | 辅助引体、辅助双杠臂屈伸 |
做训练计划时,前两类展示"组 × 次",duration展示"组 × 秒",distance_duration则展示时长或里程——一个字段就能驱动整套 UI 逻辑。
壶铃摆荡:weight_reps 类型的典型动作插画
四、equipment:17 类器械字段的分布参考
equipment是单一字符串字段(不是数组),共 17 个取值,分布非常集中:
| 器械 | 动作数 | 器械 | 动作数 |
|---|---|---|---|
| Bodyweight(自重) | 111 | Cable(绳索) | 26 |
| Dumbbell(哑铃) | 45 | Cardio(有氧器械) | 13 |
| Machine(综合器械) | 35 | Pull-up Bar(引体杆) | 7 |
| Barbell(杠铃) | 29 | Wall / Towel / Bench 等 | 各 1~3 |
| Resistance Band(弹力带) | 19 | Kettlebell / Box / Doorway 等 | 各 2 |
超过六成的动作只需自重和哑铃,这说明该数据集天然适合家用健身房与徒手训练场景。按"我只有一对哑铃"筛出 45 个动作,就是searchExercises('', { equipment: 'Dumbbell' })一条调用的事。
高脚杯深蹲:equipment 为 Dumbbell 的动作示例
五、primaryMuscle 与 secondaryMuscles:肌群标签怎么用
主肌群primaryMuscle有20 个取值,动作数 Top 6:
- Core(核心)45 个、Glutes(臀)38 个、Quads(股四头肌)35 个
- Chest(胸)26 个、Shoulders(肩)22 个、Back(背)19 个
其余还包括 Hamstrings、Lats、Legs、Biceps、Triceps、Calves、Forearms、Upper Back、Rear Delts、Lower Back、Hips、Posterior Chain、Adductors、Mobility 等。
secondaryMuscles是辅肌群字符串数组,共出现 22 种取值。统计下来被引用最多的是:Core(96 次)、Shoulders(80 次)、Glutes(63 次)、Hamstrings(50 次)——一眼就能看出这份元数据对动作复合性的刻画很细。
isStretch布尔字段单独标出了 14 个拉伸动作(如 cat-cow-stretch、hamstring-stretch),无需靠字符串猜。
引体向上:primaryMuscle 为 Lats、辅肌群含 Biceps 的背肌训练代表动作
六、frames 与 attribution:插画帧和资源授权字段
每个动作固定 3 帧(index: 1/2/3),每帧结构:
{ "index": 1, "path": "assets/bench-press/frame-1.svg", "width": 512, "height": 512, "format": "svg", "attribution": { "creator": "Bryl Lim", "license": "CC BY-SA 4.0", "source": { "name": "Everkinetic", "changes": "..." } } }三个要点:
- 双格式资产:仓库中每个动作目录同时提供 SVG 与 PNG 两种帧文件(如 assets/bench-press/),manifest 指向 SVG,PNG 作为位图兜底;
- 溯源字段:来自 Everkinetic 的 76 个首帧姿态在
attribution.source里保留了原始出处与修改说明,这是商用时规避授权风险的关键字段; - 授权清晰:代码 MIT、图片 CC BY-SA 4.0,详见 LICENSES.md 与 ATTRIBUTION.md。
硬拉动作帧:每个动作均含 3 张这样的序列帧插画
七、把元数据用起来:搜索、过滤与 CDN 地址
包导出 4 个核心 API(src/index.ts),全部直接构建在 manifest 之上:
exercises:完整的 302 条元数据数组;getExercise(idOrSlug):按 id 或 slug 精确查找;searchExercises(query, filters):关键词 + 结构化过滤,filters支持equipment、primaryMuscle、exerciseType、isStretch四个维度,且匹配时会自动做小写化、去音调、&转and等归一化;getAssetUrl(slug, frameIndex):生成指定帧的 CDN 地址,可自定义baseUrl与版本号,也可本地导入资源。
import { searchExercises, getAssetUrl } from '@bryllim/workout-guide'; // 哑铃肩部推举 searchExercises('press', { equipment: 'Dumbbell', primaryMuscle: 'Shoulders' }); // 第 2 帧插画地址 getAssetUrl('push-up', 2);测试用例 catalog.test.ts 完整演示了以上用法,是最佳"字段用法参考"。
辅助引体:exerciseType 为 assisted_bodyweight 的少数动作之一
八、结语:一份可以直接入库的动作元数据
总结这份 manifest 的价值:302 个动作 × 6 个核心字段(类型/器械/主辅肌群/拉伸标记)× 906 帧透明插画,字段枚举封闭、命名统一、带授权溯源,并且有校验脚本和测试用例双重保证。无论是做动作检索、按肌群生成训练计划,还是按器械筛选家用动作,它都是一份开箱即用的元数据参考。安装@bryllim/workout-guide后,从searchExercises开始就能跑通第一个功能。
【免费下载链接】workout-guide
302 open exercise illustrations and a framework-neutral npm package by Bryl Lim
相关推荐
如何在302个动作中快速找到最合适的那一个:workout-guide搜索与过滤技巧详解
如何在302个动作中快速找到最合适的那一个:workout guide搜索与过滤技巧详解 workout guide 是一个包含 302 个开源健身动作插画的免
LLM Architecture Gallery 数据字典:models.yml 全字段完整参考清单
LLM Architecture Gallery 数据字典:models.yml 全字段完整参考清单 本文是 LLM Architecture Gallery
5步搞定视频号视频解密下载:res-downloader 快速上手指南
5步搞定视频号视频解密下载:res downloader 快速上手指南 上次把一段视频号视频存到本地,播放器一拖进去就雪花屏,重下三遍都一样。问题出在平台对视频
桌面应用网络音视频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考