Not in the top 1,000 by GitHub stars

synchronicity-labs/skills

Official sync. labs agent skills: lipsync, talking photos, AI video dialogue, dubbing, campaign localization, batch lipsync and the sync. API. For Claude Code, Codex, Cursor and any Agent Skills client.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/ai-video-to-talking/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/batch-lipsync/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/edit-dialogue/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/lipsync/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/localize-campaign/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/setup/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/sync-api/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/talking-photo/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/translate-and-dub/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

skills/troubleshoot/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 68053bc91564

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 68053bc91564641c478be8b7ff46567b67f3ae62

git clone --filter=blob:none --no-checkout https://github.com/synchronicity-labs/skills.git .hotskills/synchronicity-labs-skills && git -C .hotskills/synchronicity-labs-skills checkout --detach 68053bc91564641c478be8b7ff46567b67f3ae62 # Copy each selected skill directory from .hotskills/synchronicity-labs-skills into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/synchronicity-labs/skills.git .hotskills/synchronicity-labs-skills && git -C .hotskills/synchronicity-labs-skills checkout --detach 68053bc91564641c478be8b7ff46567b67f3ae62 # Copy each selected skill directory from .hotskills/synchronicity-labs-skills into .agents/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/synchronicity-labs/skills.git .hotskills/synchronicity-labs-skills && git -C .hotskills/synchronicity-labs-skills checkout --detach 68053bc91564641c478be8b7ff46567b67f3ae62 # Copy each selected skill directory from .hotskills/synchronicity-labs-skills into .gemini/skills/<skill-name>/
6GitHub stars
Not availablestars in 7 days
10skills in this repository
14commits in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 5, 2026Nov 5, 20266

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

ai-video-to-talking

When your agent uses it

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).

What it loads into context

Frontmatter

219 tokens

Always available to the agent

SKILL.md

1,386 tokens

When the skill is activated

Reference documents

3,532 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Steps
  2. Rules

Files

  • ../../.claude-plugin/marketplace.jsonasset540 bytes
  • ../../.claude-plugin/plugin.jsonasset948 bytes
  • ../../assets/logo.pngasset8,266 bytes
  • SKILL.mdcore5,772 bytes
  • SKILL.mdcore5,772 bytes
  • agents/openai.yamlasset233 bytes
  • references/api.mddoc4,169 bytes
  • references/connect.mddoc3,343 bytes
  • references/media-input.mddoc3,852 bytes
  • references/source-clip.mddoc2,167 bytes
Read SKILL.md

# Make an AI video talk

Delivers an MP4 of the generated character speaking the agreed line, in a voice that fits them, with matching lips. sync. doesn't make the clip itself. It comes from the user, or from a video-generation tool you can use in this session.

If no sync. tools are available, follow [references/connect.md](references/connect.md) first. Without the MCP tools, use the REST requests in [references/api.md](references/api.md).

## Steps

1. **Get the clip.**
   - **The user has one:** save it as in [references/media-input.md](references/media-input.md).
   - **The user only has an idea:** if you can generate video here, write the prompt with [references/source-clip.md](references/source-clip.md) so the face lip-syncs well. If you can't, give the user that prompt to paste into their video tool, and continue once they have the clip.
2. **Check the clip** before spending anything: one clearly visible face per shot, the mouth unobstructed, and how many shots or cuts it has. If it has cuts or two characters, plan which part each line covers now. The timeline is built in step 7, after the lines, voices and cost are agreed.
3. **The line.** Use the user's exact words. If they want you to write it, draft a line that fits the character and the clip's length, about 2.5 words per second (an 8-second clip holds about 20 words), and get approval.
4. **The voice.** Either the user's own audio (save it like the clip), or a script and a voice: call `voices_get-voices` and suggest two or three that fit the character's age, energy and setting. Clone a voice with `voices_clone-voice` only if the user explicitly asks and owns, or has permission to use, the sample. Cloning saves a voice to the account, can count against plan limits, and isn't idempotent: confirm the sample and the name, call it once, and after a lost or failed response list voices with `voices_get-voices` to see whether it was saved before trying again. Never retry it on your own or change the sample or name to get around an error.
View the complete source on GitHub

