自作カスタムノードをComfyUI-Managerに登録する方法

ComfyUIの自作カスタムノードをManagerに登録する方法のサムネイル

自作したComfyUIのカスタムノードをGitHubで公開しても、そのままではComfyUI-Managerの検索結果に表示されません。

Managerから検索してインストールできるようにするには、Comfy Registryへの登録が必要です。

私も今回初めてやってみたので、アウトプット兼ねてカスタムノードを登録するところまでを紹介します。

この記事で分かること
  • 登録に必要なもの(pyproject.tomlとAPIキー)
  • 自作カスタムノードを登録するまでの手順
  • 登録に失敗したときの確認方法

登録完了までの全体像

ざっくりこんな感じで進めていきます。

  1. 登録前の確認・前提
  2. Comfy RegistryでPublisherを作成する
  3. Registry公開用のAPIキーを発行する
  4. 不要なファイルを配布対象から除外
  5. requirements.txtの有無を確認
  6. pyproject.tomlを作成する
  7. カスタムノードを公開する
    1. comfy node publishを使う場合
    2. GitHub Actionsを使う場合
  8. RegistryとComfyUI-Managerで表示を確認する

カスタムノードをManagerに登録する手順

登録前の確認・前提

カスタムノードは作成済み、GitHubに公開済みであることが前提です。

今回はAIに作って貰ったComfyUI-FolderBatchというカスタムノードがあるので、それを登録してみます。

フォルダ内の画像・動画・音声・テキストを1件ずつComfyUIのキューへ流すためのカスタムノード集です。

GitHub – aiai-r/ComfyUI-FolderBatch: Nodes to batch process with ComfyUI
Nodes to batch process with ComfyUI. Contribute to aiai-r/ComfyUI-FolderBatch development by creating an account on GitH…

現在カスタムノード本体はできていて、Registryへ公開するための情報が足りない状態になっています。

確認項目FolderBatchの状態
GitHubリポジトリ作成済み
README英語・日本語の説明あり
LICENSEMIT Licenseあり
ノードの動作ローカルのComfyUIで使用中
pyproject.toml未作成
Registry未登録

Comfy RegistryでPublisherを作成する

カスタムノードをComfyUI-Managerに登録するためにComfy RegistryでアカウントやAPIキーの取得が必要です。

まずComfy Registryにアクセスしてアカウントを作成します。

サインアップをクリックしてください。

Comfy Registryのトップページでサインアップをクリックする

登録方法をGoogle、GitHub、メールから選べます。

Comfy Registryの登録方法をGoogle・GitHub・メールから選ぶ画面

アカウント登録したらページトップの開始するをクリックします。

Comfy Registryのページトップにある開始するボタン

新しいパブリッシャーをクリックします。

Comfy Registryで新しいパブリッシャーを作成するボタン

あとは任意のユーザー名・表示名を入力して作成を押してください。

パブリッシャーのユーザー名と表示名を入力する画面

表示名は後から変えられますが、ユーザー名(Publisher ID)は変更できないので注意が必要です。

Registry公開用のAPIキーを発行する

パブリッシャーを作成すると表示名のリンクがでるので、それをクリックします。

作成したパブリッシャーの表示名リンク

APIキーから新しいキーを作成をクリックします。

Comfy RegistryのAPIキー画面で新しいキーを作成する

任意の名前・説明を入れて秘密鍵を作成をクリックします。

APIキーの名前と説明を入力して秘密鍵を作成する画面

キーが表示されるので、安全な場所に保管しておいてください。

書いてある通り紛失した場合は、新しいキーの作成が必要です。

発行されたRegistry公開用APIキーが表示された画面

不要なファイルを配布対象から除外

公開すると、Gitで管理しているファイルが公開用パッケージへ入ります。

そのため、キャッシュや開発用ファイルをそのまま含めないようにした方が良いです。

FolderBatchだと__pycache__内のファイルがGit管理に入っていたのと、公開後のnode.zipが入らないようにしました。

gitで追跡したくないものは.gitignore、公開パッケージに含めたくないものは.comfyignoreに書きます。

ファイルはリポジトリ直下に置けばOKです。

__pycache__/
*.py[cod]
*.zip

requirements.txtの有無を確認

