Jogg Lip Sync
by @joggai-tech
Runs Jogg lip sync using video and audio inputs, reuses tasks when available, and monitors status until completion. Use to generate or check lip sync results.
clawhub install jogg-lip-syncπ About This Skill
name: jogg-lip-sync description: Runs Jogg lip sync using video and audio inputs, reuses tasks when available, and monitors status until completion. Use to generate or check lip sync results. license: Proprietary compatibility: Requires curl, jq, a local shell environment, and JOGG_API_KEY to call the Jogg API. metadata: { "author": "JoggAI", "version": "0.1.0", "openclaw": { "emoji": "ποΈ", "requires": { "bins": ["curl", "jq"], "env": ["JOGG_API_KEY"] }, "primaryEnv": "JOGG_API_KEY", "os": ["darwin", "linux"], "install": [ { "id": "brew-jq", "kind": "brew", "formula": "jq", "bins": ["jq"], "label": "Install jq (brew)", "os": ["darwin", "linux"] } ] } }
Jogg Lip Sync
Use this skill to execute lip sync tasks directly, not to generate integration code.
All paths in this document are relative to the current skill root directory.
Runner:
sh "run.sh"Trigger
Required Inputs
Optional:
JOGG_BASE_URL, default https://api.jogg.aiJOGG_API_PLATFORM, default openclawplayback_type, default normalpoll_interval_seconds, default 10max_wait_seconds, default 1800If any required input is missing, ask only for the missing item.
Default values used when unset:
JOGG_BASE_URL=https://api.jogg.aiJOGG_API_PLATFORM=openclawJOGG_LIP_SYNC_DEFAULT_PLAYBACK_TYPE=normalJOGG_LIP_SYNC_DEFAULT_POLL_INTERVAL_SECONDS=10JOGG_LIP_SYNC_DEFAULT_MAX_WAIT_SECONDS=1800JOGG_API_KEY is required.JOGG_API_KEY is empty, stop and tell the user to purchase an API plan at https://www.jogg.ai/api-pricing/ and obtain an API key before continuing.Hard Rules
run.sh as the only runner entrypoint.Endpoints
POST /v2/upload/assetGET /v2/lip_sync_videoPOST /v2/create_lip_sync_videoGET /v2/lip_sync_video/:task_idHeader:
X-Api-Key: $JOGG_API_KEYx-api-platform: $JOGG_API_PLATFORMProcedure
1. Collect missing inputs only.
2. For create or reuse flow, execute the runner with --no-poll first.
3. Parse the returned JSON and read task_id plus status.
4. If status is pending or processing, call the runner again with --task-id to query or poll.
5. Return the execution result directly in the conversation.
Output contract:
stdout: final machine-readable JSON result onlystderr: progress logs during upload, query, create, and polling--no-poll, then query by task_idRunner Modes
Create or reuse a task:
sh "run.sh" \
--video "" \
--audio "" \
--playback-type "normal" \
--no-poll
Query a task by task_id:
sh "run.sh" \
--task-id ""
Useful flags:
--force-recreate: only when the user explicitly asks to regenerate after a terminal task--poll: wait until terminal state in task_id mode--no-poll: return immediately in create or reuse mode; recommended for the first runner call from the skill--poll-interval-seconds--max-wait-secondsrun.sh behavior:
curl and jq.Decision Rules
playback_type defaults to normal if omitted.pending, processing, and success tasks by default.failed task unless the user explicitly requests a retry.Allowed playback_type values:
normalnormal_reversenormal_reverse_by_audioOutput
Return only execution results:
actionreusedtask_idstatusdata.result_url when successfulerror.message when failedtask_id and status