giggle-generation-image について
giggle-generation-imageは、giggle.proのGeneration APIで画像を生成するスキルです。Agentで画像生成を行うユーザー向けで、複数モデルと非同期タスクの進捗確認に対応します。
主な機能
- 01複数の画像生成モデル
- 02テキストから画像を生成
- 03参照画像を使った生成
- 04縦横比と解像度の指定
- 05非同期タスクの進捗確認
活用シーン
- 01テキストプロンプトから画像を生成
- 02参照画像を使って画像を作成
- 03画像タスクの完了まで状況を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ giggle-official/ skills --skill giggle-generation-imageインストール後、Claude Code で/giggle-generation-imageを入力して読み込まれたか確認します。
同梱ファイルscripts/generation_api.pyscripts/requirements.txt
詳細
Giggle Image Generation(マルチモデル)
ソース:giggle-official/skills · API:giggle.pro
giggle.pro の Generation API を介して AI 画像を生成します。複数のモデル(Seedream、Midjourney、Nano Banana)に対応しています。タスクを送信した後、完了するまで --query でエージェントが自動的にポーリングします(「継続的な進捗更新」を参照)。Cron は不要です。
API キー:システム環境変数 GIGGLE_API_KEY を設定します。ログインした状態で giggle.pro にアクセスし、キーを取得してください:左サイドバー → API Key(API 密钥)。設定されていない場合は、スクリプトが入力を求めます。
インライン Python は禁止:すべてのコマンドは
execツールを介して実行する必要があります。python3 << 'EOF'やヒアドキュメント形式のインラインコードは絶対に使用しないでください。
エラー時の再試行は禁止:スクリプトの実行中にエラーが発生した場合は、再試行せず、エラーをユーザーに直接報告して停止してください。
対応モデル
| モデル | 説明 |
|---|---|
| seedream45 | Seedream。リアルな画像や創造的な画像を生成します |
| midjourney | Midjourney のスタイル |
| nano-banana-2 | Nano Banana 2 |
| nano-banana-2-fast | Nano Banana 2 高速版 |
実行フロー:送信とクエリ
画像生成は非同期です(通常 30~120 秒)。タスクを送信して task_id を取得し、タスクが終端状態になるまでクエリします。
重要:
execのenvパラメーターにGIGGLE_API_KEYを絶対に渡さないでください。API キーはシステム環境変数から読み取られます。
継続的な進捗更新(デフォルト。ユーザーがプロンプトに記載する必要はありません)
画像生成ジョブは通常、約 30 秒~2 分で完了します。進捗確認を依頼されるまで待つ必要はありません。
- 送信直後に、送信したことと
task_idを伝え、完了までの目安(通常は約 30 秒~2 分。バッチ処理や高負荷のモデルではさらに長くなる場合があります)を案内します。 - 積極的にポーリングします:終端状態になるまで、約 15~30 秒ごとに
--queryを実行します。ユーザーからの依頼を待たないでください。 - 各クエリの後にステータスを報告します。JSON が
processing/pendingの場合は、内容を言い換えて現在の状態を伝え、引き続き確認することを案内します。無言にならないでください。 - 完了時:成功した場合は、署名付きの画像リンクをすべて転送します。失敗した場合は、その理由を説明します。約 15 分経過しても終端状態にならない場合は、その旨を説明し、
task_idを伝えて、再試行または追加の依頼を提案します。 - ユーザーがポーリングを明示的に希望しない場合は、タスクを一度送信して
task_idを伝え、ユーザーから依頼されたときにのみクエリします。
ステップ 1:タスクを送信する
# Text-to-image (default seedream45)
python3 scripts/generation_api.py \
--prompt "description" --aspect-ratio 16:9 \
--model seedream45 --resolution 2K \
--no-wait --json
# Text-to-image - Midjourney
python3 scripts/generation_api.py \
--prompt "description" --model midjourney \
--aspect-ratio 16:9 --resolution 2K \
--no-wait --json
# Image-to-image - Reference URL
python3 scripts/generation_api.py \
--prompt "Convert to oil painting style, keep composition" \
--reference-images "https://example.com/photo.jpg" \
--model nano-banana-2-fast \
--no-wait --json
# Batch generate multiple images
python3 scripts/generation_api.py \
--prompt "description" --generate-count 4 \
--no-wait --json
応答例:
{"status": "started", "task_id": "xxx"}
task_id をメモリに保存します(addMemory):
giggle-generation-image task_id: xxx (submitted: YYYY-MM-DD HH:mm)
ユーザーに伝えること:画像生成タスクを送信しました。自動的にポーリングし、結果が出たらすぐに報告します。準備できているかを繰り返し尋ねる必要はありません。
ステップ 2:完了するまでクエリする(デフォルト:積極的にポーリング)
現在のタスクを送信した後は、終端状態またはタイムアウトになるまで(約 15~30 秒ごとに)、ユーザーからの依頼を待たずに繰り返し実行します:
python3 scripts/generation_api.py --query --task-id <task_id>
動作:
- completed:ユーザーに画像リンクを出力 → ポーリングを停止
- failed/error:エラーメッセージを出力 → ポーリングを停止
- processing/pending:標準出力に JSON が表示される → 状態と引き続き確認することをユーザーに伝える → ポーリングを続行
ポーリング中にユーザーから尋ねられた場合は、最新のステータスを回答します。
新しい依頼と以前のタスクのクエリ
ユーザーが新しい画像生成を依頼した場合は、送信処理を実行して新しいタスクを作成します。メモリにある古い task_id を再利用しないでください。
処理中のタスクについては、上記のとおり積極的にポーリングします。以前のタスクについては、ユーザーから依頼または状況更新の要求があった場合に、その task_id をクエリします(必要に応じてポーリングも行います)。
パラメーターリファレンス
| パラメーター | デフォルト | 説明 |
|---|---|---|
--prompt | required | 画像の説明プロンプト |
--model | seedream45 | seedream45、midjourney、nano-banana-2、nano-banana-2-fast |
--aspect-ratio | 16:9 | 16:9、9:16、1:1、3:4、4:3、2:3、3:2、21:9 |
--resolution | 2K | テキストから画像への生成:1K、2K、4K(画像から画像への生成は一部サポート) |
--generate-count | 1 | 生成する画像の数 |
--reference-images | - | 画像から画像への生成の参照画像。URL、base64、asset_id に対応 |
--watermark | false | 透かしを追加(画像から画像への生成) |
画像から画像への参照:3 つの入力方法
画像から画像への API の reference_images はオブジェクトの配列です。各要素には、次の 3 つの形式のいずれかを指定できます(組み合わせて使用できます)。
方法 1:URL
{
"prompt": "A cute orange cat sitting on the windowsill in the sun, realistic style",
"reference_images": [
{
"url": "https://assets.giggle.pro/private/example/image.jpg?Policy=EXAMPLE_POLICY&Key-Pair-Id=EXAMPLE_KEY_PAIR_ID&Signature=EXAMPLE_SIGNATURE"
}
],
"generate_count": 1,
"model": "nano-banana-2-fast",
"aspect_ratio": "16:9",
"watermark": false
}
方法 2:Base64
{
"prompt": "A cute orange cat sitting on the windowsill in the sun, realistic style",
"reference_images": [
{
"base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="
}
],
"generate_count": 1,
"model": "nano-banana-2-fast",
"aspect_ratio": "16:9",
"watermark": false
}
Base64 形式:Base64 の生文字列をそのまま渡してください。
data:image/xxx;base64,のプレフィックスは追加しないでください。
方法 3:asset_id
{
"prompt": "A cute orange cat sitting on the windowsill in the sun, realistic style",
"reference_images": [
{
"asset_id": "vvsdsfsdf"
}
],
"generate_count": 1,
"model": "nano-banana-2-fast",
"aspect_ratio": "16:9",
"watermark": false
}
複数の参照画像を指定する場合は、
reference_images配列にオブジェクトを追加してください。
操作ガイド
ユーザーのリクエストが曖昧な場合は、以下の手順に沿って案内してください。必要な情報が十分に提供されている場合は、コマンドを直接実行してください。
ステップ 1:モデルの選択
Question: "Which model would you like to use?"
Title: "Image Model"
Options:
- "seedream45 - Realistic & creative (recommended)"
- "midjourney - Artistic style"
- "nano-banana-2 - High quality"
- "nano-banana-2-fast - Fast generation"
multiSelect: false
ステップ 2:アスペクト比
Question: "What aspect ratio do you need?"
Title: "Aspect Ratio"
Options:
- "16:9 - Landscape (wallpaper/cover) (recommended)"
- "9:16 - Portrait (mobile)"
- "1:1 - Square"
- "Other ratios"
multiSelect: false
ステップ 3:生成モード
Question: "Do you need reference images?"
Title: "Generation Mode"
Options:
- "No - Text-to-image only"
- "Yes - Image-to-image (style transfer)"
multiSelect: false
ステップ 4:実行して表示
タスクを送信 → task_id を保存 → ユーザーに通知 → 終了状態になるまで --query で積極的にポーリングし、クエリごとに簡潔な状況を報告します。終了状態になったら、標準出力のリンクまたはエラーをそのまま伝えてください。
リンクの返却ルール:結果の画像リンクには、Policy、Key-Pair-Id、Signature のクエリパラメーターを含む完全な署名付き URLを指定してください。API が &response-content-disposition=attachment を返した場合は、削除したり省略したりしないでください。ダウンロードが正しく行われるよう、リンクはそのまま伝えてください。正しい例:https://assets.giggle.pro/...?Policy=...&Key-Pair-Id=...&Signature=...&response-content-disposition=attachment(クエリパラメーターの順序は異なる場合があります)。誤った例:ベースパスのみの署名なし URL、または response-content-disposition=attachment を削除した URL。