カスタムノードがComfyUIに入っていない外部ライブラリを使う場合は、必要なパッケージをrequirements.txtなどへ記載します。

ただし、必要のないライブラリまで追加すると、利用者のPython環境で競合する原因になります。

何らかのカスタムノードを入れたらComfyUIの挙動がおかしくなったみたいなことは、こういうところで発生してしまう可能性が高いです。

ComfyUI本体で使われてるライブラリのみ使うカスタムノードであれば、requirements.txtは必須ではありません。

今回登録するComfyUI-FolderBatchもComfyUI本体のライブラリだけで動作するため、requirements.txtは作りませんでした。

pyproject.tomlを作成する

pyproject.tomlは、Comfy Registryへ登録するための情報を書く設定ファイルです。

Registryへ表示するノード名、説明、バージョン、作者情報などを書きます。

[project]
name = "ComfyUI-FolderBatch"
description = "Folder-based batch queue helpers for ComfyUI"
version = "1.0.0"
license = { file = "LICENSE" }
dependencies = []

[project.urls]
Repository = "https://github.com/aiai-r/ComfyUI-FolderBatch"

[tool.comfy]
PublisherId = "aiaicreate"
DisplayName = "ComfyUI-FolderBatch"

公開前にRegistryで同じ名前が使われていないか確認し、実際の名前を確定します。

主な設定項目

項目内容
nameRegistry内で使う重複不可のNode ID
description何ができるノードかを短く書く説明
version公開するバージョン。初回は1.0.0など
licenseリポジトリ内のライセンスファイル
RepositoryカスタムノードのGitHub URL
PublisherIdRegistryで作成したPublisher ID
DisplayName利用者向けに表示する名前

公式ではnameは短く説明的な名前が推奨されており、Node IDへComfyUIを含めない形が案内されています。

ただ実際登録されているカスタムノードを見るとリポジトリ名やカスタムノード名をそのまま使用している方が多いので、私はComfyUI-FolderBatchにしました。

pyproject.toml – ComfyUI

またこのpyproject.tomlはcomfy-cliでひな形が作れます。

インストールはpipで実行できます。

# ポータブル版
cd ComfyUI_windows_portable
.\python_embeded\python.exe -m pip install comfy-cli

# StabilityMatrix
& "C:\StabilityMatrix-win-x64\Data\Packages\ComfyUI\venv\Scripts\python.exe" -m pip install comfy-cli

インストール後、登録するカスタムノードフォルダに移動します。

# ポータブル版
cd C:\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-FolderBatch

# StabilityMatrix
cd C:\StabilityMatrix-win-x64\Data\Packages\ComfyUI\custom_nodes\ComfyUI-FolderBatch

あとはコマンドを実行するだけです。

# ポータブル版
& "C:\ComfyUI_windows_portable\python_embeded\Scripts\comfy.exe" node init

# StabilityMatrix
& "C:\StabilityMatrix-win-x64\Data\Packages\ComfyUI\venv\Scripts\comfy.exe" node init

実行すると以下の質問が出ます。

これはcomfy-cliの利用状況を匿名で収集してよいかという確認です。

Do you agree to enable tracking to improve the application?

良ければyを入力、送信したくない場合はn、またはそのままEnterを押せば進めます。

comfy node initを実行してトラッキングの可否を聞かれる画面

実行後、フォルダ内にpyproject.tomlが作成されたら完成です。

あとはPublisherIdなどが空なので、上記の通り内容を修正してください。

カスタムノードを公開する

comfy node publishを使う場合

公開もcomfy-cliのコマンドでできます。

同じフォルダで以下のコマンドを実行してください。

& "C:\StabilityMatrix-win-x64\Data\Packages\ComfyUI\venv\Scripts\comfy.exe" node publish

途中でAPIキーを求められるので、先ほど発行したRegistry公開用APIキーを入力します。

comfy node publishの実行中にAPIキーの入力を求められる画面

コピペしても表示されませんが、Ctrl+Vで貼り付けたらそのままEnterでOKです。

GitHub Actionsを使う場合

GitHub Actionsを使う場合は、先にAPIキーをGitHubに登録します。

Settings
→ Secrets and variables
→ Actions
→ Repository secrets
→ New repository secret

