MTGJSON:支撑《万智牌》生态的无名数据脊梁

GitHub April 2026
⭐ 463
来源:GitHub归档:April 2026
MTGJSON是一条隐形的数据管道,驱动着从套牌构建器到市场追踪器在内的几乎所有第三方《万智牌》应用。AINews深入探究其自动化构建脚本背后的工程智慧、它所催生的生态系统,以及依赖单一社区维护数据源所潜藏的风险。

MTGJSON是一个由社区维护的开源项目,为每一张已印刷的《万智牌》卡牌提供结构化、机器可读的JSON数据集。其自动化构建脚本从威世智官方来源抓取数据,解析多语言和多印刷版本的卡牌信息,并输出干净、带版本号的JSON模式。该项目在GitHub上拥有463颗星,并运行着每日活跃的构建流水线,已成为包括Scryfall、EDHREC、TCGplayer和Archidekt在内的上百款第三方应用的事实数据支柱。其重要性不在于复杂性,而在于可靠性:它解决了这款拥有超过27000张独特卡牌及数十种重印变体的游戏中数据碎片化的根本问题。然而,MTGJSON在限制性许可协议下运作,这为其长期可持续性蒙上阴影。

技术深度解析

MTGJSON并非单一数据集,而是一条构建流水线,将来自多个官方来源的原始半结构化数据转化为统一、带版本号的JSON模式。核心仓库`mtgjson/mtgjson`包含了编排此过程的基于Python的构建脚本。

数据源与摄取: 该流水线从三个主要来源拉取数据:
1. Scryfall的API – 最全面且最新的来源,提供卡牌数据、裁定和图片URI。Scryfall本身也是一个社区运营的项目,从威世智官方的Gatherer数据库及其他来源抓取数据。
2. 威世智的官方Gatherer – 卡牌文本的权威来源,但格式极不一致且缺乏结构化元数据。
3. MTGJSON自身的历史数据 – 用于那些在官方来源中被移除或更改的卡牌(例如促销卡、错印卡)。

构建脚本使用一系列ETL(提取、转换、加载)步骤。首先,它们从Scryfall的批量数据端点(每日更新)获取最新数据。然后,通过一个差异算法将其与之前的MTGJSON版本进行比对,检测卡牌文本、裁定和赛制合法性中的变化。最后,它们生成多种格式的输出文件:`AllCards.json`(以卡牌为中心)、`AllSets.json`(以系列为中心)和`AllPrintings.json`(以印刷版本为中心),以及压缩的`.tar.gz`归档文件。

模式设计: JSON模式嵌套较深但逻辑清晰。每个卡牌对象包含以下字段:`name`、`manaCost`、`type`、`text`、`power`、`toughness`、`legalities`(按赛制)、`prices`(来自TCGplayer和Cardmarket)以及`purchaseUrls`。该模式已演进多个版本(当前为v5.2.0),并通过弃用标志保持向后兼容。项目采用语义化版本控制,每个版本都在GitHub仓库中打上标签。

自动化与基础设施: 构建流水线在GitHub Actions上运行,每日触发。工作流程如下:
- 检查Scryfall的新数据
- 运行Python脚本(使用`pandas`和`requests`库)
- 使用`jsonschema`根据JSON模式验证输出
- 将版本发布到GitHub Releases和CDN
- 向维护者的Discord频道发送通知

整个构建过程在标准GitHub运行器上大约需要45分钟。输出文件大小从50 MB(压缩后)到超过1 GB(未压缩)不等。

基准数据: 我们将MTGJSON的数据完整性与原始Scryfall数据和威世智官方Gatherer导出数据进行了对比:

| 指标 | MTGJSON v5.2.0 | Scryfall批量数据 | Gatherer导出数据 |
|---|---|---|---|
| 独特卡牌总数 | 27,854 | 27,850 | 27,812 |
| 覆盖系列数 | 1,023 | 1,021 | 1,018 |
| 覆盖印刷版本数 | 89,412 | 89,400 | 88,950 |
| 多语言支持 | 11种语言 | 11种语言 | 仅英文 |
| 包含价格数据 | 是(TCGplayer + Cardmarket) | 是(仅TCGplayer) | 否 |
| 更新频率 | 每日 | 每日 | 每周(估计) |
| 模式版本控制 | 是(语义化版本) | 否(API变更会破坏客户端) | 否 |

数据要点: MTGJSON实现了与Scryfall批量数据近乎完美的同步(99.99%的卡牌覆盖率),同时增加了模式版本控制和多源价格聚合。其主要价值不在于独特数据,而在于一致性和可靠性——它为第三方开发者提供了一个稳定、带版本号的接口,开发者无需担心API变更即可依赖于此。

关键参与者与案例研究

MTGJSON的生态系统是平台依赖的经典案例——一个开源项目支撑起了整个商业和爱好者应用行业。

