生成AI研究室(32) ComfyUIから Claude Code を呼ぶ——H3のプロンプト書き直しを、追加費用ゼロにした

ComfyUIから Claude Code を呼ぶ——MiniMax H3のプロンプト書き直しを追加費用ゼロにした(生成AI研究室32)

前回(31)は、日本語の1文と参照画像から、Claude APIがH3公式仕様の英語プロンプトを書くノードを作り、同じseedで焼き比べた話でした。結論は「LLMを介した翻訳で、動画の表現が豊かになる」でしたが、1回の書き直しに Sonnet 5 で約$0.15、Opus 5 で約$0.29 の従量課金がかかる構成でした。

今回は、その呼び出し先を Claude Code(定額) に替えて、追加費用をゼロにした記録です。作り替え自体は半日で終わりましたが、動かしてみると「画像が届いていない」という、API版にはなかった穴が開いていました。

目次

先に結論

  • 書き直しの呼び出し先を Claude API → Claude Code の非対話実行(claude -p) に変更。1回ごとの従量課金はなくなり、定額プランの枠内で動く。
  • ノードの中に日本語を書き、英語・日本語訳し戻し・補った点が並んで出る。日本語を直して再実行、決まったら固定。
  • claude -p を ComfyUI のプロセスから動かす条件は2つ。子プロセスに USER と LOGNAME を渡す(ないと「Not logged in」)、APIキーの環境変数を外す(外さないと従量課金に戻る)。
  • 落とし穴: API版は画像の画素を本文と一緒に送っていたが、Claude Code には画像を添付する口がなく、ファイルの場所を渡してClaudeに開かせる。最初のノード経由の1本は、画像が1枚も届かないまま書かれ、参照画像と違う旗の色の動画になった。

1. きっかけ——「作者はAPI費を払っていない」

朝、Xで見かけた道具がきっかけでした。音声生成モデルをローカルで動かし、日本語の指示はClaudeに英語へ書き直させる、という構成です。作者がAPI費を負担しているのかと思って読むと、Claudeの部分は使う人それぞれの Claude Code の中で動くようになっていました。配布しているのは手順と道具だけで、作者側のランニングコストはありません。

当方のノードは、自分のAPIキーで Claude を呼ぶ作りでした。1日に数本の書き直しなら、同じ形——すでに契約している Claude Code に書かせる——にすれば、別口の請求は立ちません。失うのは「ComfyUIのフローの中で完結すること」と「無人の連続生成」ですが、どちらも今の使い方には要りません。方針を変えました。

2. 作り替え——呼び出し1か所を差し替える

API版のノードは、指示文(公式ガイド3本込み・約5万字)・書式の検査器・再依頼1回・キャッシュ・固定(lock)という流れで、Claudeを呼ぶ部分だけがAPI SDKでした。そこを claude -p の子プロセスに差し替えます。指示文・検査器・流れはそのままです。

claude -p は、Claude Code を画面なしで1回だけ動かし、答えを返す使い方です。--output-format json で結果がJSONになり、--model でモデルを指定でき、--allowedTools Read でファイルを読ませられます。

先に、ComfyUIのプロセスから動くかを確かめました。

確認結果
環境変数を空にして HOME と PATH だけで実行失敗:「Not logged in」
USER と LOGNAME を足す成功。定額プランのログインで動いた
--model claude-opus-5成功。使われたモデルも Opus 5
--allowedTools Read で画像のパスを指定成功。キャラクターシートの内容(4面図と顔アップ2枚・服装)を正しく説明

ログイン情報はキーチェーンにあり、USER/LOGNAME がないと引けないようです。もう1つ、ComfyUIのプロセスにはAPIキーの環境変数が引き継がれていたので、子プロセスの環境からAPIキーを外す処理を入れました。外さないと、定額ではなくAPIの従量課金で動く可能性があります。

細かい所では、標準入力を閉じないと3秒待つこと、作業フォルダは中立な一時フォルダにすること(プロジェクトの設定ファイルが効かないように)、成否は subtype ではなく is_error で判定すること、を押さえておけば動きます。

API版とClaude Code版の流れの比較。Claudeを呼ぶ1か所だけが違う

3. 画面の形

ノードは API版と同じ入力(日本語・モード・尺・モデル・固定・参照画像6枚まで)、同じ出力3本(英語・日本語訳し戻し・補った点)です。画面側には、英語の全文と日本語訳を読み取り専用で表示する欄を足しました。日本語欄の高さは固定し、残りの高さは英語欄に回るようにしています。

ComfyUIのノード H3 Prompt Rewriter (C/C)。日本語の指示欄の下に、Claude Codeが書いた英語プロンプトと、その日本語訳が並ぶ

使い方は、日本語を書いて実行(裏で2〜4分)、訳し戻しと「補った点」を読む、気に入らなければ日本語を直して実行、決まったら固定をON。固定中は Claude Code を呼ばず、同じ英語を出し続けます。同じ入力の再実行はキャッシュから返ります。

