← sync. labsCONTENT HISTORY

Update to sync. labs

Snapshot Nov 6, 2026 · 18:14 UTC · version 2.1.1

WHAT CHANGED

Declared capabilities changed

Declared skills — Now says: [{"description":"Add or replace dialogue in AI-generated video with sync. labs (sync.so). Takes a clip from Veo, Kling, Sora, Runway, Hailuo, Luma, Seedance,...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save sync. labs and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

Declared skills

Before

Nov 3, 2026 · 18:14 UTC

[{"description":"Change or remove a few spoken words in a single-speaker video with sync. labs, keeping the speaker's own voice and re-syncing the lips. Use for fixing a misspoken word, a wrong name, number, price or date, a mispronuncia...

After

Nov 6, 2026 · 18:14 UTC

[{"description":"Add or replace dialogue in AI-generated video with sync. labs (sync.so). Takes a clip from Veo, Kling, Sora, Runway, Hailuo, Luma, Seedance, Wan or any other video generator, with the user's audio or a line that sync. vo...

Composer icon url

Before

Nov 3, 2026 · 18:14 UTC

Not present

After

Nov 6, 2026 · 18:14 UTC

https://files.openai.com/content?id=file_00000000a8d4820a9a91298bcb530e85

Default prompt

Before

Nov 3, 2026 · 18:14 UTC

Create a friendly cartoon character and make it say hello

After

Nov 6, 2026 · 18:14 UTC

Not present

Default prompts

Before

Nov 3, 2026 · 18:14 UTC

["Create a friendly cartoon character and make it say hello","Lipsync my video to this new audio track","Dub this YouTube video into Spanish with matching lips"]

After

Nov 6, 2026 · 18:14 UTC

Not present

Compare saved observations

Download comparison JSON
Full technical diff · 7 changed fields

changed /release/id

BEFORE
"pluginrel_47e5a9b0dc6081918ac29e24a6a8dda4"
AFTER
"pluginrel_e6f8e908764481918d43de6e215d8fdc"

changed /release/interface/composer_icon_url

BEFORE
null
AFTER
"https://files.openai.com/content?id=file_00000000a8d4820a9a91298bcb530e85"

changed /release/interface/default_prompt

BEFORE
"Create a friendly cartoon character and make it say hello"
AFTER
null

changed /release/interface/default_prompts

BEFORE
[
  "Create a friendly cartoon character and make it say hello",
  "Lipsync my video to this new audio track",
  "Dub this YouTube video into Spanish with matching lips"
]
AFTER
null

changed /release/interface/logo_url

BEFORE
"https://files.openai.com/content?id=file_0000000075948243ab7dfaffef845fee"
AFTER
"https://files.openai.com/content?id=file_000000001118820a90efff4a0df8b410"

changed /release/skills

BEFORE
[
  {
    "description": "Change or remove a few spoken words in a single-speaker video with sync. labs, keeping the speaker's own voice and re-syncing the lips. Use for fixing a misspoken word, a wrong name, number, price or date, a mispronunciation, or cutting a filler word or phrase without reshooting. Not for replacing a whole script (lipsync-video with a script), translation (translate-and-dub) or switching to a different voice.",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $edit-dialogue to change a word I said in this video.",
      "display_name": "Fix spoken words",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "code",
      "short_description": "Change or remove a few words in the speaker's own voice"
    },
    "name": "edit-dialogue",
    "plugin_release_skill_id": "pluginrsk_6ae9398db6648191a539ffc8c3a86c89"
  },
  {
    "description": "Lip-sync an existing video to new speech with sync. labs, from a voiceover, a re-recorded take, a song, or a typed script that sync. labs voices, including AI-generated clips and YouTube, TikTok, Instagram or Facebook links. Use for \"lipsync this video to this audio\", \"make him say…\", \"match the lips to my voiceover\" or \"sync this clip to the song\". Not for still pictures (talking-photo), translating speech into another language (translate-and-dub) or changing a few words in the original voice (edit-dialogue).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $lipsync-video to lipsync my video to this new audio.",
      "display_name": "Lipsync a video",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "code",
      "short_description": "Sync a video's lips to new audio, a song or a typed script"
    },
    "name": "lipsync-video",
    "plugin_release_skill_id": "pluginrsk_6ae9398de6e08191a06e2cf9ea085202"
  },
  {
    "description": "First-run setup for sync. labs after the plugin is installed. Confirms the connected account and its credits, shows what sync. labs can make, and walks the user to a first video. Use when the user runs setup for sync. labs or asks how to get started with it.",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $setup to get started with sync. labs.",
      "display_name": "Set up sync. labs",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "bolt",
      "short_description": "Check your account and make your first talking video"
    },
    "name": "setup",
    "plugin_release_skill_id": "pluginrsk_6ae9398dcae081919fc3a2fee3566b7f"
  },
  {
    "description": "Make a still photo, portrait, mascot, illustration or AI character talk with sync. labs, as a lip-synced video from a typed script (sync. labs voices it) or from the user's own audio. Use for \"make this photo talk\", \"make this picture say…\", a talking avatar or character, or animating a portrait with speech, including when the user has no picture yet and wants one created first. Not for moving video footage (lipsync-video), translation (translate-and-dub) or changing a few words in an existing video (edit-dialogue).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $talking-photo to make this photo say my script.",
      "display_name": "Make a photo talk",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "chat",
      "short_description": "Turn a photo or character into a talking video from a script or audio"
    },
    "name": "talking-photo",
    "plugin_release_skill_id": "pluginrsk_6ae9398db4a081919332f2edc4d5d1e0"
  },
  {
    "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).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $translate-and-dub to dub this video into Spanish.",
      "display_name": "Translate and dub a video",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "bolt",
      "short_description": "Dub a video or social link into another language with matching lips"
    },
    "name": "translate-and-dub",
    "plugin_release_skill_id": "pluginrsk_6ae9398f21ac81919716edd7fc0aef74"
  }
]
AFTER
[
  {
    "description": "Add or replace dialogue in AI-generated video with sync. labs (sync.so). Takes a clip from Veo, Kling, Sora, Runway, Hailuo, Luma, Seedance, Wan or any other video generator, with the user's audio or a line that sync. voices, and lip-syncs the character so they actually speak. Also plans the source clip so it lip-syncs well, and handles scenes with several shots or two characters talking. Use when the user wants an AI character, avatar, UGC-style ad actor or generated presenter to talk, add a voice to an AI video, or make a talking AI video from a prompt. Not for real footage that already has a voiceover to match (lipsync), still images (talking-photo), or translating a video (translate-and-dub).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $ai-video-to-talking to make the character in my generated clip say this line.",
      "display_name": "Make an AI video talk",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "code",
      "short_description": "Give dialogue to clips from Veo, Kling, Sora and others"
    },
    "name": "ai-video-to-talking",
    "plugin_release_skill_id": "pluginrsk_6aed19f84ce48191a856f1f2b95bb9c3"
  },
  {
    "description": "Lip-sync many videos at once with sync. labs (sync.so), from a CSV, spreadsheet, folder or list. Pairs each video or avatar with its own audio or script, quotes the whole run, works within the plan's concurrency limit or uses the Batch API, resumes safely without paying twice, and collects every output. Use for bulk or batch lipsync of supplied audio or scripts, personalized video at scale (one video per lead, customer or recipient name), ad and creative variants, many voiceovers onto one presenter, or any \"do this for each row\" lipsync job. Not for one video (lipsync), translating videos into other languages (translate-and-dub for one video, localize-campaign for several).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $batch-lipsync to lipsync each row of my CSV.",
      "display_name": "Batch lipsync",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "bolt",
      "short_description": "Lipsync every row of a CSV, resumably, within plan limits"
    },
    "name": "batch-lipsync",
    "plugin_release_skill_id": "pluginrsk_6aed19f9e2548191baf24521aa28cb10"
  },
  {
    "description": "Change or remove a few spoken words in a single-speaker video with sync. labs (sync.so), keeping the speaker's own voice and re-syncing the lips, with no reshoot. Use for fixing a misspoken word, a wrong name, number, price or date, a mispronunciation, a typo in a spoken line, or cutting a filler word or phrase. Not for replacing a whole script (lipsync with a new script), translation (translate-and-dub), or switching to a different voice.",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $edit-dialogue to fix a word I said wrong in this video.",
      "display_name": "Fix spoken words",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "code",
      "short_description": "Change or remove a few words in the speaker's own voice"
    },
    "name": "edit-dialogue",
    "plugin_release_skill_id": "pluginrsk_6aed19f8873c819183f266074deced6a"
  },
  {
    "description": "Lip-sync one existing video of a real person to new speech with sync. labs (sync.so), so their mouth matches a new voiceover, re-recorded take, song, or a typed script that sync. voices. Accepts local files, URLs, sync. assets and YouTube, TikTok, Instagram or Facebook links. Use whenever the user wants to lipsync, lip sync or sync lips, match mouth movement to audio, \"make him say…\", replace the audio in a talking-head clip, or sync a clip to a song, even if they don't say \"lipsync\". Not for AI-generated characters or clips from Veo, Kling, Sora and similar tools (ai-video-to-talking), still pictures (talking-photo), translation (translate-and-dub), changing a few words in the original voice (edit-dialogue), or many videos at once (batch-lipsync).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $lipsync to lipsync my video to this new audio.",
      "display_name": "Lipsync a video",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "code",
      "short_description": "Match a video's lips to new audio, a song or a script"
    },
    "name": "lipsync",
    "plugin_release_skill_id": "pluginrsk_6aed19f8e1cc8191a4437aad305f3fb1"
  },
  {
    "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.",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $localize-campaign to localize these videos for new markets.",
      "display_name": "Localize a campaign",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "hierarchy",
      "short_description": "Dub a set of videos for several markets, with a review sheet"
    },
    "name": "localize-campaign",
    "plugin_release_skill_id": "pluginrsk_6aed19f864888191989c026f063e422b"
  },
  {
    "description": "Connect sync. labs (sync.so) to this agent and get a first lip-synced video. Use when the user explicitly asks to install, set up, connect or get started with sync. labs, when sync. tools are missing or signed out, or for questions about their sync. account, plan or remaining credits. Media requests go to their workflow skill, which links to the same connection steps.",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $setup to connect sync. labs and show me what I can make.",
      "display_name": "Set up sync. labs",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "bolt",
      "short_description": "Connect sync. and check your account and credits"
    },
    "name": "setup",
    "plugin_release_skill_id": "pluginrsk_6aed19f75dd4819196a91dad032abf2b"
  },
  {
    "description": "Build sync. labs (sync.so) lipsync, dubbing and talking-image generation into an app, backend, script or pipeline with the sync. REST API or the official Python (syncsdk) and TypeScript (@sync.so/sdk) SDKs. Covers API keys, uploads, creating generations with idempotency keys, webhooks with signature checks, polling, models, cost estimates, error handling, concurrency limits and the Batch API. Use whenever code calls or should call the sync. API, for example \"add lipsync to my Next.js app\", \"write a Python script that dubs videos with sync.\", \"handle sync. webhooks\", \"why does my sync. request return 429\", or reviewing an existing sync. integration. Not for making one video in this chat (lipsync, talking-photo, translate-and-dub).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $sync-api to add sync. lipsync to my app.",
      "display_name": "Build with the sync. API",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "code",
      "short_description": "Integrate sync. lipsync and dubbing into your own code"
    },
    "name": "sync-api",
    "plugin_release_skill_id": "pluginrsk_6aed19f9a2688191baff52655c25c58f"
  },
  {
    "description": "Make a still image talk with sync. labs (sync.so). Turns a photo, portrait, headshot, or an illustrated or AI-generated character with a human-like face into a lip-synced video from a typed script (sync. voices it) or the user's own audio. Use for \"make this photo talk\", \"make this picture say…\", talking avatars, talking headshots, animating a portrait or character with speech, or image-to-video with dialogue, including when the user has no picture yet and wants one made first. Not for moving video footage (lipsync or ai-video-to-talking), translation (translate-and-dub) or changing words in an existing video (edit-dialogue).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $talking-photo to make this picture say a line.",
      "display_name": "Make a photo talk",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "bolt",
      "short_description": "Turn a portrait or character into a talking video"
    },
    "name": "talking-photo",
    "plugin_release_skill_id": "pluginrsk_6aed19f75d648191b1ba1eaa5d50ac75"
  },
  {
    "description": "Translate one source video's speech into another language with sync. labs (sync.so) and re-sync the speaker's lips to the dubbed audio, from a local file, URL, or 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, video translation, or a multilingual version of one video. Not for subtitles or captions only, translating a text document, lip-syncing audio the user already has (lipsync), or a whole campaign of several videos across markets (localize-campaign).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $translate-and-dub to dub this video into Spanish.",
      "display_name": "Translate and dub",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "bolt",
      "short_description": "Dub a video into other languages with matching lips"
    },
    "name": "translate-and-dub",
    "plugin_release_skill_id": "pluginrsk_6aed19f7669c81919add73723cd05869"
  },
  {
    "description": "Diagnose and recover sync. labs (sync.so) work that failed, stalled, was rejected or errored, then resume it safely without paying twice. Covers sign-in and missing tools, rejected inputs, plan, credit and concurrency limits, stuck or slow jobs, lost responses after a timeout, dubbing provider errors and poor lipsync quality, and can report the problem to the sync. team. Use for \"my lipsync failed\", \"why was this rejected\", \"it's been processing forever\", \"I got a 429 or 402\", \"the sync tools disappeared\", or any sync. error message. Not for first-time setup (setup) or writing integration code (sync-api).",
    "interface": {
      "brand_color": null,
      "default_prompt": "Use $troubleshoot to find out why my sync. job failed.",
      "display_name": "Troubleshoot sync.",
      "icon_large_url": null,
      "icon_small_url": null,
      "iconography": "bolt",
      "short_description": "Find why a sync. job failed and resume it safely"
    },
    "name": "troubleshoot",
    "plugin_release_skill_id": "pluginrsk_6aed19f75bd88191af86bb9fc5d9d692"
  }
]

