exercises-dataset:1324 个动作加一个浏览器脚手架,把健身 App 后端砍到几十分钟

看到一个仓库 5 个多月涨到 2.1 万 Star,我的第一反应通常不是”又是个好项目”。健身类数据集年年都有,多一个 1324 条记录的 JSON 听起来毫无波澜。但翻完它的 README 和那两个 HTML 文件,我的判断变了。这个项目真正交付的不是一个数据集,而是一条从数据到可运行后端的完整链路。

hasaneyldrm 是土耳其的独立开发者,这个仓库 2026 年 3 月 18 日才第一次提交。它背后还挂着他自己的 LogPress,一个用 React Native 写的 AI 健身追踪 App。也就是说,exercises-dataset 本质上是 LogPress 的”数据层”被单独抽出来开源了。看清这一点,后面很多设计选择都说得通。

exercises-dataset:1324 个动作加一个浏览器脚手架,把健身 App 后端砍到几十分钟

很多人把它当成”又一个健身 JSON”随手 star,这是误读。我越来越觉得它的核心产品不是那 9.7 MB 的 exercises.json,而是 setup.html 里那段纯浏览器跑的脚手架。把数据、媒体、工具打包成一个能直接抄走的方案,这才是它和同类拉开差距的地方。

数据好看不等于能直接用。一个仓库真正的价值,得打开看、跑起来才知道门道。下面看看它实际是什么感觉,真正值钱的那块,到底藏在哪一层?

真正值钱的是哪一块

先说数据本身。1324 个动作,每个都带一张 180×180 的缩略图和一个动画 GIF,外加身体部位、器械、目标肌群、协同肌群这些结构化字段。更狠的是动作说明同时给了 10 种语言,英文、西班牙文、意大利文、土耳其文、俄文、中文、印地文、波兰文、韩文、法文,每条说明还拆成了有序的步骤数组。

这里有个细节值得停下来看。仓库早期版本只放 media_id 引用、不附带真实媒体,被社区质疑过版权。现在的版本直接把 Gym visual 授权的 180×180 缩略图和 GIF 打进 images/、videos/ 两个目录,并保留了强制署名。换句话说,你 clone 下来就能看到图,不用自己再去搞媒体源。这对想做健身内容站的人,省掉的是最头疼的一环。

但对开发者来说,真正炸裂的是 setup.html。它一个浏览器标签页里干三件事,全程在浏览器 JS 里跑完,不需要后端、不需要服务器:

  • 按数据库方言生成 CREATE TABLE 和全量 1324 条 INSERT 语句
  • 给 7 种语言的客户端生成可直接复制调用的 API 代码
  • 拼一个结构化提示词,丢给 ChatGPT 或 Claude 一次性产出完整 REST API

index.html 是另一个纯前端 SPA,搜索、三维筛选、无限滚动、点开看多语言说明,零依赖直接双击打开。再补一个 exercises.schema.json,JSON Schema 2020-12 标准,你能拿任意校验器去卡数据质量。数据、媒体、工具、校验,四块拼起来才是一个能交付的方案。

exercises-dataset:1324 个动作加一个浏览器脚手架,把健身 App 后端砍到几十分钟

上面这张图把四层关系摊开了。最底下的结构化 JSON 和 Schema 是数据基底,媒体资产层提供可视化,两个 HTML 工具负责消费和导出,最上层才是真正用数据的地方,无论是作者自己的 LogPress 还是你自建的健身后端。

对想做产品的人来说,这套分层最值钱的一点是”可替换”。数据层是标准 JSON,哪天你想换媒体源、加字段,改 exercises.json 就行,工具层不绑定任何框架。很多数据集把数据和展示焊死在一个页面里,这个没有,它把耦合留给了你,也把自由留给了你。不过上手到底顺不顺手,才是开发者真正要验证的。

上手什么感觉

