giggle-generation-video
Giggle Video Generation
Source: giggle-official/skills · API: giggle.pro
Generates AI videos via giggle.pro's Generation API. Supports text-to-video and image-to-video. Submit task → agent proactively polls with --query until done (see Continuous progress updates). No Cron, no file writes—all operations via exec.
Installation Requirements
| Requirement | Value |
|---|---|
| Binary | python3 |
| Environment | GIGGLE_API_KEY (required; see below) |
| Pip | requests |
Where to get GIGGLE_API_KEY: Open giggle.pro while logged in → left sidebar → API Key (API 密钥) → create or copy your key. Then export GIGGLE_API_KEY=your_api_key. The script will prompt if not configured.
No Retry on Error: If script execution encounters an error, do not retry. Report the error to the user directly and stop.
Supported Models
| Model | Supported Durations (s) | Default | Description |
|---|---|---|---|
| grok | 6, 10 | 6 | Strong overall capability, recommended |
| grok-fast | 6, 10 | 6 | grok fast version |
| sora2 | 4, 8, 12 | 4 | OpenAI Sora 2 |
| sora2-pro | 4, 8, 12 | 4 | Sora 2 Pro |
| sora2-fast | 10, 15 | 10 | Sora 2 Fast |
| sora2-pro-fast | 10, 15 | 10 | Sora 2 Pro Fast |
| kling25 | 5, 10 | 5 | Kling video model |
| seedance15-pro | 4, 8, 12 | 4 | Seedance Pro (with audio) |
| seedance15-pro-no-audio | 4, 8, 12 | 4 | Seedance Pro (no audio) |
| veo31 | 4, 6, 8 | 4 | Google Veo 3.1 (with audio) |
| veo31-no-audio | 4, 6, 8 | 4 | Google Veo 3.1 (no audio) |
| minimax23 | 6 | 6 | MiniMax model |
| wan25 | 5, 10 | 0 | Wanxiang model |
Note: --duration must be chosen from the model's supported durations, otherwise the API will error.
Frame Reference (Image-to-Video)
For image-to-video, --start-frame and --end-frame support three mutually exclusive formats:
| Method | Format | Example |
|---|---|---|
| asset_id | asset_id:<ID> |
asset_id:lkllv0yv81 |
| url | url:<URL> |
url:https://example.com/img.jpg |
| base64 | base64:<DATA> |
base64:iVBORw0KGgo... |
Each frame parameter can only use one of these methods.
Execution Flow: Submit and Query
Video generation is asynchronous (typically 60–300 seconds). Submit a task to get task_id, then query until the task reaches a terminal state. All commands run via exec; API key from system env.
Continuous progress updates (default; user need not put this in their prompt)
Video jobs are usually ~1–5+ minutes (sometimes longer). The user does not need to ask you to check progress.
- Right after submit, say you submitted, give
task_id, and give a realistic wait range for the model/load (not a generic “1–3 minutes” if the pipeline is often slower). - Poll proactively: run
--queryabout every 15–30 seconds until a terminal state—do not wait for the user to ask. - After each query, briefly report status in natural language; if stdout is non-terminal JSON (
processing, etc.), paraphrase and say you will check again—do not go silent. - When done: forward full signed video links on success; explain failures clearly. If still non-terminal after ~20 minutes (adjust if the user/model context suggests longer is normal), stop blind polling, explain, keep
task_id, and suggest retry or a later manual check. - If the user explicitly opts out of polling (“don’t poll”, “I’ll ask”), submit once, give
task_id, and only--querywhen they ask.
Step 1: Submit Task
First send a message to the user: Video generation is submitted; you will query progress on a schedule and report updates—no need to nag. Include task_id once you have it from the JSON response.
# 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
Response example:
{"status": "started", "task_id": "55bf24ca-e92a-4d9b-a172-8f585a7c5969"}
Store task_id in memory (addMemory):
giggle-generation-video 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 state or timeout), without waiting for the user to ask:
python3 scripts/generation_api.py --query --task-id <task_id>
Between queries, use a short sleep (e.g. 15–30 seconds) in the shell, or separate tool invocations with delay—do not go silent; summarize each result to the user.
Output handling:
| stdout pattern | Action |
|---|---|
| Plain text with video links (e.g. ready message) | Forward to user as-is; stop polling this task |
| Plain text with error | Forward to user as-is; stop polling this task |
JSON {"status": "processing", "task_id": "..."} (or similar non-terminal) |
Tell user current status + that you will check again shortly; continue polling per this section |
If the user asks about progress while you are already polling, answer with the latest known status (run an extra --query if needed).
Link return rule: Video links in results 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 as-is (script only encodes ~ → %7E).
New Request vs Query Old Task
When the user initiates a new video generation request, must run Step 1 to submit a new task. Do not reuse old task_id from memory.
For the in-flight task, use proactive polling as above. For an older task (user refers to a previous video / previous task_id), query that task_id when they ask, or poll it if they want continuous updates on that specific task.
Parameter Reference
| Parameter | Default | Description |
|---|---|---|
--prompt |
required | Video description prompt |
--model |
grok | See "Supported Models" table |
--duration |
model default | Must choose from model's supported durations |
--aspect-ratio |
16:9 | 16:9, 9:16, 1:1, 3:4, 4:3 |
--resolution |
720p | 480p, 720p, 1080p |
--start-frame |
- | Image-to-video start frame: asset_id:ID, url:URL, or base64:DATA |
--end-frame |
- | Image-to-video end frame, same format as start |
Note: base64 parameter supports base64-encoded images. Pass the raw Base64 string directly, do not add the data:image/xxx;base64, prefix.
Interaction Guide
When the user request is vague, guide per the steps below. If the user has provided enough info, run the command directly.
Step 1: Model Selection (required)
Before generating, must introduce available models and let the user choose. Display the model list from "Supported Models" table. Wait for explicit user choice before continuing.
Step 2: Video Duration
For the chosen model, show supported duration options. Default to the model's default duration.
Step 3: Generation Mode
Question: "Do you need reference images as start/end frame?"
Options: No - text-to-video only / Yes - image-to-video (set start/end frame)
Step 4: Aspect Ratio
Question: "What aspect ratio do you need?"
Options: 16:9 - Landscape (recommended) / 9:16 - Portrait / 1:1 - Square
Step 5: Execute and Display
Follow the flow: send message → Step 1 submit → Step 2 proactive polling until a terminal state, with a short user-facing update after each query. Forward exec stdout to the user as-is where appropriate (especially final links and errors).
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.
64giggle-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-music
Use when the user wants to create, generate, or compose music—whether from text description, custom lyrics, or instrumental background music. 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. Triggers: generate music, write a song, compose, create music, AI music, background music, instrumental, beats.
56giggle-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.
54