メインコンテンツへスキップ

仕様

pyproject.toml ファイルには、ComfyUI カスタムノード用の 2 つの主要セクション [project][tool.comfy] が含まれています。以下に各セクションの仕様を示します。

[project] セクション

name(必須)

ノード ID はカスタムノードを一意に識別し、レジストリからの URL で使用されます。ユーザーはこの名前を参照してノードをインストールできます:
comfy node install <node-id>
要件:
  • 100 文字未満であること
  • 英数字、ハイフン、アンダースコア、ピリオドのみ含めることができる
  • 連続した特殊文字を含めることはできない
  • 数字または特殊文字で始まることはできない
  • 大文字小文字を区別しない比較
ベストプラクティス:
  • 短く説明的な名前を使用する
  • 名前に「ComfyUI」を含めない
  • 記憶しやすく入力しやすい名前にする
例:
name = "image-processor"      # ✅ 良い:シンプルで明確
name = "super-resolution"     # ✅ 良い:機能を説明している
name = "ComfyUI-enhancer"    # ❌ 悪い:ComfyUI を含んでいる
name = "123-tool"            # ❌ 悪い:数字で始まっている
詳細については、公式 Python ドキュメント をご覧ください。

version(必須)

セマンティックバージョニング を使用し、3 桁のバージョン番号 X.Y.Z を採用します:
  • X(MAJOR): 破壊的変更
  • Y(MINOR): 新機能(後方互換性あり)
  • Z(PATCH): バグ修正
例:
version = "1.0.0"    # 初期リリース
version = "1.1.0"    # 新機能追加
version = "1.1.1"    # バグ修正
version = "2.0.0"    # 破壊的変更

license(オプション)

カスタムノードのライセンスを指定します。2 つの方法で指定できます:
  1. ファイル参照:
license = { file = "LICENSE" }     # ✅ LICENSE ファイルを指す
license = { file = "LICENSE.txt" } # ✅ LICENSE.txt を指す
license = "LICENSE"                # ❌ 形式が正しくない
  1. ライセンス名:
license = { text = "MIT License" }  # ✅ 正しい形式
license = { text = "Apache-2.0" }   # ✅ 正しい形式
license = "MIT LICENSE"             # ❌ 形式が正しくない
一般的なライセンス:MITGPLApache

description(推奨)

カスタムノードの機能に関する簡単な説明。
description = "A super resolution node for enhancing image quality"

repository(必須)

関連リソースへのリンク:
[project.urls]
Repository = "https://github.com/username/repository"

urls(推奨)

関連リソースへのリンク:
[project.urls]
Documentation = "https://github.com/username/repository/wiki"
"Bug Tracker" = "https://github.com/username/repository/issues"

requires-python(推奨)

ノードがサポートする Python バージョンを指定します:
requires-python = ">=3.8"        # Python 3.8 以上
requires-python = ">=3.8,<3.11"  # Python 3.8 以上 3.11 未満

フロントエンドバージョン互換性(オプション)

ノードがサポートする ComfyUI フロントエンドバージョンに特定の要件がある場合、comfyui-frontend-package 依存関係を使用してこれを指定できます。このパッケージは PyPI で公開されています。 以下の場合にこのフィールドを使用します:
  • カスタムノードが特定のバージョンで導入されたフロントエンド API を使用している
  • ノードと特定のフロントエンドバージョン間の非互換性を特定した
  • ノードが新しいフロントエンドバージョンでのみ利用可能な特定の UI 機能を必要としている
[project]
dependencies = [
    "comfyui-frontend-package>=1.20.0"       # フロントエンド 1.20.0 以上が必要
    "comfyui-frontend-package<=1.21.6"       # フロントエンドバージョンを 1.21.6 までに制限
    "comfyui-frontend-package>=1.19,<1.22"   # フロントエンド 1.19 から 1.21.x で動作
    "comfyui-frontend-package~=1.20.0"       # 1.20.x と互換性あり、1.21.0 は含まない
    "comfyui-frontend-package!=1.21.3"       # 1.21.3 以外のすべてのバージョンで動作
]

classifiers(推奨)