最省心的一点:它几乎零安装。你不需要 npm install,不需要起服务,甚至不需要懂前端。想先看数据长什么样,直接双击 index.html,浏览器里就能搜、能筛、能翻。想拿数据进自己的项目,git clone 或者直接下载 data/exercises.json 就够了。

exercises-dataset:1324 个动作加一个浏览器脚手架,把健身 App 后端砍到几十分钟

setup.html 的接入流程就是上面这三步。第一步选数据库,SQL Server、PostgreSQL、MySQL、SQLite 四种方言自动出 DDL 和全量 INSERT;第二步选框架,Express、FastAPI、ASP.NET Core、Spring Boot、Laravel、Gin 任挑,填个 Base URL 所有客户端代码实时变;第三步把拼好的提示词交给 LLM,后端就出来了。

代码层面也很轻。下面这段就是 README 里的标准玩法,读 JSON、按部位过滤,没有任何隐藏依赖:

import json

with open("data/exercises.json""r", encoding="utf-8"as f:
    exercises = json.load(f)

chest = [ex for ex in exercises if ex["category"] == "chest"]
print(len(chest))          # 163
bodyweight = [ex for ex in exercises if ex["equipment"] == "body weight"]
print(len(bodyweight))     # 325

唯一要留意的体积问题:exercises.json 大约 9.7 MB,连同媒体目录整个仓库压缩前约 125 MB。本地跑没问题,但塞进前端打包或 Serverless 函数时要单独处理媒体,别整包传。体积只是工程细节,项目能不能长期信得过,更得看社区和维护。

什么时候用,什么时候别碰

适用和局限这种事,讲再多形容词都不如一张对照表来得直接。下面把边界划清楚,你对着看自己的需求落不落得上。

场景 典型用户 优势 局限
自建健身 App 后端 独立开发者、小团队 数据加脚手架一步到位 媒体商用需自购授权
动作识别与推荐模型 算法工程师 字段结构化、多语言 只有 180×180 图,无视频
健身内容与教学站 内容创作者 GIF 加说明直接可用 商用媒体受 Gym visual 条款约束
课程原型与演示 产品经理、学生 零依赖浏览器即开 无官方版本发布与 SLA

适合的场景很明确:你想要一个现成的动作数据层,不想自己从 ExerciseDB 之类源头慢慢扒、翻译、清洗,那就直接拿它起步。约 25% 的动作是自重训练,家庭健身类应用几乎开箱即用。

但有几类需求它接不住。你要高清大图或教学视频,180×180 的 GIF 不够看。你要印尼语、葡萄牙语这类还没覆盖的语言(Issue #69、#84 就在催),得自己补。你要官方长期维护的承诺,这个项目目前是单人驱动的静态数据集,别指望有 SLA。

媒体授权是最容易被忽略的一道坎。代码和说明文字是 MIT,但图片和 GIF 归 Gym visual,仓库只是”经授权再分发”且强制保留署名。你想把媒体用进商业产品,得自己去 Gym visual 买授权,不能靠这个仓库的许可蒙混过去。这些边界说清楚了,但还有一个更根本的问题没回答:和同类项目比,它凭什么值得你选?

社区和维护靠不靠谱

评价一个仓库健康不健康,光看 Star 数远远不够。先把硬指标摆出来,再谈观感和判断。

指标 数值 说明
Stars 21,451 截至 2026 年 9 月
Forks 2,721 fork 比约 12.7%,很多人是来搬数据的
订阅者 80 对 2 万 Star 项目偏低
开放 Issue 48 多为功能请求与授权咨询
贡献者 4 人 实质 solo,bus factor 低
最近推送 2026-07-16 距成稿约 7 周无代码提交

Star 涨得猛(早期报道 3.5 个月约 9.7k,现在翻倍出头),但贡献者只有 4 个,hasaneyldrm 自己占了绝大多数提交。这种结构意味着项目走向高度依赖一个人,哪天他停更,社区接盘的意愿和能力强不强要打问号。好在它是静态数据集,不像框架那样天天要修兼容性。

Issue 区倒是挺真实,没有刷出来的繁荣。有人问在小程序里用这些 GIF 算不算侵权(#74),有人指出 0002 号动图和文字描述对不上(#65),还有人发现浏览器用 innerHTML 直接塞动作文本、存在 XSS 隐患(#60)。这些不是水军刷的赞美,是真实用户在用自己的场景往里踩。

社区声音:用户 1024kbT 在 Issue #74 直接问,”在免费小程序里用这些 image 数据并标注来源,到底构不构成侵权?”这条提问本身就把媒体授权的模糊地带摊在了台面上。

授权之外的另一个信号是维护节奏。最近的代码推送停在 7 月中旬,但 8 月底还有人在提 Release 和加动作的请求,说明需求侧是活的。判断一个数据集健不健康,看 fork 数和真实 Issue,比看 Star 靠谱。聊完社区和维护,该下判断了,这个仓库到底值不值得跟。

我的真实判断

放到同类项目里比,位置才清楚。如果要找替代方案,最大的参照是 wger,一个 AGPL-3.0 的自托管健身管理器,Django 加 REST API,自带动作库和图片,社区通过 Weblate 做多语言,6.5k Star。它的定位是”能直接跑起来的应用”,你要的是整套系统。exercises-dataset 的定位是”数据加脚手架”,你要的是快速起步的自由。

另一个竞品是 ExerciseDB,RapidAPI 上的商业接口,1300+ 动作带动画,但订阅制、禁止缓存、禁止再分发。你付钱换来的是随时能调的 API,代价是永远被绑在它的服务上。exercises-dataset 把同样规模的数据一次性交给你,MIT 静态 dump,你拥有完整控制权,代价是自己搭后端,而 setup.html 正好把这笔搭后端的时间砍掉了大半。

exercises-dataset:1324 个动作加一个浏览器脚手架,把健身 App 后端砍到几十分钟

我的结论很直接:如果你要的是”现在就有一个动作数据层去干活”,它值得跟,而且应该立刻 clone 跑 setup.html,别自己从头造轮子。如果你要的是现成可运行的应用、或者媒体能自由商用,它接不住,去盯 wger 或自购 Gym visual 授权更实在。

坑点我替你标三处。媒体授权别想蒙混,商用必须自购。数据本身有个别错误(#65 那种图文不符),上线前自己校验一遍。浏览器工具用 innerHTML 渲染动作文本,数据虽是作者自己产出的相对安全,但你若接入外部数据就要先转义。

趋势上我偏乐观。Star 还在爬,而且它从”只有 media_id”迭代到”带真实授权媒体、扩到 10 种语言”,说明作者在认真做产品而不是丢个 JSON 就跑。静态数据集不需要频繁提交,7 周没推代码不等于凉,看 fork 和 Issue 的活跃度更有意义。

落到生产环境,我得泼点冷水。整个仓库实质 solo 维护,没有 Release、没有版本号、没有 CI 保证。你今天 clone 的数据和半年后 clone 的可能就是同一份,这既是优点,稳定可复现,也是风险,出了错没人快修。把它当可信数据源用,最好 fork 一份自己锁版本,别直接依赖主分支。

资源地址

上面这些链接就是你上手要用的全部入口。判断给完了,最后把话收到一个能直接照做的动作上,你看完就知道下一步该干嘛。

值不值得跟:看你是哪种人

一句话收口:想要动作数据层快速起步的人,现在就去 clone,跑一遍 setup.html,半天能出一个能 demo 的后端。在意媒体商用自由、或想要现成系统的人,它不适合你,wger 或自购授权更对路。

别被 2.1 万 Star 带节奏,也别被”只是个 JSON”劝退。它的价值在 setup.html 那套脚手架,不在数据条数。看清这一层,你才知道该不该把它搬进自己的项目。

开源项目

RocketRide:把 VS Code 变成 AI 管线工厂的开源引擎

2026-9-7 8:24:42

行业动态

让产品经理在Agent时代高效产出的skills和kit分享

2026-9-3 19:28:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