Skills included

  • ai-video-to-talking
  • batch-lipsync
  • edit-dialogue
  • lipsync
  • localize-campaign
  • setup
  • sync-api
  • talking-photo
  • translate-and-dub
  • troubleshoot

Repository facts

License
MIT
Created
Nov 5, 2026
Last pushed
Nov 5, 2026
Forks
0
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 6 notes
  • skills/ai-video-to-talking/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/localize-campaign/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/localize-campaign/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/localize-campaign/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/localize-campaign/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/translate-and-dub/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 393 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "sync. labs",     "url": "https://sync.so"
  • Network accessline 4
    "name": "sync. labs",     "url": "https://sync.so"   },
  • Network accessline 5
    "url": "https://sync.so"

.claude-plugin/plugin.json

  • Network accessline 6
    "author": {     "name": "sync. labs",     "url": "https://sync.so"
  • Network accessline 7
    "name": "sync. labs",     "url": "https://sync.so"   },
  • Network accessline 8
    "url": "https://sync.so"
  • Network accessline 9
    },   "homepage": "https://sync.so",   "repository": "https://github.com/synchronicity-labs/skills",
  • Network accessline 10
    "homepage": "https://sync.so",
  • Network accessline 11
    "repository": "https://github.com/synchronicity-labs/skills",
  • Network accessline 27
    ],   "icon": "./assets/logo.png",   "documentationUrl": "https://sync.so/docs",
  • Network accessline 28
    "icon": "./assets/logo.png",   "documentationUrl": "https://sync.so/docs",   "supportUrl": "https://support.sync.so",
  • Network accessline 29
    "documentationUrl": "https://sync.so/docs",
  • Network accessline 30
    "supportUrl": "https://support.sync.so",
  • Network accessline 31
    "privacyPolicyUrl": "https://sync.so/privacy",
  • Network accessline 32
    "termsOfServiceUrl": "https://sync.so/terms"

skills/ai-video-to-talking/SKILL.md

  • Access to secretsline 5
    [Credential-related source omitted]

skills/ai-video-to-talking/references/api.md

  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 12
    -d "{\"fileName\":\"clip.mp4\",\"contentType\":\"video/mp4\",\"size\":$SIZE}" # -> {"uploadUrl": "...", "url": "...", "expiresIn": ...} curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API k
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API key on this request
  • Network accessline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]

skills/ai-video-to-talking/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/ai-video-to-talking/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

skills/batch-lipsync/SKILL.md

  • Access to secretsline 5
    [Credential-related source omitted]
  • Access to secretsline 12
    [Credential-related source omitted]
  • Network accessline 19
    | --- | --- | | `id` | A unique, stable row name, such as `lead-042` or `es-ad1`. It names the output and keys retries. | | `video` | A local path, `https://` URL or sync. asset ID. Use `image` instead for a still picture (sync-3). |
  • Network accessline 20
    | `id` | A unique, stable row name, such as `lead-042` or `es-ad1`. It names the output and keys retries. | | `video` | A local path, `https://` URL or sync. asset ID. Use `image` instead for a still picture (sync-3). | | `audio` | A local 
  • Network accessline 21
    | `video` | A local path, `https://` URL or sync. asset ID. Use `image` instead for a still picture (sync-3). |
  • Access to secretsline 38
    [Credential-related source omitted]

skills/batch-lipsync/references/batch-api.md

  • Network accessline 5
    `POST /v2/batch` takes many `/v2/generate` requests in one submission. sync. tracks every row and gives you one results file, plus a webhook when the batch finishes. Full guide: https://sync.so/docs/api-reference/guides/batch-processing.
  • Network accessline 25
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Network accessline 29
    ],   "dry_run": true,   "webhook_url": "https://example.com/hooks/sync-batch"
  • Network accessline 30
    "dry_run": true,   "webhook_url": "https://example.com/hooks/sync-batch" }'
  • Network accessline 31
    "webhook_url": "https://example.com/hooks/sync-batch"