分類子を使用して、オペレーティングシステムの互換性と GPU アクセラレータを指定します。この情報は、ユーザーがシステムに適したノードを見つけるのに役立ちます。
[project]
classifiers = [
    # OS 依存しないノード用(すべてのオペレーティングシステムで動作)
    "Operating System :: OS Independent",

    # または OS 固有のノードの場合、サポートされるシステムを指定:
    "Operating System :: Microsoft :: Windows",  # Windows 固有
    "Operating System :: POSIX :: Linux",  # Linux 固有
    "Operating System :: MacOS",  # macOS 固有
    
    # GPU アクセラレータサポート
    "Environment :: GPU :: NVIDIA CUDA",    # NVIDIA CUDA サポート
    "Environment :: GPU :: AMD ROCm",       # AMD ROCm サポート
    "Environment :: GPU :: Intel Arc",      # Intel Arc サポート
    "Environment :: NPU :: Huawei Ascend",  # 華為昇騰サポート
    "Environment :: GPU :: Apple Metal",    # Apple Metal サポート
]

[tool.comfy] セクション

PublisherId(必須)

一意の発行元識別子。通常、GitHub ユーザー名と一致します。 例:
PublisherId = "john-doe"        # ✅ GitHub ユーザー名と一致
PublisherId = "image-wizard"    # ✅ 一意の識別子

DisplayName(オプション)

カスタムノードのユーザーフレンドリーな名前。
DisplayName = "Super Resolution Node"

Icon(オプション)

ComfyUI レジストリと ComfyUI-Manager に表示されるカスタムノードのアイコンへの URL。 要件:
  • ファイル形式:SVG、PNG、JPG、または GIF
  • 最大解像度:400px × 400px
  • アスペクト比は正方形であること
Icon = "https://raw.githubusercontent.com/username/repo/main/icon.png"

Banner(オプション)

ComfyUI レジストリと ComfyUI-Manager に表示される大きなバナー画像への URL。 要件:
  • ファイル形式:SVG、PNG、JPG、または GIF
  • アスペクト比:21:9
Banner = "https://raw.githubusercontent.com/username/repo/main/banner.png"

requires-comfyui(オプション)

ノードが互換性のある ComfyUI バージョンを指定します。これにより、ユーザーが正しいバージョンの ComfyUI をインストールしていることを確認するのに役立ちます。 サポートされる演算子: <><=>=~=<>!= および範囲
requires-comfyui = ">=1.0.0"        # ComfyUI 1.0.0 以上
requires-comfyui = ">=1.0.0,<2.0.0"  # ComfyUI 1.0.0 以上 2.0.0 未満
requires-comfyui = "~=1.0.0"         # 互換リリース:バージョン 1.0.0 以上、ただし 2.0.0 は含まない
requires-comfyui = "!=1.2.3"         # 1.2.3 以外のすべてのバージョン
requires-comfyui = ">0.1.3,<1.0.0"   # 0.1.3 より大きく 1.0.0 より小さい

includes(オプション)

特定のフォルダーを強制的に含めるかどうかを指定します。フロントエンドプロジェクトのカスタムノードなど、一部の状況では、最終的なパッケージ出力フォルダーが .gitignore に含まれている可能性があります。そのような場合、レジストリ使用のために強制的に含める必要があります。
includes = ['dist']

完全な例

[project]
name = "super-resolution-node"
version = "1.0.0"
description = "Enhance image quality using advanced super resolution techniques"
license = { file = "LICENSE" }
requires-python = ">=3.8"
dependencies = [
    "comfyui-frontend-package<=1.21.6"  # フロントエンドバージョン互換性
]
classifiers = [
    "Operating System :: OS Independent"  # すべてのオペレーティングシステムで動作
]
dynamic = ["dependencies"]

[tool.setuptools.dynamic]
dependencies = {file = ["requirements.txt"]}

[project.urls]
Repository = "https://github.com/username/super-resolution-node"
Documentation = "https://github.com/username/super-resolution-node/wiki"
"Bug Tracker" = "https://github.com/username/super-resolution-node/issues"

[tool.comfy]
PublisherId = "image-wizard"
DisplayName = "Super Resolution Node"
Icon = "https://raw.githubusercontent.com/username/super-resolution-node/main/icon.png"
Banner = "https://raw.githubusercontent.com/username/super-resolution-node/main/banner.png"
requires-comfyui = ">=1.0.0"  # ComfyUI バージョン互換性