njucm njucm.org
← Data

数据集:模型数据库

模型数据库把分散在各家厂商目录里的模型产品收拢成一张可检索的表。 最早它只收万代的高达塑料模型(Gunpla),现在扩成综合库——万代、寿屋、良笑、魔动核、 田宫、海洋堂、造型村,塑料模型、拼装模型、比例手办、Q 版人偶都在同一张表里。

这一页说明它的字段口径、来源、复现方式与已知限制——数据只有连同它的来历一起被记录, 别人才能在结论之外重新检验一遍。

库里有谁

厂商条目品类作品线有定价有发售日一手来源
良笑 GOOD SMILE COMPANY48307119899.6%99.2%goodsmile.info 产品资料库(中文页 + 日文页)+ goodsmile.com 商城
寿屋 KOTOBUKIYA23377279100.0%99.7%shop.kotobukiya.co.jp 官方直销商城
万代 BANDAI SPIRITS2325206480.7%87.5%bandaihobbysite.cn 中文站 + bandai-hobby.net 日站
田宫 TAMIYA3367194099.6%0%tamiya.cn 田宫模型中国旗舰店 + tamiya.com/japan 日本官网
造型村 VOLKS15255100.0%49.3%hobby.ec.volks.co.jp 官方 EC 商城
海洋堂 KAIYODO13231473.5%93.2%kaiyodo.co.jp 官网商品页
魔动核 MO DONG HE32520%0%mdhtoy.com 官网产品线页
合计1317566158995.8%71.0%

发售年份跨 1990–2028,其中 3193 条精确到日。

田宫那 3367 条没有发售日——商城与日本官网都不公布。它给的是商城上架日期 (listedAt,2027 条),定价则两处都有:官方日元价(priceJpy,3045 条, 来自日本官网的厂商希望零售价)与商城港币标价(priceHkd,2011 条)。 两者都不折算、不混用。

「作品线」一栏有两种口径:万代的高达作品与魔动核是人工整理的固定表(万代 40 条, 含「非高达作品」与「其他作品」两个兜底),其余是各自官网给出的作品名,属于开放词表—— 良笑一家就有 1198 部作品/IP,寿屋 279 部,万代那七条非高达产品线另有 25 部, 田宫 40 条(陆军模型、Mini4wd Pro、沙滩车系列…),海洋堂 14 条(ARTPLA、DGK…), 造型村 5 条(SWS 航空模型、F.S.S. 五星物语、BLOCKer’s FIORE…)。 开放的这一套由 scripts/build-models-data.mjs 生成到 src/data/models.series.json。

数据来自哪里

每条记录都带一个 source 字段,指向它实际核实的那个页面。没有找到出处的记录, 定价记为 0、核实状态记为未核实——宁可空着,也不猜一个数填进去。

万代

  • 万代 Hobby 官方中文站(bandaihobbysite.cn)是中文品名与商品页的主要来源。 它的全量商品总表(/item_all,298 页)按 id 倒序列出站内全部商品, 本库从那里取全部高达模型条目;品牌分类页(HG / RG / MG / MG Ver.Ka / MGSD / PG / ENTRY GRADE / FULL MECHANICS / RE/100 / SDCS / SDEX / Hi-Resolution Model / MGEX / 高达汇战 …)与作品线分类页用于补上作品线归属。
  • 商品详情页给出列表页没有的权威信息:渠道徽章(pg-products__tag)、 中国内地官方零售价、精确到日的发售日期。万代用徽章区分三种限定渠道—— 「线上售卖」即网络限定,「高达基地限定」即店限定。渠道判定以徽章为准, 不再靠品名里有没有「高达基地限定」四个字去猜。
  • 万代 Hobby 官方日本站(bandai-hobby.net)是官方日文品名、含税定价与税目的源头。 它的商品页规格表里写着「価格 = メーカー希望小売価格(税10%込)/プレミアムバンダイ販売価格」, 也就是含税价。本库按「等级 + 比例 + 定价 + 发售月」把它和中文站条目对上, 以日本站的数据为准(对上的 500 多条里,定价差异为零)。 四元组对不上时还有一条退路:用机体编号做锚点——「RX-79[G] 陆战型高达」的中文名 与日文名写法完全不同,编号却一样;这条退路要求候选唯一、且两边都知道定价时必须相等。
  • 万代日本站 Premium Bandai 目录(/brand/pb_*)是 PB 限定的源头。
  • 万代中文站「网上商店 · PB 商品预约信息专区」给出 PB 商品的官方中文品名、 官方商品图,以及「PB上新 / PB再贩」的预约公告与传送门。
  • GUNDAM ASSEMBLE 官方站是「高达集结」产品线的一手来源:商品一览给出套装分类、 厂商希望零售价、发售月与专用商品图;单元卡清单给出起始套装里六台机体的官方编号。
  • 模型资料站:HPOI(hpoi.net)用于补齐 METAL ROBOT 魂这类官方中文站不收录的品类。
  • 公共资料:Gundam Info、维基与 Gundam Wiki 用于补齐零件数、全高、骨架结构等字段。

税目说明:万代在 2019 年 10 月消费税从 8% 涨到 10% 时,把 2019 年以前发售的老品 价格整体重订到了 10% 基准。所以日本站现行页面上一律标「税10%込」,看不到 8% 的标注。

限定渠道商品没有日元定价,这不是缺漏:万代对高达基地限定、Premium Bandai 限定等商品只公布人民币零售价,官方页上根本没有日元建议零售价。这类条目带 priceCny(中国内地官方零售价),没有日元价就显示人民币价。

品名的格式不统一,等级未必在开头。万代官方中文站的商品标题至少有五种写法:

HG 1/144 RX-78-2 高达              等级在最前(多数)
高达基地限定 HG 1/144 命运高达       渠道徽章在等级前面
第二批 万代模型 RG 1/144 ν高达      批次标记在最前
1/100 FULL MECHANICS 高达巴耶力     比例在等级前面
H.G 1/144 强人奔流                  全角字母(源站的错字)

判定等级之前要先剥掉这些前缀、把全角转半角,规则写在 scripts/lib/grade.mjs。 少了这一步,这些产品会被当成「不是模型」悄悄丢掉——本库里的 SEED 一度只有 16 款 HG 就是这么丢的:源站的高达作品页上确实只有 13 款 HG 与 3 款 HGCE, 但另有十几款因为前缀在等级前面而没进库。修好之后中文站事实文件从 1387 条 涨到 1624 条。

另有三条产品线是规则里没有的,也一并补上了:FG(源站的 FG 品牌页没被采集器 列入品牌清单,规则里也没有对应项)、HIRM(高级注入树脂模型)与 Figure-rise (万代自己的人偶线,与良笑的 figma 同一性质)。

非高达产品线

