← sync. labsCONTENT HISTORY
WHAT CHANGED
Update to sync. labs
Snapshot Nov 3, 2026 · 18:14 UTC · version 2.0.4
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save sync. labs and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Translate a video's speech into another language with sync. labs and re-sync the lips to the dubbed audio, from an uploaded video or a YouTube, TikTok, Instagram or Facebook link, into one or several languages. Use for \"dub this video into Spanish\", \"translate my YouTube video to Japanese\", AI dubbing, or localizing a video for other markets. Not for subtitles only, translating a text document, or lip-syncing audio the user already has (lipsync-video).",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 221
}
],
"name": "translate-and-dub",
"skill_md_contents": "---\nname: translate-and-dub\ndescription: Translate a video's speech into another language with sync. labs and re-sync the lips to the dubbed audio, from an uploaded video or a YouTube, TikTok, Instagram or Facebook link, into one or several languages. Use for \"dub this video into Spanish\", \"translate my YouTube video to Japanese\", AI dubbing, or localizing a video for other markets. Not for subtitles only, translating a text document, or lip-syncing audio the user already has (lipsync-video).\n---\n\n# Translate and dub a video\n\nDelivers one dubbed MP4 per target language, with lips matched to the new audio.\n\n## Inputs\n\n- **Video**: a video file in this conversation, a Sync video asset ID, or a YouTube, TikTok, Instagram or Facebook link.\n- **Target language(s)**: ask if none was given. Use `sourceLang: \"auto\"` unless the user names the spoken language.\n\n## Tools\n\n| Step | Tool |\n| --- | --- |\n| Check languages | `get-translation-options` |\n| Create the project | `projects_create` |\n| Save the video | `upload-media` (file) or `assets_create` (link) |\n| Quote | `generate_estimate-cost` |\n| Create | `create-translate-and-dub` |\n| Wait for the result | `generate_get-generation` |\n\n## Steps\n\n1. **Languages.** Call `get-translation-options` and check that every requested language is supported. Name the closest supported option for any that is not.\n2. **Project.** Call `projects_create` with a new random UUID as `id`, a short `name` and `defaultWorkflow: \"translate_and_dub\"`. Use the returned `projectId` with `projectIntent: \"explicit\"` in every later call.\n3. **Save the video.**\n - **File:** call `upload-media` with `mediaType: \"video\"`.\n - **Link:** call `assets_create` with the URL, `type: \"VIDEO\"`, the `projectId` and `projectIntent: \"explicit\"`. A 409 `import_in_progress` means the import is running: wait `retryAfterMs` (15 seconds if absent) and repeat the identical request until it returns an asset. On `import_failed`, `import_not_enabled`, `import_unavailable` or a limit error, explain the reason, offer a file upload, and stop.\n\n Never pass an `importJobId` as an asset ID.\n4. **Quote.** Call `generate_estimate-cost` with `workflow: \"translate-and-dub\"`, `model: \"sync-3\"` and the video's duration in seconds. Show the returned breakdown and say that any external voice-provider charges it lists are extra.\n5. **Confirm.** Show the video, the language(s) and the estimate per language, then wait for approval, unless this exact request and cost were already approved.\n6. **Create.** For each target language, call `create-translate-and-dub` once with `videoAssetId`, `targetLang`, `sourceLang`, `model: \"sync-3\"`, the `projectId` with `projectIntent: \"explicit\"`, and its own new `idempotencyKey`. On a lost response, retry that language once with the same key and inputs.\n7. **Wait and deliver.** Poll `generate_get-generation` with each returned `id` and `wait: true` until it is `COMPLETED` or `FAILED`. Dubbing takes longer than plain lipsync, so tell the user it may take a few minutes. Give each exact `outputUrl`, unchanged, labelled with its language.\n\n## Rules\n\n- One paid job per language. Never resubmit a language to check progress.\n- If a language fails, report it and keep the others.\n- Don't offer subtitles, captions or a translated transcript as a substitute; this workflow produces dubbed video only.\n"
}SHA-256 of public snapshot: a84474ac308dd42bb4f6af2f093f73b61bc9a3bc327476ae74e7c573f7ea075f