skills/giggle-generation-drama/SKILL.md
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.
npx skillsauth add giggle-official/skills giggle-generation-dramaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Please review before installing. This skill will:
Requirements: python3, GIGGLE_API_KEY (system environment variable), pip packages: requests
No Retry on Error: If script execution encounters an error, do not retry. Report the error to the user directly and stop.
Before performing any operation, confirm the user has configured the API Key to avoid workflow failure due to auth errors.
GIGGLE_API_KEY
export GIGGLE_API_KEY=your_api_keyVerification steps:
GIGGLE_API_KEY in system environment.Open giggle.pro while logged in → left sidebar → API Key / API 密钥 → create or copy your key, then run
export GIGGLE_API_KEY=your_api_keyin the terminal.
Supports three modes. Ask the user to select a mode before starting the workflow. If not specified, default to Episodes mode (director).
| Mode | project_type | Description |
|------|--------------|-------------|
| Episodes | director | AI-directed short drama with storyboards and shot language |
| Narration | narration | Narration-focused video |
| Short Film | short-film | Story and visuals balanced; cinematic short film |
Use execute_workflow to run the full workflow: submit + poll + auto-pay (if needed) + wait for completion. Call once and wait for return.
Inside the function (for your mental model): submit task → poll about every 3 seconds → detect pending payment and auto-pay if needed → wait for completion (max ~1 hour) → return video download link or error.
execute_workflow blocks: submit, pay if needed, and poll (~every 3s) are all inside the Python call (up to ~1 hour). You cannot send per-poll chat between ticks.
Before the call, inform the user that the short drama/narration/short film production process is in progress, typically taking a few minutes to tens of minutes, and that a message will be sent again immediately after function is restored—the user does not need to contact you proactively.
Initiate the call, without waiting for the user to ask "Any progress?", proactively push the current progress to the user every 10 seconds, showing which step is currently being done.
After the call is restored, immediately forward the complete signed video URL upon success or a clear error; if the API exposes project_id, also provide this information upon failure/timeout for the user's subsequent operations or retry.
Non-blocking path (create_and_submit only): If the user wishes, you can submit and return the ID—then query it only when the user inquires.
execute_workflow(
diy_story: str, # Story/script content (required)
aspect: str, # Aspect ratio: 16:9 or 9:16 (required)
project_name: str, # Project name (required)
language: str, # zh or en (required)—see "Language" below
video_duration: str = "auto", # Duration, default "auto" (optional)
style_id: Optional[int] = None, # Style ID (optional)
project_type: str = "director", # Mode, default "director" (optional)
character_info: Optional[List[Dict]] = None # Character images (optional)
)
language, required)Must be zh or en. Set it from the dominant language of the user’s story/prompt and the current dialogue:
language="zh".language="en".This value is passed to the Giggle API as the generation language; it must not be omitted or guessed without matching the content.
| Parameter | Required | Description |
|-----------|----------|-------------|
| diy_story | yes | Story or script content |
| aspect | yes | Aspect ratio: 16:9 or 9:16 |
| project_name | yes | Project name |
| language | yes | zh (Chinese) or en (English)—aligned with story/dialogue (see above) |
| video_duration | no | auto, 30, 60, 120, 180, 240, 300; default "auto" |
| style_id | no | Style ID; omit if not specified |
| project_type | no | director / narration / short-film; default "director" |
| character_info | no | Character image list: [{"name": "Character name", "url": "Image URL"}, ...] |
Introduce and select generation mode (required): Before generating, must introduce the three modes and let the user choose. Display:
We support three video generation modes. Please choose:
Episodes (director): AI director handles storyboards and shot language. Good for short drama with dialogue and plot.
Narration (narration): Narration-focused with visuals. Good for knowledge sharing, news commentary, product introductions.
Short Film (short-film): Story and visuals balanced; cinematic shots and pacing. Good for emotional shorts, creative stories, artistic expression.
Wait for explicit user choice before continuing. If not specified, default to Episodes.
If the user wants to pick a style: Call get_styles() for the style list; show ID, name, category, description; wait for choice before continuing.
If the user provides character image URLs: Build character_info array with name and url per character.
Set language (zh / en) per Language section from the story and ongoing dialogue—required before execute_workflow.
Run workflow:
execute_workflow(), follow Continuous progress updates above: brief start message, realistic ETA—you will report as soon as it returns.execute_workflow() with story, aspect ratio, project name, and language.project_type per chosen mode; pass video_duration if specified (else "auto"); pass style_id if chosen; pass character_info if provided.View style list:
api = TrusteeModeAPI()
styles_result = api.get_styles()
# Display style list to user
Basic workflow (no duration, no style):
api = TrusteeModeAPI()
result = api.execute_workflow(
diy_story="An adventure story...",
aspect="16:9",
project_name="My Video Project",
language="en",
)
# result contains download URL or error
Specify duration, no style:
result = api.execute_workflow(
diy_story="An adventure story...",
aspect="16:9",
project_name="My Video Project",
language="en",
video_duration="60"
)
Specify duration and style:
result = api.execute_workflow(
diy_story="An adventure story...",
aspect="16:9",
project_name="My Video Project",
language="en",
video_duration="60",
style_id=142
)
Narration mode:
result = api.execute_workflow(
diy_story="Today we'll talk about AI development...",
aspect="16:9",
project_name="Narration Video",
language="en",
project_type="narration"
)
Short film mode:
result = api.execute_workflow(
diy_story="Sunset. An old fisherman rows home alone. The sea glows red...",
aspect="16:9",
project_name="Short Film",
language="en",
project_type="short-film"
)
With character images (when user provides character image URLs):
result = api.execute_workflow(
diy_story="Xiao Ming and Xiao Hong meet in the park, they smile at each other...",
aspect="16:9",
project_name="Custom Character Video",
language="zh",
character_info=[
{"name": "Xiao Ming", "url": "https://xxx/xiaoming.jpg"},
{"name": "Xiao Hong", "url": "https://xxx/xiaohong.jpg"}
]
)
The function blocks until the task completes (success or failure) or times out (1 hour). Wait for it to return.
Success (includes download link):
{
"code": 200,
"msg": "success",
"uuid": "...",
"data": {
"project_id": "...",
"video_asset": {...},
"status": "completed"
}
}
Return the full signed URL to the user (data.video_asset.download_url), e.g.:
https://assets.giggle.pro/private/ai_director/348e4956c7bd4f763b/qzjc7gwkpf.mp4?Policy=...&Key-Pair-Id=...&Signature=...&response-content-disposition=attachment
Do not strip response-content-disposition=attachment or other query params from download_url. Do not return unsigned URLs without query params, e.g.:
https://assets.giggle.pro/private/ai_director/348e4956c7bd4f763b/qzjc7gwkpf.mp4
Failure:
{
"code": -1,
"msg": "Error message",
"data": null
}
development
Talking-head video from image + driving audio: submit tasks via the wrapped generation API and poll for results; requests go through the Giggle gateway.
development
Discord-specific markdown syntax for formatting message strings. Use when constructing strings that will be sent as Discord messages, including: text formatting (bold, italic, underline, strikethrough, spoilers), headers, subtext, code blocks, block quotes, lists, and masked links.
development
Discord bot development - community management, moderation, notifications, and AI integration
development
Auto-deploy a Discord AI bot connected to OpenClaw Gateway. Handles Node.js bot setup, PM2 process management, and Gateway API integration. Use when the user has completed Discord Bot onboarding and needs the bot deployed and running.