中文站上除了高达模型,还卖着好几条别的线——宝可梦拼装模型、30MS/30MP 人偶、 30MM/HAROPLA 机甲模型、MECHA COLLECTION 宇宙战舰模型、猫武装、黏土模型套件。 它们与高达放在同一份目录里,但等级(PG/MG/HG…)那套分类法套不上去,所以另立一档: 每条线一个品类(30MM / 30MS / 30MP / 宝可梦拼装模型 / MECHA COLLECTION / 猫武装 / 黏土模型套件),共 350 条。

数据来自中文站的全量商品总表,逐条抓详情页。详情页上有中文站自己的分类面包屑 (角色模型 → 产品线 → 作品 → 商品名),作品线就取自那一层——所以这批条目的 作品线是开放词表(宝可梦、超时空要塞、龙珠、魔法使之夜、机战佣兵VI 境界天火…), 与寿屋、良笑一样由脚本生成稳定 id 写进作品线目录。详情页还给出日本地区建议零售价、 发售日期、适合年龄与商品介绍(里面写着全高)。

配件不收:30MM 的配件套组、拓展包、自定义装甲/武器/背包,30MS 的可选发型与面部配件, 跟水贴、底座、说明书一样不是模型。BB 战士不收——那是一条被刻意排除的产品线。

寿屋

寿屋的主站 www.kotobukiya.co.jp 前面挡着 Cloudflare 的机器验证,命令行过不去; 官方直销商城 shop.kotobukiya.co.jp 不走那套验证,于是从那里取数—— 同一家公司的官方渠道,商品页给出的是完整规格表:

  • 作品名(ヘキサギア、新世紀エヴァンゲリオン、銀河英雄伝説…)——本库的作品线;
  • カテゴリ(プラモデル本体、スケールフィギュア、サポートユニット(M.S.G)…)——本库的品类;
  • スケール、発売月(标题旁那份比规格表细,会写到日)、サイズ、素材、 原型/設計(原型师);
  • 含税定价(price_num_ 那一格),以及限定品・特典标记(限定品 / 直営店限定)。

商品列表从分类页翻页枚举(/shop/c/c2010/、_p2、_p3…),JAN 码就是商品 id, /shop/g/g<JAN>/ 拿详情。商城是 Shift_JIS 编码的 .NET 站点,解析前要转码。

寿屋的条目保留官方日文品名:官方中文站(kotobukiya.com.cn)在本机网络上 连不上(TLS 握手失败),拿不到官方中文名,所以这里不做翻译、不做音译—— 宁可给原文,也不给一个自造的中文名。

良笑

良笑的产品资料库在 goodsmile.info——不是商城,而是产品资料库,每个产品一页, 中文页给出商品名稱、作品名稱、分類、含税定价、发售年月与规格说明。 (商城 goodsmileshop.com 与 goodsmile.com 正在维护,资料库这条线照常可用。)

  • 商品列表从分类页翻页枚举:/zh/products/category/figma、/nendoroid_series、 /scale,共 133 页 4600 多个产品;
  • 详情页 /zh/product/<id>/ 给出中文品名、作品名、分类、定价、发售日与规格;
  • 分类(分類)可能是多项的(「周邊商品 , 黏土人Plus」),前一项说明它是什么, 后一项说明它挂在哪条产品线上;
  • **主题(角色)**从品名里取:品名开头是产品线名(figma / 黏土人 / 比例手辦…), 后面才是角色;配件、套组一类没有角色,不进主题维度;
  • 規格里带着材质与全高(全高:約130mm),能填的填。

良笑的中文页是繁体,那是良笑官方中文站(台湾)的写法,原样保留不做转换。

良笑的目录里也收录别家公司代工或代发的产品——FREEing、TOMYTEC、Max Factory、 KADOKAWA 的手办都在良笑店里卖。厂商字段记的是「这条记录来自谁的目录」, 实际制造与发售厂商记在 tags 里(製造商 / 發售商),免得把 FREEing 说成良笑自己做的。

商城那边:现在买不买得到、多少钱

资料库只说「这是什么、什么时候卖、当时卖多少钱」。现在还能不能买到、现价多少 在商城 goodsmile.com(繁中站)上,所以两边各取一半:

  • 商城目录用分类列表接口枚举:/zh/category/<分类 id>/list?…&orderBy=2&limit=100&offset=<n>, 一次拿到 100 张商品卡片。全站 14688 件,卡片里有商城商品 id、商品番号、中文品名、 日文品名、制造厂牌、限定标签与现价;

  • 在售状态在商品详情页上:页面的状态块写着「開放預購中 預購期間:…」或「預購截止」, 有没有订购按钮也能看出还卖不卖得掉。

    判定按订购按钮而不是状态文字:商城的文字会留旧值(2020 年就结束预购的商品, 页面至今还写着当年的預購期間)。核对下来,写着「開放預購中」的全都有订购按钮, 写着「預購截止」与只留旧預購期間的都没有。

    「已结束」这一档要留神:商城对按地区限售的商品也会收掉订购入口,只留一句 「請登入後查看商品能否購買等詳情」。这类商品在别处可能还买得到, 所以文案说的是「商城这边现在不开放订购」,不是断言这件商品绝迹了。

两边不是一套 id:商城用的是商城系统的商品 id,资料库用的是资料库自己的编号, 同一个产品两边的 id 并不相等(核对过:id 相同的几千对里品名没有一对能对上)。 所以只能靠品名对照,规则写在 scripts/lib/mall.mjs:

  1. 品名归一化后完全相同(去空格、去标点、全角转半角);
  2. 去掉商城品名里的角标(【再販】)再比;
  3. 去掉产品线前缀(figma / 黏土人 / PLAMATEA…)再比——这一步要求剩下的字至少四个, 而且这个键在商城那边只能命中一件商品,否则宁可不对;
  4. 同名的几件(同一角色不同比例)用价格消歧:资料库那条的建议零售价对上哪个就是哪个。

对照下来的覆盖率约八成,对不上的那两成留在原地,商城那一栏留空—— 宁可空着,也不要把别的东西的现价写到这一条上。

商城的商品卡里同时写着中文名与日文名,资料库(goodsmile.info)只给中文名。 但资料库自己也有日文页(/ja/product/<id>/)——而且良笑的条目 id 就是资料库的商品号, 两边是同一套编号,可以按 id 精确对上,不需要任何模糊匹配。

日文页给的是官方日文品名、含税定价、発売時期、比例、原型制作、発売元, 其中「原型制作」在中文页上是繁体写法(「原型製作:石長櫻子」),日文页是原名。

良笑那 4830 条里,4762 条现在带着官方日文名(nameJa)——详情页「型号」一行就是它。 全库 13175 条里,7049 条有官方日文名。

priceJpy(官方建议零售价)与 salePriceJpy(商城现价)不一定是同一个数: 良笑这些年调过价,同一件产品的商城现价可能比资料库上的定价高(老产品更常见), 也可能是限时特价把价格压下去。对照下来只有 6 条两者不同,其余完全一致。

田宫

