← sync. labsCONTENT HISTORY
WHAT CHANGED
Update to sync. labs
Snapshot Nov 6, 2026 · 18:14 UTC · version 2.1.1
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 3 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Localize a whole video campaign into several languages and markets with sync. labs (sync.so). Plans the video × language matrix, maps markets to languages, pilots one video so names and terms are right before spending on the rest, dubs and lip-syncs every version, and delivers consistently named files plus a review sheet per market. Use for several source videos across languages or markets, such as \"make these ads in Spanish, German and Japanese\", launching a campaign or a course in new markets, international or multi-market rollouts. Not for one video into a few languages (translate-and-dub), new speech in the same language (lipsync, batch-lipsync), or subtitles only.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 218
},
{
"relative_path": "references/api.md",
"size_in_bytes": 4169
},
{
"relative_path": "references/connect.md",
"size_in_bytes": 3346
},
{
"relative_path": "references/media-input.md",
"size_in_bytes": 3853
}
],
"name": "localize-campaign",
"skill_md_contents": "---\nname: localize-campaign\ndescription: Localize a whole video campaign into several languages and markets with sync. labs (sync.so). Plans the video × language matrix, maps markets to languages, pilots one video so names and terms are right before spending on the rest, dubs and lip-syncs every version, and delivers consistently named files plus a review sheet per market. Use for several source videos across languages or markets, such as \"make these ads in Spanish, German and Japanese\", launching a campaign or a course in new markets, international or multi-market rollouts. Not for one video into a few languages (translate-and-dub), new speech in the same language (lipsync, batch-lipsync), or subtitles only.\nlicense: MIT\ncompatibility: Needs the sync. MCP server or a SYNC_API_KEY. See references/connect.md.\n---\n\n# Localize a campaign\n\nDelivers every video in every target language as a dubbed, lip-synced MP4 with a predictable name, plus a sheet the regional teams can review from.\n\nIf no sync. tools are available, follow [references/connect.md](references/connect.md) first. Without the MCP tools, each version is one `POST /v2/generate` with `dubParams`, as in [references/api.md](references/api.md).\n\n## 1. Plan the matrix\n\n1. **Videos.** List each source video with its name, length and where it comes from (a file, URL or social link).\n2. **Markets to languages.** Turn markets into languages and confirm them with the user. Germany, Austria and Switzerland are all German; Brazil is Portuguese; most of LATAM is Spanish. Call `dubbing_get-options` and check that every language is supported, naming the closest option for any that isn't. Don't guess regional variants the options don't list.\n3. **The matrix.** Show it as a table: one row per video, one column per language, and the total number of versions.\n4. **Files.** Agree a naming pattern up front, by default `<campaign>_<video>_<lang>.mp4`, for example `spring24_hero-30s_de.mp4`.\n\n## 2. Check what dubbing won't change\n\nBefore spending anything, tell the user what stays the same, so nobody is surprised in review:\n\n- Text on screen, burned-in captions, logos and end cards stay in the source language.\n- Music and sound effects carry over. Very loud music under the voice can lower the dub's quality.\n- Brand names, product names and slogans can be translated or mispronounced. Ask which must stay untranslated.\n- The lips can only be matched where a speaker is on screen. Voiceover-only shots still get the dubbed audio.\n\n## 3. Quote, then pilot\n\n1. **Project and inputs.** Call `projects_create` once for the campaign, with a new UUID `id`, the campaign name and `defaultWorkflow: \"translate_and_dub\"`. Save the returned `id` as `projectId`. Pass it wherever a tool asks for `projectId`, and add `projectIntent: \"explicit\"` only on tools that take that field. Save each source video into it once, as in [references/media-input.md](references/media-input.md).\n2. **Quote.** Call `generations_estimate-cost` with `workflow: \"translate-and-dub\"`, `model: \"sync-3\"` and each video's length as `duration`. Multiply by the number of languages, and show the per-video, per-language and total cost, using the returned breakdown. If it reports external provider charges as excluded, say they're extra. Wait for approval of the total.\n3. **Pilot.** Run one version first, usually the most important video in the most important language. Use `dubbing_create` with `videoAssetId`, `targetLang`, `sourceLang: \"auto\"`, `model: \"sync-3\"`, the `projectId` with `projectIntent: \"explicit\"`, and a new `idempotencyKey`. Wait for it with `generations_get` and `wait: true`. Ask the user, or a speaker of that language, to check names, terms and tone. Fix anything you can before the rest.\n\n## 4. Run the rest\n\n- Read `generationLimits.concurrency` from `account_get-context`, and keep that many versions in flight at most. On `concurrency_limit_reached`, wait `error.retryAfterMs` milliseconds and retry the identical request with the same key.\n- Give every version its own `idempotencyKey`, written into the matrix before the call, such as `<campaign>-<video>-<lang>`, and reuse it on every retry. Track each version's generation `id` and status in the matrix as you go, so an interrupted run resumes instead of paying twice.\n- If one version fails, record why and carry on with the others.\n- On Scale plans and above, 20 or more versions can go in one `batches_create` call instead, each item a generate body with the video and `dubParams` (`{\"providerName\": \"elevenlabs\", \"targetLang\": \"<lang>\"}`). Validate with `dryRun: true` first, and follow it with `batches_get`.\n\n## 5. Deliver\n\n- Give a results table: video, language, status, and the exact `outputMediaUrl`.\n- In a coding agent, download each file into `./<campaign>/<lang>/` using the agreed names.\n- Write `review.csv` with one row per version: file, language, the market it's for, status, and empty `approved` and `notes` columns for the regional reviewers.\n- Offer to redo only the versions reviewers reject. Never resubmit a version just to check progress.\n"
}SHA-256 of public snapshot: f36a3d0d01e125f3381bfd64ea96ab9c9cabfcd462ac4c99c545689ff2c2a7c1