Exercises Dataset 是一份面向健身App开发者的开源JSON数据集,收录1324个动作,覆盖部位、器械、目标肌群和6种语言说明。适用Web、Python、Node.js等项目,附带浏览器检索和后端生成向导,拿来做训练计划原型很省事,但不含图片/GIF素材。
🎤 引言
做健身 App 原型时,最容易卡住的不是页面,也不是登录系统,而是动作库。胸、背、腿、肩,每个部位要列哪些动作?每个动作要怎么写步骤?器械、目标肌肉、辅助肌群怎么标?如果还想做多语言版本,数据整理会直接变成体力活。
Exercises Dataset 解决的就是这个痛点。它不是一个完整健身 App,而是一份面向开发者的结构化 JSON 数据集:1324 个健身动作、10 个身体部位、12 类主流器械、6 种语言动作说明,还附带一个纯前端浏览器和 setup 向导。GitHub 当前约 10.8k Stars、1.2k Forks,项目热度非常高。
需要先说清楚一个关键点:仓库现在是数据 + 开发者向导,不打包缩略图和 GIF 动画。README 已经明确说明媒体素材因为权属争议不再随仓库分发,每条记录只保留 media_id。如果项目需要商用素材,这一点必须提前评估。
⭐ 核心功能
1324 条结构化动作数据
主数据文件是 data/exercises.json,格式非常直接:一个 JSON 数组,每条记录就是一个动作。字段包含 id、name、category、body_part、equipment、target、muscle_group、secondary_muscles、instructions、media_id 等。
官方 README 给出的分类统计很实用:
| 部位 | 动作数量 |
|---|---|
| Upper Arms | 292 |
| Upper Legs | 227 |
| Back | 203 |
| Waist | 169 |
| Chest | 163 |
| Shoulders | 143 |
| Lower Legs | 59 |
| Lower Arms | 37 |
| Cardio | 29 |
| Neck | 2 |
比如做一个训练计划 App,可以直接按 category 做部位筛选,按 equipment 做器械筛选,按 target 做目标肌群标签。对独立开发者来说,这比从零手动整理动作表轻松太多。
6 种语言动作说明
每个动作的 instructions 字段包含 en、es、it、tr、ru、zh 六种语言。也就是说,如果项目要做国际化,不需要先花时间把英文动作教程翻译成中文、西班牙语或俄语。
这个设计很适合两类场景:一类是跨境健身内容产品,比如英文 + 中文双语动作库;另一类是 AI/LLM 原型,比如把动作说明喂给模型生成训练计划、康复建议或问答助手。数据字段已经足够规整,后面接 RAG 或搜索索引都很顺手。
纯前端浏览器和 setup 向导
仓库里还有两个 HTML 文件:
index.html:本地直接打开即可浏览动作库,支持搜索、按部位/器械/目标肌肉筛选、无限滚动和详情页。setup.html:开发者集成向导,可生成数据库建表 SQL、API 调用示例和 LLM 提示词。
setup.html 这一点比较有意思。它不是简单写一段 README,而是把 SQL Server、PostgreSQL、MySQL、SQLite 的建表和 INSERT 生成逻辑做进浏览器里,还提供 JavaScript、Python、C#、Java、PHP、Go、cURL 示例。小团队要搭一个后端动作库,可以少写不少胶水代码。
📥 安装使用
这个项目不需要复杂部署。最简单的方式就是 clone 仓库,然后读取 JSON 文件:
git clone https://github.com/hasaneyldrm/exercises-dataset.git
cd exercises-datasetPython 里可以这样筛选胸部动作和自重训练:
import json
from pathlib import Path
with Path("data/exercises.json").open("r", encoding="utf-8") as f:
exercises = json.load(f)
print(f"Total exercises: {len(exercises)}")
chest = [x for x in exercises if x["category"] == "chest"]
bodyweight = [x for x in exercises if x["equipment"] == "body weight"]
print(f"Chest exercises: {len(chest)}")
print(f"Bodyweight exercises: {len(bodyweight)}")
sample = bodyweight[0]
print(sample["name"])
print(sample["instructions"]["zh"])Node.js 项目也很直接:
const exercises = require("./data/exercises.json");
const byCategory = exercises.reduce((acc, item) => {
const key = item.category;
acc[key] = acc[key] || [];
acc[key].push(item);
return acc;
}, {});
console.log("upper arms:", byCategory["upper arms"].length);
console.log("first zh instruction:", exercises[0].instructions.zh);如果想快速看数据长什么样,直接在浏览器打开 index.html。界面有搜索框、筛选按钮、动作卡片和详情弹窗,虽然没有图片/GIF,但用来检查字段、验证筛选逻辑、给产品经理演示原型已经够用。
🎯 适用场景
健身 App / 小程序原型
比如要做一个「居家训练计划」小程序,最小闭环可以是:选择目标部位 → 选择器械条件 → 返回动作列表 → 展示中文步骤。Exercises Dataset 里 325 个自重动作 很适合居家训练,Dumbbell、Cable、Barbell 等器械字段也能覆盖健身房场景。
AI 训练计划生成器
如果要做一个 AI 私教,可以把 category、target、equipment 作为检索条件,把 instructions.zh 作为动作说明,再结合用户目标生成训练计划。数据本身不是医学建议,但作为演示、教育和原型数据很合适。
数据分析和课程内容整理
研究健身内容分布时,也可以直接用 Pandas 做统计:哪个部位动作最多,哪类器械覆盖最广,哪些目标肌肉缺动作。比如官方统计里 Upper Arms 有 292 个动作,Neck 只有 2 个动作,这种不均衡在产品设计时就要考虑推荐策略。
🔍 对比/替代方案
| 方案 | 优点 | 局限 |
|---|---|---|
| Exercises Dataset | JSON 开箱即用,1324 条动作,6 语言说明,适合本地原型 | 不含图片/GIF,许可和媒体权属需自行评估 |
| ExerciseDB API | 有官方数据接口和媒体 CDN 线索 | API/条款依赖外部服务,商用前要看清授权 |
| Kaggle 健身数据集 | 数据集选择多,适合分析实验 | 字段结构不一定统一,中文说明通常缺失 |
| 自己整理动作库 | 字段、版权、内容完全可控 | 成本高,动作说明和多语言翻译很费时间 |
Exercises Dataset 最大优势是省时间:JSON 文件拿来就能跑,字段也足够贴近真实健身产品。缺点也很明确:它不是一个完整内容资产包,尤其不提供动作图片和 GIF。对只做数据原型、课程分类、AI Demo 的项目,这是优点;对要直接上线商用健身 App 的项目,就不能偷懒。
⚠️ 注意事项
媒体素材不在仓库内
README 里多次强调,image 和 gif_url 字段为 null,每条记录只保留 media_id。如果界面要展示动作动画,需要自己准备素材,或者确认对应 CDN 和素材授权。不要看到早期介绍里写有图片/GIF,就默认当前仓库还能直接拿来用。
许可证信息不明确
GitHub API 当前没有返回明确 license 字段。README 也提示基础数据来自 ExerciseDB v1,并建议复用前查看相关条款。用于学习、研究、内部原型问题不大;如果要做公开商业产品,建议先做一次数据和媒体权属审查。
数据不是专业医疗建议
动作说明适合做教育展示,但不能替代教练、医生或康复师建议。比如深蹲、硬拉、卧推这类动作,错误姿势风险很高。产品上线时最好加入风险提示、禁忌说明和用户确认机制。
字段命名需要二次封装
category 和 body_part 当前语义接近,前端展示时可能要统一成中文枚举;equipment、target 也建议做一层映射表,不要直接把英文原字段暴露给中文用户。比如 body weight 可以显示为「自重」,upper arms 显示为「上臂」。
✅ 总结
Exercises Dataset 的定位很清晰:它不是健身 App 成品,也不是素材图库,而是一份开发者友好的健身动作结构化数据底座。1324 条动作、6 种语言说明、JSON 文件、前端浏览器、数据库/API/LLM 向导,这几件东西组合在一起,足够支撑一个训练计划产品的早期原型。
推荐指数:4/5。
适合:健身 App 原型、训练计划生成器、运动课程分类、AI 私教 Demo、数据分析实验。
不适合:想直接拿图片/GIF 上线的商业健身 App,或对版权链路要求极高的内容平台。
如果你正在做运动健康类小项目,可以先把 GitHub 仓库 clone 下来,跑一遍 index.html 和 setup.html。只要接受「媒体素材自己解决」这个前提,它确实是一块挺省事的基础砖。