田宫(TAMIYA)是与万代齐名的塑料模型老厂牌。数据取自田宫模型中国旗舰店 tamiya.cn——那是田宫自己的官方商城(WordPress + WooCommerce),商品资料齐全: 中文品名、货号、港币标价、中文分类树与官方商品图。

  • 整站 7091 件商品,商品接口一次给 100 件,71 页取完;分类树 214 个分类, 一次一页取回。
  • 只收模型本体:军事模型(陆军 / 飞机 / 舰船)、比例模型(汽车 / 摩托车 / 恐龙)、 迷你四驱车、RC 遥控车套件与 STEM 教育模型,共 2027 件。 排除颜料、工具、旧化材料、贴纸说明书、配件与补给、马达电池电子件、车壳轮毂、 赛道、遥控车配件、RTR 预组遥控车与完成品、服饰周边——这些不是「模型」。 另有 60 件是同一款模型的完成品(预涂装),同样不收。
  • 品名照抄商城:商城把中文名与英文名分放在「商品名」与「简介标题」两处, 且中英文是互换的——有的商品中文名在商品名里,有的在简介标题里。 所以这里不按字段分,而是按「哪一串是中文」分:中文那串作主名,英文那串作别名。
  • 品类照搬商城的分类(比例 + 类型,20 个),作品线照搬商城的分组(35 个): 军事与汽车那边是题材(陆军模型 / 飞机模型 / 汽车模型…),迷你四驱、遥控车与 STEM 那边是产品线或车型(Mini4wd Pro / 沙滩车系列 / 编程机械人…)。
  • 定价是港币:商城按港币挂价(页面另标「折合人民币约」)。本库记原值, 不折算成人民币——换算是自己的判断,不是来源站给的数。
  • 没有发售日:商城不公布。它给的是商城上架日期(WordPress 的发布日), 单独记在 listedAt,不与发售日混为一谈;列表排序时,发售日优先,没有就用上架日。

站点整站挂在 Sucuri CloudProxy 的 JS 挑战后面,直接发请求只会拿到 307 挑战页。 所以采集用真实浏览器过这道门:起一个无头 Edge,在 tamiya.cn 的页面上下文里发请求, cookie 由浏览器自己带上。限速按 robots.txt 的 Crawl-delay: 5。

日本官网(www.tamiya.com/japan)是同一家的另一个官方站,资料比商城全: 每个产品都有官方日文品名与厂商希望零售价(税込日元)。目录按分类翻页 (/japan/products/list.html?genre_item=<分类>,一页 20 条,页首写着「全 N 件」), 模型类 12 个分类合计 3045 件、158 页。用它做两件事:

  • 补全商城那 2027 条:1705 条能按货号对上,补上官方日文品名与日元定价 (nameJa 与 priceJpy),来源页记在 sourceJp;
  • 补上商城没有的 1340 条:日本官网独有的产品(老款、限定与冷门机型)建为新条目, 官方日文品名照录,与寿屋那批一个口径。

两处对不上的 319 条不是漏了:日本的官网把这些产品归在别的分类下—— 遥控车的底盘套件归在「RC 周辺機器 / パーツ」,1/12 人偶与 1/16 兵人归在别的系列, 那些本来就不是整机模型。

海洋堂

海洋堂(KAIYODO)官网(kaiyodo.co.jp)的商品资料是库里最全的一家: 官方日文品名、税込与税抜两种定价、発売予定月、缩放、材质、商品番号、 原型制作人、JAN 与官方图,全在商品页的规格区里。

目录用它自己的 WordPress 接口列(/items/wp-json/wp/v2/posts),只取模型套件那几条线: プラモケイ(ARTPLA 等塑料模型套件)、デジタルガレージキット(数字模型套件)、 アッセンブルボーグネクサス(1/35 机甲套件)、マシーネンクリーガー(树脂套件), 去重后 151 件、逐个取商品页。排除 19 件不是模型的:预涂装完成品、成型板零件 (マルチシート)、扭蛋与盒装周边、图钉磁铁一类的小物,还有别家厂牌做的模型。

造型村

造型村(VOLKS)是京都起家的模型厂。本业是飞机比例模型(SWS 系列), 人形手办(造型村本号)反而更有名。数据取自它自营的 EC 商城 hobby.ec.volks.co.jp(ホビー天国)——商品页的规格表给得很齐: 税込価格、本体価格、発売日、スケール、パーツ総数、素材、原型制作、サイズ。

  • 目录按商城自己的分类翻页枚举:H_SCALE(比例模型)与 H_MECHA(机甲)两类, 一页 30 条,13 + 18 页取完,共 900 件;商品资料就藏在列表页的隐藏表单里 (ITEM_CD / ITEM_NAME / ITEM_TEIKA / ITEM_CATEGORY);
  • 逐件取商品页,按商城自己的规格字段判断是不是模型本体,不靠品名猜: 规格写着「インジェクションプラキット」「組み立てキット」「レジン製キット」的是本体, 写着「ディテールアップパーツ」「エッチング」「挽き物」的是改件; 整条产品线叫「SWOP(アフターパーツ)」的是配件,一并排除;
  • 802 件候选里收了 152 件:SWS 航空套件 47、F.S.S.(五星物语)77、 BLOCKer’s FIORE 24、自组手办(チャグミン)3、1/24 机甲 1。 排除的 650 件是配件(435)、SWOP 改件(213)与完成品(2);
  • 官网不公布发售日——规格表里的「発売日」有一半是空的,缺的就留空; 页面顶部那个「発売日時:2054 年 11 月 11 日」是商城的开卖时段占位值,不用它。

VOLKS 的商城只有日文,没有中文品名——所以这批条目的品名是官方日文名, 不另编中文名(与田宫日本官网独有的那批同理)。

魔动核

魔动核(东莞东秀文化传播有限公司)的国风机甲品牌。官网 mdhtoy.com 有完整的产品目录: 五个产品线页(合金成品 / 超可动拼装 / 小比例 / 机甲潮玩 / 超可动成品)里列着 每一款的货号与详情页。

  • 一款产品按货号计(厂牌就是按货号卖的),同一货号下的不同造型记为别名;
  • 作品线只有两个:星甲魂将传(占四个产品线)与钢铁契约。 「合金成品 / 超可动拼装 / 小比例 / 机甲潮玩 / 超可动成品」是产品形态, 落在品类维度上;
  • 主题从品名里取:星甲魂将传那边是「星号-称号-角色名」三段式 (「地会星-寒龙子-敖丙」讲的是敖丙),而「威远式-剑斗型」「契武-白虎」讲的是机体本身。

官网不公布价格与发售日期——定价在淘宝店,官网的产品页上写的是「敬请期待」。 所以这两项留空,不猜。这是官网没有,不是没做。

字段是什么意思

