giggle-generation-music について
AIエージェント向けのGiggle Musicスキルです。giggle.proで説明文や歌詞から音楽を生成し、インストゥルメンタルにも対応します。非同期タスクをポーリングして結果を伝えます。
主な機能
- 01説明文から音楽を生成
- 02歌詞を使った曲のカスタマイズ
- 03インストゥルメンタルの生成
- 04非同期タスクの進捗確認
活用シーン
- 01スタイルの説明から曲を作成
- 02インストゥルメンタルの伴奏を作成
- 03生成状況を追跡して音声リンクを取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ giggle-official/ skills --skill giggle-generation-musicインストール後、Claude Code で/giggle-generation-musicを入力して読み込まれたか確認します。
同梱ファイルrequirements.txtscripts/giggle_music_api.py
詳細
Giggle Music
ソース:giggle-official/skills · API:giggle.pro
giggle.pro を使用して AI 音楽を生成します。簡易モードとカスタムモードに対応しています。タスクを送信した後、完了するまでエージェントが --query で自発的にポーリングします(継続的な進捗報告を参照)。Cron は使用しません。
API Key:システム環境変数 GIGGLE_API_KEY を設定します。giggle.pro にログインし、左側のサイドバー → API Key(API 密钥)からキーを作成またはコピーします。
重要:exec の
envパラメーターにGIGGLE_API_KEYを絶対に渡さないでください。API Key はシステム環境変数から読み込まれます。
エラー時に再試行しない:スクリプトの実行中にエラーが発生した場合、再試行しないでください。エラーをそのままユーザーに報告し、停止します。
対話ガイド
モードの選択(優先度:高い順)
| ユーザー入力 | モード | 説明 |
|---|---|---|
| ユーザーが完全な歌詞を提示 | カスタムモード(B) | 説明ではなく、歌詞である必要があります |
| ユーザーがインストゥルメンタル/BGM をリクエスト | インストゥルメンタルモード(C) | ボーカルなし |
| その他の場合(説明、スタイル、ボーカルなど) | 簡易モード(A) | ユーザーの説明をプロンプトとして使用し、AI が作曲します |
重要なルール:ユーザーが歌詞を提示しない場合は、必ず簡易モード Aを使用してください。ユーザーの説明をそのまま
--promptとして使用し、追加や書き換えはしないでください。たとえば、ユーザーが「female voice, 1 min, ancient romance」と言った場合、--prompt "female voice, 1 min, ancient romance"をそのまま使用します。
情報が不足している場合のガイダンス
ユーザー入力が非常に曖昧な場合(例:「音楽を生成して」とだけ述べ、説明がない場合)に限り、次のように質問します。
Question: "What type of music would you like to generate?"
Options: AI compose (describe style) / Use my lyrics / Instrumental
実行フロー:送信と照会
音楽の生成は非同期で行われます(通常 1~3 分)。タスクを送信して task_id を取得し、タスクが終端状態になるまで照会します。
継続的な進捗報告(デフォルト。ユーザーがプロンプトで指定する必要はありません)
音楽の生成には通常約 1~3 分かかります。進捗確認を求められるまで待つ必要はありません。
- 送信直後に、タスクを送信したこと、
task_id、完了まで約 1~3 分(サービスが混み合っている場合はそれ以上)かかる見込みを伝えます。 - 自発的にポーリングします。終端状態になるまで約 15~30 秒ごとに
--queryを実行します。ユーザーからの依頼を待たないでください。 - 照会のたびにステータスを報告します。
processingの JSON が返された場合は内容を言い換えて伝え、引き続き確認することを知らせます。無言にならないでください。 - 完了時:成功した場合は、完全な署名付き音声リンクを転送します。失敗した場合は、その理由を説明します。約 25 分経っても終端状態にならない場合は、その旨を説明し、
task_idを伝え、再試行または後での確認を提案します。 - ユーザーがポーリングを明示的に希望しない場合は、タスクを一度送信して
task_idを伝え、ユーザーから依頼があったときにのみ照会します。
ステップ 1:タスクを送信する
最初にユーザーへメッセージを送り、音楽生成を送信したこと、定期的にポーリングして進捗を報告すること、催促する必要はないことを伝えます。JSON レスポンスの task_id を含めます。
A:簡易モード
python3 scripts/giggle_music_api.py --prompt "user description"
B:カスタムモード
python3 scripts/giggle_music_api.py --custom \
--prompt "lyrics content" \
--style "pop, ballad" \
--title "Song Title" \
--vocal-gender female
C:インストゥルメンタル
python3 scripts/giggle_music_api.py --prompt "user description" --instrumental
レスポンス例:
{"status": "started", "task_id": "xxx"}
task_id をメモリに保存します(addMemory)。
giggle-generation-music task_id: xxx (submitted: YYYY-MM-DD HH:mm)
ステップ 2:完了するまでクエリする(デフォルト:積極的なポーリング)
現在のタスクを送信するたびに、ユーザーからの依頼を待つことなく、完了またはタイムアウトするまで(約 15~30 秒ごとに)繰り返し実行します。
python3 scripts/giggle_music_api.py --query --task-id <task_id>
クエリの合間には、シェルで sleep を使うか、遅延を入れて別々に実行してください。何も伝えずに待たないでください。結果を毎回ユーザーに要約してください。
出力の処理:
| stdout のパターン | アクション |
|---|---|
| 音楽リンクを含むプレーンテキスト(例:準備完了メッセージ) | そのままユーザーに転送し、ポーリングを停止します |
| エラーを含むプレーンテキスト | そのままユーザーに転送し、ポーリングを停止します |
JSON {"status": "processing", "task_id": "..."}(未完了) | 現在のステータスと、引き続き確認することをユーザーに伝え、ポーリングを続けます |
ユーザーがポーリング中に質問した場合は、最新のステータスで回答します(必要であれば追加で --query を実行します)。
リンクの返却ルール: stdout 内の音声リンクは、完全な署名付き URL(Policy、Key-Pair-Id、Signature のクエリパラメーターを含む)でなければなりません。API の応答に response-content-disposition=attachment が含まれている場合は削除せず、そのままリンクを転送してください(スクリプトでは ~ → %7E の変換のみ行います)。
復旧
処理中のタスク: 上記のとおり積極的にポーリングします。
ユーザーが以前の音楽について尋ねた場合(古い task_id):
task_idがメモリーにある場合 →--query --task-id xxxを直接実行します。再送信しないでください。タスクについて継続的な更新を希望する場合は、完了するまでポーリングします。task_idがメモリーにない場合 → ユーザーにその旨を伝え、再生成するかどうかを尋ねます。
パラメーターリファレンス
| パラメーター | 説明 |
|---|---|
--prompt | 音楽の説明または歌詞(簡易モードでは必須) |
--custom | カスタムモードを有効にする |
--style | 音楽のスタイル(カスタムモードでは必須) |
--title | 曲のタイトル(カスタムモードでは必須) |
--instrumental | インストゥルメンタルを生成する |
--vocal-gender | ボーカルの性別:male / female(カスタムモードのみ) |
--query | タスクのステータスを確認する |
--task-id | タスク ID(--query と併用) |