mcpField
G
giggle-generation-video

giggle-generation-video

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

giggle-generation-video について

giggle.pro Generation API で AI 動画を生成するスキルです。テキストからの生成と画像からの生成に対応し、複数のモデルや動画設定を選べます。非同期タスクの進捗も自動で確認します。

主な機能

  1. 01テキストや画像から動画を生成
  2. 02複数の動画モデルを選択
  3. 03長さ、アスペクト比、解像度を設定
  4. 04非同期タスクを定期的に確認

活用シーン

  1. 01テキストの説明から動画を作成
  2. 02開始フレームや終了フレームを使って生成
  3. 03動画タスクの完了まで進捗を追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/giggle-official/skills --skill giggle-generation-video

インストール後、Claude Code で/giggle-generation-videoを入力して読み込まれたか確認します。

同梱ファイルrequirements.txtscripts/generation_api.py

詳細

Giggle Video Generation

ソース: giggle-official/skills · API: giggle.pro

giggle.pro の Generation API を介して AI 動画を生成します。テキストから動画、および画像から動画に対応しています。タスクを送信 → エージェントが --query で完了まで積極的にポーリングします(継続的な進捗更新を参照)。Cron もファイル書き込みも不要で、すべての操作は exec 経由で行います。


インストール要件

要件値
バイナリpython3
環境変数GIGGLE_API_KEY(必須。詳細は以下を参照)
Piprequests

GIGGLE_API_KEY の取得方法: ログインした状態で giggle.pro を開き、左サイドバー → API Key(API 密钥)を選択して、キーを作成またはコピーします。次に export GIGGLE_API_KEY=your_api_key を実行します。設定されていない場合、スクリプトが入力を求めます。

エラー発生時は再試行しないでください: スクリプトの実行中にエラーが発生した場合、再試行しないでください。エラーをそのままユーザーに報告し、処理を停止してください。


対応モデル

モデル対応時間(秒)デフォルト説明
grok6, 106総合的な能力が高く、推奨
grok-fast6, 106grok の高速バージョン
sora24, 8, 124OpenAI Sora 2
sora2-pro4, 8, 124Sora 2 Pro
sora2-fast10, 1510Sora 2 Fast
sora2-pro-fast10, 1510Sora 2 Pro Fast
kling255, 105Kling の動画モデル
seedance15-pro4, 8, 124Seedance Pro(音声あり)
seedance15-pro-no-audio4, 8, 124Seedance Pro(音声なし)
veo314, 6, 84Google Veo 3.1(音声あり)
veo31-no-audio4, 6, 84Google Veo 3.1(音声なし)
minimax2366MiniMax モデル
wan255, 100Wanxiang モデル

注意: --duration には、モデルが対応する時間を指定してください。対応していない時間を指定すると、API エラーになります。


フレーム参照(画像から動画)

画像から動画を生成する場合、--start-frame と --end-frame では、相互に排他的な次の 3 つの形式を使用できます。

方法形式例
asset_idasset_id:<ID>asset_id:lkllv0yv81
urlurl:<URL>url:https://example.com/img.jpg
base64base64:<DATA>base64:iVBORw0KGgo...

各フレームパラメーターでは、これらの方法のうち 1 つだけを使用できます。


実行フロー:送信と照会

動画生成は非同期で行われます(通常 60~300 秒)。タスクを送信して task_id を取得し、タスクが終端状態になるまで照会します。すべてのコマンドは exec 経由で実行し、API キーはシステム環境変数から取得します。


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

動画ジョブの所要時間は通常 約 1~5 分以上です(さらに長くかかる場合もあります)。進捗確認を依頼する必要はありません。

  1. 送信直後に、タスクを送信したことを伝え、task_id とモデルや負荷を考慮した現実的な待ち時間の目安を示します(パイプラインに時間がかかる場合、一般的な「1~3 分」としないでください)。
  2. 積極的にポーリングします。終端状態になるまで、約 15~30 秒ごとに --query を実行してください。ユーザーから依頼されるのを待ってはいけません。
  3. 照会のたびに、状態を自然な言葉で簡潔に報告します。標準出力が終端状態ではない JSON(processing など)の場合は、内容を言い換え、再度確認することを伝えてください。無言にならないでください。
  4. 完了時:成功した場合は、署名付き動画リンクをすべて提示します。失敗した場合は、原因を明確に説明します。約 20 分経過しても終端状態にならない場合(ユーザーやモデルの状況から通常より長くかかることが分かる場合は調整)、状況が分からないままポーリングを続けず、理由を説明して task_id を保持し、再試行または後で手動確認するよう提案します。
  5. ユーザーがポーリングを明示的に希望しない場合(「ポーリングしないで」「こちらから聞く」など)、一度だけ送信して task_id を伝え、ユーザーから依頼があったときにのみ --query を実行します。

ステップ 1:タスクを送信する

最初にユーザーへメッセージを送信します:動画の生成を送信しました。スケジュールに沿って進捗を確認し、更新をお知らせします。催促する必要はありません。JSON レスポンスから task_id を取得したら、これを含めます。