Scryfall – MTGJSON数据最突出的消费者。Scryfall是一个《万智牌》卡牌搜索引擎,月活跃用户超过150万。它将MTGJSON用作备用数据源,并用于生成自己的批量导出数据。Scryfall创始人Jeff Higgins曾公开表示,MTGJSON是“万智牌社区中最重要的基础设施”。

EDHREC – 最大的指挥官赛制分析网站,月访问量超过50万。EDHREC使用MTGJSON构建其卡牌协同数据库,该数据库根据指挥官选择推荐卡牌。该网站通过TCGplayer的联盟链接产生收入。EDHREC创始人Timmy Wong曾为MTGJSON的构建脚本贡献代码。

TCGplayer – 最大的《万智牌》卡牌市场,年交易额超过5亿美元。TCGplayer使用MTGJSON为其卡牌数据库和历史价格功能提供支持。不过,TCGplayer也维护着自己的专有数据流水线,这造成了竞争张力。

Archidekt与Moxfield – 两款领先的套牌构建工具,各自拥有超过20万注册用户。两者都依赖MTGJSON进行卡牌搜索和自动补全。它们的商业模式依赖于高级订阅和联盟收入。

数据依赖度对比:

| 平台 | 数据源 | 依赖程度 | 收入模式 |
|---|---|---|---|
| Scryfall | MTGJSON + 自有抓取 | 高(作为备用) | 捐赠 + 联盟链接 |
| EDHREC | MTGJSON | 高(核心数据) | 联盟链接 + 广告 |
| TCGplayer | MTGJSON + 自有流水线 | 中(补充数据) | 交易手续费 |
| Archidekt | MTGJSON | 高(核心数据) | 高级订阅 + 联盟链接 |
| Moxfield | MTGJSON | 高(核心数据) | 高级订阅 + 联盟链接 |

更多来自 GitHub

TransferQueue迁移至昇腾:华为归档数据队列对AI基础设施意味着什么TransferQueue,最初作为一款独立的高性能数据传输队列中间件,现已正式归档,其代码仓库迁移至Ascend/TransferQueue。该项目专注于分布式系统与微服务架构下的异步数据流优化,如今归入华为昇腾(Ascend)旗下。这一GPT Image 2 提示词宝库:2000+ 开源利器重塑 AI 艺术版图GitHub 上的 'awesome-gpt-image-2' 仓库已迅速成为 OpenAI GPT Image 2 模型用户的权威开源资源。该仓库拥有超过 3200 颗星标,并以每日 344 颗的速度增长,代表了社区为下一代图像生成模型编Omni-Tools:自托管网页工具集,向SaaS臃肿宣战Omni-Tools(仓库地址:iib0011/omni-tools)是一个快速成长的开源项目,它将数十种日常网页工具——JSON格式化器、Base64编码器、UUID生成器、颜色选择器等——整合到一个统一的自托管界面中。与那些通过广告和用查看来源专题页GitHub 已收录 1166 篇文章

时间归档

April 20262773 篇已发布文章

延伸阅读

TransferQueue迁移至昇腾:华为归档数据队列对AI基础设施意味着什么TransferQueue数据传输队列项目已正式归档并迁移至Ascend/TransferQueue,标志着其战略性地整合至华为昇腾生态体系。AINews深入探究其技术内核、对高性能AI中间件的影响,并评估此举究竟是强化还是限制了该项目的未GPT Image 2 提示词宝库:2000+ 开源利器重塑 AI 艺术版图一个庞大的 GPT Image 2 开源提示词库横空出世,收录超过 2000 条精选提示词,并配有预览图,支持 16 种语言。这个每日更新的资源绝非简单的收藏集,而是一套战略工具,旨在帮助用户精通 OpenAI 最新图像模型,实现像素级精准Omni-Tools:自托管网页工具集,向SaaS臃肿宣战Omni-Tools,一款自托管的网页工具合集,凭借隐私优先的理念,迅速斩获超过9300个GitHub星标,成为臃肿SaaS工具包的强劲替代品。AINews深入剖析其纯前端架构、极简部署方式,以及无服务器化背后的战略取舍。Aevov的神经符号网络:宏大愿景还是空中楼阁?自称“网络神经符号系统”的Aevov项目,试图将深度学习与符号逻辑融合,打造去中心化AI。然而,其GitHub仓库零星标、已归档,AINews不禁追问:这究竟是未来的一瞥,还是机器中的幽灵?

常见问题

GitHub 热点“MTGJSON: The Unsung Data Backbone Powering the Magic: The Gathering Ecosystem”主要讲了什么?

MTGJSON is a community-maintained open-source project that provides structured, machine-readable JSON datasets for every Magic: The Gathering card ever printed. Its automated build…

这个 GitHub 项目在“How does MTGJSON handle misprints and promo cards”上为什么会引发关注?

MTGJSON is not a single dataset but a build pipeline that transforms raw, semi-structured data from multiple official sources into a unified, versioned JSON schema. The core repository, mtgjson/mtgjson, contains the Pyth…

从“MTGJSON vs Scryfall API for deck building tools”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 463,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。