核心问题: 目录内容是否足够新?JSON 结构是否包含你的项目所需的字段?
RepoDaily 采用评分
RepoDaily 将该项目的采用分评为 89/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。
包含 4 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。
检测到 6 个工作流步骤、5 个下一步动作,以及 4 个命令/安装信号。
趋势热度为 +334 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。
采纳风险标记为 low,并包含 4 条安全说明与 4 条跳过条件。
3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。
文章中包含许可证来源或许可证表述。
文章正文和元数据中检测到 0 个 AI/Agent 相关信号。
项目概览
awesome-mac 是由 Kenny Wang(jaywcjlove)维护的 macOS 软件精选目录,以单一 Markdown 文档形式编写,并发布为结构化 JSON 数据。仓库将数百款应用按开发者工具、设计软件、生产力工具、媒体应用等类别进行组织。与普通静态 Wiki 页面不同,该项目将 Markdown 源文件构建为机器可读的 JSON 文件,通过 npm 包(版本 2.1.0)发布,使目录数据可被网站、机器人和其他工具直接消费,无需抓取 HTML。
package.json 定义了四个 JSON 导出目标:英文(dist/awesome-mac.json)、韩文(dist/awesome-mac.ko.json)、日文(dist/awesome-mac.ja.json)和中文(dist/awesome-mac.zh.json),均可通过 Node.js 模块命名的子路径导入——awesome-mac/ko、awesome-mac/ja、awesome-mac/zh。构建流程使用 idoc(^1.26.5)生成文档站点,remark(^14.0.2)配合 remark-gfm(^3.0.1)解析 Markdown,自定义脚本 build/ast.mjs 将解析后的 AST 转换为最终 JSON 对象。另外还存在 build/feed.mjs 脚本用于生成订阅源。
项目包含一个基于 lipanski/docker-static-website 的极简 Dockerfile,将 dist 目录复制到静态文件服务器中,实现零运行时依赖的容器化托管。README 头部展示了赞助商链接——getapps.cafe、ScreenSage Pro、LIZHI.SHOP、IP.IM——以及维护者自己开发的 macOS 应用推广徽章,包括 Zipora(压缩解压)、Scap(截图标注)、DockLift、Vidwall、Mousio、Musicer 等。这些推广内容位于目录正文之上,对每位读者可见。
2026 年 8 月 12 日,该仓库以 334 个周期新增 Star 位列趋势榜第 17 名。项目涵盖 macos、macos-apps、awesome-list、desktop-app、software 等主题,兼具社区参考和数据包双重身份。LICENSE 文件声明 CC0 1.0 Universal(公共领域 dedication),但 package.json 中 license 字段却设为 CC-BY-SA-4.0——商业再分发 JSON 数据前需先厘清这一矛盾。
为什么现在变热
- 2026-08-12 周期新增 334 Star,趋势榜第 17 名,反映社区对 macOS 应用发现工具的持续关注。
- 四语言 JSON 导出(英、中、韩、日)使目录数据可被国际化工具直接消费,而不限于英语读者。
- npm 包版本 2.1.0,开发者可在 JavaScript 项目中直接 import 目录数据,无需解析 Markdown 或抓取网页。
- 基于 lipanski/docker-static-website 的 Docker 部署方案可一键托管,镜像体积极小。
- 项目同时服务两类受众——浏览应用的用户和消费结构化数据的开发者——这一组合在 awesome-list 中并不多见。
解决什么问题
- 许可证冲突:LICENSE 文件声明 CC0 1.0 Universal(公共领域),但 package.json 中 license 字段为 CC-BY-SA-4.0,再分发 JSON 数据前需确认适用条款。
- README 头部将赞助商广告(getapps.cafe、LIZHI.SHOP、IP.IM、ScreenSage Pro)和维护者自有商业应用与精选目录混排,可能影响目录的编辑中立性。
- 缺少质量评分、用户评级、价格信息或单条目的最后更新时间戳——目录是一个扁平列表,无法检测条目是否过期。
- 目录内容依赖社区 Pull Request 更新;已停止维护、转为付费或已下架的应用可能在列表中残留而无人标注。
- GitHub 上标注的语言为 Swift 具有误导性——仓库实际包含的是 Markdown、JavaScript 构建脚本和 JSON,无 Swift 源码。
工作原理
- 内容以单一 Markdown 文件(README.md)编写,按分类段落组织应用名称、描述和链接。
- 运行 `npm run build` 调用 idoc(^1.26.5)在 dist 目录生成文档站点。
- 运行 `npm run create:ast`(build/ast.mjs)使用 remark(^14.0.2)和 remark-gfm(^3.0.1)解析 Markdown,将条目提取为结构化 JSON 对象并保存为 dist/awesome-mac.json 及各语言变体。
- 运行 `npm run feed`(build/feed.mjs)从解析后的目录数据生成订阅源。
- 生成的 JSON 文件通过 npm 包发布,提供英文(默认)、韩文(/ko)、日文(/ja)、中文(/zh)的命名导出。
- Dockerfile 将 dist 目录复制到 lipanski/docker-static-website 中,实现渲染站点的容器化静态托管。
产品演示与界面预览


