# 5.3 ディープリンクプロトコル

## 機能説明

CC Switch は `ccswitch://` ディープリンクプロトコルをサポートしており、リンクからワンクリックで設定をインポートできます。

**使用シーン**：
- チーム内での設定共有
- チュートリアルでのワンクリック設定
- デバイス間の素早い同期

## オンライン生成ツール

CC Switch はオンラインのディープリンク生成ツールを提供しています：

**アクセス先**：[https://farion1231.github.io/cc-switch/deplink.html](https://farion1231.github.io/cc-switch/deplink.html)

### 使用方法

1. 上記の Web ページを開く
2. インポートタイプを選択（プロバイダー/MCP/Prompt）
3. 設定情報を入力
4. 「リンクを生成」をクリック
5. 生成されたディープリンクをコピー
6. 他の人に共有するか、別のデバイスで使用

## プロトコル形式

### V1 プロトコル

URL パラメータ形式で、読みやすく生成しやすい形式です：

```
ccswitch://v1/import?resource={type}&app={app}&name={name}&...
```

**共通パラメータ**：

| パラメータ | 必須 | 説明 |
|------|------|------|
| `resource` | はい | リソースタイプ：`provider` / `mcp` / `prompt` / `skill` |
| `app` | はい | アプリタイプ：`claude` / `codex` / `gemini` / `opencode` / `openclaw` |
| `name` | はい | 名前 |

**プロバイダーパラメータ**（resource=provider）：

| パラメータ | 必須 | 説明 |
|------|------|------|
| `endpoint` | いいえ | API エンドポイントアドレス（カンマ区切りで複数 URL 対応） |
| `apiKey` | いいえ | API キー |
| `homepage` | いいえ | プロバイダー公式サイト |
| `model` | いいえ | デフォルトモデル |
| `haikuModel` | いいえ | Haiku モデル（Claude のみ） |
| `sonnetModel` | いいえ | Sonnet モデル（Claude のみ） |
| `opusModel` | いいえ | Opus モデル（Claude のみ） |
| `notes` | いいえ | メモ |
| `icon` | いいえ | アイコン |
| `config` | いいえ | Base64 エンコードされた設定内容 |
| `configFormat` | いいえ | 設定形式：`json` / `toml` |
| `configUrl` | いいえ | リモート設定 URL |
| `enabled` | いいえ | 有効にするかどうか（ブール値） |
| `usageScript` | いいえ | 使用量クエリスクリプト |
| `usageEnabled` | いいえ | 使用量クエリを有効にするか（**デフォルト false**）。スクリプト本文はインポート確認ダイアログに全文表示されます。明示的に `true` を指定しない場合はインポートされるだけで有効化されず、アプリ内で手動で有効にできます |
| `usageApiKey` | いいえ | 使用量クエリ専用 API Key |
| `usageBaseUrl` | いいえ | 使用量クエリ専用アドレス |
| `usageAccessToken` | いいえ | 使用量クエリアクセストークン |
| `usageUserId` | いいえ | 使用量クエリユーザー ID |
| `usageAutoInterval` | いいえ | 自動クエリ間隔（分） |

**プロンプトパラメータ**（resource=prompt）：

| パラメータ | 必須 | 説明 |
|------|------|------|
| `content` | はい | プロンプト内容 |
| `description` | いいえ | 説明 |
| `enabled` | いいえ | 有効にするかどうか（ブール値） |

**MCP パラメータ**（resource=mcp）：

| パラメータ | 必須 | 説明 |
|------|------|------|
| `apps` | はい | アプリリスト（カンマ区切り、例：`claude,codex,gemini,opencode`） |
| `config` | はい | MCP サーバー設定（JSON 形式） |
| `enabled` | いいえ | 有効にするかどうか（ブール値） |

**Skill パラメータ**（resource=skill）：

| パラメータ | 必須 | 説明 |
|------|------|------|
| `repo` | はい | リポジトリ（形式：`owner/name`） |
| `directory` | いいえ | ディレクトリパス |
| `branch` | いいえ | Git ブランチ |

**例**：
```
ccswitch://v1/import?resource=provider&app=claude&name=My%20Provider&endpoint=https%3A%2F%2Fapi.example.com&apiKey=sk-xxx
```

## インポートタイプの例

### プロバイダーのインポート

```
ccswitch://v1/import?resource=provider&app=claude&name=My%20Provider&endpoint=https%3A%2F%2Fapi.example.com&apiKey=sk-xxx
```

### MCP サーバーのインポート

```
ccswitch://v1/import?resource=mcp&apps=claude,codex&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-fetch%22%5D%7D&name=mcp-fetch
```

### Prompt プリセットのインポート

```
ccswitch://v1/import?resource=prompt&app=claude&name=%E4%BB%A3%E7%A0%81%E5%AE%A1%E6%9F%A5&content=%23%20%E8%A7%92%E8%89%B2%0A%E4%BD%A0%E6%98%AF%E4%B8%80%E4%B8%AA%E4%B8%93%E4%B8%9A%E7%9A%84%E4%BB%A3%E7%A0%81%E5%AE%A1%E6%9F%A5%E4%B8%93%E5%AE%B6
```

### Skill のインポート

```
ccswitch://v1/import?resource=skill&name=my-skill&repo=owner/repo&directory=skills/my-skill&branch=main
```

## ディープリンクの生成

### 手動生成

1. パラメータを準備
2. V1 プロトコル形式で URL を組み立て
3. 特殊文字を URL エンコード

**例**：

```javascript
const params = new URLSearchParams({
  resource: 'provider',
  app: 'claude',
  name: 'My Provider',
  endpoint: 'https://api.example.com',
  apiKey: 'sk-xxx'
});

const url = `ccswitch://v1/import?${params.toString()}`;
```

### オンラインツール

CC Switch 公式のオンラインディープリンク生成ツールを使用するとより便利です。

## ディープリンクの使用

### リンクのクリック

ブラウザや他のアプリでディープリンクをクリック：

1. システムが CC Switch を開くかどうかを確認
2. 確認後、CC Switch が起動
3. インポート確認ダイアログを表示
4. インポートを確認

### インポートの確認

インポート前に確認ダイアログが表示され、以下が含まれます：

- インポートタイプ
- 設定のプレビュー
- 確認/キャンセルボタン

**セキュリティ上の注意**：信頼できるソースからの設定のみインポートしてください。

## プロトコルの登録

### 自動登録

CC Switch のインストール時に `ccswitch://` プロトコルが自動登録されます。

### 手動登録

プロトコルが正しく登録されていない場合：

**macOS**：
アプリを再インストールするか、以下を実行：
```bash
/usr/bin/open -a "CC Switch" --args --register-protocol
```

**Windows**：
アプリを再インストールするか、レジストリを確認：
```
HKEY_CLASSES_ROOT\ccswitch
```

**Linux**：
`.desktop` ファイルの `MimeType` 設定を確認。

## セキュリティに関する考慮事項

### 機密情報

ディープリンクには機密情報（API Key など）が含まれる場合があります：

- API Key を含むリンクを公開の場で共有しない
- 共有前に機密情報を削除または置換
- 安全なチャネルでリンクを送信

### ソースの確認

インポート前に CC Switch は以下を実行します：

1. データ形式の検証
2. 設定のプレビュー表示
3. ユーザーの確認を要求

### 悪意のあるリンクからの防護

CC Switch は以下を確認します：

- データ形式が正当か
- 必須フィールドが揃っているか
- 設定値が妥当な範囲内か

## サンプルリンク

### 例：Claude プロバイダーのインポート

```
ccswitch://v1/import?resource=provider&app=claude&name=Test%20Provider&apiKey=sk-xxx&endpoint=https%3A%2F%2Fapi.example.com
```

### 例：MCP サーバーのインポート

```
ccswitch://v1/import?resource=mcp&name=mcp-fetch&apps=claude,codex,gemini&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-fetch%22%5D%7D
```

## トラブルシューティング

### リンクが開けない

**確認事項**：
1. CC Switch がインストールされているか
2. プロトコルが正しく登録されているか
3. リンクの形式が正しいか

### インポートに失敗する

**考えられる原因**：
- Base64 エンコードのエラー
- JSON 形式のエラー
- 必須フィールドの不足

**解決方法**：
1. 元の JSON 形式を確認
2. Base64 エンコードをやり直す
3. すべての必須フィールドが存在することを確認