字段含义缺失时
id条目的稳定标识,用于 URL,一旦发布不改必填
name品名。万代是「等级 比例 名称」,寿屋与良笑是官方原名,魔动核是「货号 名称」,田宫是商城自己的写法(中文或英文)必填
nameJa官方日文品名(与中文名不同时才有)空字符串
maker厂商:bandai / kotobukiya / goodsmile / modhtoy / tamiya必填
category品类,id 前缀即厂商:bandai:hg、goodsmile:figma、kotobukiya:kit、tamiya:mm35必填,越界即丢弃该条
series作品线。万代与魔动核是固定 id,寿屋、良笑与田宫是开放词表里的 id归入「其他」
scale比例,如 1/100、1/12按品类取该品类常见比例
released发售时间,YYYY / YYYY-MM / YYYY-MM-DD空字符串,排序时沉到最后
listedAt商城上架日期 YYYY-MM-DD(不是发售日)空字符串
priceJpy官方建议零售价,含税日元0,表示未收录
priceCny中国内地官方零售价(元)0,表示未收录
priceHkd商城港币标价(田宫直销店)0,表示未收录
taxRate定价所含的税率:10 或 8null(源站只写「税込」时不猜)
channel一般销售 / PB 限定 / 高达基地限定 / 网络限定 / 限定版 / 店铺限定按一般销售处理
skillLevel官方拼装难度 1–5null
parts / heightMm零件数 / 全高毫米数null
material材质简述null
tags特征标签(内构骨架、水贴;良笑那边是制造与发售厂商)空数组
note一句话看点或原型师空字符串
units高达集结套装里收录的兵人(编号、中日名、出自哪条作品线)不存在该字段
verified是否已核实到出处由 source 是否存在推出
subject主题:这条产品是关于谁的——塑料模型是机体,手办是角色null
subjectId主题的检索键,同时是它的页面地址null
subjectKind主题的类型:mech / character / worknull
aliases其它常见写法:英文名、俗称、旧译、机体编号、读音、造型别名空数组
source / sourceJp核实所用的页面null
image / imageUrl本地缓存的图片路径 / 官方图片的原始地址null
saleStatus线上商城的在售状态:preorder 预约中 / available 在售 / soldout 已售罄 / ended 已结束null(没核对过商城)
saleStatusText商城上的原文状态说明,保留来源站的写法空字符串
salePriceJpy商城现价,含税日元0,表示没核对到
saleLabels商城上的限定标签:限定商品、数量限定、附特典、再販…空数组
saleUrl / saleCode商城商品页 / 商城商品番号null / 空字符串
saleNote商城上的补充说明:预定寄送月、每人限购…空字符串
saleChecked商城状态核对于哪一天(YYYY-MM-DD)空字符串

品名里带上等级与比例,是 78动漫、大龙网、HPOI 与千岛共同的写法,也因为同一台机体 在不同等级下是彼此独立的商品——「RX-78-2 高达」既有 RG 也有 FG,没有等级就分不清。 良笑与寿屋没有这套前缀语言,它们的品名直接用官方原名。

GA(高达集结)是个例外:GUNDAM ASSEMBLE 是万代 2026 年 10 月起发售的桌上战棋 产品线,兵人约 50 高、插销式拼装、需自行涂装,既不是 1/144 也不是 1/100 的比例模型, 所以单独给一个品类。它的单位是「套装」而不是单件模型,套装里装着哪几台机体 记在 units 字段里,详情页单列一栏展示。

厂商、品类、作品线:开放词表

这套表不再是写死的枚举值:

  • 厂商七家:万代、寿屋、良笑、魔动核、田宫、海洋堂、造型村。每家有自己的官网、总部市场与定位。
  • 品类按厂商各添一套。品类 id 的前缀就是厂商,所以「万代的 HG」与 「良笑的 figma」在同一个维度上,却不会撞车:
    • 万代:PG / MG / MGSD / RG / HG / FG / SD / EG / FM / MR / HIRM / Figure-rise / GA / 30MM / 30MS / 30MP / 宝可梦拼装模型 / MECHA COLLECTION / 猫武装 / 黏土模型套件 / 万代其它
    • 寿屋:拼装模型 / 支援单元 / 选件 / 等身手办 / 其它手办 / 树脂老kit / 寿屋周边
    • 良笑:figma / Nendoroid / 比例手办 / STICKY / PIXEL / MODEROID / PLAMATEA / 周边
    • 魔动核:超可动拼装 / 合金成品 / 超可动成品 / 小比例 / 机甲潮玩
    • 田宫:1/35 与 1/48 军事模型 / 1/16 军事战车 / 1/16 兵人 / 1/32、1/48、1/72 飞机 / 1/350 与 1/700 舰船 / 1/12、1/18、1/20、1/24 汽车 / 1/6 与 1/12 摩托车 / 恐龙 / 迷你四驱 / RC 遥控车 / STEM 教育模型
    • 海洋堂:プラモケイ(ARTPLA 等塑料模型套件)/ デジタルガレージキット(数字模型套件)/ アッセンブルボーグ(1/35 机甲套件)
  • 作品线分两种口径。万代的高达作品与魔动核是人工整理的固定表 (src/data/models.ts 里的 SERIES),每条都有人工挑的配色;寿屋、良笑、田宫、 海洋堂,以及万代那七条非高达产品线是开放词表,事实文件里直接给作品名, 脚本用作品名的哈希生成稳定 id(w + 10 位十六进制),并写进作品线目录 src/data/models.series.json。作品名多是日文与中文,没法直接当目录名。

渠道也是按厂商各添一套,但共用同一批 id:万代是「一般销售 / PB 限定 / 高达基地限定 / 网络限定」,寿屋的「直営店限定」与良笑的初回限定归进「限定版 / 店铺限定」。

主题维度:同一个对象的各个产品

「RX-78-2 高达」既有 FG 也有 RG 有 MG 有 PG——玩家最先想知道的往往不是「库里有哪些 型号」,而是「这台机体还有哪些版本」。所以每条记录除了品名,还带一个主题 (subject):这条产品是关于谁的。

  • 万代:品名去掉「等级 / 产品线 + 比例」的前缀,再去掉颜色、涂装、包装之类的 限定语,剩下的就是机体本身。归一规则写在 scripts/lib/subject.mjs,可以逐条检查:
    • 剥前缀:等级缩写(HG / MG / RG / PG / SD / FG / FM / EG / MR)与产品线名 (BD、BD:R、BC、BF、BUILD DIVERS、FULL MECHANICS、ENTRY GRADE、 SD CROSS SILHOUETTE…)都要剥掉。不剥的话,同一台机器在不同产品线里会被拆成好几台。
    • 合装品取第一台:「核心高达&核心高达II 核心转换套装」「拂晓高达 & 宙斯魅影 + 连接件套装」这类产品的主体是第一台机器,取第一段即可。
    • 斜杠看情况:「扎古II TYPE C-6/R6」是同一台机器的两款配色,保留整个; 「Ex-S高达/S高达」是几台不同的机器,只取第一台。
    • 刻意保留「改 / 二式 / 量产型 / 专属 / 指挥官型」——它们指的是不同的机体,不该并。
    • 同义折叠:「扎古」与「渣古」、「沙扎比」与「渣古II」、「独角兽高达」与 「独角兽」——折叠表与显式并机表都写在 scripts/lib/subject.mjs 里,可审计。
  • 良笑:主题是角色,品名剥掉产品线前缀(「figma 我妻善逸 DX版」→「我妻善逸」)。 版本后缀(DX版、Ver.)在归键时去掉,所以「我妻善逸 DX版」与「我妻善逸」归到同一主题。
  • 寿屋:官方品名本身就是一个产品(ブロッケード・アイビー),没有「同一对象的多个 产品」这层关系,所以不设主题——宁可空着,也不硬凑。
  • 魔动核:按上面的三段式规则取角色,机体品名取全名。

