giggle-generation-music
Giggle Music
Source: giggle-official/skills · API: giggle.pro
Generates AI music via giggle.pro. Supports simplified and custom modes. Submit task → agent proactively polls with --query until done (see Continuous progress updates). No Cron.
API Key: Set system environment variable GIGGLE_API_KEY. Log in to giggle.pro → left sidebar → API Key (API 密钥) to create or copy your key.
Important: Never pass
GIGGLE_API_KEYin exec'senvparameter. API Key is read from system environment variable.
No Retry on Error: If script execution encounters an error, do not retry. Report the error to the user directly and stop.
Interaction Guide
Mode Selection (priority: high to low)
| User input | Mode | Description |
|---|---|---|
| User provides full lyrics | Custom mode (B) | Must be lyrics, not description |
| User requests instrumental/background music | Instrumental mode (C) | No vocals |
| Other cases (description, style, vocals, etc.) | Simplified mode (A) | Use user description as prompt; AI composes |
Key rule: If the user does not provide lyrics, always use simplified mode A. Use the user's description exactly as
--prompt; do not add or rewrite. E.g. user says "female voice, 1 min, ancient romance", use--prompt "female voice, 1 min, ancient romance"directly.
Guidance when info is lacking
Only when the user input is very vague (e.g. "generate music" with no description), ask:
Question: "What type of music would you like to generate?"
Options: AI compose (describe style) / Use my lyrics / Instrumental
Execution Flow: Submit and Query
Music generation is asynchronous (typically 1–3 minutes). Submit a task to get task_id, then query until the task reaches a terminal state.
Continuous progress updates (default; user need not put this in their prompt)
Music generation usually takes ~1–3 minutes. The user does not need to ask you to check progress.
- Right after submit, say you submitted, give
task_id, and expect ~1–3 minutes (longer if the service is busy). - Poll proactively: run
--queryabout every 15–30 seconds until terminal—do not wait for the user to ask. - After each query, report status; for
processingJSON, paraphrase and say you will keep checking—do not go silent. - When done: forward full signed audio links on success; explain failures. If still non-terminal after ~25 minutes, explain, give
task_id, and suggest retry or follow-up. - If the user explicitly opts out of polling, submit once +
task_id, then query only when they ask.
Step 1: Submit Task
First send a message to the user: Music generation is submitted; you will poll on a schedule and report updates—no need to nag. Include task_id from the JSON response.
A: Simplified Mode
python3 scripts/giggle_music_api.py --prompt "user description"
B: Custom Mode
python3 scripts/giggle_music_api.py --custom \
--prompt "lyrics content" \
--style "pop, ballad" \
--title "Song Title" \
--vocal-gender female
C: Instrumental
python3 scripts/giggle_music_api.py --prompt "user description" --instrumental
Response example:
{"status": "started", "task_id": "xxx"}
Store task_id in memory (addMemory):
giggle-generation-music task_id: xxx (submitted: YYYY-MM-DD HH:mm)
Step 2: Query Until Done (default: proactive polling)
After each submit for the current task, repeatedly run (every ~15–30s until terminal or timeout), without waiting for the user to ask:
python3 scripts/giggle_music_api.py --query --task-id <task_id>
Between queries, use sleep in shell or separate invocations with delay—do not go silent; summarize each result to the user.
Output handling:
| stdout pattern | Action |
|---|---|
| Plain text with music links (e.g. ready message) | Forward to user as-is; stop polling |
| Plain text with error | Forward to user as-is; stop polling |
JSON {"status": "processing", "task_id": "..."} (non-terminal) |
Tell user current status + that you will keep checking; continue polling |
If the user asks while you are polling, answer with the latest status (extra --query if needed).
Link return rule: Audio links in stdout must be full signed URLs (with Policy, Key-Pair-Id, Signature query params). Do not strip response-content-disposition=attachment when the API returns it; forward links as-is (script only encodes ~ → %7E).
Recovery
In-flight task: use proactive polling as above.
When the user asks about previous music (older task_id):
- task_id in memory → Run
--query --task-id xxxdirectly. Do not resubmit; poll until done if they want continuous updates on that task. - No task_id in memory → Tell the user, ask if they want to regenerate
Parameter Reference
| Parameter | Description |
|---|---|
--prompt |
Music description or lyrics (required in simplified mode) |
--custom |
Enable custom mode |
--style |
Music style (required in custom mode) |
--title |
Song title (required in custom mode) |
--instrumental |
Generate instrumental |
--vocal-gender |
Vocal gender: male / female (custom mode only) |
--query |
Query task status |
--task-id |
Task ID (use with --query) |
More from giggle-official/skills
giggle-generation-drama
Use this feature when users want to generate videos, shoot short films, or view available video styles. Triggering keywords: short film, make video, shoot short film, short video, AI video, generate video from story, short drama, narrated video, cinematic video, available video styles.
66giggle-generation-image
Supports text-to-image and image-to-image. Use when the user needs to create or generate images. After submit, proactively poll task status every ~15–30s and message the user each time until completed/failed/timeout—do not wait for the user to ask for progress. Use cases: (1) Generate from text description, (2) Use reference images, (3) Customize model, aspect ratio, resolution. Triggers: generate image, draw, create image, AI art.
63giggle-generation-aimv
Use when the user wants to create AI music videos (MV)—including generating music from text prompts or using custom lyrics. Before blocking on execute_workflow, tell the user the MV pipeline is running until completion; after return, immediately forward the result—user need not ask for progress. Triggers: generate MV, music video, make video for this song, lyrics video, create MV, AI music video, music+video, generate video from lyrics.
59giggle-generation-video
Supports text-to-video and image-to-video conversion (start frame/end frame). Trigger words: text-to-video, image-to-video.
58giggle-generation-speech
Use when the user wants to generate speech, voiceover, or text-to-audio. Converts text to AI voice via Giggle.pro TTS API. Keep the user informed until audio is ready: message before long waits, use Cron/sync poll so the user need not ask for progress. Triggers: generate speech, text-to-speech, TTS, voiceover, read this text aloud, synthesize speech.
55giggle-generation-scripts
Generates Chinese script content based on narrative pacing and dialogue mechanisms common in Jiang Wen films. Use when the user asks to generate script, write script, create scenes, output dialogue draft, revise script or similar. Outputs story synopsis, character bios, scene outlines, scene scripts (with dialogue, action, staging), and can adjust era, character relations, conflict pacing, and endings per user request.
53