mcpField
G
giggle-generation-image

giggle-generation-image

github.com/giggle-officialクリエイティブ・メディア071 回インストール1 日前に更新
リポジトリ

giggle-generation-image について

giggle-generation-imageは、giggle.proのGeneration APIで画像を生成するスキルです。Agentで画像生成を行うユーザー向けで、複数モデルと非同期タスクの進捗確認に対応します。

主な機能

  1. 01複数の画像生成モデル
  2. 02テキストから画像を生成
  3. 03参照画像を使った生成
  4. 04縦横比と解像度の指定
  5. 05非同期タスクの進捗確認

活用シーン

  1. 01テキストプロンプトから画像を生成
  2. 02参照画像を使って画像を作成
  3. 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' やヒアドキュメント形式のインラインコードは絶対に使用しないでください。

エラー時の再試行は禁止:スクリプトの実行中にエラーが発生した場合は、再試行せず、エラーをユーザーに直接報告して停止してください。

対応モデル

モデル説明
seedream45Seedream。リアルな画像や創造的な画像を生成します
midjourneyMidjourney のスタイル
nano-banana-2Nano Banana 2
nano-banana-2-fastNano Banana 2 高速版

実行フロー:送信とクエリ

画像生成は非同期です(通常 30~120 秒)。タスクを送信して task_id を取得し、タスクが終端状態になるまでクエリします。

重要:exec の env パラメーターに GIGGLE_API_KEY を絶対に渡さないでください。API キーはシステム環境変数から読み取られます。


継続的な進捗更新(デフォルト。ユーザーがプロンプトに記載する必要はありません)

画像生成ジョブは通常、約 30 秒~2 分で完了します。進捗確認を依頼されるまで待つ必要はありません。

  1. 送信直後に、送信したことと task_id を伝え、完了までの目安(通常は約 30 秒~2 分。バッチ処理や高負荷のモデルではさらに長くなる場合があります)を案内します。
  2. 積極的にポーリングします:終端状態になるまで、約 15~30 秒ごとに --query を実行します。ユーザーからの依頼を待たないでください。
  3. 各クエリの後にステータスを報告します。JSON が processing/pending の場合は、内容を言い換えて現在の状態を伝え、引き続き確認することを案内します。無言にならないでください。
  4. 完了時:成功した場合は、署名付きの画像リンクをすべて転送します。失敗した場合は、その理由を説明します。約 15 分経過しても終端状態にならない場合は、その旨を説明し、task_id を伝えて、再試行または追加の依頼を提案します。
  5. ユーザーがポーリングを明示的に希望しない場合は、タスクを一度送信して 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 をクエリします(必要に応じてポーリングも行います)。

パラメーターリファレンス

パラメーターデフォルト説明
--promptrequired画像の説明プロンプト
--modelseedream45seedream45、midjourney、nano-banana-2、nano-banana-2-fast
--aspect-ratio16:916:9、9:16、1:1、3:4、4:3、2:3、3:2、21:9
--resolution2Kテキストから画像への生成:1K、2K、4K(画像から画像への生成は一部サポート)
--generate-count1生成する画像の数
--reference-images-画像から画像への生成の参照画像。URL、base64、asset_id に対応
--watermarkfalse透かしを追加(画像から画像への生成)

画像から画像への参照: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。

コメント