@olduvai-jp/comine-san
v1.0.1
Published
run comfy-ui on the command line
Readme
Comine San
Comine San は ComfyUI でエクスポートした workflow_api.json を読み込み、CLI からワークフローを実行する TypeScript 製ツールです。
特徴
- ワークフロー内の入力/出力ノードを解析し、
--<ノードタイトル>.<入力名>形式の CLI オプションを自動生成 - 指定した ComfyUI サーバーに対して
POST /promptを発行し、WebSocket で進行状況を監視 - SaveImage / ShowText / Show Any to JSON などの出力をファイル保存と JSON で集約
必要環境
- Node.js 18 以上(
fetchAPI を利用) - Yarn もしくは npm
- 実行中の ComfyUI サーバー(デフォルトは
http://127.0.0.1:8188)
セットアップ
yarn install使い方
- ComfyUI から対象フローを
workflow_api.jsonとしてエクスポートする。 - ComfyUI サーバーを起動する(例:
python main.py --listen 0.0.0.0 --port 8188)。 - 下記のように
--helpを実行し、利用可能なオプションを確認する。
yarn start ./path/to/workflow_api.json --helpResult types として、取得できる出力ノードとフィールド型が末尾に表示されます。
- 必要なオプションを確認したら、実際の実行コマンドを組み立てて実行する。
yarn start ./path/to/workflow_api.json \
--output-json ./results/output.json \
--server http://127.0.0.1:8188 \
--Prompt_Text.string "test prompt" \
--SaveImage.filename output/result.png- 第 1 引数: ワークフロー JSON のパス
--output-json: 実行結果を保存する JSON のパス(省略時はmetadata.jsonが作成される)--server: ComfyUI のベース URL(省略時はhttp://127.0.0.1:8188)- その他のオプションは、ComfyUI 上で設定したノードタイトル(英数字・
_-に正規化)と入力キーを組み合わせた形式で自動生成される
例: ComfyUI のノードタイトルが
Prompt Text、入力キーがstringの場合、CLI オプションは--Prompt_Text.stringになります。
実行結果
- 画像出力ノード (
SaveImage) は指定したパスに画像ファイルを保存します。 - テキスト出力ノード (
ShowText|pysssss,Show any to JSON [Crystools]) は JSON のtextフィールドに格納されます。 - CLI の
--output-jsonオプションで指定した JSON ファイルには、各出力ノードの結果が連想配列形式でまとめられます。
対応ノード
- Input
Primitive string multiline [Crystools](文字列のプロンプトなど) - Input
Primitive integer [Crystools](シード値などの整数入力) - Input
Primitive float [Crystools](ガイダンススケールなどの小数入力) - Input
ETN_LoadImageBase64(ファイルパス/既存の Base64 文字列から画像を読込) - Output
SaveImage(画像をファイルに保存しパスを返却) - Output
SaveAnimatedWEBP(アニメーションWebPをファイルに保存しパスを返却) - Output
Show any to JSON [Crystools](任意の値を JSON テキストとして取得) - Output
ShowText|pysssss(テキスト出力を改行付き文字列として取得)
ドキュメント
- CLI の詳細な利用手順は
docs/cli-guide.md(ドラフト)を参照してください。 - ライブラリ API の使い方は
docs/library-guide.md(ドラフト)で概要をまとめています。
ライブラリ利用のヒント
// CommonJS
const { ComfyUiWorkflow } = require('@olduvai-jp/comine-san');
// ES Modules (tree-shakeable)
import { ComfyUiWorkflow } from '@olduvai-jp/comine-san';
// サブパス例
import { ComfyAPIClient } from '@olduvai-jp/comine-san/lib';
import { PrimitiveStringCrystools } from '@olduvai-jp/comine-san/nodes/input/primitiveString';- CLI 実行ロジックに直接アクセスする場合は
@olduvai-jp/comine-san/cliを import してください(npx利用時は不要)。 exportsフィールド経由で CJS/ESM のいずれにも最適化されたdist/cjs/dist/esmを提供しているため、バンドラー経由で未使用のエントリーポイント(例:@olduvai-jp/comine-san/cli)を除去できます。
開発メモ
- 型チェック:
yarn type-check - ビルド:
yarn build(dist/cjsとdist/esmを生成) - CI:
.github/workflows/ci.ymlで Node.js 20 上のyarn type-check/yarn buildを実行 - ノード固有の実装は
workflow/nodes/配下にまとまっています。必要に応じて新しい Input / Output ノードクラスを追加してください。
