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:
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, default INLINECODE2 - INLINECODE3 , default INLINECODE4
- INLINECODE5 , default INLINECODE6
- INLINECODE7 , default INLINECODE8
- INLINECODE9 , default INLINECODE10
If any required input is missing, ask only for the missing item.
Default values used when unset:
- - INLINECODE11
- INLINECODE12
- INLINECODE13
- INLINECODE14
- INLINECODE15
- -
JOGG_API_KEY is required. - Other current environment variables are optional.
- If
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
- - Execute the existing runner in the current run.
- Prefer the fixed runner over handwritten HTTP calls.
- Use
run.sh as 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
- - INLINECODE20
- INLINECODE21
- INLINECODE22
- INLINECODE23
Header:
- - INLINECODE24
- optional INLINECODE25
Procedure
- 1. Collect missing inputs only.
- For create or reuse flow, execute the runner with
--no-poll first. - Parse the returned JSON and read
task_id plus status. - If status is
pending or processing, call the runner again with --task-id to query or poll. - Return the execution result directly in the conversation.
Output contract:
- -
stdout: final machine-readable JSON result only - INLINECODE33 : progress logs during upload, query, create, and polling
- Recommended agent pattern: create with
--no-poll, then query by INLINECODE35
Runner Modes
Create or reuse a task:
CODEBLOCK0
Query a task by task_id:
CODEBLOCK1
Useful flags:
- -
--force-recreate: only when the user explicitly asks to regenerate after a terminal task - INLINECODE38 : wait until terminal state in
task_id mode - INLINECODE40 : return immediately in create or reuse mode; recommended for the first runner call from the skill
- INLINECODE41
- INLINECODE42
INLINECODE43 behavior:
- - Uses the native shell implementation directly.
- Requires
curl and jq. - Uses the system default values when optional environment variables are unset.
Decision Rules
- -
playback_type defaults to normal if omitted. - The query endpoint returns the latest matching task under the current authenticated user and space.
- Reuse
pending, processing, and success tasks by default. - Do not recreate a
failed task unless the user explicitly requests a retry. - Query before every create attempt.
Allowed playback_type values:
- - INLINECODE53
- INLINECODE54
- INLINECODE55
Output
Return only execution results:
- - INLINECODE56
- INLINECODE57
- Whether an existing task was reused or a new one was created
- INLINECODE58
- Current INLINECODE59
- INLINECODE60 when successful
- INLINECODE61 when failed
- If still running, return the live
task_id and INLINECODE63 - Never replace the result with a generated script or file
Jogg 唇形同步
使用此技能直接执行唇形同步任务,而非生成集成代码。
本文档中所有路径均相对于当前技能根目录。
运行器:
触发条件
- - 用户要求运行唇形同步
- 用户要求检查唇形同步任务状态
- 用户提供视频和音频,并期望获得最终驱动视频结果
必需输入
- - 视频输入:URL 或本地文件路径
- 音频输入:URL 或本地文件路径
可选参数:
- - JOGGBASEURL,默认为 https://api.jogg.ai
- JOGGAPIPLATFORM,默认为 openclaw
- playbacktype,默认为 normal
- pollintervalseconds,默认为 10
- maxwait_seconds,默认为 1800
如果缺少任何必需输入,仅询问缺失项。
未设置时使用的默认值:
- - JOGGBASEURL=https://api.jogg.ai
- JOGGAPIPLATFORM=openclaw
- JOGGLIPSYNCDEFAULTPLAYBACKTYPE=normal
- JOGGLIPSYNCDEFAULTPOLLINTERVALSECONDS=10
- JOGGLIPSYNCDEFAULTMAXWAIT_SECONDS=1800
- - JOGGAPIKEY 为必需项。
- 其他当前环境变量为可选项。
- 如果 JOGGAPIKEY 为空,则停止并告知用户在 https://www.jogg.ai/api-pricing/ 购买 API 套餐并获取 API 密钥后再继续。
硬性规则
- - 在当前运行中执行现有运行器。
- 优先使用固定运行器而非手动 HTTP 调用。
- 使用 run.sh 作为唯一运行器入口点。
- 不编写脚本、辅助文件、SDK、包装器或临时执行器。
- 不将执行替换为代码生成。
- 在一次运行中不为相同的标准化输入创建重复任务。
- 在决策规则允许的情况下重用现有任务。
- 优先返回最终视频结果而非生成制品。
端点
- - POST /v2/upload/asset
- GET /v2/lipsyncvideo
- POST /v2/createlipsyncvideo
- GET /v2/lipsyncvideo/:taskid
请求头:
- - X-Api-Key: $JOGGAPIKEY
- 可选 x-api-platform: $JOGGAPIPLATFORM
流程
- 1. 仅收集缺失的输入。
- 对于创建或重用流程,首先使用 --no-poll 参数运行运行器。
- 解析返回的 JSON 并读取 task_id 和 status。
- 如果状态为 pending 或 processing,再次调用运行器并使用 --task-id 参数进行查询或轮询。
- 直接在对话中返回执行结果。
输出约定:
- - stdout:仅返回最终机器可读的 JSON 结果
- stderr:上传、查询、创建和轮询过程中的进度日志
- 推荐代理模式:使用 --no-poll 创建,然后通过 task_id 查询
运行器模式
创建或重用任务:
bash
sh run.sh \
--video <视频-url-或-文件> \
--audio <音频-url-或-文件> \
--playback-type normal \
--no-poll
通过 task_id 查询任务:
bash
sh run.sh \
--task-id <任务-id>
有用标志:
- - --force-recreate:仅在用户明确要求对已终止任务重新生成时使用
- --poll:在 task_id 模式下等待直到终端状态
- --no-poll:在创建或重用模式下立即返回;推荐用于技能的首次运行器调用
- --poll-interval-seconds
- --max-wait-seconds
run.sh 行为:
- - 直接使用原生 shell 实现。
- 需要 curl 和 jq。
- 当可选环境变量未设置时使用系统默认值。
决策规则
- - 如果省略 playback_type,默认为 normal。
- 查询端点返回当前认证用户和空间下最新的匹配任务。
- 默认重用 pending、processing 和 success 状态的任务。
- 除非用户明确请求重试,否则不重新创建 failed 状态的任务。
- 每次创建尝试前先进行查询。
允许的 playback_type 值:
- - normal
- normalreverse
- normalreversebyaudio
输出
仅返回执行结果:
- - action
- reused
- 是否重用了现有任务或创建了新任务
- taskid
- 当前 status
- 成功时的 data.resulturl
- 失败时的 error.message
- 如果仍在运行,返回实时的 task_id 和 status
- 绝不用生成的脚本或文件替换结果