归一之后同名不同写法的条目会撞进同一个键,合并时取出现最多的那种写法当规范名。 主题的检索键 subjectId 同时也是它的页面地址:/data/models/subject/<subjectId>/。

目前库里是 5134 个主题,其中 673 个有两个以上版本;6198 条记录挂上了主题 (机体 1949 条、角色 4249 条)。 按主题浏览的入口在 /data/models/subject/,多版本的排在前面, 每个主题页给一张跨品类对比表(品类 / 比例 / 品名 / 发售 / 官方定价 / 渠道 / 全高与零件数),条目详情页里也有「同一主题」一栏,列出同主题的其它产品。 只有一款的主题不开单独页面——详情页里直接写出主题名,其余的靠列表页的搜索找。

别名:俗称、旧译与英文名

玩家搜「元祖高达」不一定知道官方写的是「RX-78-2 高达」;搜「渣古」也未必打出「扎古」。 所以每条记录还带一个 aliases 数组,检索时和品名一起匹配。

别名不靠数据反推。中文站与日本站的品名分属两种文字系统,同一机体在两边 既没有共同锚点,商品图也确实是不同的照片,试图自动学对照表的结果是错的。 本库的做法是人工整理 src/data/models.subject-meta.json——一份 72 条机体的词典, 每条给出官方英文名与常见中文俗称/旧译(如「RX-78-2 高达 → 元祖高达 / 初代高达」, 「渣古II → 沙扎比」,「ν高达 → 牛高达」)——再加上从品名里自动提取的机体编号 (RX-78-2、MSN-04FF 这类)。只写有把握的,宁缺勿错。

别名的来源随厂商不同:寿屋给的是标题里的假名读音(「ブイトール(ブイトール)」里的 读音部分),良笑给的是原名,魔动核给的是同一货号下的造型变体。

作品线是怎么判定的

万代那边官网的作品分类页只维护 40 条分类,库里有近 500 条产品落进「其他作品」—— 这些产品的整条产品线都没被官网归过类,机器没法从别处反推。于是加了人工整理的 归类规则(src/data/models.series-rules.json),按三条依据依次判定:

  1. 机体编号——MSN-04FF、GF13-001NH 这类编号不会歧义,最可靠;
  2. 主题名——归一后的主题名对上一条作品线;
  3. 品名关键词——MAILeS、GN Arms TYPE-E 这类只可能属于某条产品线的说法。

官网已经给了作品线的条目不动,规则只填「其他作品」的洞。判定率从 72% 提到 93%。

「非高达作品」是单独标出来的。中文站把万代同一份商品目录里的别的 IP (Macross 的 VF 系列、EVA、奥特曼、假面骑士、超级机器人大战、龙珠、柯南…) 和高达放在同一个分类下,所以本库的高达栏里也混着它们。给它们单列一条作品线, 比含糊地扔进「其他作品」诚实——「其他作品」指的是还没判定作品线的高达产品。

这里说的是等级品(PG/MG/HG…)里的非高达 IP。中文站上另有七条完全不按等级分类的 产品线(宝可梦拼装模型、30MS/30MP、30MM、MECHA COLLECTION、猫武装、黏土模型套件), 它们另立一档、各给一个品类,作品线取自详情页自己的分类面包屑。

寿屋与良笑不需要这套规则:它们的官网直接给作品名,拿来就是。

拿数据:JSON 与 CSV

这个库本来就是给别人拿去用的——每条记录都有稳定的 id 和官方出处, 拿去做表格、喂脚本、做自己的检索都应该是件顺理成章的事。

  • /data/models/export.json — 完整导出,附带 fields 字段名列表、generatedAt 与条数。数组型字段是真正的 JSON 数组。
  • /data/models/export.csv — 同样的字段,数组型字段(别名、标签)用分号隔开放在 一格里,带 UTF-8 BOM,Excel 打开不乱码。
  • /data/models/index.json — 列表页用的紧凑索引(数组行),给前端做筛选与分页用; 站内搜索与条目对比也复用这一份,不另造数据。

导出的是事实层的内容,不是渲染层:没有 HTML,也没有图片文件本身,只有图片的站内路径。

结构化数据

条目页输出 schema.org/Product,主题页输出 schema.org/ProductGroup(各个版本作为 hasVariant)。这不是电商站,但把条目按结构化数据描述出来,搜索引擎就能 把它当商品读懂(名称、型号、发售日、定价、图片),别人引用这份数据时也不必再从 页面里抠字段。厂商、品类、比例、作品线、渠道、主题、零件数这些本站特有的字段放在 additionalProperty 里。

几个浏览维度

条目有 8968 条,从哪个角度切进去,答案都不一样。所以除了列表页,还给了四个维度:

  • 按主题浏览(/data/models/subject/)——同一台机体或同一个角色的各个产品, 主题页给跨品类对比表。详见上面「主题维度」一节。
  • 按作品线浏览(/data/models/series/)——每条作品线一页,给出条目数、 品类构成、年代跨度、官方定价区间,以及这条线里版本最多的几个主题。
  • 条目对比(/data/models/compare/)——选两到六条并排放,逐行比较品类、 比例、作品线、渠道、发售、定价、全高与零件数、拼装难度、材质、主题归属。 选中状态存在浏览器 localStorage 里,不经过服务端;地址栏里的 ?ids= 可以直接分享给别人。
  • 我的清单(/data/models/collection/)——自己记的两份单子:想要 (还没到手的)与已有(已经到手的)。在条目详情页点两个按钮就能加进去, 清单页给出官方定价合计、品类与作品线分布。 和对比栏一样,两个标记都存在浏览器 localStorage 里——没有账号、不上传, 换设备就不跟着走。同类的模型站都有这件事(Gunpla Hangar 分六档状态, GunplaDB 在每条上显示 Wishlist 与 Collections 的计数,GunplaLog 把愿望单 和收藏连在一起);这里按本站的调子做成最简单的两份。
  • 数据概览(/data/models/stats/)——库里有什么、缺什么。除了规模、厂商构成、 价格分布、品类与年代的交叉、渠道构成,还有一张字段覆盖率表:每个关键字段 有多少条记录是有的。

