giggle-generation-aimv について
giggle-generation-aimv は、Giggle.pro の MV Trustee Mode API を実行するスキルです。音楽のプロンプトまたは独自の歌詞を使い、タスク送信から進捗確認、保留中の支払い処理まで行います。
主な機能
- 01プロンプトや歌詞から音楽を生成
- 02MV 生成タスクの送信
- 03進捗確認と支払い処理
- 04ステータスと動画リンクの返却
活用シーン
- 01音楽の説明から MV を作成
- 02独自の歌詞、スタイル、タイトルで MV を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ giggle-official/ skills --skill giggle-generation-aimvインストール後、Claude Code で/giggle-generation-aimvを入力して読み込まれたか確認します。
同梱ファイルscripts/requirements.txtscripts/trustee_api.py
詳細
MV Trustee Mode API スキル
MV トラスティモード API を呼び出して、MV 生成ワークフロー全体を実行します。スクリプトではプロジェクトの作成とタスクの送信が1つのステップに統合されています。execute_workflow は1回だけ呼び出してください。作成と送信を別々に呼び出してはいけません。
⚠️ インストール前に確認してください
インストール前に内容を確認してください。 このスキルは次の処理を行います。
- ネットワーク – MV 生成のために Giggle.pro API を呼び出します
要件:python3 (>=3.6)、GIGGLE_API_KEY(システム環境変数)、pip パッケージ:requests
エラー時に再試行しないでください:スクリプトの実行中にエラーが発生した場合、再試行しないでください。エラーをそのままユーザーに報告し、処理を中止してください。
初回使用前に必要な設定
操作を行う前に、ユーザーが API キーを設定済みであることを確認してください。
API キー:giggle.pro にログインします。メインサイトの左サイドバーにある API Key(API 密钥)セクションで、キーを作成するかコピーしてください。
設定:システム環境変数 GIGGLE_API_KEY を設定します
export GIGGLE_API_KEY=your_api_key
確認手順:
- ユーザーがシステム環境に
GIGGLE_API_KEYを設定済みであることを確認します - 未設定の場合は、ユーザーを案内してください。
ログインした状態で giggle.pro を開きます → 左サイドバー → API Key / API 密钥 → キーをコピーし、ターミナルで
export GIGGLE_API_KEY=your_api_keyを実行してください。 - ユーザーが設定を完了するまで待ってから、ワークフローを続行します
2種類の音楽生成モード
| モード | music_generate_type | 必須パラメーター | 説明 |
|---|---|---|---|
| プロンプト | prompt | prompt, vocal_gender | 音楽をテキストで説明します |
| カスタム | custom | lyrics, style, title | 歌詞、スタイル、タイトルを指定します |
共通パラメーター(全モードで必須)
- reference_image または reference_image_url:参照画像。少なくとも1つ(asset_id またはダウンロード URL)を指定してください。Base64 画像にも対応しています。例:"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="。Base64 を使用する場合は、生の Base64 文字列をそのまま渡してください。data:image/xxx;base64 のプレフィックスは追加しないでください。
- aspect:アスペクト比。
16:9または9:16 - scene_description:ビジュアルシーンの説明。デフォルトは空です。ユーザーがシーンについて明示的に言及した場合にのみ設定してください(最大200文字)。
- subtitle_enabled:字幕を有効にします。デフォルトは false です
モード固有のパラメーター
プロンプトモード:
prompt:音楽の説明(必須)vocal_gender:ボーカルの性別 —male/female/auto(任意、デフォルトはauto)instrumental:インストゥルメンタルのみ(任意、デフォルトは false)
カスタムモード:
lyrics:歌詞の内容(必須)style:音楽のスタイル(必須)title:曲のタイトル(必須)
ワークフロー関数
execute_workflow を使ってワークフロー全体を実行します。1回だけ呼び出し、完了を待ってください。内部では、プロジェクトの作成とタスクの送信(統合済み)→ 進捗の確認(3秒ごと)→ 保留中の項目の検出と支払い → 完了まで待機(最長1時間)を行います。
継続的な進捗更新(ブロッキング MV ワークフロー)
execute_workflow は、MV の全パイプラインをブロックします。作成/送信(統合済み)、ポーリング(約 3 秒ごと)、必要に応じた支払いまで、約 1 時間かかることがあります。シェルの --query は自分で実行しません。
- 呼び出す前に、MV ジョブが実行中であり、通常は数分かかり、約 1 時間に及ぶこともあること、関数が戻った時点で報告することをユーザーに伝えます。
- ユーザーから先に状況確認を求められるのを待たずに、
execute_workflowを呼び出します。 - 戻った後、成功した場合は署名付きの
download_url/video_asset全体を、失敗した場合はエラーペイロードを平易な言葉で伝えます。サポートや手動での支払い/クエリに役立つ場合はproject_idも含めます。 create_and_submitのみ:先に ID だけが必要な場合は、この方法を使い、後でユーザーから求められたらクエリします。
重要:
create_projectとsubmit_mv_taskを個別に呼び出すことは決してありません。必ずexecute_workflowまたはcreate_and_submitを使います。- 呼び出した後は、関数が戻るまで待つだけです。途中の手順はすべて自動で実行されます。
関数シグネチャ
execute_workflow(
music_generate_type: str, # Mode: prompt / custom
aspect: str, # Aspect ratio: 16:9 or 9:16
project_name: str, # Project name
reference_image: str = "", # Reference image asset_id (mutually exclusive with reference_image_url)
reference_image_url: str = "", # Reference image URL or base64 (mutually exclusive with reference_image)
scene_description: str = "", # Scene description, default empty
subtitle_enabled: bool = False, # Subtitle toggle, default False
# Prompt mode
prompt: str = "",
vocal_gender: str = "auto",
instrumental: bool = False,
# Custom mode
lyrics: str = "",
style: str = "",
title: str = "",
)
パラメーター抽出ルール
- reference_image と reference_image_url:少なくとも一方が必須です。asset_id には
reference_imageを、画像 URL または base64 にはreference_image_urlを使います。 - scene_description:デフォルトは空です。ユーザーが「シーン」、「視覚的な説明」、または「視覚的なスタイル」に明示的に言及した場合のみ入力します。
- subtitle_enabled:デフォルトは False です。ユーザーが字幕を明示的に求めた場合のみ True に設定します。
- aspect:ユーザーが縦長/垂直/9:16 に言及した場合は
9:16を使います。それ以外はデフォルトの16:9を使います。 - モードの選択:「音楽について説明する/プロンプトを使う」→ prompt、「歌詞はこちら/歌詞は~」→ custom;
例
プロンプトモード:
api = MVTrusteeAPI()
result = api.execute_workflow(
music_generate_type="prompt",
aspect="16:9",
project_name="My MV",
reference_image_url="https://example.com/ref.jpg",
prompt="Upbeat pop, sunny beach vibe",
vocal_gender="female"
)
カスタムモード(ユーザーが歌詞を提供):
result = api.execute_workflow(
music_generate_type="custom",
aspect="9:16",
project_name="Lyrics MV",
reference_image="asset_xxx",
lyrics="Verse 1: Spring breeze on my face...",
style="pop",
title="Spring Song"
)
シーンの説明を含む場合(ユーザーがシーンを明示的に説明したとき):
result = api.execute_workflow(
music_generate_type="prompt",
aspect="16:9",
project_name="Scene MV",
reference_image_url="https://...",
prompt="Electronic dance music",
scene_description="City nightscape, neon lights, flowing traffic"
)
タスク送信 API リクエスト例(プロンプトモード)
送信エンドポイント(/api/v1/trustee_mode/mv/submit)のリクエストボディ:
{
"project_id": "<your-project-id>",
"music_generate_type": "prompt",
"prompt": "A cheerful pop song",
"vocal_gender": "female",
"instrumental": false,
"reference_image_url": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMTEhUT...(base64 image data)",
"scene_description": "A romantic beach walk at sunset, waves gently lapping the shore, pink sky gradient",
"aspect": "16:9",
"subtitle_enabled": false
}
注:reference_image(asset_id)と reference_image_url(URL または base64)は相互に排他的です。
カスタムモード:
{
"project_id": "<your-project-id>",
"music_generate_type": "custom",
"lyrics": "Verse 1:\nStanding by the sea watching the sunset\nMemories rush in like waves\n\nChorus:\nLet the sea breeze blow away all worries\nIn this golden moment\nWe found each other\n",
"style": "pop ballad",
"title": "Seaside Memories",
"reference_image": "<asset_id>",
"scene_description": "A couple walking on the beach at dusk, long shadows, orange-red sky gradient",
"aspect": "9:16",
"subtitle_enabled": false
}
進捗クエリ API レスポンス例
クエリエンドポイント(/api/v1/trustee_mode/mv/query)のレスポンス(すべてのステップが完了):
{
"code": 200,
"msg": "success",
"uuid": "<response-uuid>",
"data": {
"project_id": "<your-project-id>",
"video_asset": {
"asset_id": "<asset_id>",
"download_url": "https://assets.giggle.pro/private/...",
"thumbnail_url": "https://assets.giggle.pro/private/...",
"signed_url": "https://assets.giggle.pro/private/...",
"duration": 0
},
"shot_count": 0,
"current_step": "editor",
"completed_steps": "music-generate,storyboard,shot,editor",
"pay_status": "paid",
"status": "completed",
"err_msg": "",
"steps": [...]
}
}
注:pay_status が pending の場合は、支払いエンドポイントを呼び出します。すべての steps が完了すると、video_asset.download_url に値が設定されます。署名付き URL 全体を返してください。正しい形式:
https://assets.giggle.pro/private/ai_director/348e4956c7bd4f763b/qzjc7gwkpf.mp4?Policy=...&Key-Pair-Id=...&Signature=...&response-content-disposition=attachment
URL から response-content-disposition=attachment やその他のクエリパラメーターを削除しないでください。誤った例(署名なし URL のみ):
https://assets.giggle.pro/private/ai_director/348e4956c7bd4f763b/qzjc7gwkpf.mp4
支払い API のリクエストとレスポンス
支払いエンドポイント(/api/v1/trustee_mode/mv/pay):
リクエストボディ:
{
"project_id": "<your-project-id>"
}
レスポンス:
{
"code": 200,
"msg": "success",
"uuid": "<response-uuid>",
"data": {
"order_id": "<order-id>",
"price": 580
}
}
再試行 API リクエスト例
ステップが失敗した場合、そのステップから再開するために、再試行エンドポイントを呼び出すようユーザーに案内します:
{
"project_id": "<your-project-id>",
"current_step": "shot"
}
注:current_step は再試行するステップ名です(例:music-generate、storyboard、shot、editor)。
create_and_submit(任意)
完了を待たずにプロジェクトを作成してタスクを送信するだけでよい場合は、create_and_submit を使います。create_project と submit_mv_task を個別に呼び出すことは決してありません:
api = MVTrusteeAPI()
r = api.create_and_submit(
project_name="My MV",
music_generate_type="prompt",
aspect="16:9",
reference_image_url="https://...",
prompt="Upbeat pop"
)
# Returns project_id for manual query/pay later
戻り値
成功時:
{
"code": 200,
"msg": "success",
"data": {
"project_id": "...",
"download_url": "https://...",
"video_asset": {...},
"status": "completed"
}
}
失敗時にはエラーメッセージを返します。
トラブルシューティング
| シナリオ | 原因 | 解決策 |
|---|---|---|
401 Unauthorized または「invalid API key」 | GIGGLE_API_KEY が設定されていない、有効期限が切れている、または正しくありません | giggle.pro → 左サイドバー → API Key / API 密钥 からキーを再コピーし、再度エクスポートします:export GIGGLE_API_KEY=your_api_key |
429 Too Many Requests | API のレート制限を超過しました | 数分待ってから再試行してください。短時間に複数のプロジェクトを送信するのは避けてください |
| ネットワークタイムアウト/接続エラー | ネットワークが不安定であるか、API サービスが一時的に利用できません | スクリプトは 5 秒間隔で最大 5 回、自動的に再試行します。それでも失敗する場合は、ネットワークを確認してください |
pay_status: pending | 続行する前にプロジェクトの支払いが必要です | ワークフロー関数が自動的に処理します。手動で実行する場合は、project_id を指定して支払いエンドポイントを呼び出してください |
タスクのステップが失敗(status: failed) | 生成ステップ(例:music-generate、shot)でエラーが発生しました | 再試行エンドポイントに {"project_id": "<your-project-id>", "current_step": "<failed-step>"} を渡して、失敗したステップから再開してください |
| ワークフローがタイムアウト(1 時間超) | MV の生成に時間がかかりすぎました | project_id を使って手動で進行状況を照会し、現在の状態を確認してください。タスクが停止している場合は、サポートにお問い合わせください |