skills/batch-lipsync/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/batch-lipsync/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

skills/batch-lipsync/scripts/sync_batch.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 38
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Network accessline 79
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Network accessline 80
    if not key:         sys.exit("SYNC_API_KEY is not set. Create a key at https://sync.so/settings/api-keys.")     data = json.dumps(body).encode() if body is not None else None
  • Network accessline 81
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Network accessline 82
    data = json.dumps(body).encode() if body is not None else None     url = path if path.startswith("http") else f"{API}{path}"     req = urllib.request.Request(url, data=data, method=method)
  • Network accessline 83
    url = path if path.startswith("http") else f"{API}{path}"     req = urllib.request.Request(url, data=data, method=method)     req.add_header("x-api-key", key)
  • Network accessline 84
    req = urllib.request.Request(url, data=data, method=method)
  • Network accessline 109
    def fetch(url: str, dest: Path | None = None):
  • Network accessline 111
    with urllib.request.urlopen(url, timeout=300) as resp:
  • Network accessline 262
    presign = api("POST", "/v2/assets/upload", {"fileName": path.name, "contentType": content_type, "size": size})         with open(path, "rb") as fh:             put = urllib.request.Request(presign["uploadUrl"], data=fh.read(), method="PUT")
  • Network accessline 263
    with open(path, "rb") as fh:             put = urllib.request.Request(presign["uploadUrl"], data=fh.read(), method="PUT")         put.add_header("Content-Type", content_type)
  • Network accessline 264
    put = urllib.request.Request(presign["uploadUrl"], data=fh.read(), method="PUT")
  • Network accessline 265
    put.add_header("Content-Type", content_type)         urllib.request.urlopen(put, timeout=600).read()         asset = api("POST", "/v2/assets", {"url": presign["url"], "type": kind.upper(), "name": path.name})
  • Network accessline 266
    urllib.request.urlopen(put, timeout=600).read()
  • Network accessline 418
    return     dest.parent.mkdir(parents=True, exist_ok=True)     fetch(url, dest)
  • Network accessline 419
    dest.parent.mkdir(parents=True, exist_ok=True)     fetch(url, dest)     state.update(rid, file=str(dest))
  • Network accessline 420
    fetch(url, dest)
  • Network accessline 558
    status, headers, raw = api_raw("GET", batch["outputUrl"])     text = fetch(headers.get("Location") or headers.get("location")).decode() if 300 <= status < 400 else raw.decode()
  • Network accessline 559
    text = fetch(headers.get("Location") or headers.get("location")).decode() if 300 <= status < 400 else raw.decode()

skills/edit-dialogue/SKILL.md

  • Network accessline 12
    If no sync. tools are available, follow [references/connect.md](references/connect.md) first. The REST version of this workflow is in early access and needs features enabled per organization; see https://sync.so/docs/developer-guides/dialog

skills/edit-dialogue/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/edit-dialogue/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

skills/lipsync/SKILL.md

  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 47
    6. **Confirm.** Show the video, the speech, the voice, any sync mode and the estimate, and wait for approval. Skip the wait only if the user already approved this exact request and cost. 7. **Create.** Call `create-lipsync` once with the vi
  • Network accessline 49
    8. **Wait and deliver.** Call `generate_get-generation` with the returned `id` and `wait: true`, repeating until the status is `COMPLETED`, `FAILED` or `REJECTED`. Most jobs take a few minutes. Give the exact `outputMediaUrl` unchanged. In 

skills/lipsync/references/api.md

  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 12
    -d "{\"fileName\":\"clip.mp4\",\"contentType\":\"video/mp4\",\"size\":$SIZE}" # -> {"uploadUrl": "...", "url": "...", "expiresIn": ...} curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API k
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API key on this request
  • Network accessline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]

skills/lipsync/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/lipsync/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

skills/localize-campaign/SKILL.md

  • Access to secretsline 5
    [Credential-related source omitted]