最后这张表值得多说一句。零件数、全高、官方拼装难度这几项的覆盖率很低, 官方日文品名次之。这不是遗漏,是公开写下来的边界——一份数据集如果不把自己的 缺口摊开讲,别人就没法判断哪些结论能用、哪些不能用。

检索

站内搜索(/search/)收三类东西:

  • 内容页——笔记、数据集、项目、关于。正文纯文本截断到 2500 字符/篇。
  • 静态页面——首页、四个栏目首页、更新记录,以及模型数据库的几个维度页。 它们回答的是「这个站能做什么」,标题与描述本身就是关键词,所以额外给一组 关键词。
  • 作品线页——每条作品线一行,给出规模、年代跨度与代表主题。

8968 个模型条目不在这份索引里:它们由 /data/models/index.json 提供, 搜索页复用那一份(列表页本来就要用它),不另造数据。主题页也不逐条进来—— 搜索结果在客户端按主题聚合:同一个主题的各个产品合成一条,标题是主题名并链到 主题页,下面挂几个具体版本。搜「高达」原本会命中上千个条目,聚合后是几十条主题组。

打分按字段加权:标题最重,别名(元祖高达 → RX-78-2 高达)与主题名单独 加权——玩家搜俗称时命中的是别名,那比在正文里蹭到一次值钱得多;标签、描述、 正文依次递减,正文里的出现次数给对数奖励(出现一次和出现十次不该差十倍)。 结果分「模型条目」与「站点内容」两段,两段按各自最强的那条排。

  • 列表页检索同时匹配品名、日文名、型号、厂商、品类与品类的英文名、作品线、 渠道、比例、主题名与别名。
  • 特征分面列出出现三次以上、且不是渠道状态的那些标签。渠道与状态类标签 (Premium Bandai、PB再贩…)与渠道分面重复,不进这个分面。

列表页怎么变轻的

条目破千之后,把所有卡全部内联进 HTML 会让列表页涨到 2 MB。现在改成两半: 服务端只渲染第一页的 60 张卡(没有脚本也能看到内容,爬虫也读得到), 完整数据由 /data/models/index.json 提供,浏览器取回后自己做筛选、排序与分页。 筛选条件写在 URL 上(?maker=goodsmile&category=goodsmile:figma&q=我妻善逸&page=3), 可以直接分享。<noscript> 里留了一份直达链接表(前 600 条),脚本被禁时仍能翻到大部分条目, 完整清单在 CSV 与 JSON 导出里。

页面为什么这么小

库里的条目有八千多条,每条一个详情页,页面体积就成了硬约束—— GitHub Pages 的站点上限是 1 GB,naïvely 内联会让站点涨到 1 GB 出头。

所以有几处刻意的取舍:

  • 线稿只存一份。封面是手写的 SVG 线稿,详情页上要出现四次(大图)加四次(缩略图), 列表页一次六十张。线稿抽到页面级的 <symbol> 里,各张封面用 <use> 引它—— <use> 复制出来的是影子树,自定义属性照样继承进去,所以每条记录仍然能用 自己作品线的配色上色。详情页因此从 90 KB 降到 40 KB 出头。
  • 只有多版本的主题才单独占一页。库里绝大多数主题只收了一款(良笑的一个角色 常常只有一款手办),单独给它们开一页,产出的是几千张只有一条记录的页面—— 既占地方,也没有可对比的内容。
  • 作品线页的条目网格封顶 60 条。良笑的作品线动辄几百条,全列出来页面会到 2 MB; 剩下的在列表页按这条线筛选能看到。
  • 页面内的脚本打包成共享文件。对比栏、图集与灯箱的脚本在每页内联一次, 打包后所有页面共用一份。

这些取舍不是为了省流量好看,是为了让数据集能真的放上去。

旧地址怎么办

数据库从 /data/gundam/ 迁到 /data/models/,mech 那个维度也改叫 subject。 旧地址没有直接断掉,而是各自生成了一张跳转页:

  • 条目页 /data/gundam/<条目 id>/ → /data/models/<条目 id>/(条目 id 没变)
  • 机体页 /data/gundam/mech/<机体键>/ → /data/models/subject/<机体键>/ (只有一个产品的主题落到那一条产品上——那才是当年那个页面上唯一的内容)
  • 作品线页、统计页、对比页 → 对应的新地址
  • export.json / export.csv / index.json → 老脚本照旧能拿到数据

跳转页是静态生成的,自带 meta refresh 与 canonical,不依赖任何平台特性—— GitHub Pages 的 _redirects 在站点同时有 404.html 时不生效(平台先把请求交给 404 页),所以没有用它。

怎么复现

数据链路是分层的,每一层都能单独检查:

src/data/gundam.kits.classic.json    事实层:万代经典线原始记录
src/data/gundam.kits.recent.json     事实层:万代新作线原始记录
src/data/gundam.kits.cn.json         事实层:万代中文站全量商品
src/data/gundam.kits.seed.json       事实层:万代逐条核实过的记录
src/data/gundam.kits.pb.json         事实层:PB 限定(中文名 + 日站校准)
src/data/gundam.kits.assemble.json   事实层:高达集结套装
src/data/gundam.kits.catalog.json    事实层:万代按品牌/作品页抓的目录(带作品线归属)
src/data/gundam.kits.itemall.json    事实层:万代全量商品总表(更全,带详情回填)
src/data/models.kits.kotobukiya.json 事实层:寿屋官方直销商城
src/data/models.kits.goodsmile.json  事实层:良笑产品资料库(中文页)
src/data/models.kits.bandai-nongundam.json  事实层:万代非高达产品线(宝可梦、30MS/30MP/30MM…)
src/data/models.kits.goodsmile-mall.json      事实层:良笑商城目录(商品 id / 品名 / 现价 / 限定标签)
src/data/models.kits.goodsmile-mall-status.json 事实层:良笑商城商品状态(在售 / 预约中 / 售罄)
src/data/models.kits.modhtoy.json    事实层:魔动核官网
src/data/models.kits.tamiya.json     事实层:田宫模型中国旗舰店(中文名 / 港币标价 / 上架日)
src/data/models.kits.tamiya-jp.json  事实层:田宫日本官网独有的产品(日文名 / 日元定价)
src/data/models.kits.tamiya-jp-enriched.json 叠加层:田宫日本官网给商城条目的日文名与日元价
src/data/models.kits.kaiyodo.json    事实层:海洋堂官网(官方名 / 税込价 / 発売予定月 / 缩放)
src/data/models.kits.volks.json     事实层:造型村官方 EC 商城(官方日文名 / 税込价 / 発売日 / 零件数)
src/data/models.kits.goodsmile-jp.json 叠加层:良笑官网日文页(官方日文名 / 税込价 / 発売時期 / 比例)
src/data/models.subject-meta.json   人工整理:72 条机体的英文名与俗称
src/data/models.series-rules.json    人工整理:万代作品线归类规则
            │
            ▼  scripts/build-models-data.mjs