GitHubのSettingsからSecrets and variablesのActionsを開いた画面

任意の名前を付けて、Comfy Registryで取得したAPIキーを入力し、Add secretをクリックします。

今回はREGISTRY_ACCESS_TOKENで進めます。

REGISTRY_ACCESS_TOKENという名前でAPIキーを登録する画面

次にGitHub Actionsの設定ファイルを作成します。

リポジトリ内に以下のファイルを作成してください。

・パス

.github/workflows/publish_action.yml

・publish_action.ymlの中身

  name: Publish to Comfy Registry

  on:
    workflow_dispatch:
    push:
      branches:
        - main
      paths:
        - "pyproject.toml"

  jobs:
    publish-node:
      runs-on: ubuntu-latest

      steps:
        - name: Check out repository
          uses: actions/checkout@v4

        - name: Publish custom node
          uses: Comfy-Org/publish-node-action@main
          with:
            personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}

Secretで別の名前を使った場合は、REGISTRY_ACCESS_TOKEN部分も修正してください。

これでgit pushするとその時点で公開処理が実行されます。

StatusはActions タブから確認可能です。

一度失敗してから手動でやったので画像はManuallyになってますが、通常はpushした時点で公開処理されます。

GitHubのActionsタブで公開処理の実行結果を確認する画面

RegistryとComfyUI-Managerで表示を確認する

どちらの手順でやってもComfy Registryにアクセスして、カスタムノードが追加されていれば実行できています。

Comfy Registryに登録されたComfyUI-FolderBatchのページ

CLIでやった方が1.0.0、GitHubでやったのが1.0.1なので、どちらからでも公開できるのが確認できました。

Comfy Registryでバージョン1.0.0と1.0.1が公開されている表示

ComfyUI-Managerでも検索で表示されるようになっています。

ComfyUI-Managerの検索結果に表示されたComfyUI-FolderBatch

登録できないときの確認方法

公開できない場合は、CLIとGitHub Actionsのどちらで失敗したかを分けて確認します。

まずは実行結果を見て、該当する項目を確認してください。

GitHub Actionsが実行されない

今回作成した設定では、mainブランチへpyproject.tomlを含む変更をpushしたときにGitHub Actionsが動きます。

コードだけを修正してpyproject.tomlを変更しなかった場合は、公開処理が始まりません。

また、リポジトリのブランチ名がmasterの場合は、publish_action.yml内のmainmasterへ変更してください。

実行されたかどうかは、GitHubリポジトリのActionsタブから確認できます。

APIキーのエラーが表示される

GitHub Actionsで次のエラーが表示された場合は、Registry公開用APIキーがActionへ渡っていません。

Option '--token' requires an argument.

GitHubのSettingsからSecrets and variables、Actionsの順に開き、Repository secretsを確認します。

REGISTRY_ACCESS_TOKENという名前で、Comfy Registryから取得したAPIキーを登録してください。

登録後はバージョン番号を変えず、失敗したActionsを開いてRe-run jobsを押せば再実行できます。

同じバージョンが公開済みと表示される

Registryでは、一度公開したバージョンの中身を同じ番号のまま差し替えられません。

CLIとGitHubでバージョン変えたのもこれが理由です。

例えば1.0.0が公開済みなら、pyproject.tomlを開いて1.0.1へ変更します。

[project]
version = "1.0.1"

保存後、GitHub Actionsを使う場合はGitHubへpushし、CLIを使う場合は再びcomfy node publishを実行してください。

RegistryやManagerに表示されない

最初に、CLIの最後に公開成功のURLが表示されたか、GitHub Actionsに緑色のチェックが付いているかを確認します。

公開処理が失敗している場合は、RegistryやManagerを探す前に表示されたエラーを修正してください。

Registryには表示されているのにManagerで見つからない場合は、Managerの一覧を更新してからComfyUIを再起動します。

それでも見つからないときは、ComfyUIとManagerを最新版へ更新してから再度検索してください。

まとめ

以上ComfyUIの自作カスタムノードをManagerに登録する方法を紹介しました。

一度やってしまえばそこまで難しくないと思います。

更新するときはバージョン番号を上げて出し直すことだけ押さえておけば大丈夫そうです。

参考になれば幸いです。

タイトルとURLをコピーしました