リレー経由の画像生成
このスキルのフォルダ(このSKILL.mdと同じフォルダ)にある relay.sh スクリプトを使用します。スクリプトは、その隣にある relay.env(または環境変数 IMAGE_RELAY_URL / IMAGE_RELAY_TOKEN が設定されていればそれ)からリレーのURLとトークンを読み取り、リレーを呼び出し、画像をファイルとして保存します。スクリプトは絶対パスを指定して bash で実行してください。
トークンや relay.env を出力(print/echo/cat)したり、コマンドラインにトークンを指定したりしないでください。
生成
bash /path/to/image-gen/relay.sh generate "水彩画のキツネ、雪の森で" --aspect 16:9
オプション:
--aspect R: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 のいずれか--n N: 生成画像数(1〜4)--model M: ユーザーが特定のモデルを指定した場合のみ使用。許可されているモデル一覧はrelay.sh modelsで確認--out DIR: 保存先ディレクトリ(デフォルト:/mnt/user-data/outputsが存在する場合はそこ、存在しない場合はカレントディレクトリ)
出力行は saved: /path/abc123.jpg (512345 bytes, relay file: abc123.jpg) のようになります。保存されたファイルをユーザーに表示または添付してください。フォローアップの編集のために relay file 名を保持しておいてください。
結果の待機
生成には数分かかることがあるため、リレーはバックグラウンドジョブとして実行します。relay.sh generate はジョブを送信し、リレーから指定された間隔(約30秒ごと)で最大90秒間状況を確認します。画像が準備できれば、通常通り saved: 行が出力されます。
pending: job <id> ... と表示された場合、ジョブはリレー上でまだ実行中であり、失われていません。表示された秒数だけ待機してから、次のコマンドを実行します:
bash /path/to/image-gen/relay.sh result <id>
待機中、スクリプトは「チェック中」(リレーがリクエストを審査中)または「承認済み、生成中」と表示することがあります。saved: 行またはエラーが出力されるまで繰り返します。ジョブが保留中の間はプロンプトを再送信しないでください。再送信すると2枚目の画像が生成(および課金)されます。--wait SECONDS で1回の呼び出しの待機時間を変更できます(デフォルト90)。
参照画像の編集・使用
ユーザーの画像ファイルを --image で渡します(最大4回まで繰り返し指定可能、PNG/JPEG/WebP/GIF、各ファイル10MB以下):
bash /path/to/image-gen/relay.sh generate "空を紫色にして、その他はすべて同じままに" --image /path/to/photo.jpg
会話内で以前生成した画像を編集するには、--ref でリレーファイル名を指定します(再アップロードより高速。リレーファイルは24時間で期限切れ):
bash /path/to/image-gen/relay.sh generate "右上に小さな月を追加" --ref abc123.jpg
--ref は https:// の画像URLも受け付けます。
プロンプト作成
被写体、スタイル、構図、照明、色を網羅した具体的なプロンプトを書いてください。編集の場合は、何を変更し、何を維持するかを指定してください。
エラー
スクリプトは error: HTTP <code> <code_name>: <message> の形式でエラーを出力します:
rate_limited: 表示された秒数だけ待ってから、1回だけ再試行します。model_not_allowed、invalid_aspect_ratio、invalid_n: オプションを修正して再試行します。invalid_input_images/ 413: 画像の形式が非対応かサイズが大きすぎます。変換または縮小してください。upstream_error(例:「応答がタイムアウトしました」): リレー側ですでに再試行済みです。ユーザーに伝え、1回だけ再送信します。再度失敗した場合は中止して報告します。request_rejected: リレーがリクエストを拒否しました(理由は不明)。ユーザーに拒否されたことを伝えますが、原因を推測したり、プロンプトや画像を言い換えたり偽装して回避しようとしたり、再送信したりしないでください。prompt_rejected: リレーのコンテンツポリシーがプロンプトをブロックしました。ユーザーに伝えます。フィルターを回避するためにプロンプトを言い換えないでください。image_rejected: 参照画像がコンテンツポリシーによりブロックされました。ユーザーに伝えます。同じ画像で再試行したり、画像を偽装したりしないでください。no_image: 画像が生成されませんでした。プロンプトを言い換えてください。job_not_found/job_lost: ジョブIDの期限切れ、またはサーバーがジョブを中止しました。プロンプトを再送信します。could not reach: リレードメインへのネットワークアクセスがブロックされています。ユーザーに「設定 → 機能(ネットワーク出力)」でドメインを許可するよう伝えてください。unauthorized: トークンが存在しない、間違っている、または期限切れです。ユーザーに伝えます。別のトークンを探さないでください。