src/data/models.kits.ts              渲染层:合并、去重、校验、排序后的类型化模块
src/data/models.subjects.json        渲染层:主题索引
src/data/models.series.json          渲染层:开放词表的作品线目录
            │
            ▼  scripts/fetch-gundam-images.mjs
public/gundam/<id>.webp               缓存层:下载并压缩过的万代商品图
src/data/gundam.images.json          缓存层:id → 本地图片路径
            │
            ▼  再跑一次 build-models-data.mjs
条目上的 image 字段

重新生成:

npm run test:subject             # 主题归并的固定用例(改规则前先跑它)
node scripts/harvest-gundam-catalog.mjs   # 抓万代中文站品牌/作品分类页(带作品线归属)
node scripts/harvest-gundam-catalog.mjs --build   # 只按已抓到的页面重整目录
node scripts/harvest-gundam-itemall.mjs   # 抓万代中文站全量商品总表
node scripts/build-gundam-cn-facts.mjs    # 合成中文站事实文件
node scripts/backfill-gundam-channels.mjs  # 回填详情页的渠道徽章、人民币价与精确发售日
node scripts/backfill-gundam-release-dates.mjs  # 只补精确发售日
pnpm data:gundam:jp               # 从万代日本站抓目录与官方商品图
node scripts/harvest-gundam-pb-jp.mjs      # 抓 Premium Bandai 目录与商品图
node scripts/harvest-gundam-pb.mjs         # 抓中文站 PB 专区(官方中文名)
node scripts/build-gundam-pb-facts.mjs     # 合成 PB 事实文件
node scripts/harvest-gundam-assemble.mjs   # 抓高达集结官方商品一览
node scripts/build-gundam-assemble-facts.mjs  # 合成高达集结事实文件
node scripts/join-gundam-jp.mjs    # 把日本站的数据对照到中文站条目上(叠加层)
node scripts/harvest-kotobukiya.mjs   # 抓寿屋官方直销商城
node scripts/harvest-goodsmile.mjs   # 抓良笑产品资料库
node scripts/harvest-goodsmile-mall.mjs   # 抓良笑商城目录(分类列表接口)
node scripts/harvest-goodsmile-mall-status.mjs  # 抓良笑商城商品详情页(在售状态)
node scripts/harvest-modhtoy.mjs     # 抓魔动核官网
node scripts/harvest-bandai-nongundam.mjs  # 抓万代非高达产品线(详情页)
node scripts/harvest-tamiya-cn.mjs   # 抓田宫模型中国旗舰店(无头浏览器过 Sucuri 挑战)
node scripts/build-tamiya-facts.mjs  # 合成田宫事实文件(只留模型本体)
node scripts/harvest-tamiya-jp.mjs   # 抓田宫日本官网目录(官方日文名 + 税込价)
node scripts/build-tamiya-jp-facts.mjs  # 合成田宫日文事实文件(叠加层 + 新增条目)
node scripts/harvest-kaiyodo.mjs     # 抓海洋堂官网(WordPress 接口 + 商品页规格)
node scripts/build-kaiyodo-facts.mjs  # 合成海洋堂事实文件
node scripts/harvest-goodsmile-jp.mjs # 抓良笑官网日文商品页(按 id 对齐的官方日文名)
node scripts/harvest-volks.mjs        # 抓造型村官方 EC 商城(分类翻页 + 商品页规格)
node scripts/build-volks-facts.mjs    # 合成造型村事实文件(只留模型本体)
python scripts/fetch-model-images.py  # 下田宫与海洋堂的商品图
python scripts/fetch-model-images.py --facts src/data/models.kits.volks.json  # 下造型村的商品图
node scripts/build-models-data.mjs    # 合并 → 生成 models.kits.ts
pnpm data:gundam:images           # 下载万代商品图 → 生成 gundam.images.json
node scripts/backfill-gundam-details.mjs   # 从详情页回填缺失的日期与定价
node scripts/build-models-data.mjs    # 再合并一次

合并脚本会校验品类、作品线、渠道是否落在约定取值范围内,报告所有越界记录; 对同 id 的记录按「价格与核实状态更全者优先」合并;同一个商品详情页 URL 也视作同一款产品——不同来源文件会用不同 id 收录同一款产品,靠来源页才能 认出它们是一回事。最后按发售时间倒序排序,保证同样输入得到同样输出。

开放词表的作品线在合并时生成:作品名 → id(作品名的哈希)→ 写进作品线目录。 作品线目录里的人工配色是按 id 的哈希算出来的色相,同一条线里始终一致。

主题维度与别名也在这一步算出来:归一规则在 scripts/lib/subject.mjs, 别名词典在 src/data/models.subject-meta.json,作品线归类规则在 src/data/models.series-rules.json。改规则或补词典之后重跑合并脚本即可, 不需要重新抓取——这三样都只依赖已有的事实层记录。

归并规则是有固定用例的(scripts/fixtures/subject-cases.mjs)。归并规则是手写的 正则与表,改一行就可能让上百条记录的主题名悄悄变掉;npm run test:subject 会把 已经人工核对过的行为跑一遍,不一样的就是改坏的。改规则时先跑它。

抓取器对源站是客气的:一次只发少量并发请求,中间固定间隔,遇到限流就指数退避; 抓过的页面原样存进 .cache/,所以随时可以中断续跑。

图片

万代条目的封面用的是官方商品图,不是照片也不是本仓库的素材。图片会先下载到 public/gundam/,统一裁成 480px 的 WebP(一张约 15–20 KB),站点不直接引用 厂牌的 CDN:那样既把浏览压力转嫁给对方,也会让站点跟着对方的可用性一起 抖。条目里同时保留 imageUrl 指向原始地址,便于溯源。

寿屋、良笑与魔动核的条目没有下载商品图——数千张图会让仓库体积翻几倍, 而这些厂商的商品图在各自的站点上都有稳定的地址。已经采到的条目都记了 imageUrl,哪天想要补,下载脚本按 imageUrl 跑一遍即可。

田宫那 3367 条、海洋堂那 132 条与造型村那 152 条都有官方商品图:商城与官网挂的都是厂牌官方图。 取图走 scripts/fetch-model-images.py——田宫商城的静态资源会被服务端转成 AVIF, 而 sharp 用的 libvips 没编 AVIF 解码器,Pillow 带解码器,转成 480px 的 WebP(一张约 8–26 KB)后与万代那边是同一种格式。田宫日本官网的图走 CloudFront, 本机直连会被 403 挡下,脚本自动改走本机代理。

造型村的商品图在商城自己的服务器上(/client_info/VOLKS/itemimage/<商品号>/), 官方图直接取,无需转码。

没有商品图的条目回落到手绘的 SVG 封面——那是同一套线稿按作品线配色生成的, 在详情页里则作为「正面 / 侧面 / 背面 / 头部」四张技术视图,与商品照并列。 封面上方印的是厂牌名(BANDAI SPIRITS / KOTOBUKIYA / GOOD SMILE COMPANY / MO DONG HE / TAMIYA / KAIYODO / VOLKS),不是「高达模型」——库里已经不止万代一家了。

