openrouter-models について
OpenRouter を利用するエージェント開発者向けに、モデルの一覧、検索、名前解決、比較を行うスクリプト集です。提供元ごとのレイテンシ、稼働率、スループットも確認でき、曖昧なモデル名を正確な ID に変換できます。
主な機能
- 01モデルの一覧表示、絞り込み、検索
- 02曖昧な名前からモデル ID を解決
- 03価格、コンテキスト、スループットの比較
- 04提供元の性能と状態の照会
- 05モダリティと対応パラメーターの確認
活用シーン
- 01カテゴリや価格でモデルを探す
- 02通称に対応するモデル ID の特定
- 03モデルの価格とコンテキスト長の比較
- 04提供元のレイテンシと稼働率の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openrouterteam/ skills --skill openrouter-modelsインストール後、Claude Code で/openrouter-modelsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdscripts/compare-models.tsget-endpoints.tslib.tslist-models.tspackage-lock.jsonpackage.jsonresolve-model.tssearch-models.ts詳細
OpenRouter のモデル
OpenRouter で利用できる 300 以上の AI モデルを見つけ、検索し、比較できます。料金、コンテキスト長、プロバイダーごとのレイテンシと稼働率、スループット、対応モダリティ、対応パラメーターなどのライブデータを照会できます。
前提条件
ほとんどのスクリプトでは、環境変数 OPENROUTER_API_KEY は任意です。この変数が必要なのは、プロバイダーのパフォーマンスデータを取得する get-endpoints.ts のみです。キーは https://openrouter.ai/keys で取得できます。
初回セットアップ
cd <skill-path>/scripts && npm install
判断ツリー
ユーザーの要望に応じて、適切なスクリプトを選んでください。
| ユーザーの要望 | スクリプト | 例 |
|---|---|---|
| 利用可能なすべてのモデルを確認する | list-models.ts | 「OpenRouter にはどのようなモデルがありますか?」 |
| 最近追加されたモデルを見つける | list-models.ts --sort newest | 「最も新しいモデルは何ですか?」 |
| 最も安価なモデルを見つける | list-models.ts --sort price | 「最も安価なモデルは何ですか?」 |
| スループットが最も高いモデルを見つける | list-models.ts --sort throughput | 「出力性能が最も高いモデルはどれですか?」 |
| カテゴリー別にモデルを見つける | list-models.ts --category X | 「プログラミングに最適なモデルは?」 |
| 名前で検索する | search-models.ts "query" | 「Claude はありますか?」 |
| あいまいなモデル名を解決する | resolve-model.ts "query" | 「nano banana 2.0 モデルを使って」 |
| 画像対応モデルを見つける | search-models.ts --modality image | 「画像を受け付けるモデルはどれですか?」 |
| 特定のモデルを比較する | compare-models.ts A B | 「Claude と GPT-4o を比較して」 |
| スループットで比較する | compare-models.ts A B --sort throughput | 「Claude と GPT-4o では、どちらのスループットが高いですか?」 |
| プロバイダーのパフォーマンスを確認する | get-endpoints.ts "model-id" | 「Claude で最速のプロバイダーはどれですか?」 |
| 最速のプロバイダーを見つける | get-endpoints.ts "model-id" --sort throughput | 「Claude Sonnet で最速のプロバイダーは?」 |
| レイテンシが最も低いプロバイダーを見つける | get-endpoints.ts "model-id" --sort latency | 「GPT-4o でレイテンシが最も低いプロバイダーは?」 |
| モデルの利用可能状況を確認する | get-endpoints.ts "model-id" | 「Claude Sonnet 4 は現在利用できますか?」 |
モデル名を解決する
ファジーマッチングを使って、あいまいなモデル名を正確な OpenRouter モデル ID に解決します。
cd <skill-path>/scripts && npx tsx resolve-model.ts "claude sonnet"
cd <skill-path>/scripts && npx tsx resolve-model.ts "gpt 4o mini"
cd <skill-path>/scripts && npx tsx resolve-model.ts "llama 3.1"
結果には confidence レベルと score が含まれます。
| 信頼度 | スコア | 対応 |
|---|---|---|
high (≥0.85) | モデルをそのまま使用します。一致先は明確です | |
medium (≥0.55) | 先にユーザーに確認してから進めます | |
low (≥0.30) | 一致候補を提示し、ユーザーに確認を求めます |
2 段階のワークフロー: まず resolve-model.ts であいまいな名前を解決し、次に解決された id を他のスクリプト(compare-models.ts、get-endpoints.ts など)に渡します。
モデルを一覧表示する
cd <skill-path>/scripts && npx tsx list-models.ts
カテゴリーで絞り込む
サーバー側でカテゴリーを絞り込みます。
cd <skill-path>/scripts && npx tsx list-models.ts --category programming
カテゴリー:programming、roleplay、marketing、marketing/seo、technology、science、translation、legal、finance、health、trivia、academia
結果を並べ替える
cd <skill-path>/scripts && npx tsx list-models.ts --sort newest # Recently added first
cd <skill-path>/scripts && npx tsx list-models.ts --sort price # Cheapest first
cd <skill-path>/scripts && npx tsx list-models.ts --sort context # Largest context first
cd <skill-path>/scripts && npx tsx list-models.ts --sort throughput # Most output tokens first
expiration_date が近づいているモデルがある場合、stderr に警告が出力されます。
モデルを検索する
cd <skill-path>/scripts && npx tsx search-models.ts "claude"
cd <skill-path>/scripts && npx tsx search-models.ts --modality image
cd <skill-path>/scripts && npx tsx search-models.ts "gpt" --modality text
モダリティ:text、image、audio、file
モデルを比較する
100 万トークンあたりの料金で、2 つ以上のモデルを並べて比較します。ID は完全一致で照合されます。openai/gpt-4o はそのモデルだけに一致し、gpt-4o-mini などのバリエーションには一致しません。
cd <skill-path>/scripts && npx tsx compare-models.ts "anthropic/claude-sonnet-4" "openai/gpt-4o"
cd <skill-path>/scripts && npx tsx compare-models.ts "anthropic/claude-sonnet-4" "openai/gpt-4o" "google/gemini-2.5-pro" --sort price
並べ替えのオプション:price(安い順)、context(大きい順)、speed/throughput(出力トークン数が多い順)
プロバイダーのパフォーマンス(エンドポイント)
任意のモデルについて、プロバイダーごとのレイテンシ、稼働率、スループットを取得します。
cd <skill-path>/scripts && npx tsx get-endpoints.ts "anthropic/claude-sonnet-4"
cd <skill-path>/scripts && npx tsx get-endpoints.ts "anthropic/claude-sonnet-4" --sort throughput
cd <skill-path>/scripts && npx tsx get-endpoints.ts "openai/gpt-4o" --sort latency
並べ替えオプション:throughput(トークン/秒が速い順)、latency(p50 のミリ秒数が少ない順)、uptime(信頼性が高い順)、price(価格が安い順)
各プロバイダーについて、以下の情報を返します。
- レイテンシ(ミリ秒単位の p50/p75/p90/p99)— 中央値から最悪時までの応答時間
- スループット(トークン/秒単位の p50/p75/p90/p99)— 生成速度
- 稼働率 — 過去 30 分間の割合
- ステータス —
operationalまたはdegraded - プロバイダー固有の価格設定 — 割引を提供しているプロバイダーもあります
- サポートされているパラメーター — プロバイダーによって異なります(すべての機能に対応しているとは限りません)
API レスポンスの形式
GET /api/v1/models は { data: Model[] } を返します。フィールドの詳細については、Models のリファレンスを参照してください。
クエリパラメーター(すべて省略可能):
| パラメーター | 例 | 効果 |
|---|---|---|
category | ?category=programming | サーバー側でカテゴリを絞り込みます |
supported_parameters | ?supported_parameters=tools | このパラメーターをサポートするモデルのみを対象にします |
レスポンスを扱う際のヒント:
- モデルが機能をサポートしているか確認するには、
model.supported_parameters(例:.includes("tools"))を使用するか、?supported_parameters=toolsでサーバー側の絞り込みを行います。 - モダリティを確認するには、
model.architecture.input_modalities/model.architecture.output_modalitiesを使用します。 - 価格は米ドル建てのトークン単価を文字列で表したものです。100 万トークンあたりの価格にするには、1,000,000 を掛けてください。
knowledge_cutoffとexpiration_dateは、日付文字列または null です。links.detailsは、そのモデルのプロバイダーごとのエンドポイント API を示します。GET /api/v1/models/{author}/{slug}/endpointsは{ data: { id, name, endpoints: Endpoint[] } }を返します。- エンドポイントの
status:0= 稼働中、0 以外 = パフォーマンス低下。 - エンドポイントの
latency_last_30m/throughput_last_30m:p50、p75、p90、p99を含むパーセンタイルオブジェクトです。
スクリプトの出力形式
以下のスクリプトは、API の生データを再整形します。API を直接呼び出す場合(例:fetch を使用する場合)は、フィールド名について OpenAPI 仕様を参照してください。
list-models.ts / search-models.ts
API の生データから一部のフィールドを抽出します。スクリプトでは formatModel() を実行し、canonical_slug、hugging_face_id、default_parameters、knowledge_cutoff、links を除外します。これらのフィールドが必要な場合は、API を直接呼び出してください。
compare-models.ts
{
"id": "anthropic/claude-sonnet-4",
"name": "Anthropic: Claude Sonnet 4",
"context_length": 1000000,
"max_completion_tokens": 64000,
"per_request_limits": null,
"pricing_per_million_tokens": {
"prompt": "$3.00",
"completion": "$15.00",
"cached_input": "$0.30"
},
"modalities": { "input": ["text", "image"], "output": ["text"] },
"supported_parameters": ["max_tokens", "temperature", "..."],
"is_moderated": false
}
get-endpoints.ts
{
"model_id": "anthropic/claude-sonnet-4",
"model_name": "Anthropic: Claude Sonnet 4",
"total_providers": 5,
"endpoints": [
{
"provider": "Anthropic",
"tag": "anthropic",
"status": "operational",
"uptime_30m": "100.00%",
"latency_30m_ms": { "p50": 800, "p75": 1200, "p90": 2000, "p99": 5000 },
"throughput_30m_tokens_per_sec": { "p50": 45, "p75": 55, "p90": 65, "p99": 90 },
"context_length": 1000000,
"max_completion_tokens": 64000,
"pricing_per_million_tokens": { "prompt": "$3.00", "completion": "$15.00", "cached_input": "$0.30" },
"supports_implicit_caching": true,
"supported_parameters": ["max_tokens", "temperature", "tools", "..."]
}
]
}
主なフィールド
| フィールド | 意味 |
|---|---|
pricing.prompt / pricing.completion | 米ドル建てのトークン単価です。100 万トークンあたりの価格にするには、1,000,000 を掛けてください |
context_length | 入力と出力を合わせた最大トークン数 |
top_provider.max_completion_tokens | 最上位プロバイダーからの最大出力トークン数 |
top_provider.is_moderated | コンテンツモデレーションが適用されるかどうか |
per_request_limits | リクエストごとのトークン制限(null 以外の場合) |
supported_parameters | モデルが受け付ける API パラメーター(例:tools、structured_outputs、reasoning、web_search_options) |
created | Unix タイムスタンプ — 新しい順に並べ替える場合に使用します |
expiration_date | null 以外の場合、モデルは廃止予定です |
latency_30m_ms.p50 | 過去 30 分間の応答レイテンシの中央値 |
throughput_30m_tokens_per_sec.p50 | 過去 30 分間の生成速度の中央値 |
uptime_30m | 過去 30 分間のプロバイダー稼働率 |
結果の提示
- ユーザーがモデルを通称で指定した場合は、まず
resolve-model.tsを使用し、解決されたidを他のスクリプトに渡します - 読みやすさのため、料金をトークン100万個あたりの形式に換算します
- 比較する場合は、モデルを列に配置した Markdown テーブルを使用します
- プロバイダーのエンドポイントについては、最速(p50 レイテンシが最も低い)と最も信頼性の高い(稼働率が最も高い)プロバイダーを強調します
- 対応している注目すべきパラメーターとして、
tools、structured_outputs、reasoning、web_search_optionsを挙げます - 利用可能な場合はキャッシュ料金を記載します。入力コストを90%以上削減できることがあります
expiration_dateが設定されているモデルには、非推奨であることを明記します- 複数のプロバイダーが異なる価格でモデルを提供している場合は、最も安価な選択肢を記載します