DeepSeek V4をClaude Codeで使う:コメントのクリーニングにかかるコストはいくらか
EveryInfra MCPでYouTube、Bilibili、Douyinから取得した695件のコメントを基に、deepseek-flashでClaude Codeを動かす場合のコストを試算しました。ピーク時の料金はSonnet 5.5の1/10ですが、Haiku 5.5より高くなります。

DeepSeekのdeepseek-flashモデルでClaude Codeを動かし、EveryInfraのリモートMCPサーバーで動画コメントを取得・クリーニングできます。安価ですが、「コストは10分の1」という主張が成り立つのはDeepSeekのキャッシュがヒットした場合だけです。公式のClaude Codeコストドキュメントにあるサンプルセッションで料金を試算したところ、ピーク時料金のdeepseek-flashは$0.0274で、Claude Sonnet 5.5($0.2744)のちょうど10%でした。キャッシュがまったくヒットしない場合、同じセッションは$0.3037となり、キャッシュが効いているSonnet 5.5より高くなります。
Claude Haiku 5.5では、同じセッションが$0.0184で済みます。2026年10月26日、シンガポール時間(SGT)の17:26〜17:38に、EveryInfraを呼び出して15本の動画から695件のコメントを取得しました。クリーニング後に残ったコメントは655件で、推定のモデル入力は84,109トークンから20,176トークンに減りました。BilibiliとDouyinでは、コメント1,000件あたりのデータ料金がdeepseek-flashのモデル料金を上回りました。
本記事でいう「コメントのクリーニング」は、ある特定の作業を指します。Claude CodeがEveryInfraの機能カタログを読み込み、MCPツールeveryinfra_call_apiを呼び出して、youtube/comments、bilibili/comments、douyin/commentsでコメントを取得します。続いて、短いスクリプトで重複、空の返信、宣伝を除去します。
残りの約半分は、キーワードルールで「セットアップとエラー」「料金とクォータ」「モデル比較」「称賛」のいずれかにラベル付けします。ルールで判定できないものはモデルがラベル付けします。出力は、元のテキストを含む表とコスト記録です。Claude Codeの裏で動くモデルはAnthropic製ではありません。
使用するモデルはdeepseek-flashで、DeepSeekのAnthropic互換エンドポイント経由で提供されます。私たちはDeepSeekのAPIキーを持っていません。そのため、以下のDeepSeekとClaude Codeの手順はすべて公式ドキュメントに沿った設定例であり、実際には実行していません。EveryInfraの呼び出しと、私たちのデータから得た数値はすべて実測です。
この図は、どこにお金がかかるかを示しています。コストが高いのは右手前の机で、ここでモデルが各コメントを読んでラベルを付けます。左側のふるいを細かくするほど、机に送られる量は減ります。
まずセットアップを説明し、次に5つのテストを紹介します。最後にコストを計算します。
結論:コストが10分の1になるのはキャッシュがヒットしたときだけ
このテーマの調査メモでの仮タイトルは「コメントのクリーニングを10分の1のコストで」でした。着手前に、これを数値で答えられる2つの問いに置き換えました。同じ使用量で、ピーク時料金のdeepseek-flashはClaude Sonnet 5.5の10%以内に収まるか。Claude Haiku 5.5より安いか。答えは「はい、ちょうど10%」と「いいえ」です。
使用量は自分たちで想定したものではありません。Claude Codeコストドキュメントにある/costのサンプルをそのまま使いました。入力1.2k、出力5.3k、キャッシュ読み取り940.0k、キャッシュ書き込み50.0kトークンです。ドキュメントではClaude Sonnet 4.6で$0.55とされています。まずSonnet 4.6の料金で再計算したところ$0.5526となり、ドキュメントと一致したため、計算方法が正しいことを確認できました。
次に、2026年10月26日に確認した各公開料金を適用しました。Claudeの料金はAnthropicの料金ページ、DeepSeekの料金はDeepSeekの料金ページ(USD)に基づきます。あわせて、CNY建ての中国語版料金ページとも照合しました。
| モデル(公開料金、2026年10月26日時点) | キャッシュ全ヒット | キャッシュヒットなし | Sonnet 5.5に対する比率(ヒット時) |
|---|---|---|---|
| Claude Opus 5.5 | $0.5488 | $4.1208 | 200% |
| Claude Sonnet 5.5 | $0.2744 | $2.0604 | 100% |
| deepseek-v4-pro、ピーク時 | $0.1299 | $1.3294 | 47.3% |
| deepseek-flash、ピーク時 | $0.0274 | $0.3037 | 10.0% |
| Claude Haiku 5.5 | $0.0184 | $0.1030 | 6.7% |
| deepseek-flash、オフピーク時 | $0.0137 | $0.1519 | 5.0% |
中央の列は見落としがちです。Claude Codeのようなエージェントでは、入力の大半がキャッシュ読み取りです。サンプルセッションでは、入力トークン991.2kのうち940.0kがキャッシュ読み取りで、94.8%にあたります。つまり、請求額を左右するのは、キャッシュヒット時の価格と、そもそもキャッシュがヒットするかどうかの2点です。
deepseek-flashのヒット時価格は100万トークンあたりピーク時$0.006、オフピーク時$0.003で、Haiku 5.5の$0.01より低くなっています。一方、ミス時価格は$0.30で、Haiku 5.5の$0.10の3倍です。キャッシュがヒットすれば、deepseek-flashはSonnet 5.5の約10分の1に収まります。ミスした場合は、キャッシュが効いている状態のSonnet 5.5よりも高くつきます。
この表全体に当てはまる制約が1つあります。比較しているのはトークン価格であり、モデルの品質ではありません。両ベンダーは異なるトークナイザーを使っています。Anthropicの料金ページによると、Claude 4.7以降のトークナイザーは、同じテキストに対して約30%多くのトークンを生成します。これはClaude 4.6以前と比較した場合です。
DeepSeekとClaudeのトークン数の換算比は公開されていません。Anthropicは無料のトークンカウントエンドポイントを、DeepSeekはオフラインのトークナイザーを提供しています。ただし、私たちはどちらのベンダーのAPIキーも持っていないため、実際のusageデータと照合した補正は行っていません。本記事のトークン数はすべて推定値で、両者に同じトークン数を用いています。
なぜこの作業をdeepseek v4.1 flashのような低コストモデルに任せるのか
コメントのクリーニングは件数が多く、1件ごとの作業は簡単です。Claude CodeでDeepSeek V4を使う方法を扱った動画のコメント欄を見てみてください。ほとんどのコメントは、セットアップが失敗する理由、課金の仕組み、Claude自身のモデルとの比較についての質問です。1件ごとの判断は単純でも、コメントが多ければトークンも多くなります。
2026年10月17日、DeepSeekはdeepseek-flashをDeepSeek-V4.1-Flash-1017に更新しました。リリースノートによると、新モデルではタスクの実行時間と出力の長さが短縮されています。Hugging Faceのモデルカードによると、DeepSeekはClaude CodeのハーネスでTerminal-Bench 4.0を実行し、42.3のスコアを記録しました。
Anthropic側では、Claude Haiku 5.5のローンチページ(2026年10月7日)が、要約、コンパクション、分類を主な用途として挙げています。Opus 5.5やSonnet 5.5のサブエージェントとしての作業も挙げられています。Terminal-Bench 4.0のスコアは、Haiku 5.5が39.2%、Sonnet 5.5が70.6%と記載されています。
各社はそれぞれ独自の方法で数値を公表しているため、直接順位を付けることはできません。ただし、数値からは二つの低コストモデルがClaude Code内で動作するようになったという事実がわかります。実際に比べるべきなのは、コストとセットアップの手間です。
| 項目 | deepseek-flash(DeepSeekのAnthropic互換エンドポイント) | Claude Haiku 5.5(Anthropicに直接接続) |
|---|---|---|
| 入力(キャッシュミス)/出力(100万トークンあたり) | ピーク時$0.30 / $1.20、オフピーク時$0.15 / $0.60 | $0.10 / $0.50(プロンプト100kトークンまで) |
| キャッシュヒット | ピーク時$0.006、オフピーク時$0.003 | $0.01 |
| キャッシュの仕組み | ディスク上の自動プレフィックスキャッシュ。cache_controlは無視 | Claude Codeのcache_controlマーカーを使用 |
| コンテキストウィンドウ | 1M | 1M(100kトークンを超えるプロンプトは割高) |
| 画像入力 | 対応(deepseek-v4-proは非対応) | 可能 |
| Claude Codeでの公式サポート | DeepSeekが設定を公開。Anthropicはゲートウェイ経由でのClaude以外のモデルの利用をサポートしないとしている | ネイティブ対応 |
最後の行には注意が必要です。Claude Codeのゲートウェイに関するドキュメントには、Anthropicはサードパーティ製ゲートウェイを推奨、保守、監査していないと記載されています。また、どのゲートウェイを経由する場合でも、Claude CodeをClaude以外のモデルにルーティングすることはサポートしていないとしています。DeepSeekのセットアップが使うのはまさにこの経路、つまりカスタムのANTHROPIC_BASE_URLです。
問題が起きても、Claude Codeのサポート対象にはなりません。サポートされているサードパーティ経路は、Amazon Bedrock、Google Cloud、Microsoft Foundryなどのクラウドプラットフォームです。サードパーティ統合のドキュメントとAnthropicのゲートウェイオプションを参照してください。
事前に決めておいた合否基準
最初のコメント取得の前に、「このジョブが機能する」と判断する9つの基準を書き出しました。結果を見た後も基準は変更していません。2つの基準は数値を記録するだけです(ノイズの割合とツール定義のサイズ)。残りの基準には合格ラインがあります。
| ID | 基準 | 合格ライン | 結果 |
|---|---|---|---|
| J1 | DeepSeekが指定する9つの環境変数がすべてClaude Codeのドキュメントに存在する | 9件中9件 | 合格:9件中9件 |
| J2 | MCPのフィールドがすべてカタログのresponse_fieldsに含まれ、RESTと一致する | 両方とも成立 | 合格 |
| J3 | 各charged_usdがカタログ価格×課金単位と一致し、失敗時は$0 | すべての呼び出しで一致 | 合格:コメント取得15回、検索3回、MCP呼び出し1回 |
| J4 | クリーニング後のモデル入力が、元のJSONのトークン数の40%以下 | ≤40% | 合格:38.0% / 17.5% / 5.6% |
| J5 | ノイズの割合(記録のみ) | — | YouTubeは低(2.2%)、BilibiliとDouyinは中(12.0%、13.0%) |
| J6 | ピーク時のflashはSonnet 5.5の10%以下か?Haiku 5.5より安いか? | 数値で回答する | Q1:セッションは10.0%で条件を満たすが、バッチラベリングは13.5%で満たさない。Q2:いいえ |
| J7 | 不正なパラメータには修正方法付きの422が返り、エラーテキストに「not charged」が含まれる | RESTとMCP | 合格 |
| J8 | 25個のツール定義のサイズ(記録のみ) | — | 約8,556トークン(残す4個では約1,058) |
| J9 | ディスク上にキーなし | 0件 | 合格 |
J7では、HTTPステータスやMCPのisErrorフラグだけでなく、エラーテキストにも「not charged」と記載することを求めています。理由は後述の互換性セクションにあります。DeepSeekのエンドポイントはtool_resultのis_errorフィールドを無視するためです。
DeepSeekでClaude Codeを設定:9つの環境変数をドキュメントと照合
DeepSeekのClaude Code連携ページには、9つの環境変数が記載されています。それぞれをClaude Codeの環境変数リファレンスで確認しました。9つすべてが存在し、意味もDeepSeekでの使い方と一致しています。
![DeepSeek APIドキュメントのページ「Integrate with Claude Code」のスクリーンショット。青緑色の枠で、LinuxとMac向けの9行のexport文が示されています。ANTHROPIC_BASE_URLはapi.deepseek.com/anthropicを指し、ANTHROPIC_AUTH_TOKENにはDeepSeekのキーが入ります。メイン、Opus、Sonnetのモデル変数はdeepseek-flash[1m]、Haikuとサブエージェントのモデルはdeepseek-flash、エフォートレベルはmax、自動コンパクトのウィンドウは786432です。](/articles/deepseek-v4-claude-code-comment-cleaning/img-ds-env.webp)
# Config example (we have no DeepSeek key and did not run this block)
export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN="$DEEPSEEK_API_KEY" # sent as Authorization: Bearer
export ANTHROPIC_MODEL='deepseek-flash[1m]'
export ANTHROPIC_DEFAULT_OPUS_MODEL='deepseek-flash[1m]'
export ANTHROPIC_DEFAULT_SONNET_MODEL='deepseek-flash[1m]'
export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash # background tasks use it too
export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash
export CLAUDE_CODE_EFFORT_LEVEL=high # DeepSeek shows max; comment work does not need it
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432
# Two more lines that we recommend:
export ENABLE_TOOL_SEARCH=false # defer_loading is not in the compatibility table
export EVERYINFRA_API_KEY=... # for .mcp.json; keep it out of project files| 変数 | Claude Codeで制御する内容 | このジョブでの注意点 |
|---|---|---|
ANTHROPIC_BASE_URL | リクエストをプロキシまたはゲートウェイに送信 | api.anthropic.com以外のホストを使う場合、Remote Controlは無効になります |
ANTHROPIC_AUTH_TOKEN | Authorization: Bearerヘッダーの値 | 保存済みのclaude.aiログインより優先。未設定の場合はプランのログインが引き続き適用 |
ANTHROPIC_MODEL | メインセッションのモデル | [1m]サフィックスで1Mのコンテキストウィンドウを要求 |
ANTHROPIC_DEFAULT_OPUS_MODEL / _SONNET_ | opusとsonnetエイリアスの割り当て先 | 未設定の場合、DeepSeekはclaude-opus*をPro料金のdeepseek-v4-proにマッピング |
ANTHROPIC_DEFAULT_HAIKU_MODEL | haikuエイリアスとバックグラウンドタスク | バックグラウンドタスクにも費用が発生 |
CLAUDE_CODE_SUBAGENT_MODEL | サブエージェントのデフォルトモデル | プラットフォームごとのサブエージェントはすべてこれを使用 |
CLAUDE_CODE_EFFORT_LEVEL | エフォートレベル | DeepSeekはmedium、high、xhighをhighにマッピングします |
CLAUDE_CODE_AUTO_COMPACT_WINDOW | 自動コンパクトを開始するトークン数 | 範囲は100,000〜1,000,000 |
ENABLE_TOOL_SEARCH | MCPツール検索 | falseの場合、すべてのリクエストに全ツール定義が含まれる |
両方のドキュメントを読んで初めてわかる点が3つあります。1つ目はモデルのマッピングです。DeepSeekの互換性に関する注記によると、claude-opusで始まるモデル名は、Pro料金のdeepseek-v4-proにマッピングされます。
claude-haikuまたはclaude-sonnetで始まる名前はdeepseek-flashにマッピングされます。ANTHROPIC_MODELだけを設定してopusに切り替えると、Pro料金が発生します。サンプルセッションでは、ピーク時のProは$0.1299で、flashの4.7倍です。
2つ目は機能の検出です。Claude Codeのモデル設定ドキュメントによると、Claude CodeはモデルIDを既知のパターンと照合して、エフォートレベルと拡張思考を有効にします。未知のIDでは、これらの機能が無効のままになることがあります。ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIESなどの変数で明示的に宣言できます。
一方、ゲートウェイ互換性ガイドには、Claude Codeは未知のモデル名を現行モデルとして扱い、それでもthinking: {"type": "adaptive"}を送信するとも書かれています。2つの記述は異なるケースを対象としており、私たちは検証できませんでした。設定後、バッチジョブの前に/statusと/modelを実行して、モデルとエフォートレベルを確認することをおすすめします。
3つ目はエフォートです。DeepSeekのページではmaxが設定されています。DeepSeekの思考モードのドキュメントによると、medium、high、xhighのリクエストはhighとして、maxまたはultraはmaxとして実行されます。コメントのラベル付けに最上位レベルは不要で、思考トークンは出力として課金されます。そのため、この例ではhighを使用しています。
EveryInfraをMCPとして接続:.mcp.jsonは1つ、ツールは4つだけ
Claude CodeでリモートMCPサーバーを追加する方法は2つあります。1つはclaude mcp add --transport httpコマンド、もう1つはプロジェクトルートに置く.mcp.jsonファイルです。
ファイルでの設定をおすすめします。Claude CodeのMCPドキュメントによると、.mcp.jsonはurlとheaders内の${VAR}を展開するため、キーがプロジェクトファイルに含まれません。コマンドラインでは実行時に変数が展開され、キーが~/.claude.jsonに保存されます。
{
"mcpServers": {
"everyinfra": {
"type": "http",
"url": "https://api.everyinfra.com/mcp",
"headers": { "Authorization": "Bearer ${EVERYINFRA_API_KEY}" },
"timeout": 150000
}
}
}この構成に役立つ安全上のルールが1つあります。同じドキュメントによると、Claude CodeはANTHROPIC_AUTH_TOKENやANTHROPIC_API_KEYなど自身の認証情報用の変数を、リモートサーバーのurlとheaders内では空として読み取ります。そのため、.mcp.jsonファイルがBearer ${ANTHROPIC_AUTH_TOKEN}を要求していても、DeepSeekのキーがMCPサーバーに送られることはありません。
EVERYINFRA_API_KEYはこのリストに含まれないため、通常どおり展開されます。timeoutは150秒に設定しました。最も遅かったYouTubeコメントの呼び出しは78.6秒で、EveryInfraの同期処理の上限は85秒です。
2026年10月26日17:26(SGT)、Claude Codeが接続時に送るのと同じinitializeとtools/listリクエストをhttps://api.everyinfra.com/mcpに送信しました。サーバーは25個のツールを返しました。そのサイズは、DeepSeekのトークン使用量のページにある比率で見積もりました。英語は1文字あたり約0.3トークン、中国語は1文字あたり約0.6トークンです。25個のツールの名前、説明、入力スキーマの合計は約8,556トークンになります。
8,556トークンはそれだけなら大した量ではありませんが、2つの要因で何倍にも膨らみます。第1に、互換性の問題を避けるため、当社はツール検索をオフにすることを推奨しています。すると、Claude Codeはすべてのリクエストですべてのツール定義を送信します。第2に、Claude Codeのpermissionsドキュメントによると、ツール名だけを指定した拒否ルールは、そのツールをモデルのコンテキストから除外します。そこでこのジョブでは、.claude/settings.jsonで残り21個のツールを拒否します(形式はsettingsドキュメントを参照)。これで、1リクエストあたりのツールのトークンが約8,556から約1,058に減ります。
{
"permissions": {
"allow": ["mcp__everyinfra__everyinfra_list_capabilities", "mcp__everyinfra__everyinfra_call_api",
"mcp__everyinfra__everyinfra_get_job", "mcp__everyinfra__everyinfra_usage"],
"deny": ["mcp__everyinfra__everyinfra_search",
"mcp__everyinfra__everyinfra_solve_captcha", "mcp__everyinfra__everyinfra_key_create",
"mcp__everyinfra__everyinfra_key_delete", "mcp__everyinfra__everyinfra_settings_update",
"mcp__everyinfra__everyinfra_webhook_set", "mcp__everyinfra__everyinfra_create_ticket"]
}
}この例では21個のうち7個を記載しています。残りの14個も同じ形式で追加してください。tools/listでは、everyinfra_call_apiはreadOnlyHint: falseで、idempotentHintはありません。
Claude Code 2.1.307(2026年10月21日)以降、これには利点があります。変更履歴によると、HTTP MCP接続が呼び出しの途中で切断された場合、Claude Codeが再試行するのは読み取り専用または冪等なツールだけです。そのため、接続が切れても、コメント取得リクエストが知らないうちに二重送信され、2回課金されることはありません。
実際の1往復:モデルが送る内容と私たちが返す内容
Claude CodeとリモートMCPサーバーは、MCP仕様のtools/callを使用します。バックエンドのモデルがClaudeでもDeepSeekでも、モデルが記述するのはツール名と引数を含むtool_useブロックだけです。HTTPリクエストを送信するのはClaude Codeです。
そのため、以下のリクエストボディはモデルに依存しません。Anthropicのツール使用に関するドキュメントにあるとおり、ツール定義、tool_use、tool_resultは引き続きモデルの入力トークンとしてカウントされます。DeepSeek側でも同様です。
2026年10月26日17:37:32(SGT)、Claude Codeが送るものと同じtools/callをcurlでEveryInfraに送信しました。リクエスト内容は、あるYouTube動画の最新コメント20件の取得です。14.0秒後、サーバーは200を返しました。result.content[0].textは8,926文字のJSON文字列(RFC 8259)でした。課金額は$0.000556で、YouTube Comments Scraper APIのカタログ価格どおりです。
![EveryInfraのリモートMCPサーバーで実際に送ったリクエストとそのレスポンスのスクリーンショット。POST https://api.everyinfra.com/mcp、メソッドはtools/call、ツールはeveryinfra_call_api、引数はplatform youtube、action comments、YouTube動画のURL、sort newest、limit 20です。2026年10月26日17:37:32(SGT)、14.0秒後にステータス200のレスポンスが返されています。content[0].textは8,926文字のJSON文字列です。最初の行にはid、text、author_name(マスク済み)、like_count、reply_count、「11時間前」となっているposted_at、is_replyがあります。ティール色の枠はcount 20とcharged_usd 0.000556を示しています。](/articles/deepseek-v4-claude-code-comment-cleaning/img-api-mcp-call.webp)
このMCPレスポンスのフィールドを、17:28:19に取得した同じ動画のRESTレスポンスと比較しました。あわせて、カタログにあるyoutube/commentsのresponse_fieldsとも照合しました。
| フィールド | カタログの`response_fields` | MCP | REST | クリーニングでの用途 |
|---|---|---|---|---|
id | 可能 | 可能 | 可能 | ステップ1の重複除去のキー |
text | 可能 | 可能 | 可能 | モデルに送る唯一のテキスト |
author_name | 可能 | 可能 | 可能 | 送信しない。レポートでは非表示 |
like_count | 可能 | 可能 | 可能 | 重みとして保持 |
reply_count | 可能 | 可能 | 可能 | 送信しない |
posted_at | 可能 | 可能 | 可能 | YouTubeは「11時間前」のような相対時刻を返します |
is_reply | 可能 | 可能 | 可能 | rまたはtの1文字として保持 |
reply_to_id | 可能 | このトップレベルの20件には含まれない | 可能 | 返信を親コメントに紐付ける |
platform | 可能 | 可能 | 可能 | 送信しない |
どちらの経路にも、カタログにないフィールドはありません。MCPレスポンスにreply_to_idがないのは、今回の最新コメント20件に返信がなかったためです。J2は合格です。ここでは、Claude Codeのドキュメントにあるもうひとつの数値が重要になります。
Claude Codeは、MCPツールの結果が10,000トークンを超えると警告を出し、デフォルトの上限は25,000トークンです。それより大きい結果や50,000文字を超えるテキスト結果はファイルに保存し、チャットにはパスだけを残します。今回の100件分のYouTubeコメント取得は約33,000〜35,000文字、推定で約10,000トークンでした。これは警告のしきい値ぎりぎりです。
DeepSeek Anthropic API:ツール呼び出しに影響する互換性の7項目
DeepSeekのAnthropic APIに関するノートには、フィールドごとのサポート表があります。そこからツール呼び出しとツール結果に影響する行を抜き出し、ゲートウェイガイドに記載されたClaude Codeの送信内容と比較しました。「ドキュメントに記載なし」は、検証できなかったギャップを示します。

| フィールドまたは動作 | DeepSeekの表 | コメントクリーニングへの影響 |
|---|---|---|
tool_result.is_error | 無視 | モデルはテキストしか受け取らないため、修正方法と課金されたかどうかをエラーテキストで伝える必要があります |
tools、text、tool_use、tool_resultでのcache_control | 無視 | DeepSeekのディスクキャッシュは独自にプレフィックスを照合するため、Anthropicのキャッシュルールは適用されません |
tool_choice内のdisable_parallel_tool_use | 無視 | モデルが複数のtools/callを同時に送信し、レート制限に達する可能性があります |
mcp_servers | 無視 | ローカルMCPクライアントであるClaude Codeには影響しません |
mcp_tool_use、mcp_tool_resultブロック | 非対応 | 同上。Claude Codeは通常のtool_useとtool_resultを送信します |
document、search_resultブロック | 非対応 | PDFをdocumentブロックとして送信しないでください |
defer_loading、tool_reference(ツール検索)、strict | ドキュメントに記載なし | 2.1.304以降、カスタムURL経由でもツール検索が有効になっています。400または422が返ると、Claude Codeはツール検索なしで1回だけ再試行します。回避するにはENABLE_TOOL_SEARCH=falseを設定してください |
当社にとって最も重要なのは1行目です。MCPの仕様では、ツール実行エラーはisError: trueを返します。Claude Codeはそれをis_error付きのtool_resultとしてモデルに渡します。DeepSeekはこのフラグを無視するため、モデルが受け取るのはテキストだけです。つまり、モデルが自分で誤りを修正できるかどうかは、エラーメッセージがどれだけ明確かだけにかかっています。
2行目はコストを左右します。Claude Codeのprompt cachingドキュメントには、ゲートウェイがcache_controlを扱う3つの方法が挙げられています。3つ目では、ゲートウェイがマーカーを削除したうえで成功を返します。Claudeの課金では、毎ターン会話全体がキャッシュなしの入力として課金されることになります。DeepSeekはマーカーを無視しますが、独自のディスクキャッシュを備えています。
このキャッシュは全ユーザーでデフォルトで有効になっており、リクエストのプレフィックスを照合します。一致したトークンはヒット価格で課金されます。ドキュメントではベストエフォートとされており、100%のヒットは保証されていません。使われないキャッシュエントリは、通常数時間から数日で削除されます。

プレフィックスの照合に影響する点がもう1つあります。ゲートウェイガイドによると、Claude Codeはシステムプロンプトの先頭に帰属情報ブロックを追加します。このブロックには、クライアントのバージョンと会話から生成したフィンガープリントが含まれます。Anthropicのエンドポイントは処理前にこれを除去しますが、他のエンドポイントはプロンプトの一部として受け取ります。DeepSeekのキャッシュは、保存済みのプレフィックス単位との完全一致が必要です。
このブロックが1つの会話を通じて変わらないかどうかはドキュメントに記載がなく、私たちも確認できませんでした。そのため、コスト表には全ヒットとヒットなしの2列を設けています。実際の請求額はその間に収まります。DeepSeekの使用量データでprompt_cache_hit_tokensを確認してください。
テスト1:3つのプラットフォームのコメントの実態
17:26:56から17:27:16(SGT)にかけて、youtube/search、bilibili/search、douyin/searchで「deepseek v4 claude code」と「DeepSeek Claude Code」を検索しました。結果の中から、Claude CodeでDeepSeekを動かす方法を扱った動画を15本選びました。内訳はYouTubeが6本(英語4本、中国語1本、スペイン語1本)、Bilibiliが5本、Douyinが4本です。Douyinの検索は現時点では1ページ目しか返さないため(今回は20件で、next_page_tokenはなし)、候補動画を増やすには別のキーワードで再検索してください。テーマの選定も手法の一部です。これらの動画に寄せられたコメントは、この構成で実際のユーザーがどこでつまずくかを伝える生の報告です。
| プラットフォーム | 動画数 | 1回あたりのリクエスト行数 | 返された行数(返信を含む) | 課金額 | 1回あたりの所要時間 |
|---|---|---|---|---|---|
| YouTube | 6 | 100 | 461(トップレベル289、返信172) | 6 × $0.000556 = $0.003336 | 11.5〜78.6秒 |
| Bilibili | 5 | 50 | 50(1回あたり10) | 5 × $0.000556 = $0.002780 | 8.7〜11.4秒 |
| Douyin | 4 | 50 | 184(トップレベル86、返信98) | $0.006112(20件あたり) | 14.4〜44.0秒 |
すべての課金を確認しました。カタログでは、youtube/commentsとbilibili/commentsは返却件数にかかわらず、1回の呼び出しあたりの料金が一定です。DouyinコメントスクレイピングAPIはrows_per_unit: 20で、20件ごとに1ユニットです。50件は3ユニット(120クレジット、$0.001667)、34件は2ユニット(80クレジット、$0.001111)です。15回の呼び出しすべてで、creditsはカタログ価格×ユニット数と一致しました。J3は合格です。
ほかにも知っておくべき点が3つありました。第1に、BilibiliコメントスクレイピングAPIは、5回の呼び出しすべてで10件しか返しませんでした。指定したのは50件です。当社が件数を削っているのではなく、Bilibiliが1動画あたり最大10件のコメントしか提供しないためです。カタログには現在、デフォルト10、最大10と記載しています。より大きなlimitも受け付けますが、返るのは10件だけです。20:01:21(SGT)に同じ動画をlimit=50で再確認したところ、10件、$0.000556でした。そのため、Bilibiliのデータ料金は1,000件あたり$0.0556と高くなります。
そのため、Bilibiliのコメントは動画1本あたり最大10件として予算を組んでください。第2に、Douyinの2ページでコメントidの重複が見つかり、184件中8件が該当しました。これは10月26日19:53(SGT)に修正済みで、現在はAPIがidによる重複を除外して最初の1件を残し、重複排除後に20件未満となった課金ユニットは通常のルールに従って返金されます。当社の184件は修正前に取得したものです。クリーニングスクリプトの手順1では、安全策として今もidが重複するものを除外しています。
3つ目に、YouTubeのposted_atは「7 days ago (edited)」のような相対時間です。BilibiliとDouyinはタイムゾーン付きの標準タイムスタンプを返します。YouTubeのコメントを日付でグループ化するには、取得時刻を基準に変換し、結果はおおよその値として扱ってください。
Claude Codeでは呼び出し時間が重要です。MCPのドキュメントによると、メインの会話で2分を超えて実行されたMCP呼び出しはバックグラウンドタスクに移されます。モデルはすぐにタスクIDを受け取って作業を続け、結果は後から通知として届きます。今回最も遅い呼び出しは78.6秒で、2分を大きく下回りました。
EveryInfraカタログのasync_modeセクションには、同期処理の上限は85秒と記載されています。limitの値が大きい場合は、mode: "async"を指定し、無料のeveryinfra_get_jobで結果を取得することを推奨しています。DeepSeekが複数の呼び出しを同時に送信した場合(disable_parallel_tool_useは無視される点に注意してください)、EveryInfraのAPIキーにも1分あたりのレート制限があり、超過すると429が返ります。DeepSeekは同時実行数をアカウント単位でカウントしており、deepseek-flashでは同時に2,500リクエストまで許容され、それを超えると429が返ります(レート制限のドキュメント)。
テスト2:クリーニングスクリプトで除去されたもの
クリーニングの工程はモデルに任せませんでした。代わりに、その処理を行うスクリプトをモデルに書かせました。ルールで判定できるなら、コメントをモデルに送っても読み込みの料金がかかるだけです。
Claude Codeのコストに関するドキュメントも同じことを勧めています。10,000行のログをモデルに読ませてはいけません。フックで先にERRORをgrepすれば、コンテキストを数万トークンから数百トークンに減らせます。
スクリプトは4つのチェックを順番に行い、最初に該当した時点で止まります。ステップ2ではUnicodeのNFKC正規化(UAX #15、Pythonではunicodedata.normalize)を使います。その後、リンク、絵文字コード、句読点を取り除くため、文字の全角・半角や大文字・小文字だけが異なる文も重複として扱われます。ルールはすべてPythonの正規表現で記述されており、同じデータに対して再実行できます。
# Cleaning rules, version 4 (excerpt; the full script is saved with the raw responses)
BRACKET_EMOJI = re.compile(r"\[[一-鿿]{1,6}\]") # emoji codes such as [捂脸]; Chinese only inside brackets
PROMO = re.compile(r"(subscribe(?!r)|newsletter|giveaway|chrome extension|coupon|telegram|whatsapp|"
r"私信|加群|进群|加微|微信|qq群|关注我|免费领|领取|代金券|优惠|课程|戳我)", re.I)
for r in rows:
if (video, r["id"]) in seen_id: drop("same id"); continue # 1. same comment twice on a page
if (video, norm(r["text"])) in seen_text: drop("same text"); continue # 2. same text after normalization
if no_content(r["text"]): drop("no content"); continue # 3. emoji only, 666, two characters, not a question
if PROMO.search(r["text"]) or (has_link and (few_chars or bait)): drop("promotion"); continue # 4.
keep(f'{i}|{likes}|{"r" if r["is_reply"] else "t"}|{text_with_links_shortened}')スクリプトは4回修正しました。いずれも、削除されたコメントを読んで誤削除を見つけたことがきっかけです。この過程こそが本記事の一番の教訓です。クリーニングのルールは、必ず良いコメントも一部削除してしまいます。それに気づけるのは、削除したものを読んだときだけです。バージョン1では「New subscriber here」が宣伝と判定されました。subscribeがsubscriberにマッチしたためです。
また、スペイン語の質問「¿qué extensiones concretamente?」もextensionのせいで削除され、Gitの公式ダウンロードページへのリンクを含む有益な返信も削除されていました。バージョン2でこの3件を修正しました。バージョン3では、DeepSeekの割引についての普通のコメント「Normal, están con un 90% de descuento」を残すようにし、2文字の中国語の質問「guì bù」(「高い?」)も削除しないようにしました。
バージョン4は、保持したテキストを読んだことから生まれました。角かっこで囲まれた絵文字コード(facepalmを表すコードのように、中国語の単語を角かっこで囲んだもの)の正規表現は、範囲が広すぎました。エラーメッセージからmessages[1]を、モデル名から[1m]を削除してしまっていたのです。どちらも今回のデータの中で特に有用な手がかりでした。
バージョン4で除外した40件をすべて読み、誤った除外がもうないことを確認しました。残した655件はすべてを読んだわけではありません。そのため、リンクやキーワードを含まない宣伝、たとえば有料でツールをインストールするという申し出は、まだデータに残っています。Douyinでは「インストールを手伝えます」という返信が何度も見られました。テキストの重複排除によって、最初の1件を残して重複を除外しています。

ノイズの割合はプラットフォームによって大きく異なり、YouTubeでは2.2%、Bilibiliでは12.0%、Douyinでは13.0%です。YouTubeの数値が低い理由として考えられるのは、プラットフォーム側で先にフィルタリングしていることです。YouTube Data APIのcommentThreadsドキュメントによると、「スパムの可能性あり」や「審査のため保留中」のコメントを見られるのは、認可済みリクエストを送ったチャンネル所有者だけです。公開リクエストでは、デフォルトで公開済みのコメントが返されます。
2026年9月23日のMade on YouTubeで、YouTubeは各チャンネルのスタイルを学習するオプトイン方式のAIコメントモデレーションをテスト中であることも発表しました。DouyinとBilibiliでは、ノイズの大半は外部リンクではなく、絵文字や「666」、繰り返しです。ルールのヒット数にも同じ傾向が表れています。
テスト3:クリーニング後にモデルが読むトークン数
クリーニングで減るのは件数だけではありません。DeepSeekの比率を使って、2通りのトークン数を推定しました。1つはAPIのJSONをそのまま送る場合、もう1つはクリーニング後の1行だけを送る場合です。
Douyinが最も小さくなるのは、フィールドが多いためです。カタログではdouyin/commentsのレスポンスフィールドは19個あり、アバターのURL、IPの所在地、メンションされたユーザー、投稿者がそのコメントにいいねしたかどうかなどが含まれます。生のJSONは1件あたり平均約180トークンですが、テキストの中央値はわずか13文字です。
YouTubeのコメントは長めで中央値は61文字、フィールドも9つしかないため、クリーニング後も38.0%が残ります。3つのプラットフォーム全体では、推定トークン数が84,109から20,176、つまり24.0%に減ります。J4は合格です。
Claude Codeでこれがなぜそれほど重要なのでしょうか。MCPツールの結果は、そのまま会話のコンテキストに入ります。以降のターンでは毎回、それをプレフィックスの一部として読み直します。DeepSeekのキャッシュヒット時の料金なら、10,000トークンを読み直しても$0.00006しかかかりません。ただし、ヒット率は自分では制御できません。
キャッシュミス時には、同じ10,000トークンが100万トークンあたり$0.30で$0.003かかり、数十ターンも続けば積み重なります。より安全なのは、Claude Codeにスクリプトを書かせる方法です。スクリプトはcurlでEveryInfraのREST APIを呼び出し、生のJSONをファイルに保存して、クリーニング後のテキストと件数だけを出力します。MCPは、最初の確認、機能の選択、パラメータのテストといった対話的な工程に使いましょう。
# Batch pulls go through REST; raw responses go to disk, not into the chat
curl -s https://api.everyinfra.com/api/v1/social \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" -H "Content-Type: application/json" \
-d '{"platform":"douyin","action":"comments","params":{"url":"https://www.douyin.com/video/<video_id>","limit":50}}' \
-o raw/dy_<video_id>.json
python3 clean.py raw/ > cleaned.txt # prints only "index|likes|r/t|text" and the removal countsテスト4:ルールでラベル付けできるものと、モデルに送るもの
クリーニング後にキーワードルールを実行し、どれだけラベル付けできるかを調べました。ルールでは、1件のコメントに複数のラベル(たとえば「価格」と「モデル比較」)を付けられます。
どのルールにも一致しなかったコメントは、YouTubeで43.7%、Bilibiliで29.5%、Douyinで48.1%でした。この数値が、モデルが読まなければならない量を決めます。つまり約半分です。ルールでモデルを置き換えることはできません。それでもモデルの作業量は半分になり、ルールでラベル付けされる半分は、たいてい最も簡単で、コストをかける価値が最も低い部分です。
| プラットフォーム | 保持件数 | セットアップとエラー | 価格と利用枠 | モデル比較 | 称賛 | ルール該当なし | 質問あり |
|---|---|---|---|---|---|---|---|
| YouTube | 451 | 58 | 91 | 118 | 70 | 197 (43.7%) | 138 |
| Bilibili | 44 | 25 | 5 | 9 | 2 | 13 (29.5%) | 27 |
| Douyin | 160 | 52 | 18 | 19 | 2 | 77 (48.1%) | 59 |
コメントそのものにも読む価値があります。Bilibiliでは44件中25件、Douyinでは160件中52件が、セットアップやエラーについての質問です。同じ質問が繰り返されています。
セットアップ後もログインを求められるのはなぜですか? 画像を読み込めないのはなぜですか? 自分はClaudeだと名乗るのはなぜですか? トークンの消費がこんなに速いのはなぜですか?
YouTubeでは、2つのエラーメッセージが一字一句そのままデータに残っていました。1つ目はAPI Error: 400 Failed to deserialize the JSON body into the target type: messages[1].role: unknown variant systemです。2つ目はThe content[].thinking in the thinking mode must be passed backです。以下のFAQで、公式ドキュメントに基づいて両方に回答します。
スペイン語の動画に寄せられた83件のスペイン語コメントで最も多い話題は、価格改定です。APIの値上げについてDeepSeekからメールを受け取ったというコメントが複数ありました。これはあくまでユーザーからの報告として扱います。価格については、DeepSeekの料金ページを参照しています。
モデルが担当する半分については、設定例を示します。Claude Codeは、ルールに該当しなかったコメントを100件ずつ「index|text」の形式でサブエージェントに送ります。サブエージェントは、コメントごとにindexとラベル1つを含むJSON配列だけを返す必要があります。DeepSeekのJSON出力とツール呼び出しのドキュメントにあるとおり、このような構造化出力に対応しています。
Claude Codeでは、サブエージェントの定義に出力形式を書くのが最も簡単です。そのうえでCLAUDE_CODE_SUBAGENT_MODEL=deepseek-flashを指定すると、低コストのモデルで実行されます。サブエージェントのドキュメントによると、この変数はサブエージェントのデフォルトモデルを設定します。
成果物:元データにたどれるラベル表
このジョブの出力は表です。各行が残したコメント1件で、プラットフォーム、いいね数、原文(ユーザー名なし)、ラベル、ラベルを付けた主体を含みます。以下は、いいね数順に並べた10件です。ルールラベルの列は、キーワードルールによる一次判定を示します。最後の列は、各行に対する当社自身のレビューです。
| プラットフォーム | いいね | コメント(抜粋、中国語は翻訳) | ルールの判定 | 私たちの判断 |
|---|---|---|---|---|
| Douyin | 615 | 「使い始めたばかり。手作業だと何日もかかるデータファイルの束が、10分ほどで終わった」 | なし | 利用体験・好意的。ルールでは検出漏れ |
| Douyin | 51 | 「Claude Codeをインストールしてもらえますか?」 | モデル比較 | インストールの依頼。「claude」で誤ったラベルが付いた |
| Douyin | 36 | 「接続してから、トークンの減りが早いと感じませんか?」 | 料金と利用枠 | 正しい |
| Douyin | 28 | 「DeepSeek V4を接続したら、Claudeがセッションを読み込み続けています。どうすればいいですか?」 | モデル比較 | エラーの相談(ルールにない言い回し) |
| Douyin | 24 | 「DeepSeekのモデルって画像は生成できないんですかね?」 | なし | 制限に関する質問 |
| Douyin | 14 | 「ちょっとした質問をいくつかしただけで700kトークン消費した。減るのが速すぎる。」 | 料金と利用枠 | 正しい |
| Bilibili | 10 | 「CCには安全上のリスクがあるって話じゃなかった?それでもおすすめしますか?」 | なし | 安全性への懸念 |
| YouTube | 17 | 「0.14を利用できるうちに使っておいたほうがいい。値上げされるから。」 | 料金と利用枠 | 正しい |
| YouTube | 17 | 「OPUS 5.5には及ばない」 | モデル比較 | 正しい |
| YouTube | 6 | 「セットアップのこと、何ひとつわからなかった」 | セットアップとエラー | 正しい(チュートリアルへのフィードバック) |
この10件では、ルールが正しかったのが5回、見逃しが3回、誤りが2回でした。正確さを測るにはサンプルが小さすぎますが、ルールの誤りの2つのタイプは見て取れます。1つはキーワードが広すぎる場合で、「claude」を含むコメントはすべてモデル比較とみなされます。もう1つは同じことを言う表現が多すぎる場合で、人はさまざまな言い回しで助けを求めるため、ルールではすべてを列挙できません。そこがモデルの担当部分であり、ルールを一次判定にとどめる理由です。
ルールで付けたラベルは、レポートに入る前にモデルが変更できるようにしておく必要があります。Claude Codeで低コストに済ませるには、2つのグループだけをモデルに渡す方法があります。1つはルールのラベルが付いていない行、もう1つは誤ったラベルが集中しやすい「モデル比較」のみが付いた行です。今回のデータでは、残したコメント655件のうち368件、約56%が該当しました。
プロダクトチームにとって最も参考になるのは、615件のいいねが付いたコメントです。最も多くのいいねを集めたコメントは、セットアップや料金についてではありません。一連のデータファイルを数分で処理できたという成果についてのものです。
ルールだけではこの行は「その他」に分類されますが、実際にはこの動画のコメント欄で最も典型的な声です。クリーニング後のテキストにいいね数を残しているのはこのためです。いいね数はトークンをほとんど消費せず、モデルが「どれだけの人が同意しているか」を判断するための低コストな重みになります。
テスト5:誤ったパラメータを送った後にモデルが受け取る内容
17:26:46 SGTに実行した最初の検索では、limitをリクエストボディのトップレベルに置いていました。3つのプラットフォームすべてが、エラーコードunknown_paramとともに422を返しました。メッセージには「limit goes inside params, not at the top level of the body」とあり、did_you_mean: ["params.limit"]と、最後に「Nothing was charged.」という一文が含まれていました。これは意図したものではありませんが、モデルが犯しがちな種類のミスです。続いて17:37:53に、MCP経由で意図的にsort: "top"を送信しました。

| ケース | レスポンス | DeepSeekでモデルが受け取る内容 | 課金額 |
|---|---|---|---|
REST:limitをトップレベルに指定(17:26:46、3プラットフォーム) | 422 unknown_param、did_you_mean: ["params.limit"] | 該当なし(RESTはスクリプトで処理) | $0 |
REST:sort: "top"(17:38:00) | 422 invalid_value、allowed: ["newest","popular"] | 該当なし | $0 |
MCP:sort: "top"(17:37:53) | isError: true、2つのテキストパートとstructuredContent | 2つのテキストパート:誤ったパラメータ、許可される値、「Nothing was charged.」 | $0 |
3行目でJ7が実証されます。DeepSeekはis_errorを無視するため、モデルはこれが失敗だと分かりません。モデルが読むのは2つのテキスト部分だけです。そこには、問題のあるパラメータ、指定可能な値の一覧、その値だけを変更して再送すること、何も課金されていないことがすでに書かれています。エラーコードと「失敗時は無料」のルールは、EveryInfraのドキュメントのエラー表に記載しています。
リクエストとエラーの形式の詳細はOpenAPIファイルにあります。不明なパラメータや無効なenum値に対しては、サポートされているパラメータ、許可される値、修正案とともに422を返します。無視したうえで課金することはありません。85秒を超えた同期呼び出しは503タイムアウトを返し、これも課金されません。エラーフラグを無視するモデルエンドポイントでは、このルールがあるからこそモデルが自力で修正できます。
コスト:DeepSeekのトークン料金とEveryInfraのデータ料金の合計
DeepSeekの料金ページ(2026年10月26日閲覧)では、1日をピーク時間帯とオフピーク時間帯に分けています。ピーク時間帯は中国の祝日を除く月曜〜金曜のUTC 01:00〜04:00と06:00〜10:00で、それ以外はすべてオフピーク時間帯となり、料金は半額です。米国の読者にとっては都合のよい設定です。10月26日の米国東海岸は夏時間(UTC−4)のため、ピーク時間帯は東部時間の21:00〜24:00と02:00〜06:00になります。
つまり、勤務時間はすべてオフピーク時間帯に収まります。西海岸(UTC−7)では、ピーク時間帯は太平洋時間の18:00〜21:00と23:00〜03:00です。今回のテストは月曜の17:26〜17:38 SGT、つまりUTC 09:26〜09:38に実施しており、ピーク時間帯に含まれます。したがって、今回のピーク料金は米国で日中に利用する場合の最悪のケースにあたります。
| 100万トークンあたり(USD) | deepseek-flash(ピーク時) | deepseek-flash(オフピーク時) | deepseek-v4-pro(ピーク時) | Claude Haiku 5.5 | Claude Sonnet 5.5 | Claude Opus 5.5 |
|---|---|---|---|---|---|---|
| 入力(キャッシュミス) | $0.30 | $0.15 | $1.32 | $0.10 | $2.00 | $4.00 |
| キャッシュヒット | $0.006 | $0.003 | $0.044 | $0.01 | $0.10 | $0.20 |
| キャッシュ書き込み(5分) | 個別料金なし | 個別料金なし | 個別料金なし | $0.125 | $2.50 | $5.00 |
| 出力 | $1.20 | $0.60 | $3.96 | $0.50 | $10.00 | $20.00 |
中国語版の料金ページでは、flashの入力料金は100万トークンあたりCNY 2(ピーク時)とCNY 1(オフピーク時)、出力はCNY 8とCNY 4です。換算レートは1ドルあたり約CNY 6.67としました。これは同日のEveryInfraのカタログにおけるprice_cnyとprice_usdの比率です。
換算すると約$0.30、$0.15、$1.20、$0.60となり、米ドル版の料金ページと同じです。Haiku 5.5の料金は100,000トークンまでのプロンプトに適用されます。それより長いプロンプトは$0.50と$2.50です。
データ料金は、EveryInfraのカタログのprice_usdに従います。youtube/comments、bilibili/comments、douyin/commentsはいずれも1回の呼び出しあたり$0.000556(1,000回の呼び出しあたり$0.56)で、Douyinはさらに20件ごとに課金します。今回の1回あたりの平均件数で計算すると、残したコメント1,000件あたりのデータ料金は、YouTubeが$0.0074、Bilibiliが$0.0632、Douyinが$0.0382です。
モデル料金は、ラベル付けのステップのみを見積もりました。入力は、クリーニング後のコメント1,000件分のトークンに、100件のバッチごとに400トークンの指示を加えたものです。出力はコメント1件につき8トークンのラベルです。思考トークンは含みません。
deepseek-flashはデフォルトで思考モードを使うため、これは下限値です。感度分析として、バッチあたり1,500トークンの思考トークンを追加したケースを1つ加えました。1,500は仮定であり、実測値ではありません。
| クリーニング後のコメント1,000件あたり | データ料金 | flash(ピーク時) | flash(オフピーク時) | Haiku 5.5 | Sonnet 5.5 | flash(ピーク時、バッチあたり思考トークン+1,500) |
|---|---|---|---|---|---|---|
| YouTube | $0.0074 | $0.0224 | $0.0112 | $0.0083 | $0.1652 | $0.0404 |
| Bilibili | $0.0632 | $0.0168 | $0.0084 | $0.0064 | $0.1282 | $0.0348 |
| Douyin | $0.0382 | $0.0143 | $0.0072 | $0.0056 | $0.1114 | $0.0323 |
この表を見て、予想が変わりました。モデル料金が大半を占め、データ料金は問題にならないと考えていました。YouTubeではそのとおりで、モデル料金はデータ料金の3倍です。しかしBilibiliとDouyinでは、コメントが短く、クリーニング後のトークン数も少なくなります。
これらのプラットフォームでは、データ料金がdeepseek-flashのピーク時モデル料金を上回ります。短い中国語コメントをflashで処理する場合、データ料金のほうが請求額の大きな割合を占めます。そうなると、データソースと1回の呼び出しあたりの行数が最も重要になります。
次に、1か月分に当てはめてみます。各プラットフォームで月120本の動画(週30本)を扱います。Claude Codeは週1回セッションを実行し、使用量はコストに関するドキュメントのサンプル値を使い、キャッシュヒットありとします。
| 1か月(プラットフォームごとに動画120本、4セッション) | データ料金 | ラベル付けのモデル料金 | セッション料金(キャッシュヒット) | 合計 |
|---|---|---|---|---|
| deepseek-flash(ピーク時) | $0.3168 | $0.2883 | $0.1096 | $0.7147 |
| deepseek-flash(オフピーク時) | $0.3168 | $0.1441 | $0.0548 | $0.5157 |
| Claude Haiku 5.5 | $0.3168 | $0.1080 | $0.0736 | $0.4984 |
| Claude Sonnet 5.5 | $0.3168 | $2.1602 | $1.0976 | $3.5746 |
| deepseek-v4-pro(ピーク時) | $0.3168 | $1.1115 | $0.5196 | $1.9479 |
1か月で約15,940件を取得し、約14,876件のコメントを残します。全体の費用は、flashのピーク料金で$0.72未満、Sonnet 5.5で約$3.57です。Haiku 5.5は$0.50で、ピーク時のflashより安く、オフピーク時のflashとほぼ同じです。$0.3168のデータ料金は取得量だけで決まるため、どの行でも同じです。
同じ処理を公式のClaudeモデルで行う場合:選び方
これらの表から、どれを選ぶべきかが明確になります。トークン単価では、Claude Haiku 5.5はこの処理で最も安い選択肢の1つです。また、Claude Codeのネイティブモデルなので、前述の互換性の問題はいずれも当てはまりません。
キャッシュはcache_controlに従い、is_errorはモデルに渡され、ツール検索と構造化出力も機能します。deepseek-flashのほうが安くなるのは、オフピーク時に実行し、かつキャッシュヒットが大半を占めるという2つの条件を両方満たす場合だけです。米国の日中に利用する場合、特に時間を調整しなくても1つ目の条件を満たします。
では、なぜDeepSeekを選ぶ人がいるのでしょうか。コメントには実際の理由が挙がっています。中国本土にいて、地域の制限によりAnthropicに直接アクセスしにくいユーザーがいます。すでにDeepSeekのクレジットを持っているユーザーもいます。自分でホストできるオープンウェイトのモデルを求めるユーザーもいます。
「Opus 5.5が計画し、低コストのモデルが実行する」という分担で、別のワーカーモデルを求めるユーザーもいます。あるRedditユーザーが独自に行った86問のテストでは、DeepSeek FlashとHaiku 5.5のスコアはほぼ同じでした(86.6と84.7)。投稿者は、テストは小規模で2ポイントの差はノイズだと述べています。また、DeepSeek Flashはときどき「考えすぎて行き詰まり、何も返さなかった」とも書いています。こうした第三者によるテストは、参考情報としてのみ扱ってください。
| 状況 | おすすめ | 理由 |
|---|---|---|
| Anthropicを利用でき、想定外の問題を避けたい | サブエージェントにHaiku 5.5、メインセッションにSonnet 5.5またはOpus 5.5 | 最安クラスの料金で、互換性の問題もない |
| DeepSeekしか使えない、またはすでに支払い済み | すべてのエイリアスにdeepseek-flashを設定し、バッチはオフピーク時に実行 | オフピーク時は半額。ツール検索をオフにし、キャッシュヒットを確認する |
| 短い中国語コメントが大量にある | どちらでも可。まずクリーニングと取得を改善する | データ料金がすでにモデル料金と同程度 |
| 画像(エラーのスクリーンショット)が必要 | opusエイリアスをdeepseek-v4-proのままにしない | 料金ページによると、deepseek-v4-proは画像入力に非対応 |
新しいDeepSeek Search/Fetch APIの対象範囲
10月17日の同じリリースノートで、DeepSeekは自社のSearch APIとFetch APIを一般公開しました。料金はいずれも1,000リクエストあたり$0.75で、成功したリクエストのみ課金されます(ガイド)。検索ガイドによると、Searchはタイトル、リンク、要約、ページ本文を含むWeb検索結果を返し、Fetchは1つのページをMarkdownに変換します。失敗したリクエスト、空の結果、タイムアウトは課金されません。制限はアカウントごとに、Searchが毎秒100リクエスト、Fetchが毎秒25リクエストです。
この中に、今回の作業に関わる1文があります。Claude CodeでDeepSeek APIを使う場合、Web検索はサーバー側のツール呼び出しとして実行され、DeepSeekのSearch APIとFetch APIにリクエストが送られます。これらの呼び出しは現在無料ですが、北京時間2026年11月1日00:00(UTCでは10月31日16:00)からリクエストごとに課金されます。それ以降、この構成で「Webで調べる」たびに、モデルのトークン料金に加えて1,000回の検索あたり$0.75がかかります。
SearchとFetchが対象とするのは一般的なWebです。たとえば、ブログ記事に何が書かれているか、ドキュメントページに現在何が表示されているか、といった情報です。プラットフォーム内のデータは対象外です。たとえば、YouTubeの特定のコメントのいいね数、Douyinページ上の返信データ、Bilibiliコメントの投稿時刻などがこれにあたります。こうしたデータは公開ページの本文には含まれていないか、取得にページ送り、ログイン、構造化されたフィールドが必要になります。
そのため、この構成では2つのツールで役割を分担します。DeepSeekのSearchとFetchは一般的なWebを担当します。EveryInfraのデータAPIは、プラットフォーム内のコメント、投稿、プロフィール、検索結果を担当します。DeepSeek自身のエージェントハーネスであるDeepSeek Harnessも同じように役割を分けています。Web検索は組み込まれていますが、プラットフォームのデータには別のツールが必要です。
制限事項と注意点
1つ目はサポート範囲です。Anthropicのゲートウェイのドキュメントには、Claude Codeをゲートウェイ経由でClaude以外のモデルにルーティングすることはサポート対象外と書かれています。Claude Codeにはリリースごとに機能が追加されますが、ゲートウェイや互換エンドポイントがそれらを中継しなければ、その機能は動作しません。10月19日から23日までの4回のリリースでは、カスタムのANTHROPIC_BASE_URL使用時にリクエストが失敗する複数の不具合が修正されました(変更履歴)。バージョン2.1.304では、ツール検索がデフォルトで有効になりました。
バージョン2.1.305では、それに伴って発生した「すべてのリクエストが失敗する」不具合が修正されました。バージョン2.1.310では、互換サーバーがeffortベータヘッダーや会話途中のシステムメッセージを拒否した場合に再試行するようになりました。この構成では、Claude Codeの変更に応じて動作が良くなることも悪くなることもあると考えてください。新しい問題が起きたら、まずClaude CodeのGitHubリポジトリを検索してください。
2つ目はデータの送信先です。コメント本文は処理のためにDeepSeekのサーバーに送られます。コメントは公開されていますが、ユーザー名やIPアドレスに基づく所在地情報が含まれており、これらは個人データです。
今回のスクリプトがモデルに送るのは、本文、いいね数、返信かどうかを示すフラグだけです。ユーザー名、アバター、所在地は一切送らず、レポートでも表示しません。これによりトークンを節約でき、送信する個人データも減らせます。
3つ目はキーの安全性です。10月にRedditで話題になった投稿で、APIキーを環境変数に置いたベンチマーク用サンドボックスの事例が紹介されました。テストした投稿者によると、DeepSeek V4.1 Flashがそのキーを見つけて悪用したとのことです(元の投稿)。投稿者は後に「APIキーの悪用ではあるが、持ち出しではない」と表現しており、多くのコメントはサンドボックスの設計に原因があると指摘しています。
どう呼ぶにせよ、この教訓はどのモデルにも当てはまります。使わせるべきでないキーをモデルに読ませないことです。この作業専用にEveryInfraのAPIキーを別途作成し、環境変数経由でのみ渡してください。Claude CodeがMCPヘッダーでは自身の認証情報用変数を空として読み取る仕様も、同じ考え方に基づいています。
第4に、プラットフォームとデータの制約です。取得したのは公開動画に付いた公開コメントだけで、動画ごとに1リクエスト、ページ送りはしていません。Bilibiliは動画1本あたり最大10件のコメントしか提供しません。Douyinの検索は最初のページしか返しません。ページトークンがない場合、Douyinは返信を含めて先頭から約50件しか読み込みません。YouTubeの時刻は相対表記です。
中国本土のプラットフォーム上のコンテンツは、現在も継続的な規制の対象です。2026年9月30日、中国国家インターネット情報弁公室は2か月間のショート動画における偽の人物設定への対策キャンペーンを開始しました。9月2日には、AIアプリの不正利用に関するキャンペーンの第2段階について報告しています。コメント欄の宣伝やインストール勧誘は、プラットフォームの取り締まりに応じて変化します。今回のノイズの割合は、この日に調べた15本の動画にのみ当てはまります。
5つ目は、今回行っていないことです。DeepSeekとClaude Codeを使った処理は実際には実行していないため、DeepSeekの挙動に関する記述はすべてドキュメントに基づいています。トークン数は比率から推定した値です。人手でラベル付けしたデータセットがないため、ラベルの精度は測定していません。セッションのコストはClaude Codeのドキュメントにある1つのサンプルに基づいており、実際のセッションはそれよりずっと長いことも短いこともあります。
知っておきたい最近の変更(2026年9月〜10月)
- 2026年10月17日:DeepSeek V4.1-Flash-1017がリリースされ、Search/Fetch APIが公開(リリースノート)。影響:
deepseek-flashという名前で呼び出されるモデルが変わりました。旧名のdeepseek-v4-flashも引き続きFlashの料金で使えます。Claude Code内のWeb検索は11月1日から有料になります。 - 2026年10月7日:Claude Haiku 5.5がリリースされ、Sonnet 5.5のキャッシュ読み取りが$0.10に値下げ(リリースノート)。影響:低価格帯にClaudeのモデルが加わったため、料金を比較する際はHaiku 5.5も含めてください。Haiku 5.5では、
budget_tokensやtemperatureなどのパラメータを手動で指定すると400が返るため、古いコードを更新してください。 - 2026年10月19日〜23日:Claude Code 2.1.304〜2.1.310で、カスタムURL使用時の動作が変更(変更履歴、npmパッケージ)。影響:ゲートウェイ経由ではツール検索がデフォルトで有効になり、400または422が返った後は自動で再試行されます。Claude Codeをアップグレードするたびに、設定を確認し直してください。
- 2026年9月23日〜10月14日:YouTubeコメントでのGIF対応とAIによるコメントモデレーションのテスト(YouTube公式ブログ、9to5Googleの記事)。影響:テキストがなくGIFだけのコメントが増えると予想されるため、「内容なし」の判定ルールでこれに対応する必要があります。プラットフォームのモデレーションが強化されることで、公開コメントのスパムも減ります。
- 2026年9月30日:中国国家インターネット情報弁公室が、ショート動画における偽ペルソナ対策キャンペーンを開始(通知)。影響:DouyinやBilibiliのコメントから、宣伝、インストールを促すコメント、偽ペルソナ広告がこれまで以上に削除されます。ノイズの割合は数週間で変わる可能性があります。
- 2026年10月15日:YouTube Data APIのcommentThreadsページが更新(ドキュメント)。影響:公式APIは1回の呼び出しにつき1クォータユニットを消費し、1ページあたり最大100件を返します。「スパムの可能性あり」はチャンネル所有者にしか表示されません。他のチャンネルの公開コメントを取得するには、YouTube Data APIの概要にあるクォータのルールに従うか、データAPIを使ってください。
FAQ
DeepSeekでClaude Codeをセットアップした後も、Claude Codeにログインを求められます。なぜですか?
Douyinのコメントで「ログインをスキップできないのはなぜ?」という質問がありました。この件はClaude Codeのゲートウェイ接続ドキュメントにあるトラブルシューティング表で説明されています。インタラクティブモードでは、プロジェクトの.claude/settings.json内のenvブロックは、初回起動ウィザードと信頼確認のプロンプトが終わった後にしか適用されません。そのため、CLIは認証情報なしで起動します。
ANTHROPIC_AUTH_TOKENはシェルかユーザー設定で設定してください。認証情報なしでANTHROPIC_BASE_URLだけを設定した場合は、claude.aiのログインがそのまま使われます。出典:今回取得したDouyinのコメント(2026年10月26日)、Claude Codeのドキュメント。
`The content[].thinking in the thinking mode must be passed back`とはどういう意味ですか?
このエラーは、今回取得したYouTubeコメントにそのままの文面で登場していました。DeepSeekの思考モードのドキュメントでは、toolsを含むリクエストについて説明しています。こうしたリクエストでは、それまでの推論内容をすべてそのまま送り返す必要があり、そうしないとAPIは400を返します。Claude Codeはthinkingブロックをそのまま送り返します。
途中にあるサードパーティの変換ツールがこれを削除すると、このエラーが発生します。一度、DeepSeekのAnthropicエンドポイントに直接接続して試してください。Extra inputs are not permittedと表示される場合、Claude Codeのエラーリファレンスでは、2.1.304以降にアップグレードするか、CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1を設定するよう案内しています。出典:今回取得したYouTubeコメント、DeepSeekのドキュメント、Claude Codeのドキュメント。
`messages[1].role: unknown variant system`はどう解決すればよいですか?
これも収集したYouTubeコメントから寄せられた質問です。Claude Codeは会話の途中にシステムメッセージを追加します。DeepSeekのツール呼び出しのドキュメントによると、同社のAnthropic APIは会話途中のシステムメッセージに対応していますが、一部の中間レイヤーは対応していません。Claude Code 2.1.310の変更履歴(2026年10月23日)には、互換サーバーがこれらのメッセージを拒否した場合、Claude Codeはそれらを除いて再試行するようになったと記載されています。
通常は2.1.310以降にアップグレードすれば解決します。DeepSeekはプロンプトエンコーディングライブラリdeepseek-recipeも公開しており、そのテストには会話途中のシステムメッセージが含まれています。つまり、モデルはこの形式を前提に作られています。出典:収集したYouTubeコメント、Claude Codeの変更履歴。
DeepSeekに接続すると画像を読み込めなくなるのはなぜですか?
Douyinのコメントで「このモデルが画像を読めない場合はどうすればいいですか?」という質問がありました。DeepSeekの料金表によると、deepseek-flashは画像に対応していますが、deepseek-v4-proは対応していません。claude-opusで始まるモデル名はdeepseek-v4-proにマッピングされます。opusエイリアスがdeepseek-flashを指していない場合、Opusに切り替えると画像を読み込めません。出典:収集したDouyinコメント、DeepSeekの料金ページと互換性ページ。
Haiku 5.5のほうが安いのでは?
YouTubeのコメントでもまさにこの質問がありました。私たちの計算では、そのとおりです。サンプルセッションの場合、Haiku 5.5は$0.0184、ピーク時のdeepseek-flashは$0.0274です。
YouTubeコメント1,000件にラベルを付ける場合、モデル料金はHaiku 5.5で$0.0083、ピーク時のflashで$0.0224です。flashのほうが安くなるのは、オフピーク時でキャッシュの大半がヒットする場合に限られます。出典:収集したYouTubeコメント、AnthropicとDeepSeekの料金ページ(2026年10月26日閲覧)。
DeepSeekのAnthropic APIはMCPサーバーに直接接続できますか?
「deepseek claude code mcp」はよく表示される検索候補です。DeepSeekの互換性表によると、リクエスト内のmcp_serversは無視され、mcp_tool_useブロックやmcp_tool_resultブロックには対応していません。つまり、DeepSeekが代わりにMCPサーバーへ接続することはありません。
Claude Codeではこれは問題になりません。Claude CodeがMCPクライアントとしてtools/callをローカルで送信し、モデルには通常のツール定義とツール結果を渡すためです。出典:Google検索候補(2026年10月26日)、DeepSeekの互換性に関する注記。
DeepSeekの検索APIはプラットフォームのコメントAPIの代わりになりますか?
完全には代わりになりません。DeepSeek SearchはWeb検索結果とページのテキストを返すため、一般的な事実の確認に向いています。動画のコメント、いいね数、返信へのリンクなど、プラットフォーム内の構造化データはカバーしていません。出典:Google検索候補「deepseek search api」(当社の調査メモ、2026年10月26日)、DeepSeekの検索ガイド。
関連記事
- リモートMCPのセットアップ:主要クライアントで使える1つの共通設定
- YouTubeコメントを基にしたトピックレポートの販売:中規模クリエイター向けのコスト記録
- 失敗時の返金を照合する方法
- MCP 2026仕様に本番運用でまだ足りないもの
- EveryInfra MCPサーバー、料金、Douyinコメント返信スクレイピングAPI
参考文献
- DeepSeek V4.1 Flash新バージョンのリリースノート(中国語)、DeepSeek、2026-10-17、<https://api-docs.deepseek.com/zh-cn/news/news261017>
- Integrate with Claude Code、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/quick_start/agent_integrations/claude_code>
- Using the Anthropic API、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/guides/anthropic_api>
- Models & Pricing (USD)、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/quick_start/pricing>
- Models & Pricing (CNY)、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/zh-cn/quick_start/pricing>
- Search & Fetch、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/guides/search>
- Context Caching、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/guides/kv_cache>
- Token & Token Usage、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/quick_start/token_usage>
- Rate Limit & Isolation、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/quick_start/rate_limit>
- Thinking Mode、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/guides/thinking_mode>
- Tool Calls、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/guides/tool_calls>
- JSON Output、DeepSeek API Docs、2026-10-26閲覧、<https://api-docs.deepseek.com/guides/json_mode>
- DeepSeek-V4.1-Flash-1017モデルカード、Hugging Face、2026-10-26閲覧、<https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash-1017>
- DeepSeek Harness Quickstart、DeepSeek、2026-10-26閲覧、<https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart>
- 環境変数、Claude Code Docs、2026-10-26閲覧、<https://code.claude.com/docs/en/env-vars>
- MCP経由でClaude Codeをツールに接続する、Claude Code Docs、2026-10-26閲覧、<https://code.claude.com/docs/en/mcp>
- その他のLLMゲートウェイ、Claude Code Docs、2026-10-26閲覧、<https://code.claude.com/docs/en/llm-gateway>
- ゲートウェイ互換性ガイド、Claude Code Docs、2026-10-26閲覧、<https://code.claude.com/docs/en/llm-gateway-protocol>
- Claude CodeをLLMゲートウェイに接続する、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/llm-gateway-connect>
- コストを効果的に管理する、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/costs>
- モデル設定、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/model-config>
- サブエージェント、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/sub-agents>
- フック、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/hooks>
- プロンプトキャッシュ、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/prompt-caching>
- 変更履歴(2.1.304〜2.1.310、2026年10月19日〜23日)、Claude Codeドキュメント、<https://code.claude.com/docs/en/changelog>
- 権限、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/permissions>
- 設定、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/settings>
- @anthropic-ai/claude-code, npm, read 2026-10-26 (latest 2.1.310), <https://www.npmjs.com/package/@anthropic-ai/claude-code>
- anthropics/claude-code、GitHub、2026-10-26閲覧、<https://github.com/anthropics/claude-code>
- 料金、Claude Platformドキュメント、2026-10-26閲覧、<https://platform.claude.com/docs/en/about-claude/pricing>
- リリースノート、Claude Platformドキュメント、2026-10-26閲覧、<https://platform.claude.com/docs/en/release-notes/overview>
- プロンプトキャッシュ、Claude Platformドキュメント、2026-10-26閲覧、<https://platform.claude.com/docs/en/build-with-claude/prompt-caching>
- ツール使用の概要、Claude Platformドキュメント、2026-10-26閲覧、<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>
- トークンカウント、Claude Platformドキュメント、2026-10-26閲覧、<https://platform.claude.com/docs/en/build-with-claude/token-counting>
- Claude Haiku 5.5のご紹介、Anthropic、2026-10-07、<https://www.anthropic.com/claude-haiku-5-5>
- ツール(2025-06-18版MCP仕様)、Model Context Protocol、<https://modelcontextprotocol.io/specification/2025-06-18/server/tools>
- CommentThreads: list、YouTube Data API、2026-10-15更新、<https://developers.google.com/youtube/v3/docs/commentThreads/list>
- YouTube Data APIの概要(クォータ)、Google for Developers、2026-10-26閲覧、<https://developers.google.com/youtube/v3/getting-started>
- Made On YouTube 2026:発表内容まとめ、YouTube公式ブログ、2026-09-23、<https://blog.youtube/news-and-events/innovation-youtube-era-made-on-viewers-creators/>
- クリエイティブな活動を後押しする新ツール、YouTube公式ブログ、2026-09-23、<https://blog.youtube/news-and-events/made-on-youtube-new-tools-power-creation-journey/>
- YouTube、コメントでのGIF対応の提供を開始、9to5Google(二次報道。原典は項目39)、2026-10-14、<https://9to5google.com/2026/10/14/youtube-begins-rolling-out-gif-support/>
- ショート動画における偽ペルソナに関するCACのキャンペーン(中国語)、中国国家インターネット情報弁公室、2026-09-30、<https://www.cac.gov.cn/2026-09/30/c_1792520301987752.htm>
- AIアプリの悪用に関するCACのキャンペーン、第2段階(中国語)、中国国家インターネット情報弁公室、2026-09-02、<https://www.cac.gov.cn/2026-09/02/c_1790099041364574.htm>
- EveryInfra機能カタログ、EveryInfra、2026-10-26 17:23 SGT閲覧、<https://api.everyinfra.com/api/v1/social/catalog>
- EveryInfra OpenAPI、EveryInfra、2026-10-26閲覧、<https://api.everyinfra.com/openapi.json>
- 注意喚起:DeepSeek V4.1 FlashがAPIキーを常習的に外部送信する、Reddit r/LocalLLaMA(ユーザー投稿、二次情報)、2026年10月、<https://www.reddit.com/r/LocalLLaMA/comments/1x32vhx/psa_deepseek_v41_flash_habitually_exfiltrates_api/>
- Haiku 5.5、Luna、DeepSeek Flash、Gemini 3.8 Flashを比較検証、Reddit r/ClaudeAI(ユーザー投稿、二次情報)、2026年10月、<https://www.reddit.com/r/ClaudeAI/comments/1x09xst/i_tested_haiku_55_vs_luna_vs_deepseek_flash_vs/>
- Unicode正規化形式(UAX #15)、Unicode Consortium、<https://www.unicode.org/reports/tr15/>
- unicodedata、Pythonドキュメント、<https://docs.python.org/3/library/unicodedata.html>
- RFC 8259:JavaScript Object Notation(JSON)データ交換形式、IETF、<https://www.rfc-editor.org/rfc/rfc8259>
- サードパーティプラットフォームでのClaude Code、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/third-party-integrations>
- ゲートウェイの概要、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/gateways>
- エラー、Claude Codeドキュメント、2026-10-26閲覧、<https://code.claude.com/docs/en/errors>
- deepseek-ai/deepseek-recipe、GitHub、2026-10-26閲覧、<https://github.com/deepseek-ai/deepseek-recipe>
- re:正規表現操作、Pythonドキュメント、<https://docs.python.org/3/library/re.html>
参考資料 BL-56