skills/localize-campaign/references/api.md

  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 12
    -d "{\"fileName\":\"clip.mp4\",\"contentType\":\"video/mp4\",\"size\":$SIZE}" # -> {"uploadUrl": "...", "url": "...", "expiresIn": ...} curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API k
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API key on this request
  • Network accessline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]

skills/localize-campaign/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/localize-campaign/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

skills/setup/SKILL.md

  • Network accessline 3
    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 quest
  • Network accessline 4
    license: MIT compatibility: Uses the hosted sync. MCP server (https://mcp.sync.so/mcp) or a SYNC_API_KEY. ---
  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 30
    - Quote before every paid generation and wait for approval. - If there are no credits or free generations left, say so plainly and point to https://sync.so/billing/subscription. Don't start a job that will fail.
  • Network accessline 31
    - If there are no credits or free generations left, say so plainly and point to https://sync.so/billing/subscription. Don't start a job that will fail.

skills/setup/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/sync-api/SKILL.md

  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 14
    [Credential-related source omitted]
  • Access to secretsline 14
    [Credential-related source omitted]
  • Network accessline 15
    - **Base URL** `https://api.sync.so/v2`, header `x-api-key`.
  • Access to secretsline 16
    [Credential-related source omitted]
  • Network accessline 17
    - **Docs for anything not covered here:** https://sync.so/docs/llms-full.txt, plus the error catalog at `GET https://api.sync.so/v2/errors`, which needs no key.
  • Network accessline 21
    1. **Get the media into sync.** Public `https://` URLs work directly. For user uploads or local files, use the three-step asset upload (presigned URL, `PUT`, register) and keep the returned asset ID. Don't proxy large files through your own
  • Network accessline 32
    - **Several faces:** set `options.active_speaker_detection`, for example `{"auto_detect": true}`, or point at the speaker with `frame_number` and `coordinates`. - **Dubbing:** one video input and `dubParams: {"providerName": "elevenlabs", "
  • Network accessline 34
    - **Different audio on different parts of one video:** use `segments`. See https://sync.so/docs/developer-guides/segments.

skills/sync-api/references/api.md

  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 12
    -d "{\"fileName\":\"clip.mp4\",\"contentType\":\"video/mp4\",\"size\":$SIZE}" # -> {"uploadUrl": "...", "url": "...", "expiresIn": ...} curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API k
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API key on this request
  • Network accessline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]

skills/sync-api/references/batch-api.md

  • Network accessline 5
    `POST /v2/batch` takes many `/v2/generate` requests in one submission. sync. tracks every row and gives you one results file, plus a webhook when the batch finishes. Full guide: https://sync.so/docs/api-reference/guides/batch-processing.
  • Network accessline 25
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Network accessline 29
    ],   "dry_run": true,   "webhook_url": "https://example.com/hooks/sync-batch"
  • Network accessline 30
    "dry_run": true,   "webhook_url": "https://example.com/hooks/sync-batch" }'
  • Network accessline 31
    "webhook_url": "https://example.com/hooks/sync-batch"

skills/sync-api/references/python.md

  • Network accessline 18
    API = "https://api.sync.so/v2"
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 25
    file = pathlib.Path(path)     content_type = mimetypes.guess_type(file.name)[0] or "application/octet-stream"     presign = httpx.post(f"{API}/assets/upload", headers=HEADERS, timeout=30,
  • Network accessline 26
    content_type = mimetypes.guess_type(file.name)[0] or "application/octet-stream"     presign = httpx.post(f"{API}/assets/upload", headers=HEADERS, timeout=30,                          json={"fileName": file.name, "contentType": content_type,
  • Network accessline 27
    presign = httpx.post(f"{API}/assets/upload", headers=HEADERS, timeout=30,
  • Network accessline 31
    # The presigned upload URL must not receive the API key.     with file.open("rb") as body:         httpx.put(target["uploadUrl"], content=body, headers={"Content-Type": content_type}, timeout=600).raise_for_status()
  • Network accessline 32
    with file.open("rb") as body:         httpx.put(target["uploadUrl"], content=body, headers={"Content-Type": content_type}, timeout=600).raise_for_status()     asset = httpx.post(f"{API}/assets", headers=HEADERS, timeout=30, json={"url": tar
  • Network accessline 33
    httpx.put(target["uploadUrl"], content=body, headers={"Content-Type": content_type}, timeout=600).raise_for_status()
  • Network accessline 34
    asset = httpx.post(f"{API}/assets", headers=HEADERS, timeout=30, json={"url": target["url"], "type": kind})
  • Network accessline 39
    def estimate(model: str, seconds: float) -> float:     resp = httpx.post(f"{API}/generations/estimate", headers=HEADERS, timeout=30,
  • Network accessline 40
    resp = httpx.post(f"{API}/generations/estimate", headers=HEADERS, timeout=30,
  • Network accessline 69
    """Polling fallback. Prefer a webhook in production."""     while True:         resp = httpx.get(f"{API}/generate/{generation_id}", headers=HEADERS, timeout=30,
  • Network accessline 70
    while True:         resp = httpx.get(f"{API}/generate/{generation_id}", headers=HEADERS, timeout=30,                          params={"wait": "true", "timeout": 10})
  • Network accessline 71
    resp = httpx.get(f"{API}/generate/{generation_id}", headers=HEADERS, timeout=30,
  • Network accessline 110
    - **Script instead of audio:** `from sync.common import Tts, ElevenLabs`, then `Tts(provider=ElevenLabs(voice_id="<voiceId>", script="Hello!"))` in place of `Audio(...)`. List voices with `GET /v2/voices`. - **Image input, `dubParams`, `pro
  • Network accessline 111
    - **Image input, `dubParams`, `projectId`:** if your installed `syncsdk` doesn't type them yet, send the same JSON body with `httpx.post(f"{API}/generate", headers={**HEADERS, "Idempotency-Key": key}, json=body)`.

skills/sync-api/references/typescript.md

  • Network accessline 11
    const API = "https://api.sync.so/v2";
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 13
    [Credential-related source omitted]
  • Network accessline 16
    async function api<T>(path: string, init: RequestInit = {}): Promise<T> {   const res = await fetch(`${API}${path}`, {
  • Network accessline 17
    const res = await fetch(`${API}${path}`, {
  • Network accessline 31
    });   // The presigned upload URL must not receive the API key.   const put = await fetch(target.uploadUrl, { method: "PUT", headers: { "Content-Type": contentType }, body: await readFile(path) });
  • Network accessline 32
    // The presigned upload URL must not receive the API key.   const put = await fetch(target.uploadUrl, { method: "PUT", headers: { "Content-Type": contentType }, body: await readFile(path) });   if (!put.ok) throw new Error(`upload failed: $
  • Network accessline 33
    const put = await fetch(target.uploadUrl, { method: "PUT", headers: { "Content-Type": contentType }, body: await readFile(path) });

skills/sync-api/references/webhooks.md

  • Network accessline 3
    Pass `webhookUrl` (an `https://` URL that's publicly reachable) when creating a generation. When the generation reaches a final status, sync. sends a `POST` with the generation as JSON: `id`, `status`, `outputUrl`, `error`, `errorCode`, `mo
  • Network accessline 7
    Each request carries `Sync-Signature: t=<unix seconds>,v1=<hex>`. `v1` is the HMAC-SHA256 of `"<t>.<raw body>"`, keyed with the organization's webhook secret (`whsec_…`, from https://sync.so/settings/webhooks or `GET /v2/organizations/webho
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]

skills/talking-photo/SKILL.md

  • Access to secretsline 5
    [Credential-related source omitted]

skills/talking-photo/references/api.md

  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 12
    -d "{\"fileName\":\"clip.mp4\",\"contentType\":\"video/mp4\",\"size\":$SIZE}" # -> {"uploadUrl": "...", "url": "...", "expiresIn": ...} curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API k
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API key on this request
  • Network accessline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]

skills/talking-photo/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/talking-photo/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

skills/translate-and-dub/SKILL.md

  • Access to secretsline 5
    [Credential-related source omitted]

skills/translate-and-dub/references/api.md

  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 12
    -d "{\"fileName\":\"clip.mp4\",\"contentType\":\"video/mp4\",\"size\":$SIZE}" # -> {"uploadUrl": "...", "url": "...", "expiresIn": ...} curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API k
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    curl -sS --fail -X PUT -H 'Content-Type: video/mp4' --data-binary @./clip.mp4 "<uploadUrl>"   # no API key on this request
  • Network accessline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]

skills/translate-and-dub/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/translate-and-dub/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

skills/troubleshoot/SKILL.md

  • Network accessline 28
    | A timeout or lost response after a create | The job may or may not have started | Look for it with `generate_get-generations` (or `batches_list`), or retry the identical request with the same idempotency key, which returns the original if
  • Network accessline 29
    | `concurrency_limit_reached` | The plan's limit on simultaneous jobs is reached | Wait `error.retryAfterMs` (or for a running job to finish), then retry the same request. More creates won't clear it. | | `insufficient_credits`, `free_tier_
  • Network accessline 30
    | `insufficient_credits`, `free_tier_generations_exhausted`, `generation_plan_duration_exceeded`, `plan_feature_unavailable` | A plan or balance limit | Quote the message and point to https://sync.so/billing/subscription. Don't retry, and d

skills/troubleshoot/references/connect.md

  • Network accessline 7
    1. **sync. MCP tools are available.** You can see tools such as `create-lipsync`, `generate_estimate-cost` and `get-account-context`. Some clients prefix them, for example `mcp__sync__create-lipsync` or `mcp__plugin_sync_sync__create-lipsyn
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 13
    The server is `https://mcp.sync.so/mcp`. Users sign in with their sync. account through OAuth, so there is no key to copy.
  • Network accessline 15
    | Client | How to connect | | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every pr
  • Network accessline 16
    | --- | --- | | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. | | Cla
  • Network accessline 17
    | Claude Code | If the sync. plugin is installed, run `/mcp`, select `sync` and sign in. Otherwise run `claude mcp add --transport http sync https://mcp.sync.so/mcp` (add `--scope user` for every project), then `/mcp`. |
  • Network accessline 18
    | Claude.ai or Claude Desktop | Settings → Connectors → Add custom connector, URL `https://mcp.sync.so/mcp`, then Connect. |
  • Network accessline 19
    | Codex | `codex mcp add sync --url https://mcp.sync.so/mcp`, then `codex mcp login sync`. |
  • Network accessline 20
    | Cursor | Add `{"mcpServers": {"sync": {"url": "https://mcp.sync.so/mcp"}}}` to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). |
  • Network accessline 21
    | VS Code | Add `{"servers": {"sync": {"type": "http", "url": "https://mcp.sync.so/mcp"}}}` to `.vscode/mcp.json`. |
  • Network accessline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 31
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    Every account starts on the free tier: a few short generations each month, watermarked. Paid plans raise length limits, concurrency and file size, and remove the watermark from Creator up. Don't promote plans. When a limit blocks the reques

skills/troubleshoot/references/media-input.md

  • Network accessline 9
    | What the user has | Route | | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `
  • Network accessline 10
    | --- | --- | | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the ret
  • Network accessline 11
    | A public `https://` media URL | For `create-lipsync`, pass it as `videoUrl`, `imageUrl` or `audioUrl`. Translation, Edit Dialogue and timeline lipsync need a saved asset: register the URL with `assets_create` and use the returned `id`. Si
  • Network accessline 24
    curl -sS --fail -X PUT -H "Content-Type: video/mp4" --data-binary @"./clip.mp4" "<uploadUrl>"

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 378 facts

and 328 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/ai-video-to-talking/SKILL.md.cursor/skills/<skill-name>/
Gemini CLINativeManifest gemini-extension.json.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/ai-video-to-talking/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/ai-video-to-talking/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.