最初は、もっと簡単な形も作りました。Claude Code に貼り付け文で書かせてJSONに保存し、ノードはそれを名前で読むだけ、という受け取り版です。今日の1本目はこの形で焼きました(Opus 5.5・753語)。手間が1段多いので、本命はノード内で完結する上の形です。

4. 落とし穴——生成側に画像があっても、書く側には届いていなかった

ノードで日本語を書いて実行した1本目の英語を、あとで読み返すと、Claudeが「確認してほしい点」にこう書いていました。

Picture 1・2を参照しているのに、画像が1枚も添付されていない。

英語本文は <Picture 1> <Picture 2> のラベルを一度も使わず、衣装や用具を文章で仮定していました。グローブは、画像ではなく「右打ちなら左手」という一般論で左手。焼き上がった動画は、参照画像(赤い旗・松林・曇天)ではなく黄色い旗・松林なしの背景になっていました。

原因は2段ありました。

1つ目は配線です。参照画像は、H3の生成ノードにはメディアローダーからつながっていましたが、Rewriter には届いていませんでした。生成側に画像があることと、文章を書く側に画像があることは別で、ノードが数えた接続枚数は0でした。ローダーの出力を Rewriter にも分岐して解決しました(のちに、画像だけでなく参照動画の代表コマと音声も一括で渡す入力に広げています)。

2つ目は、API版との構造の違いです。

API版Claude Code版
画像の渡し方画素をJPEGにして本文と一緒に送るファイルの場所を渡す
Claudeから見た状態最初から画像が見えている自分で Read を使って開く必要がある
開かない可能性ないある(開かずに書き始める・権限で止まる)

こちらは、画像を作業フォルダの中にコピーして渡す、「書く前に全画像を Read で開く」と依頼文に明示する、画像ごとに「何が写っていたか」を1行書かせる、Claude Code の応答から道具の使用回数を拾って「画像の読み取り: 道具の使用 n回(画像m枚)」を結果に出す(枚数より少なければ警告)、の4つで塞ぎました。見たかどうかが毎回文章で分かる形です。

API版に比べると「見た」の確実さは一段下がります。その代わり費用がゼロ、という交換です。

5. 指示文の手直し3つ

試走の英語を読むと、10/19〜20のAPI版 Opus 5 と同じ癖が出ていました。グローブを左手と書く、依頼にない動作(立ち上がり・パターを垂直に立てる・トウで曲がりをなぞる)を足す、語数が完走実績を超える、の3つです。指示文を3か所直しました。

#直したこと
1語数の上限を、当方の完走実績に合わせて768語→856語に更新し、「850語以内。超えるなら細部を削る」
2新段落「依頼にない動作を足さない」。状態の依頼(「しゃがんでラインを読んでいる」)は状態のまま、その場の小さな動き(呼吸・視線・首の傾き)で尺を埋める
3「手にはめる物(グローブ・時計・指輪)は、画像の正面図と背面図で左右を確かめてから書く」
手直し前手直し後
所要時間116秒148秒
グローブ左手右手(キャラクターシートどおり)
依頼にない動作プラムボブ・トウでなぞる・立った状態から膝をつくなし。最初からしゃがんだまま、まばたき・視線・首の傾き・呼吸・髪と旗の揺れで10秒を埋めた
語数894939

2と3は効きました。語数だけは、指示文に書いただけでは守られませんでした。これは次回、別の方法で解決します。

6. 費用の整理

構成1回の費用画像手間
API版(10/19)Sonnet 5 約$0.15 / Opus 5 約$0.29画素を直接送る(確実)ノード内で完結
受け取り版0(定額の枠内)Claude Code が開く貼り付け文で書かせ、JSONを名前で読む
Claude Code版(今回)0(定額の枠内)Claude Code が開く(開いた回数を記録)ノード内で完結

「0」は追加の従量課金がないという意味です。定額プランの利用枠は使いますし、Macの電気代も動画生成そのものの時間もゼロにはなりません。1日数本の書き直しなら、枠のごく一部で済みます。

まとめ

  • Claude API → Claude Code(claude -p)の差し替えで、H3のプロンプト書き直しは追加費用ゼロになった。条件は USER/LOGNAME を渡すことと、APIキーを外すこと。
  • 日本語をノードに書き、英語・訳し戻し・補った点が並ぶ。直して再実行、決まったら固定。
  • 生成側に参照画像があっても、書く側に届いているとは限らない。Claude Code 版では「開いたかどうか」を毎回記録する。
  • 指示文の手直しで、グローブの左右と勝手な動作追加は直った。語数は残った。

次回は、焼き上がった動画を見せて、プロンプトの「そこだけ」を直す仕組みです。転がり続けたゴルフボールが、6か所の差分で止まりました。


環境: MacBook Pro M5(32GB)・ComfyUI・Claude Code 2.1.303(定額プラン)・モデル Claude Opus 5。参照: 第31回「有償APIの動画はなぜ表現が豊かなのか」、第23回「15秒を3本焼いて分かった、長尺が崩れる本当の理由」。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次