Clashサブスクリプション形式解説:YAML・Base64ノードリストと汎用形式の違いと変換方法

Clash YAML設定・Base64ノードリスト・各クライアント専用形式の違いを整理し、インポート失敗の原因と変換ツールで安全に形式変換する際の注意点を解説。

サブスクリプションリンクの正体

サブスクリプションリンクとは、本質的には単なる HTTP/HTTPS アドレスにすぎません。クライアントはこのアドレスに定期的にアクセスしてテキスト内容を取得し、それを何らかの約束に従ってノードリストとルールへ解析します。問題は、この「約束された形式」が一種類ではないことです。異なるプロキシ系統はそれぞれ独自にテキスト構造を定義してきたため、同じ「サブスクリプション」という概念のもとでも、実際に流通している主流形式は少なくとも3種類あります。Clash系のYAML設定、v2ray/Shadowsocks系のBase64ノードリスト、そして一部のパネルソフトが出力する専有JSON形式です。あるクライアントがそのリンクを「読める」かどうかは、対応する形式のパーサーを実装しているかにかかっています。

これが、同じサブスクリプションリンクがあるクライアントでは正常にインポートできるのに、別の異なるプロトコルスタックを使うクライアントでは形式エラーや空リストになる理由です。リンクが壊れているわけではなく、両者が使っている「言語」が違うだけなのです。

Clash YAML設定:構造化・可読性・情報量の最も高い形式

Clash と Clash Meta(コアは mihomo)が使うサブスクリプション形式は標準的なYAMLテキストで、完全な設定にはいくつかのトップレベルフィールドが含まれます。

port: 7890
socks-port: 7891
mode: rule
proxies:
  - name: "HK-01"
    type: ss
    server: example.com
    port: 443
    cipher: aes-256-gcm
    password: "your-password"
proxy-groups:
  - name: "自動選択"
    type: url-test
    proxies: [HK-01]
    url: "http://www.gstatic.com/generate_204"
    interval: 300
rules:
  - DOMAIN-SUFFIX,google.com,自動選択
  - MATCH,DIRECT

ご覧のとおり、YAML形式はノード(proxies)だけでなく、ノードをどのようにグループ化するか(proxy-groups)、通信をどのルールでどのグループに振り分けるか(rules)まで記述しています。これが他の形式との決定的な違いです。YAMLサブスクリプションは単なるアドレスリストではなく、「実行可能な一式のポリシー」そのものなのです。情報量が多い分、フィールドの表記やインデントの階層には厳密さが要求され、スペースが1つ足りなかったり、インデントにタブが混入したりするだけで、設定全体の解析が失敗することがあります。

注意:YAMLはインデントに非常に敏感で、同じ階層のフィールドの前にあるスペース数は完全に一致させる必要があり、Tabキーによるインデントは禁止です。手作業で設定ファイルを編集する場合は、YAMLのシンタックスハイライトに対応したエディタを使うことをお勧めします。目視ではスペース1つの不足を見落としやすいためです。

Base64ノードリスト:軽量だが「アドレス一覧」にすぎない