如何获取和使用目录数据
- npm 包:安装 `awesome-mac` 后通过 `import data from 'awesome-mac'` 或子路径 `import zhData from 'awesome-mac/zh'` 导入 JSON,导出路径由 package.json exports 字段定义。
- 直接下载:从仓库直接获取 dist/awesome-mac.json(或 .ko.json、.ja.json、.zh.json),无需安装任何包。
- 在线浏览:访问主页 https://git.io/macx 查看渲染后的静态站点。
- Docker 自托管:使用仓库中的 Dockerfile 构建镜像,dist 目录会被复制到 lipanski/docker-static-website 中。
- 从源码构建:克隆仓库后运行 `npm install && npm run start`,该命令会依次执行 idoc 构建和 AST 转 JSON。
许可证与维护风险
- LICENSE 文件:声明 CC0 1.0 Universal,在法律允许的最大范围内放弃所有版权和相关权利。
- package.json license 字段:设为 CC-BY-SA-4.0,要求署名和相同方式共享——与 CC0 声明直接冲突。
- 构建工具依赖:idoc ^1.26.5、remark ^14.0.2、remark-gfm ^3.0.1、fs-extra ^10.1.0、to-vfile ^7.2.3,均锁定主版本。
- 源包中未发现 CI/CD 配置;构建看起来是手动 npm 脚本调用。
- 条目新鲜度完全依赖社区 Pull Request,没有自动化的死链检测或已弃用应用检查。
与同类项目的对比
- Homebrew homebrew-cask:面向自动化的 Mac 应用命令行安装器,不是浏览发现目录——安装应用但不提供描述或分类推荐。
- sindresorhus/awesome:覆盖全主题的 awesome-list 上游仓库,但没有 macOS 专用 JSON 分发或多语言导出。
- AlternativeTo:提供用户评分和跨平台替代方案的 Web 服务,但不提供结构化 JSON 导出。
- Setapp:精选 Mac 应用的付费订阅套装——商业产品,不是开放目录数据集。
集成前检查清单
- 确认你计划再分发的 JSON 文件受哪个许可证(CC0 或 CC-BY-SA-4.0)约束,尤其是商业用途。
- 检查 dist/awesome-mac.json 的条目结构——字段名、嵌套层级、分类组织方式——再编写消费代码。
- 验证你需要的语言导出(en、zh、ko、ja)包含实质性翻译内容,而非英语回退。
- 查看最近的 git 提交记录,区分内容更新(而非仅构建或依赖升级),评估条目新增和更新的频率。
- 从与你项目相关的分类中抽查 10 个条目,确认链接有效且应用描述与当前实际情况一致。
谁适合关注
适合关注
- 想要一个按类别组织的 macOS 应用参考目录,免去在 App Store 搜索结果中翻页的用户。
- 正在构建 macOS 应用目录、比较网站或推荐引擎,需要结构化 JSON 输入的开发者。
- 受益于中文、日文或韩文 JSON 导出而非仅限英语目录的国际化用户。
- 维护内部推荐软件清单、需要一个带分类结构的 CC0 许可模板的团队。
可以先跳过
- Linux 或 Windows 用户——目录仅收录 macOS 应用,无跨平台条目。
- 需要质量评分、下载量、版本数据或价格信息的项目——目录仅提供名称、链接和简要描述。
- 需要保证条目新鲜度或有自动化过期提醒的场景——目录中无单条目的最后验证时间元数据。
- 对赞助密集型 README 布局敏感的读者——getapps.cafe、LIZHI.SHOP 和维护者自有应用的推广内容显著置于页面顶部。
风险与注意事项
目录是一个公开数据集,无需运维运行时服务;主要关注点在于 LICENSE 文件 CC0 与 package.json CC-BY-SA-4.0 之间的许可证冲突。
- LICENSE 文件(CC0 1.0)与 package.json(CC-BY-SA-4.0)的许可证不匹配,对 JSON 数据的商业再分发造成不确定性。
- 无自动化的新鲜度检查或单条目过期元数据——过时条目可能在无人注意的情况下长期存在。
- README 头部的赞助商内容和维护者自有应用可能引入收录选择上的偏见。
- npm 包依赖构建时工具链(idoc、remark、fs-extra),但消费者只需导入生成的 JSON,运行时风险极低。
- 源包中未发现 CI/CD 配置,构建和发布依赖维护者手动操作。
- 目录是静态数据集(Markdown 和 JSON);不存在运行时服务、身份认证系统或网络 API 可供攻击。
- Docker 镜像基于 lipanski/docker-static-website,一个无应用逻辑或动态请求处理的极简静态文件服务器。
- 消费方在将 JSON 中的应用链接渲染到用户可见界面前,应验证这些 URL 指向合法的厂商网站。
- npm 包的主导出是 JSON 文件(dist/awesome-mac.json)而非可执行 JavaScript,降低了消费方的供应链攻击面。
替代方案比较
| 方案 | 适用场景 | 代价 |
|---|---|---|
Homebrew homebrew-cask | 需要通过命令行安装和版本管理 macOS 应用,而非浏览发现目录。 | 免费 / 开源 |
sindresorhus/awesome | 需要覆盖全主题的 awesome-list 格式而非仅 macOS,且不需要 JSON 分发。 | 免费 / CC0 |
AlternativeTo | 需要用户评分、跨平台替代方案和带搜索功能的 Web 界面。 | 免费(Web 服务) |
Setapp | 需要以商业产品形式交付的精选 Mac 应用订阅套装,而非开放目录。 | 付费订阅 |
这个趋势说明了什么
基于 JSON 构建 macOS 应用比较工具
四种语言的 JSON 导出包含应用名称、描述、分类和链接,可用于比较或推荐引擎的数据源。结合 Mac App Store API 的价格数据,可产出比扁平目录更丰富的产品。
检查 dist/awesome-mac.json 确认条目结构包含足够字段(名称、描述、分类、URL),再编写消费代码。
生成本地化的 macOS 入职指南
en、zh、ko、ja 四语言 JSON 导出可按语言生成新员工或社区成员的设置指南,无需手动翻译。分类结构天然适合作为指南文档的章节标题。
抽查 zh、ko、ja JSON 文件确认包含翻译后的描述内容,而非英语回退,尤其是与你受众相关的分类。
结合 Homebrew Cask 自动化应用安装
将目录 JSON 与 Homebrew Cask formula 交叉比对,生成按分类安装精选应用的自动化脚本——例如一条命令安装所有开发者工具或设计应用。
将 dist/awesome-mac.json 中的应用名称与 Homebrew Cask cask 名称比对,计算重合比例后再投入脚本开发。
RepoDaily 判断
awesome-mac 通过 npm 包发布四种语言的结构化 JSON,并附带 Docker 就绪的静态站点,超越了普通 awesome-list 的定位。LICENSE 文件 CC0 与 package.json CC-BY-SA-4.0 之间的许可证冲突是商业再分发前唯一需要解决的实质问题。作为浏览参考、研究素材或应用目录工具的起点,它结构清晰、实用性强,周期新增 334 Star,趋势榜第 17 名。