🎙️ Jogg Lip Sync — 技能工具
v0.1.3[自动翻译] 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 ...
详细分析 ▾
运行时依赖
版本
- Added a README.md file with documentation for setup, usage, inputs, triggers, environment, and procedure. - Clarified `.env` usage rules and guidance for the API key in error messages. - Reorganized and trimmed documentation in SKILL.md for clarity. - No changes to core functionality; update is documentation only.
安装命令
点击复制本土化适配说明
Jogg Lip Sync — 技能工具 安装说明: 安装命令:npx clawhub@latest install 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
- User asks to run lip sync
- User asks to check lip sync task status
- User provides video and audio and expects the final driven video result
Required Inputs
- video input: URL or local file path
- audio input: URL or local file path
Optional:
JOGG_BASE_URL, defaulthttps://api.jogg.aiJOGG_API_PLATFORM, defaultopenclawplayback_type, defaultnormalpoll_interval_seconds, default10max_wait_seconds, default1800
If 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=1800
JOGG_API_KEYis required.- Other current environment variables are optional.
- If
JOGG_API_KEYis empty, stop and tell the user to purchase an API plan athttps://www.jogg.ai/api-pricing/and obtain an API key before continuing.
Hard Rules
- Execute the existing runner in the current run.
- Prefer the fixed runner over handwritten HTTP calls.
- Use
run.shas the only runner entrypoint. - Do not write scripts, helper files, SDKs, wrappers, or temporary executors.
- Do not replace execution with code generation.
- Do not create duplicate tasks for the same normalized inputs in one run.
- Reuse existing tasks whenever allowed by the decision rules.
- Prefer returning the final video result over producing artifacts.
Endpoints
POST /v2/upload/assetGET /v2/lip_sync_videoPOST /v2/create_lip_sync_videoGET /v2/lip_sync_video/:task_id
Header:
X-Api-Key: $JOGG_API_KEY- optional
x-api-platform: $JOGG_API_PLATFORM
Procedure
- Collect missing inputs only.
- For create or reuse flow, execute the runner with
--no-pollfirst. - Parse the returned JSON and read
task_idplusstatus. - If status is
pendingorprocessing, call the runner again with--task-idto query or poll. - 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- Recommended agent pattern: create with
--no-poll, then query bytask_id
Runner 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 intask_idmode--no-poll: return immediately in create or reuse mode; recommended for the first runner call from the skill--poll-interval-seconds--max-wait-seconds
run.sh behavior:
- Uses the native shell implementation directly.
- Requires
curlandjq. - Uses the system default values when optional environment variables are unset.
Decision Rules
playback_typedefaults tonormalif omitted.- The query endpoint returns the latest matching task under the current authenticated user and space.
- Reuse
pending,processing, andsuccesstasks by default. - Do not recreate a
failedtask unless the user explicitly requests a retry. - Query before every create attempt.
Allowed playback_type values:
normalnormal_reversenormal_reverse_by_audio
Output
Return only execution results:
actionreused- Whether an existing task was reused or a new one was created
task_id- Current
status data.result_urlwhen successfulerror.messagewhen failed- If still running, return the live
task_idandstatus - Never replace the result with a generated script or file