skills/giggle-generation-tv-avatar-video/SKILL.md
Talking-head video from image + driving audio: submit tasks via the wrapped generation API and poll for results; requests go through the Giggle gateway.
npx skillsauth add giggle-official/skills giggle-generation-tv-avatar-videoInstall 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.
Capability: One portrait image URL plus one of three drives yields a lip-sync talking-head video.
How it works: The script calls the wrapped API (x-auth+GIGGLE_API_KEY), submits, then polls untilcompleted; usedata.urls[0]as the delivered video URL.
Capability: Use one TTS script plus one reference audio URL to clone a voice and get a voice_id for later TTS tasks.
How it works: The script submits to/api/v1/generation/tv-voice-clone, then polls/api/v1/generation/task/queryfor up to 5 minutes. Success requiresdata.status == "completed"and a non-emptydata.voice_id.
Prefer scripts/tv_avatar_video.py instead of raw HTTP calls; it builds JSON, headers, and polling.
For voice cloning, prefer scripts/tv_voice_clone.py; it builds JSON, headers, and polling.
The UX guidance below is for conversational wording only—not a substitute for security or compliance policies. Actual request host comes from GIGGLE_API_BASE (default https://giggle.pro).
drive_mode / task_id unless the user asks.GIGGLE_API_KEY; never ask them to paste keys in chat.query --task-id.Example line after submit: “Your render is queued; it usually takes a few minutes. I’ll send the video link when it’s ready.”
voiceoverId (pass as API voice_over_id where applicable), tags, and EN/ZH descriptions. Prefer showing name + voiceoverId for every entry when they want the full catalogue; shorten or filter only if they ask.Summary — full tables in references/tv_avatar_video.md:
drive_mode = 1: Non-empty tts_script; exactly one of voice_over_id or clone_audio (preset vs clone—not drive_audio). Copy ≤ 2700 characters; synthesized speech ≤ 180 seconds (server-checked). Optional pauses: <break time="Xs"/> with X ∈ [0.1, 99.9] and one decimal max (example: 欢迎来到<break time="1.0s"/>giggle).drive_mode = 2: drive_audio clip ≤ 120 seconds.GIGGLE_API_KEY — see references/credentials.mdpip install -r {baseDir}/scripts/requirements.txt
run (default): Submit and poll to completion.submit: Submit only, print task_id—useful for parallel batches.query: After run times out, keep polling from a known task_id.New jobs → tv_avatar_video.py run ...
After timeout → tv_avatar_video.py query --task-id <task_id> [--timeout 1200]
Do not treat queued / processing tasks as final outputs for users.
| Script | Docs |
|--------|------|
| scripts/tv_avatar_video.py | references/tv_avatar_video.md |
| scripts/tv_voice_clone.py | (this file) |
| scripts/shared/ | HTTP client, reads GIGGLE_API_KEY |
voiceoverId valuesdevelopment
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.
development
Build and serve visual dashboards for any agent — install hub, register modules, add widgets, push data, accessible from anywhere via stable URL.