# Text-to-video (default grok-fast)
python3 scripts/generation_api.py \
  --prompt "Camera slowly pushes forward, person smiling in frame" \
  --model grok-fast --duration 6 \
  --aspect-ratio 16:9 --resolution 720p

# Image-to-video - use asset_id as start frame
python3 scripts/generation_api.py \
  --prompt "Person slowly turns around" \
  --start-frame "asset_id:lkllv0yv81" \
  --model grok-fast --duration 6 \
  --aspect-ratio 16:9 --resolution 720p

# Image-to-video - use URL as start frame
python3 scripts/generation_api.py \
  --prompt "Scenery from still to motion" \
  --start-frame "url:https://example.com/img.jpg" \
  --model grok-fast --duration 6

# Image-to-video - both start and end frame
python3 scripts/generation_api.py \
  --prompt "Scene transition" \
  --start-frame "asset_id:abc123" \
  --end-frame "url:https://example.com/end.jpg" \
  --model grok --duration 6

レスポンスの例:

{"status": "started", "task_id": "55bf24ca-e92a-4d9b-a172-8f585a7c5969"}

task_id をメモリーに保存します(addMemory):

giggle-generation-video task_id: xxx (submitted: YYYY-MM-DD HH:mm)

ステップ 2:完了するまでクエリする(デフォルト:積極的にポーリング)

現在のタスクの送信後、終端状態になるかタイムアウトするまで、約 15~30 秒ごとに繰り返し実行します。ユーザーからの依頼を待つ必要はありません。

python3 scripts/generation_api.py --query --task-id <task_id>

クエリの間隔には、シェルで短い sleep(例:15~30 秒)を使うか、遅延を挟んでツールを呼び出します。無言のままにせず、各結果をユーザーに要約して伝えます。

出力の処理:

stdout のパターン対応
動画リンクを含むプレーンテキスト(例:準備完了メッセージ)そのままユーザーに転送し、このタスクのポーリングを停止します
エラーを含むプレーンテキストそのままユーザーに転送し、このタスクのポーリングを停止します
JSON {"status": "processing", "task_id": "..."}(または同様の非終端状態)現在の状況と、まもなく再確認することをユーザーに伝え、このセクションに従ってポーリングを続けます

すでにポーリング中にユーザーから進捗について尋ねられた場合は、最新の状況を伝えます。必要に応じて追加で --query を実行してください。

**リンクの返却ルール:**結果の動画リンクは、署名付きの完全な URL(Policy、Key-Pair-Id、Signature のクエリパラメーターを含む)でなければなりません。API から response-content-disposition=attachment が返された場合は削除せず、そのまま転送してください(スクリプトは ~ を %7E に変換するだけです)。


新しいリクエストと古いタスクのクエリ

ユーザーが新しい動画生成リクエストを開始した場合、新しいタスクを送信するため、必ずステップ 1 を実行してください。メモリー内の古い task_id を再利用しないでください。

進行中のタスクについては、上記のとおり積極的にポーリングします。古いタスク(ユーザーが以前の動画/以前の task_id に言及した場合)については、依頼されたときにその task_id をクエリするか、そのタスクの継続的な更新を希望された場合はポーリングします。


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

パラメーターデフォルト説明
--prompt必須動画の説明プロンプト
--modelgrok「対応モデル」テーブルを参照
--durationモデルのデフォルトモデルが対応する再生時間から選択する必要があります
--aspect-ratio16:916:9、9:16、1:1、3:4、4:3
--resolution720p480p、720p、1080p
--start-frame-画像から動画を生成する際の開始フレーム:asset_id:ID、url:URL、または base64:DATA
--end-frame-画像から動画を生成する際の終了フレーム。形式は開始フレームと同じです

注:base64 パラメーターは Base64 エンコードされた画像に対応しています。生の Base64 文字列をそのまま渡し、data:image/xxx;base64, のプレフィックスは追加しないでください。


対話ガイド

ユーザーのリクエストが曖昧な場合は、以下の手順に沿って案内してください。必要な情報が十分に提供されている場合は、コマンドを直接実行してください。

ステップ 1:モデルの選択(必須)

生成する前に、利用可能なモデルを必ず紹介し、ユーザーに選択してもらいます。「対応モデル」テーブルのモデル一覧を表示してください。続行する前に、ユーザーが明示的に選択するまで待ちます。

ステップ 2:動画の再生時間

選択したモデルで対応している再生時間の選択肢を表示します。モデルのデフォルトの再生時間を使用します。

ステップ 3:生成モード
Question: "Do you need reference images as start/end frame?"
Options: No - text-to-video only / Yes - image-to-video (set start/end frame)
ステップ 4:アスペクト比
Question: "What aspect ratio do you need?"
Options: 16:9 - Landscape (recommended) / 9:16 - Portrait / 1:1 - Square
ステップ 5:実行して結果を表示

次の流れに従います:メッセージを送信 → ステップ 1 で送信 → ステップ 2 で終端状態になるまで積極的にポーリングし、各クエリの後にユーザー向けの短い状況更新を行います。必要に応じて、特に最終リンクとエラーについて、exec の標準出力をそのままユーザーに転送してください。

コメント