もう一つよく見られる形式は、Shadowsocks、V2Ray、Trojan、VLESSなどのプロトコルがそれぞれ持つクライアント系統から生まれたものです。この種のサブスクリプションを開くと、改行のない一続きの、見た目には規則性のない文字列が表示されることが多く、例えば c3M6Ly8... のように始まります。実際にはこれは複数のノードリンク(それぞれ ss://…vmess://…trojan://… の形)を改行でつなぎ、それを丸ごとBase64エンコードしたものです。目的はQRコードや純テキスト環境での伝送を容易にし、特殊文字がエスケープされて壊れることを避けるためです。

デコード後、各行はおおむね次のような構造になります(Shadowsocksを例に):

ss://[email protected]:443#HK-01
vmess://eyJ2IjoiMiIsInBzIjoiSEstMDIiLCJhZGQiOiJleGFtcGxlLmNvbSJ9
trojan://[email protected]:443?sni=example.com#HK-03

この形式の情報密度はYAMLよりはるかに低く、「どのノードがあり、アドレスは何で、どんな暗号方式を使うか」しか記述されておらず、グループ化ポリシーやルーティングルールは含まれません。クライアントはこのリストを受け取った後、ルールをどう決めるか、ノードをどうグループ化するかを、すべて自身に内蔵されたデフォルトポリシーで判断します。これが、よくある疑問を説明します。同じBase64サブスクリプションを2種類のクライアントにインポートすると、ノード数は同じでも、プロキシモードのグループ構造やデフォルトの振り分けがまったく異なる、という現象です。グループ化ルールはそもそもサブスクリプション内容の一部ではなく、クライアント側が独自に補っているものだからです。

インポート後にノードが表示されない・エラーになる原因

上記2つの形式の違いを踏まえると、サブスクリプションのインポート失敗はおおむね次のいくつかに分類できます。

切り分けの手順は次の順番で進めるのがお勧めです。まずサブスクリプションリンクがブラウザで正常に開けて内容が表示されるか確認し、次に返された内容の先頭の特徴を見ます(YAMLは通常 port:proxies: で始まり、Base64リストは通常スペースのない一続きの文字列です)。最後にクライアント自身のログページを確認します。多くの解析エラーには具体的な行番号が示されます。

形式間の変換方法

手元のサブスクリプション形式とクライアントが要求する形式が一致しない場合、一般的な方法は変換ツールを使って途中で「翻訳」を行うことで、手作業での書き換えは避けるべきです。現在コミュニティで広く使われているのは subconverter のようなオープンソースの変換サービスで、原理は次の通りです。元のサブスクリプションリンクを入力すると、目的の形式(Clash YAML、汎用Base64リストなど)の新しいリンクが出力され、クライアントはその変換後の新しいアドレスを直接サブスクリプションすればよく、以降の更新も自動的に反映されます。

よくある2つの変換方向

  1. Base64ノードリストからClash YAMLへの変換:変換サービスが各 ss:///vmess:///trojan:// リンクからプロトコルパラメータを解析し、proxies フィールドに書き込み、対象クライアントの種類に応じて既定の proxy-groupsrules を補います(一部のサービスではルールテンプレートを指定可能)。
  2. Clash YAMLから汎用Base64リストへの変換:変換サービスは proxies 部分のノード情報のみを保持し、それぞれ対応するプロトコルのリンク形式に再構成してBase64エンコードします。グループ化やルール情報はこの段階で失われます。対象形式そのものがルールを記述できないためです。

注意:構造化された形式からノードリスト形式への変換は一方向の情報損失であり、ルーティングルールやグループ化のロジックは保持されません。別のクライアントで一時的に応急使用するだけであれば問題ありませんが、この変換後のリンクに長期的に依存する場合は、二次変換に頼るのではなく、サブスクリプション提供元に直接ネイティブ対応形式のアドレスを問い合わせることをお勧めします。

変換時の安全性と安定性に関する注意点

変換サービスは本質的に中間プロキシであり、元のサブスクリプション内容はまず変換サーバーを経由してからクライアントに届きます。以下の点に留意する必要があります。

インポート前の3ステップチェック

サブスクリプションリンクの形式が分からないときは、以下の順番で手早く判断すれば、何度もインポートを試してエラーに悩まされずに済みます。

  1. ブラウザのアドレスバーで直接サブスクリプションリンクを開き、返された内容の先頭の文字を確認します。portproxiesmixed-port などのフィールドが出てくればほぼClash YAMLと判断でき、改行のない一続きの文字列であればBase64ノードリストと判断できます。
  2. 現在使用しているクライアントのコアの種類を確認します(Clash Meta / mihomo コアは通常より互換性が広く、対応するプロトコル種類も多いです)。コアのバージョンが古い場合は、まずクライアントを更新してからインポートすることをお勧めします。
  3. 形式が確かに一致しない場合は、変換ツールの利用を検討し、前節の安全に関する提案に従って変換バックエンドを選びましょう。

この3ステップを終えれば、「サブスクリプションのインポート失敗」「ノードリストが空」といった問題のほとんどは、試行錯誤を繰り返さずに具体的な原因を特定できます。

クライアントをダウンロード