Clash Config Converter(clash-converter)
概要
Clash Config Converterは、汎用的な入力フォーマットをClashが理解するYAML設定ファイルへ変換するためのPython製ユーティリティです。テンプレートとなるbase.yaml(templatesディレクトリ内)を読み込み、外部から得たプロキシ定義をproxiesセクションに埋め込み、必要に応じてproxy-groupsを更新して一貫した構成を生成します。設定のフォーマットを保ちつつ自動化することで、手作業のミスを減らし、複数のプロキシソースや定期的な設定生成に便利です。依存関係はrequirements.txtにまとめられており、main.pyを実行するだけで変換処理が走る設計になっています。
リポジトリの統計情報
- スター数: 5
- フォーク数: 0
- ウォッチャー数: 5
- コミット数: 2
- ファイル数: 4
- メインの言語: Python
主な特徴
- YAMLテンプレート(base.yaml)を読み込んで雛形を保持
- 外部入力を解析してproxiesセクションを自動生成
- proxy-groupsを自動更新して組み合わせを構築
- YAMLフォーマットの整形・規約に配慮した出力
技術的なポイント
このツールは「テンプレートとなるYAMLを起点に必要箇所だけを書き換えて出力する」設計が特徴です。base.yamlを保持することでルールや既存の設定(ルーティングやルール群、Global設定など)を壊さずに、変換対象のプロキシ情報のみを差し替えられます。実装上はPythonでYAMLを読み書きするライブラリ(requirements.txtに記載される想定)を利用しているため、パースとダンプの段階で構造化データとして安全に操作できます。注目点としては、Clashの設定は配列やネスト、アンカー/エイリアスを含むため、単純な文字列置換ではなくAST的にノードを扱うアプローチが有効です。さらにproxy-groupsの更新では、既存のグループに新しいプロキシ名を追加したり、グループの並び順やデフォルト選択を維持するロジックが求められます。実務的な改善案としては、YAMLのコメントやアンカーを保持するためにruamel.yaml等のラウンドトリップ対応ライブラリを採用する、あるいはJinja2のようなテンプレートエンジンで柔軟なテンプレート化を行うことが考えられます。また、入力フォーマットが多様な場合はパーサ層を抽象化してプラグイン形式で拡張できると便利です。最後に、CLIオプション(入力ソース指定、出力先指定、dry-run、検証モード)を用意すると運用性が高まります。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- main.py: file
- requirements.txt: file
- templates: dir
まとめ
シンプルで実用的なClash用YAML変換ツール。テンプレート運用で安全に設定更新できます。
リポジトリ情報:
- 名前: clash-converter
- 説明: for clash
- スター数: 5
- 言語: Python
- URL: https://github.com/llkey/clash-converter
- オーナー: llkey
- アバター: https://avatars.githubusercontent.com/u/208111681?v=4
READMEの抜粋:
Clash Config Converter
一个基于 Python 的工具,用于将 [输入格式] 转换为 Clash 兼容的 YAML 配置文件。
功能
- 支持加载基础 YAML 模板
- 自动填充
proxies和更新proxy-groups - 保持 YAML 格式规范
快速开始
-
安装依赖:
pip install -r requirements.txt -
修改 templates/base.yaml 根据你的需求调整规则。
-
运行转换器:
Bash
python main.py
...