TL;DR
- Claude Code は
ANTHROPIC_BASE_URLを差し替えるだけで OpenRouter 経由のモデルを呼べる - OpenRouter には 2026 年現在
:freeサフィックス付きの無料モデルが 20 本以上存在する - 適切なモデル選択とプロンプト設計で、有料プランに近いコーディング支援が 月額 $0 で実現可能
- ただし無料枠にはレート制限・コンテキスト制限があるため「使い分け」戦略が肝心
背景
Claude Code は強力な AI コーディングエージェントだが、Anthropic 直通で使うとトークン消費が激しく、ヘビーユーズでは月 $50〜$200 になることも珍しくない。
一方、OpenRouter は複数 LLM を単一 API エンドポイントで束ねるプロキシサービスで、モデル名に :free を付けると無料枠で推論できるモデルを多数提供している。
この 2 つを組み合わせることで、コスト削減しながら開発を回す構成が作れる。
前提知識
OpenRouter :free モデルとは
OpenRouter のモデル識別子は <provider>/<model-name> または <provider>/<model-name>:free の形をとる。
| モデル識別子 | コンテキスト長 | 特徴 |
|---|---|---|
google/gemini-2.0-flash-exp:free |
1M tokens | 高速・長文対応 |
meta-llama/llama-3.3-70b-instruct:free |
131k tokens | コーディング能力高め |
qwen/qwen3-235b-a22b:free |
128k tokens | 推論強化モデル |
mistralai/mistral-7b-instruct:free |
32k tokens | 軽量・高速 |
deepseek/deepseek-r1:free |
164k tokens | 数学・ロジック強め |
無料枠の制約:
- RPM (requests per minute): 通常 10〜20 req/min
- TPD (tokens per day): モデルにより 50k〜200k 程度
- 優先度: 有料リクエストより低い (混雑時に遅延)
設定 1: ANTHROPIC_BASE_URL を OpenRouter に向ける
Claude Code は内部で Anthropic SDK を使っており、環境変数で Base URL を上書きできる。
export ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1"
export ANTHROPIC_API_KEY="sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxx" # OpenRouter APIキー
これだけで claude コマンドが OpenRouter を通るようになる。
⚠️ OpenRouter の APIキーは
sk-or-v1-で始まる。Anthropic のキーと混在させないよう.bashrc/.zshrcでプロファイル別に管理すること。
.envrc で direnv 管理する例
# .envrc (プロジェクトルートに置く)
export ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1"
export ANTHROPIC_API_KEY="${OPENROUTER_API_KEY}" # 別途 direnv allow 済の親ディレクトリから継承
direnv allow しておけばプロジェクトディレクトリに入った瞬間に切り替わる。
設定 2: モデル指定を明示する (--model フラグ)
Claude Code はデフォルトで claude-opus-4-5 や最新の Sonnet を呼ぼうとするが、OpenRouter 経由ではOpenRouter のモデル識別子を明示する必要がある。
# Llama 3.3 70B で起動
claude --model meta-llama/llama-3.3-70b-instruct:free
# Gemini 2.0 Flash で起動
claude --model google/gemini-2.0-flash-exp:free
# Qwen3 235B (思考モデル) で起動
claude --model qwen/qwen3-235b-a22b:free
ANTHROPIC_MODEL 環境変数で固定することもできる:
export ANTHROPIC_MODEL="meta-llama/llama-3.3-70b-instruct:free"
設定 3: CLAUDE.md でコンテキスト節約プロンプトを仕込む
無料モデルはコンテキスト長の制限が相対的に厳しく、また長いプロンプトを送るほど TPD を消費する。プロジェクトルートの CLAUDE.md に最小限のコンテキストを書く運用が効果的。
# Project Context
- Language: TypeScript (strict)
- Framework: Next.js 15 App Router
- Test: Vitest + Testing Library
- Lint: ESLint flat config + Prettier
## Coding rules
- Return early pattern
- No default export (named only)
- Error handling: Result<T, E> pattern preferred
やってはいけないこと:
- ディレクトリツリーをまるごと貼り込む
- 長い仕様書をそのまま埋め込む → TPD を一気に溶かす
設定 4: タスク種別でモデルを使い分ける
無料モデルは一様ではなく、得意不得意がある。以下は実運用上の使い分け目安:
| タスク | 推奨モデル | 理由 |
|---|---|---|
| コードの新規生成・リファクタ | llama-3.3-70b-instruct:free |
instruction following が素直 |
| バグ調査・ログ解析 | deepseek/deepseek-r1:free |
推論ステップが丁寧 |
| 長いファイルの要約・説明 | google/gemini-2.0-flash-exp:free |
1M コンテキストが強み |
| 数学/アルゴリズム問題 | qwen/qwen3-235b-a22b:free |
MoE で数学強化 |
| ボイラープレート生成 | mistral-7b-instruct:free |
高速・軽量 |
シェルスクリプトでショートカットを作ると切り替えが楽:
# ~/.zshrc
alias cc-llama='ANTHROPIC_MODEL="meta-llama/llama-3.3-70b-instruct:free" claude'
alias cc-gemini='ANTHROPIC_MODEL="google/gemini-2.0-flash-exp:free" claude'
alias cc-deepseek='ANTHROPIC_MODEL="deepseek/deepseek-r1:free" claude'
設定 5: レート制限に当たったときのフォールバック設定
無料枠は混雑時に 429 Too Many Requests が返る。Claude Code はデフォルトでリトライするが、待機時間が長くなる場合は有料モデルへの自動フォールバックを OpenRouter の機能で設定できる。
OpenRouter のリクエストヘッダーに X-OR-Fallback を渡す方法は現時点では SDK 経由だと難しいが、OpenRouter の Route 機能 (Web UI) でフォールバックチェーンを組める:
- openrouter.ai → Routes → New Route
- Primary:
meta-llama/llama-3.3-70b-instruct:free - Fallback 1:
meta-llama/llama-3.3-70b-instruct(有料) - 作成されたルート URL を
ANTHROPIC_BASE_URLに設定
これで「まず無料で試みて、失敗したら有料に切り替える」という構成になる。有料フォールバックを使いたくない場合は Fallback を設定せず、単純に 429 時に数分待つ運用でも十分実用的。
実運用でのコスト実績 (筆者調べ)
以下は個人開発プロジェクト (TypeScript SaaS, 約 30k LoC) での 1 ヶ月の実績値:
| 期間 | 使用モデル | 主な用途 | 費用 |
|---|---|---|---|
| 〜2025 年初 | Claude Sonnet (直通) | コード生成全般 | $47 |
| 2025 年 Q2〜 | llama-3.3-70b:free + Gemini:free | コード生成 + 長文サマリ | $0 |
| 2025 年 Q3〜 | 上記 + deepseek-r1:free (調査用) | 上記 + バグ解析 | $0 |
ただし注意点:
- 無料モデルはレスポンスが有料より 2〜5 倍遅い場面がある
- 複雑なマルチファイル編集は有料モデルの精度には届かないケースも
- 「$0 でいい感じ」という感覚は個人開発レベルの話。チーム開発・業務用途は有料プランが安定
まとめ
| 設定 | やること | 効果 |
|---|---|---|
| ① Base URL 変更 |
ANTHROPIC_BASE_URL を OpenRouter に |
OpenRouter の全モデルが使える |
| ② モデル明示 |
--model or ANTHROPIC_MODEL 環境変数 |
無料枠モデルを確実に指定 |
| ③ CLAUDE.md 最適化 | 最小限のコンテキストに絞る | TPD 節約・速度向上 |
| ④ タスク別使い分け | エイリアスでモデルをすぐ切り替え | 品質と速度のバランス |
| ⑤ フォールバック設定 | OpenRouter Routes で構成 | レート制限時の安定性確保 |
コスト最適化と開発速度の両立は、モデルの特性を理解した上での「使い分け」が核心。まず ① と ② だけ試してみて、実際の使い勝手を確認してから残りの設定を積み上げていくのがおすすめ。
参考リンク
- OpenRouter Docs - Models
- OpenRouter Docs - API Reference
- Claude Code - Environment Variables
- OpenRouter Free Tier FAQ
- Llama 3.3 70B - Meta Llama モデルカード
- Qwen3 技術レポート
✍️ 本記事の著者: 合同会社ジモラボ
ジモラボは、八王子を拠点に AI を活用した SaaS を多数開発しています。本記事の技術検証もそうした開発過程の副産物です。
- 🌐 公式サイト: https://locallab.jp
- 🔍 AI SEO 最適化 SaaS: lookupai.jp
- 📺 YouTube: @locallab_llc
- ✉️ お問い合わせ: info@locallab.jp
興味を持っていただけたら、ぜひ各 SNS のフォローもお願いします!