Jogg Lip Sync

Runs Jogg lip sync tasks with video and audio inputs, reuses existing tasks when possible, and polls task status until completion when needed. Use when the u...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 23 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (Jogg lip sync) matches requested binaries (curl, jq), required env (JOGG_API_KEY), and the included runner (run.sh) which implements upload, create, and query flows against Jogg API endpoints. Nothing requested appears unrelated to the stated purpose.
Instruction Scope
SKILL.md instructs the agent to run run.sh and only collect missing video/audio inputs; the script loads .env, normalizes inputs, uploads local files via signed URLs, creates or queries tasks, and returns JSON. The runner transmits media and metadata to the Jogg API (default https://api.jogg.ai). Note: JOGG_BASE_URL is overrideable by the environment, so if a user or caller sets it to an arbitrary URL, media and API key would be sent to that endpoint — this is expected behavior but worth verifying before use.
Install Mechanism
Install spec is minimal (brew install jq) and appropriate because the runner depends on jq. No arbitrary downloads, extract operations, or unusual installers are present.
Credentials
Only declared required credential is JOGG_API_KEY (primaryEnv). The script also uses optional JOGG_* defaults (base URL, platform, poll settings) which are documented. No other unrelated secrets or config paths are requested.
Persistence & Privilege
Skill is user-invocable, not always:true, and does not modify other skills or system-wide agent settings. It runs only the included runner and does not request permanent platform privileges.
Assessment
This skill appears to do what it claims: it uploads provided video/audio (local files are PUT to a signed URL), creates or queries lip-sync tasks at Jogg, and returns JSON. Before installing or running: 1) Be prepared to provide a valid JOGG_API_KEY (do not commit it into source control). 2) Review any .env you use and avoid setting JOGG_BASE_URL to untrusted endpoints (changing it would send your media and API key to that endpoint). 3) The script will upload local media to the service; do not use with sensitive/secret videos unless you trust the Jogg endpoint and account. 4) If you want extra assurance, open and inspect run.sh (it's included) before running. Overall the skill is coherent and proportionate to its stated purpose.

Like a lobster shell, security has layers — review code before you run it.

Current versionv0.1.1
Download zip
latestvk972kpsvdx36w6hy37rkvnav198399yc

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

🎙️ Clawdis
OSmacOS · Linux
Binscurl, jq
EnvJOGG_API_KEY
Primary envJOGG_API_KEY

Install

Install jq (brew)
Bins: jq
brew install jq

SKILL.md

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"

Default env file:

  • .env

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 https://api.jogg.ai
  • JOGG_API_PLATFORM, default openclaw
  • playback_type, default normal
  • poll_interval_seconds, default 10
  • max_wait_seconds, default 1800

If any required input is missing, ask only for the missing item.

.env loading rules:

  • The runner automatically loads .env.
  • Values in .env act as defaults only.
  • Explicit environment variables from the current shell or tool call take precedence and are not overwritten.
  • Keep JOGG_API_KEY empty in the checked-in .env; fill it locally when needed.
  • Default values used when unset:
    • JOGG_BASE_URL=https://api.jogg.ai
    • JOGG_API_PLATFORM=openclaw
    • JOGG_LIP_SYNC_DEFAULT_PLAYBACK_TYPE=normal
    • JOGG_LIP_SYNC_DEFAULT_POLL_INTERVAL_SECONDS=10
    • JOGG_LIP_SYNC_DEFAULT_MAX_WAIT_SECONDS=1800
  • JOGG_API_KEY is required.
  • Other current environment variables are optional.
  • If JOGG_API_KEY is empty, the runner stops immediately and returns a message telling the agent to update .env or provide environment variables.

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

  • POST /v2/upload/asset
  • GET /v2/lip_sync_video
  • POST /v2/create_lip_sync_video
  • GET /v2/lip_sync_video/:task_id

Header:

  • X-Api-Key: $JOGG_API_KEY
  • optional x-api-platform: $JOGG_API_PLATFORM

Procedure

  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 only
  • stderr: progress logs during upload, query, create, and polling
  • Recommended agent pattern: create with --no-poll, then query by task_id

Runner Modes

Create or reuse a task:

sh "run.sh" \
  --video "<video-url-or-file>" \
  --audio "<audio-url-or-file>" \
  --playback-type "normal" \
  --no-poll

Query a task by task_id:

sh "run.sh" \
  --task-id "<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-seconds

run.sh behavior:

  • Uses the native shell implementation directly.
  • Requires curl and jq.
  • Automatically loads .env defaults before execution.

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:

  • normal
  • normal_reverse
  • normal_reverse_by_audio

Output

Return only execution results:

  • action
  • reused
  • Whether an existing task was reused or a new one was created
  • task_id
  • Current status
  • data.result_url when successful
  • error.message when failed
  • If still running, return the live task_id and status
  • Never replace the result with a generated script or file

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…