有什么限制

  • 不是每家的完整目录。万代是从官网的全量商品总表与作品分类页抓下来的子集; 寿屋收的是官方直销商城在售的四个分类;良笑收的是 figma、黏土人与比例手办 三条线;魔动核收的是官网列出的全部款式;田宫收的是商城 7091 件里的模型本体 2027 件(整站一半以上是工具、颜料与配件,不算模型)。
  • 万代这一栏的高达部分只收塑料模型。宝可梦拼装模型、30MS/30MP 人偶、 30MM/HAROPLA 机甲模型、MECHA COLLECTION、猫武装、黏土模型套件这七条非高达 产品线单列一档(共 350 条),每条线一个品类。
  • 水贴、零件套组、底座、工具、说明书、立牌不收(源站上约 150 条)。 它们不是模型,虽然名字里也带等级。非高达那批里的可选装甲/武器/背包、 可选发型与面部配件同理。
  • BB 战士不收(源站上 37 条)。这是一条被刻意排除的产品线,不是漏采。
  • 寿屋条目是官方日文名。官方中文站连不上,拿不到官方中文名,所以不翻译; nameJa 因此留空——官方日文名就是 name 本身,重复一遍没有意义。
  • 良笑条目是官方繁体中文。良笑官方中文站是繁体站,原样保留。
  • 厂商字段记的是「来自谁的目录」。良笑目录里也卖 FREEing、TOMYTEC、 Max Factory 的产品,实际制造与发售厂商记在 tags 里。
  • 魔动核没有定价与发售日。官网不公布,定价在淘宝店,官方页上写的是「敬请期待」。
  • 田宫条目没有发售日。商城与日本官网都不公布,只给上架日期;后者记在 listedAt, 与发售日严格分开,列表排序时用它兜底。
  • 官方日文名只覆盖到 7184 条(全库 13175 条)。良笑靠官网日文页补上 4762 条, 田宫靠日本官网补上 1705 条,万代靠日站叠加层补上 717 条;寿屋的官方名就是 它的 name 本身(按惯例 nameJa 留空),海洋堂与造型村同理。剩下的要么官网不公布, 要么两边写法对不上——不猜。
  • 田宫的定价有两处,都照录不折算:日本官网的厂商希望零售价(日元、税込) 记在 priceJpy,商城自己的港币标价记在 priceHkd。商城页面另标 「折合人民币约」,那是商城自己的换算,本库不采用。
  • 田宫的品名中英混排照抄商城。商城把中文名与英文名分放在「商品名」与「简介标题」 两处,且中英文互换着来;本库按「哪一串是中文」取主名、另一串作别名, 官方英文名仍然能搜到。少数条目商城只给了英文名,那就用英文名。
  • 田宫的日文条目只有日文名。日本官网独有的那 1340 条没有中文品名, 与寿屋那批一个口径照录官方日文名。
  • 田宫没有主题维度。官网不标注题材,从品名里抽「真实型号」会引入猜测,所以不抽。
  • 海洋堂的品名只有日文,字段却是最全的:税込与税抜两种价、発売予定月、 缩放与材质都在官网的规格区里。
  • 造型村只有商城在售的那批。EC 商城下架的旧款(SWS 的早期机种)不在目录里, 所以这 152 条是「现在能买到的」,不是「历史上做过的全部」。
  • 造型村有一半没有发售日。规格表里的「発売日」常常是空的,缺的就留空; 页面顶部那个「発売日時:2054 年 11 月 11 日」是商城开卖时段的占位值,不能当发售日用。
  • 造型村的品名只有日文。商城没有中文品名,也不另编中文名。
  • 车、飞机、舰船的条目不画「四视图」。详情页那组「正面 / 侧面 / 背面 / 头部」 是机体线稿,配到车模与舰船上是错的,所以按厂商关掉,页面只留官方商品图。
  • 寿屋的定价是商城在售价,不是「厂商希望小売价」;商城页上标的是含税价, 没写税率,所以 taxRate 留空。
  • 寿屋有 22 条没有作品名。官方页面自己就没给(老树脂 kit 与部分角色周边), 归在「其他」,不猜。
  • 良笑有 34 个产品在详情页已下架。分类索引里还列着,页面却返回 404, 收不进来。
  • 商城的在售状态只覆盖良笑条目,而且是对齐后的那八成。 良笑商城与资料库是两套系统、id 不通用,只能靠品名对照,对不上的两成 商城那一栏留空。商城上的老商品在繁中站本身就没有中文资料, 页面是空的(不是 404,就是没有这一件的资料),这种情况状态也留空。
  • 在售状态是核对当日的情况。良笑随时在开预购、结束预购、再次发售, 这一栏会过期;条目页上写着「状态核对于 YYYY-MM-DD」,那天的核对结果就是这样。
  • 主题维度对寿屋不适用。寿屋的官方品名本身就是一个产品,没有「同一对象的 多个产品」这层关系,所以寿屋条目不设主题。
  • 主题归一靠规则,不靠理解。万代那边同一台机器在不同产品线里的中文写法并不一致, 规则能覆盖大多数情况,但仍会留下少量合装品与配件被当成主题。 零件包一类的商品已经整体排除在主题维度之外。
  • 价格是发售价,不是市价。限定品与热门款的实际成交价往往远高于官方定价, 这里不做二手行情。
  • 发售时间会变。厂商多次延期发售日期,个别条目记的是当初公布的时间。
  • 字段缺失是常态。零件数与全高这类数字来自官方说明与玩家实测,不同时期统计口径 略有差异;缺失一律留空,不做估算。
  • 万代的限定品大多没有日元定价。高达基地限定、网络限定、Premium Bandai 限定等商品, 官方页上根本没有日元建议零售价——这些条目的 priceJpy 记为 0,是事实而非缺漏。
  • 万代的库里有非高达作品。中文站把万代同一份商品目录里的别的 IP(Macross、EVA、 奥特曼、假面骑士…)和高达放在同一个分类下。它们被单列为「非高达作品」。
  • 万代的作品线归属一半靠官网、一半靠人工规则,剩下的确实判不准——宁缺勿错,就留着。
  • 列表页靠脚本渲染。服务端只渲染第一页的 60 张卡,其余由浏览器取 index.json 后自行渲染。禁用脚本时会退回到 <noscript> 里的全量链接表, 但筛选与分页不可用。
  • 对比功能是纯本地的。选中的条目存在浏览器 localStorage 里,不上传、不跨设备; 要分享给别人,靠地址栏里的 ?ids= 参数。
  • 我的清单也是纯本地的。「想要」与「已有」两个标记存在浏览器 localStorage 里, 没有账号、不上传、换设备就不跟着走。它记的是你的东西,不是站里的东西。
  • 接口没有分页参数。export.json 与 export.csv 是全量导出, 数据集规模再涨一个数量级就需要加游标。