changed /release/version

BEFORE
"2.0.4"
AFTER
"2.1.1"
Full snapshot data
{
  "canonical_app_id": "asdk_app_6a398355fbc08191a232e7eeeacb73d5",
  "connector_id": "asdk_app_6a398355fbc08191a232e7eeeacb73d5",
  "created_at": "2026-06-23T03:46:48.133250Z",
  "discoverability": "LISTED",
  "id": "plugin_asdk_app_6a398355fbc08191a232e7eeeacb73d5",
  "is_template": false,
  "is_template_instance": false,
  "is_v2_template": false,
  "name": "app-6a398355fbc08191a232e7eeeacb73d5",
  "release": {
    "app_ids": [
      "asdk_app_6a398355fbc08191a232e7eeeacb73d5"
    ],
    "app_manifest": {
      "apps": {
        "sync-labs": {
          "id": "asdk_app_6a398355fbc08191a232e7eeeacb73d5",
          "required": true
        }
      }
    },
    "app_templates": [],
    "description": "Lipsync videos, make photos and characters talk, translate and dub videos, and fix spoken words with sync. labs.",
    "display_name": "sync. labs",
    "id": "pluginrel_e6f8e908764481918d43de6e215d8fdc",
    "interface": {
      "brand_color": null,
      "capabilities": [
        "Make photos and AI characters talk from a script or audio",
        "Lipsync any video, including AI-generated clips, to new audio or a script",
        "Translate and dub videos or YouTube and TikTok links with matching lips",
        "Fix or remove spoken words in the speaker's own voice",
        "Clone your own voice for scripts",
        "Open sync. Studio to choose media and review results",
        "Browse projects and past generations"
      ],
      "category": "Creativity",
      "composer_icon_dark_url": null,
      "composer_icon_url": "https://files.openai.com/content?id=file_00000000a8d4820a9a91298bcb530e85",
      "default_prompt": null,
      "default_prompts": null,
      "developer_name": "sync. labs",
      "logo_url": "https://files.openai.com/content?id=file_000000001118820a90efff4a0df8b410",
      "logo_url_dark": null,
      "long_description": "Use sync. labs to lipsync videos, make photos and characters talk, translate and dub videos, and fix spoken words without reshooting.\n\nWith sync. labs you can:\n• Make a photo talk. Turn a portrait, a product mascot or a character you just created in ChatGPT into a talking video from a script or an audio recording.\n• Lipsync a video to new audio. Match a speaker's lips to a voiceover, a new take, a song or a typed script, including AI-generated clips.\n• Translate and dub a video. Dub an uploaded video or a YouTube, TikTok, Instagram or Facebook link into another language with lips that match the new audio.\n• Fix spoken words. Change or remove a few words in a single-speaker video while keeping the original voice.\n• Clone your own voice, or a voice you have permission to use, and use it with scripts.\n• Open sync. Studio in ChatGPT to choose media, review previews and download results, or browse your existing projects.\n\nBuilt for creators, marketers, educators and localization teams who make talking-head videos, dubbed versions, or quick dialogue fixes.\n\nRequires a sync. labs account. sync. labs does not create subtitle-only output, standalone audio voiceovers, or general timeline edits such as trimming or adding music. Fixing spoken words changes individual words; it does not replace a whole script.",
      "plugin_category_id": "creativity",
      "privacy_policy_url": "https://sync.so/privacy",
      "screenshot_urls": [],
      "short_description": "Lipsync, dub & talking photos",
      "terms_of_service_url": "https://sync.so/terms",
      "website_url": "https://sync.so"
    },
    "keywords": [
      "lipsync",
      "lip sync",
      "lip-sync",
      "ai lip sync",
      "lip syncing",
      "dubbing",
      "ai dubbing",
      "video dubbing",
      "dub video",
      "video translation",
      "translate video",
      "video translator",
      "video localization",
      "talking photo",
      "make a photo talk",
      "photo to video",
      "talking avatar",
      "ai avatar",
      "talking head",
      "talking character",
      "voice cloning",
      "edit dialogue",
      "dialogue replacement",
      "change words in video",
      "sync labs"
    ],
    "mcp_servers": [
      {
        "key": "sync-labs",
        "metadata": {
          "url": "https://mcp.sync.so/mcp"
        }
      }
    ],
    "onboarding_skill_name": "setup",
    "requires_local_executor": false,
    "skills": [
      {
        "description": "Add or replace dialogue in AI-generated video with sync. labs (sync.so). Takes a clip from Veo, Kling, Sora, Runway, Hailuo, Luma, Seedance, Wan or any other video generator, with the user's audio or a line that sync. voices, and lip-syncs the character so they actually speak. Also plans the source clip so it lip-syncs well, and handles scenes with several shots or two characters talking. Use when the user wants an AI character, avatar, UGC-style ad actor or generated presenter to talk, add a voice to an AI video, or make a talking AI video from a prompt. Not for real footage that already has a voiceover to match (lipsync), still images (talking-photo), or translating a video (translate-and-dub).",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $ai-video-to-talking to make the character in my generated clip say this line.",
          "display_name": "Make an AI video talk",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "code",
          "short_description": "Give dialogue to clips from Veo, Kling, Sora and others"
        },
        "name": "ai-video-to-talking",
        "plugin_release_skill_id": "pluginrsk_6aed19f84ce48191a856f1f2b95bb9c3"
      },
      {
        "description": "Lip-sync many videos at once with sync. labs (sync.so), from a CSV, spreadsheet, folder or list. Pairs each video or avatar with its own audio or script, quotes the whole run, works within the plan's concurrency limit or uses the Batch API, resumes safely without paying twice, and collects every output. Use for bulk or batch lipsync of supplied audio or scripts, personalized video at scale (one video per lead, customer or recipient name), ad and creative variants, many voiceovers onto one presenter, or any \"do this for each row\" lipsync job. Not for one video (lipsync), translating videos into other languages (translate-and-dub for one video, localize-campaign for several).",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $batch-lipsync to lipsync each row of my CSV.",
          "display_name": "Batch lipsync",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "bolt",
          "short_description": "Lipsync every row of a CSV, resumably, within plan limits"
        },
        "name": "batch-lipsync",
        "plugin_release_skill_id": "pluginrsk_6aed19f9e2548191baf24521aa28cb10"
      },
      {
        "description": "Change or remove a few spoken words in a single-speaker video with sync. labs (sync.so), keeping the speaker's own voice and re-syncing the lips, with no reshoot. Use for fixing a misspoken word, a wrong name, number, price or date, a mispronunciation, a typo in a spoken line, or cutting a filler word or phrase. Not for replacing a whole script (lipsync with a new script), translation (translate-and-dub), or switching to a different voice.",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $edit-dialogue to fix a word I said wrong in this video.",
          "display_name": "Fix spoken words",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "code",
          "short_description": "Change or remove a few words in the speaker's own voice"
        },
        "name": "edit-dialogue",
        "plugin_release_skill_id": "pluginrsk_6aed19f8873c819183f266074deced6a"
      },
      {
        "description": "Lip-sync one existing video of a real person to new speech with sync. labs (sync.so), so their mouth matches a new voiceover, re-recorded take, song, or a typed script that sync. voices. Accepts local files, URLs, sync. assets and YouTube, TikTok, Instagram or Facebook links. Use whenever the user wants to lipsync, lip sync or sync lips, match mouth movement to audio, \"make him say…\", replace the audio in a talking-head clip, or sync a clip to a song, even if they don't say \"lipsync\". Not for AI-generated characters or clips from Veo, Kling, Sora and similar tools (ai-video-to-talking), still pictures (talking-photo), translation (translate-and-dub), changing a few words in the original voice (edit-dialogue), or many videos at once (batch-lipsync).",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $lipsync to lipsync my video to this new audio.",
          "display_name": "Lipsync a video",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "code",
          "short_description": "Match a video's lips to new audio, a song or a script"
        },
        "name": "lipsync",
        "plugin_release_skill_id": "pluginrsk_6aed19f8e1cc8191a4437aad305f3fb1"
      },
      {
        "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.",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $localize-campaign to localize these videos for new markets.",
          "display_name": "Localize a campaign",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "hierarchy",
          "short_description": "Dub a set of videos for several markets, with a review sheet"
        },
        "name": "localize-campaign",
        "plugin_release_skill_id": "pluginrsk_6aed19f864888191989c026f063e422b"
      },
      {
        "description": "Connect sync. labs (sync.so) to this agent and get a first lip-synced video. Use when the user explicitly asks to install, set up, connect or get started with sync. labs, when sync. tools are missing or signed out, or for questions about their sync. account, plan or remaining credits. Media requests go to their workflow skill, which links to the same connection steps.",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $setup to connect sync. labs and show me what I can make.",
          "display_name": "Set up sync. labs",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "bolt",
          "short_description": "Connect sync. and check your account and credits"
        },
        "name": "setup",
        "plugin_release_skill_id": "pluginrsk_6aed19f75dd4819196a91dad032abf2b"
      },
      {
        "description": "Build sync. labs (sync.so) lipsync, dubbing and talking-image generation into an app, backend, script or pipeline with the sync. REST API or the official Python (syncsdk) and TypeScript (@sync.so/sdk) SDKs. Covers API keys, uploads, creating generations with idempotency keys, webhooks with signature checks, polling, models, cost estimates, error handling, concurrency limits and the Batch API. Use whenever code calls or should call the sync. API, for example \"add lipsync to my Next.js app\", \"write a Python script that dubs videos with sync.\", \"handle sync. webhooks\", \"why does my sync. request return 429\", or reviewing an existing sync. integration. Not for making one video in this chat (lipsync, talking-photo, translate-and-dub).",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $sync-api to add sync. lipsync to my app.",
          "display_name": "Build with the sync. API",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "code",
          "short_description": "Integrate sync. lipsync and dubbing into your own code"
        },
        "name": "sync-api",
        "plugin_release_skill_id": "pluginrsk_6aed19f9a2688191baff52655c25c58f"
      },
      {
        "description": "Make a still image talk with sync. labs (sync.so). Turns a photo, portrait, headshot, or an illustrated or AI-generated character with a human-like face into a lip-synced video from a typed script (sync. voices it) or the user's own audio. Use for \"make this photo talk\", \"make this picture say…\", talking avatars, talking headshots, animating a portrait or character with speech, or image-to-video with dialogue, including when the user has no picture yet and wants one made first. Not for moving video footage (lipsync or ai-video-to-talking), translation (translate-and-dub) or changing words in an existing video (edit-dialogue).",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $talking-photo to make this picture say a line.",
          "display_name": "Make a photo talk",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "bolt",
          "short_description": "Turn a portrait or character into a talking video"
        },
        "name": "talking-photo",
        "plugin_release_skill_id": "pluginrsk_6aed19f75d648191b1ba1eaa5d50ac75"
      },
      {
        "description": "Translate one source video's speech into another language with sync. labs (sync.so) and re-sync the speaker's lips to the dubbed audio, from a local file, URL, or 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, video translation, or a multilingual version of one video. Not for subtitles or captions only, translating a text document, lip-syncing audio the user already has (lipsync), or a whole campaign of several videos across markets (localize-campaign).",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $translate-and-dub to dub this video into Spanish.",
          "display_name": "Translate and dub",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "bolt",
          "short_description": "Dub a video into other languages with matching lips"
        },
        "name": "translate-and-dub",
        "plugin_release_skill_id": "pluginrsk_6aed19f7669c81919add73723cd05869"
      },
      {
        "description": "Diagnose and recover sync. labs (sync.so) work that failed, stalled, was rejected or errored, then resume it safely without paying twice. Covers sign-in and missing tools, rejected inputs, plan, credit and concurrency limits, stuck or slow jobs, lost responses after a timeout, dubbing provider errors and poor lipsync quality, and can report the problem to the sync. team. Use for \"my lipsync failed\", \"why was this rejected\", \"it's been processing forever\", \"I got a 429 or 402\", \"the sync tools disappeared\", or any sync. error message. Not for first-time setup (setup) or writing integration code (sync-api).",
        "interface": {
          "brand_color": null,
          "default_prompt": "Use $troubleshoot to find out why my sync. job failed.",
          "display_name": "Troubleshoot sync.",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "bolt",
          "short_description": "Find why a sync. job failed and resume it safely"
        },
        "name": "troubleshoot",
        "plugin_release_skill_id": "pluginrsk_6aed19f75bd88191af86bb9fc5d9d692"
      }
    ],
    "version": "2.1.1"
  },
  "scope": "GLOBAL",
  "share_url": "https://chatgpt.com/plugins/sync-labs?open_in_app",
  "status": "ENABLED"
}

SHA-256 of public snapshot: 3f75b7f3e04900e5731fb764029d3aeee4f099292287929d8461a0f8df9a5505