LLM メタデータを発見・統合するための軽量な「静的 API」。ライブ: GitHub Pages · Cloudflare Pages
高スループットに親和的な静的インターフェース: 変更時のみ再ビルドし、GitHub Pages から静的 JSON を配信します。
データソース: models.dev/api.json + BaseLLM コミュニティの貢献
要件: Node.js 18+(ネイティブ fetch を使用)
npm install
npm run build出力: dist/api/
スクリプト:
npm run build— TypeScript をコンパイルし、API を構築(変更がなければ無変更)npm run build:force— すべてのファイルを強制再生成npm run check— 変更検出のみ(CI 用)npm run clean—.cacheとdistを削除npm run compile— TypeScript のみコンパイルnpm run dev— ウォッチモードでコンパイル
ドキュメント i18n は i18n/docs/*.json と i18n/locales.json(mkdocs-static-i18n)で管理し、API i18n は i18n/api/*.json と data/overrides/** で管理します。
i18n/
locales.json # 言語一覧(唯一の信頼できるソース)
docs/
en.json # ドキュメント UI 文字列(英語がフォールバック)
zh.json
ja.json
api/
en.json # 機能ラベル + 既定の説明テンプレート
zh.json
ja.json
docs/
en/ index.md data.md
zh/ index.md data.md
ja/ index.md data.md
i18n/locales.jsonに追加:
{
"locales": [
{ "locale": "en", "default": true },
{ "locale": "zh" },
{ "locale": "ja" },
{ "locale": "fr" }
]
}i18n/docs/en.jsonをコピーしてi18n/docs/fr.jsonを作成し翻訳i18n/api/en.jsonをコピーしてi18n/api/fr.jsonを作成し翻訳(機能ラベル + 既定説明テンプレート)docs/fr/index.mdを作成し、空のdocs/fr/data.mdを用意(ビルドで自動生成)- 任意:
mkdocs.ymlにfrのnav_translationsを追加 - ビルド:
npm run build
- 機能ラベル(capability labels)は
i18n/api/<locale>.jsonから取得し、以下に適用されます:- 明示的な
model.tags - ブール能力: tools / files / reasoning / temperature / open_weights
- モダリティ由来タグ: vision / audio
- 明示的な
- ローカライズ済み API 出力:
dist/api/i18n/<locale>/all.jsondist/api/i18n/<locale>/providers.json,index.json- 分割ファイル:
dist/api/i18n/<locale>/{providers,models}/...
- NewAPI ペイロード:
- 英語(安定版):
dist/api/newapi/{vendors.json,models.json} - ローカライズ版:
dist/api/i18n/<locale>/newapi/{vendors.json,models.json}
- 英語(安定版):
- 既定の説明テンプレート(ロケールごと):
i18n/api/<locale>.json→defaults.model_description- プレースホルダ:
${modelName},${providerId} - あるモデルの説明が英語の既定説明と一致する場合、ローカライズ構築ではロケールのテンプレートに置換
- 文字列は
i18n/docs/<locale>.jsonから取得(欠落キーは英語へフォールバック) npm run buildでdocs/<locale>/data.mdを自動生成- プレビュー:
pip install -r requirements.txtの後、mkdocs serve
- 手動:
data/**を編集して main にプッシュ → CI がビルド&公開 - 自動: スケジュール取得で差分検出、ポリシーで許可されたモデルのみ増分更新
GitHub Actions トリガー:
push(scripts/**,data/**等)workflow_dispatch(手動)schedule(6 時間ごと)
設定ファイル: data/policy.json(既定で auto=true)。例:
{
"providers": {
"deepseek": { "auto": true },
"xai": { "auto": true }
},
"models": {
"deepseek/deepseek-reasoner": { "auto": false },
"xai/grok-4": { "auto": true }
}
}モデルが auto=false の場合、自動モードは既存の静的ファイルを上書きしません(初回生成は行われます)。
単一の data/overrides.json から、競合に強いディレクトリ構成へ移行しました。以下の場所に小さな JSON を置くと、ビルド時に深いマージで統合されます:
data/
overrides/
providers/
<providerId>.json # プロバイダーの上書き(lobeIcon、iconURL、name、api、doc など)
models/
<providerId>/<modelId>.json # モデルの上書き(description、limit、modalities、cost、各種フラグ)
i18n/
providers/<providerId>.json # 任意: プロバイダーの名前/説明のローカライズ
models/<providerId>/<modelId>.json # 任意: モデルの名前/説明のローカライズ
例:
プロバイダーアイコン(data/overrides/providers/openai.json):
{ "lobeIcon": "OpenAI.Color" }モデル上書き(data/overrides/models/openai/gpt-4o.json):
{
"description": "強力な推論を備えたマルチモーダル最適化モデル。",
"limit": { "context": 131072, "output": 8192 },
"modalities": { "input": ["text", "image"], "output": ["text"] },
"reasoning": true,
"tool_call": true,
"attachment": false
}注意:
- 深いマージを適用。未指定のフィールドは保持されます。
- モデル上書きの許可キー(サニタイズ対象):
id,name,description,reasoning,tool_call,attachment,temperature,knowledge,release_date,last_updated,open_weights,modalities,limit,cost。 - 参照元は
data/overrides/**のみ。