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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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>/Heat
Insufficient historyNot 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
30-day change not yet available: not enough history.
Individual skills in this repository
- ai-video-to-talking
skills/ai-video-to-talking - batch-lipsync
skills/batch-lipsync - edit-dialogue
skills/edit-dialogue - lipsync
skills/lipsync - localize-campaign
skills/localize-campaign - setup
skills/setup - sync-api
skills/sync-api - talking-photo
skills/talking-photo - translate-and-dub
skills/translate-and-dub - troubleshoot
skills/troubleshoot
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 tokensAlways available to the agent
SKILL.md
1,386 tokensWhen the skill is activated
Reference documents
3,532 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Rules
Files
../../.claude-plugin/marketplace.jsonasset540 bytes../../.claude-plugin/plugin.jsonasset948 bytes../../assets/logo.pngasset8,266 bytesSKILL.mdcore5,772 bytesSKILL.mdcore5,772 bytesagents/openai.yamlasset233 bytesreferences/api.mddoc4,169 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytesreferences/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 GitHubbatch-lipsync
When your agent uses it
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).
What it loads into context
Frontmatter
198 tokensAlways available to the agent
SKILL.md
1,550 tokensWhen the skill is activated
Reference documents
2,826 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Build the manifest
- 2. Quote the whole run
- 3. Run it
- 4. Deliver
- Rules
Scripts executed separately
scripts/sync_batch.py
Files
SKILL.mdcore6,436 bytesagents/openai.yamlasset194 bytesreferences/batch-api.mddoc3,787 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytesscripts/sync_batch.pyruns27,525 bytes
Read SKILL.md
# Lipsync many videos
Delivers one MP4 per row of the user's list, plus a results table that maps each row to its output.
If no sync. tools are available and there's no `SYNC_API_KEY`, follow [references/connect.md](references/connect.md) first.
## 1. Build the manifest
Turn whatever the user gave you (a CSV, a spreadsheet, a folder of files, "this video with each of these 30 audio files") into a CSV in the working directory, one row per output video:
| Column | Meaning |
| --- | --- |
| `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). |View the complete source on GitHubedit-dialogue
When your agent uses it
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.
What it loads into context
Frontmatter
134 tokensAlways available to the agent
SKILL.md
1,228 tokensWhen the skill is activated
Reference documents
1,873 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs
- Tools
- Steps
- Limits
Files
SKILL.mdcore5,144 bytesagents/openai.yamlasset206 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytes
Read SKILL.md
# Fix spoken words
Delivers one MP4 where only the agreed words change. Everything else keeps the original picture and voice.
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/dialogue-editing.
## Inputs
- **Video:** one person speaking, up to 10 minutes, as a local file, public URL or sync. video asset ID.
- **The fix:** which words to change or remove, and what to say instead. Never guess the replacement words.
## Tools
| Step | Tool |View the complete source on GitHublipsync
When your agent uses it
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).
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
1,266 tokensWhen the skill is activated
Reference documents
3,037 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs
- Tools
- Steps
- Rules
Files
SKILL.mdcore5,127 bytesagents/openai.yamlasset194 bytesreferences/api.mddoc4,169 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytes
Read SKILL.md
# Lipsync a video
Delivers one MP4 of the video with the lips matched to the new speech.
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) for the same steps.
## Inputs
- **Video:** a local file, a public URL, a sync. video asset ID, or a social link.
- **Speech:** an audio file, URL or asset, or a script plus a voice.
Ask only for what's missing. Never invent the words.
## ToolsView the complete source on GitHublocalize-campaign
When your agent uses it
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.
What it loads into context
Frontmatter
175 tokensAlways available to the agent
SKILL.md
1,201 tokensWhen the skill is activated
Reference documents
3,037 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Plan the matrix
- 2. Check what dubbing won't change
- 3. Quote, then pilot
- 4. Run the rest
- 5. Deliver
Files
SKILL.mdcore5,108 bytesSKILL.mdcore5,108 bytesSKILL.mdcore5,108 bytesSKILL.mdcore5,108 bytesSKILL.mdcore5,108 bytesagents/openai.yamlasset218 bytesreferences/api.mddoc4,169 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytes
Read SKILL.md
# Localize a campaign
Delivers every video in every target language as a dubbed, lip-synced MP4 with a predictable name, plus a sheet the regional teams can review from.
If no sync. tools are available, follow [references/connect.md](references/connect.md) first. Without the MCP tools, each version is one `POST /v2/generate` with `dubParams`, as in [references/api.md](references/api.md).
## 1. Plan the matrix
1. **Videos.** List each source video with its name, length and where it comes from (a file, URL or social link).
2. **Markets to languages.** Turn markets into languages and confirm them with the user. Germany, Austria and Switzerland are all German; Brazil is Portuguese; most of LATAM is Spanish. Call `get-translation-options` and check that every language is supported, naming the closest option for any that isn't. Don't guess regional variants the options don't list.
3. **The matrix.** Show it as a table: one row per video, one column per language, and the total number of versions.
4. **Files.** Agree a naming pattern up front, by default `<campaign>_<video>_<lang>.mp4`, for example `spring24_hero-30s_de.mp4`.
## 2. Check what dubbing won't changeView the complete source on GitHubsetup
When your agent uses it
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.
What it loads into context
Frontmatter
119 tokensAlways available to the agent
SKILL.md
598 tokensWhen the skill is activated
Reference documents
870 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Rules
Files
SKILL.mdcore2,452 bytesagents/openai.yamlasset201 bytesreferences/connect.mddoc3,343 bytes
Read SKILL.md
# Set up sync. labs
Gets a new user from install to a first result in a couple of minutes. Setup itself never starts paid work.
## Steps
1. **Check the connection.** If sync. tools such as `get-account-context` are available, call `get-account-context` and `get-account-usage`, then go to step 3.
2. **Connect.** Follow [references/connect.md](references/connect.md) for this client: the hosted MCP server with sign-in for most people, or an API key for scripts and CI. If the client needs a restart to load the server, say so and stop there.
3. **Account.** Greet the user by organization name and say what's available: credits, the free allowance, or the plan's limits (`generationLimits.maxOutputDurationSeconds`, `generationLimits.concurrency`). Don't promote plans.
4. **What it can do.** Offer these, one example prompt each:
- **Lipsync a video:** "Lipsync ./interview.mp4 to ./new-take.wav"
- **Make a photo talk:** "Make this portrait say: welcome to the team"
- **Make an AI clip talk:** "My Veo clip has no dialogue. Make the character say this line."
- **Translate and dub:** "Dub this YouTube video into Spanish"View the complete source on GitHubsync-api
When your agent uses it
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).
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
1,409 tokensWhen the skill is activated
Reference documents
5,674 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Ground rules
- The flow to implement
- Choosing options
- Scale
- Before you hand the code back
Files
SKILL.mdcore5,779 bytesagents/openai.yamlasset198 bytesreferences/api.mddoc4,169 bytesreferences/batch-api.mddoc3,787 bytesreferences/python.mddoc5,050 bytesreferences/typescript.mddoc5,665 bytesreferences/webhooks.mddoc3,381 bytes
Read SKILL.md
# Build with the sync. API
Builds a server-side integration that uploads media, saves each request before submitting it, tracks jobs to completion, and retries without starting duplicate paid work.
## Ground rules
- **Server-side only.** The API key goes in `SYNC_API_KEY` on the server, never in browser or mobile code. Browsers talk to your backend, and your backend talks to sync. Keys come from https://sync.so/settings/api-keys.
- **Base URL** `https://api.sync.so/v2`, header `x-api-key`.
- **SDKs:** Python `pip install syncsdk` (`from sync import Sync`), TypeScript `npm i @sync.so/sdk` (`new SyncClient()`). Both read `SYNC_API_KEY`. The SDKs cover generations (`create`, `get`, `list`) and batches. Some newer request fields can lag behind the API: image inputs, `dubParams`, `dialogueEdit`, `projectId`, uploads and cost estimates. When the installed SDK's types don't include one, call the endpoint over HTTP as the references show, instead of forcing the types.
- **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.
## The flow to implement
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 API.View the complete source on GitHubtalking-photo
When your agent uses it
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).
What it loads into context
Frontmatter
176 tokensAlways available to the agent
SKILL.md
1,091 tokensWhen the skill is activated
Reference documents
3,037 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs
- Tools
- Steps
- When something fails
- Rules
Files
SKILL.mdcore4,637 bytesagents/openai.yamlasset192 bytesreferences/api.mddoc4,169 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytes
Read SKILL.md
# Make a photo talk
Delivers one MP4 of the picture speaking the user's words. The video is as long as the speech.
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) for the same steps.
## Inputs
- **Picture:** a local image, an image attached in chat, a public URL, or a sync. image asset ID. If the user has no picture and you can generate images, offer to make one: one clear face, looking at the camera, mouth closed, head and shoulders, plain background. Otherwise ask for one.
- **Speech:** a script, which needs a voice, or an audio file, URL or asset.
Ask only for what's missing. Never invent the words. If the user asks you to write them, draft a short script and get approval before quoting.
## ToolsView the complete source on GitHubtranslate-and-dub
When your agent uses it
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).
What it loads into context
Frontmatter
160 tokensAlways available to the agent
SKILL.md
885 tokensWhen the skill is activated
Reference documents
3,037 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs
- Tools
- Steps
- Rules
Files
SKILL.mdcore3,742 bytesSKILL.mdcore3,742 bytesagents/openai.yamlasset197 bytesreferences/api.mddoc4,169 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytes
Read SKILL.md
# Translate and dub a video
Delivers one dubbed MP4 per target language, with lips matched to the new audio. The dubbed voice follows the original speaker's.
If no sync. tools are available, follow [references/connect.md](references/connect.md) first. Without the MCP tools, use `dubParams` on `POST /v2/generate` as shown in [references/api.md](references/api.md).
## Inputs
- **Video:** a local file, a public URL, a sync. video asset ID, or a social link. It needs its original speech on the audio track.
- **Target languages:** ask if none were given. Use `sourceLang: "auto"` unless the user names the spoken language.
## Tools
| Step | Tool |View the complete source on GitHubtroubleshoot
When your agent uses it
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).
What it loads into context
Frontmatter
166 tokensAlways available to the agent
SKILL.md
1,099 tokensWhen the skill is activated
Reference documents
1,873 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Gather the facts
- 2. Find the cause
- 3. Resume
- 4. Report it
Files
SKILL.mdcore4,777 bytesagents/openai.yamlasset195 bytesreferences/connect.mddoc3,343 bytesreferences/media-input.mddoc3,852 bytes
Read SKILL.md
# Troubleshoot sync. work
Finds out what actually happened, says it plainly, and resumes the work without starting a second paid job.
## 1. Gather the facts
Collect what's known before guessing: the tool or request that failed, the exact error text and code, and any generation, batch, project, asset or job ID. Then read the current state:
- A generation: `generate_get-generation` with its `id`. Note `status`, `error` and `errorCode`.
- No ID: `generate_get-generations` with a small `limit`, or `batches_list` for batches, to find it.
- The account: `get-account-context` for plan limits and concurrency, `get-account-usage` for credits.
Never ask for the user's API key or password, and don't paste signed media links into anything public.
View the complete source on GitHubSkills 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 shellAutomated 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:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/localize-campaign/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/localize-campaign/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/localize-campaign/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/localize-campaign/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/translate-and-dub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 296 network referencesin 37 files: batch-lipsync/scripts/sync_batch.py:38 sync-api/references/python.md:18 ai-video-to-talking/references/connect.md:7 and 34 more
- No hidden or obfuscated text
- No instruction overrides
- 1 executable scriptin 1 file: batch-lipsync/scripts/sync_batch.py:1
- 96 references to secretsin 29 files: ai-video-to-talking/references/api.md:5 lipsync/references/api.md:5 localize-campaign/references/api.md:5 and 26 more
- No requests to vote in Hot
Show all 393 signals by file
.claude-plugin/marketplace.json
.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
- Access to secrets in the frontmatter of the SKILL.mdai-video-to-talking/SKILL.md:5Low confidence
- Network access in prose of documentationai-video-to-talking/references/api.md:5Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/api.md:5Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:10Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:11Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/api.md:11Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:12Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:13Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:14Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:15Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/api.md:15Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:23Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/api.md:23Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:35Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/api.md:35Low confidence
- Network access in code of documentationai-video-to-talking/references/api.md:58Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/api.md:58Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:7Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:8Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/connect.md:8Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:13Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:15Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:16Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:17Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:18Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:19Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:20Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:21Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:30Low confidence
- Access to secrets in prose of documentationai-video-to-talking/references/connect.md:30Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:31Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valueai-video-to-talking/references/connect.md:31Low confidence
- Access to secrets in prose of documentationai-video-to-talking/references/connect.md:32Low confidence
- Network access in prose of documentationai-video-to-talking/references/connect.md:36Low confidence
- Network access in prose of documentationai-video-to-talking/references/media-input.md:9Low confidence
- Network access in prose of documentationai-video-to-talking/references/media-input.md:10Low confidence
- Network access in prose of documentationai-video-to-talking/references/media-input.md:11Low confidence
- Network access in code of documentationai-video-to-talking/references/media-input.md:24Low confidence
- Access to secrets in the frontmatter of the SKILL.mdbatch-lipsync/SKILL.md:5Low confidence
- Access to secrets in prose of the SKILL.mdbatch-lipsync/SKILL.md:12Low confidence
- Network access in prose of the SKILL.mdbatch-lipsync/SKILL.md:19Low confidence
- Network access in prose of the SKILL.mdbatch-lipsync/SKILL.md:20Low confidence
- Network access in prose of the SKILL.mdbatch-lipsync/SKILL.md:21Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuebatch-lipsync/SKILL.md:38Low confidence
- Network access in prose of documentationbatch-lipsync/references/batch-api.md:5Low confidence
- Network access in code of documentationbatch-lipsync/references/batch-api.md:25Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valuebatch-lipsync/references/batch-api.md:25Low confidence
- Network access in code of documentationbatch-lipsync/references/batch-api.md:29Low confidence
- Network access in code of documentationbatch-lipsync/references/batch-api.md:30Low confidence
- Network access in code of documentationbatch-lipsync/references/batch-api.md:31Low confidence
and 328 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/ai-video-to-talking/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Native | Manifest gemini-extension.json | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/ai-video-to-talking/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard 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.