agentleFS
berkayburakkberkayburakk/tubecrew/skills/localize/SKILL.md

localize

Skill2 starsChanged 27 days agoMITView on GitHub

Translate and dub a finished video into other languages - a meaning-first translation that keeps every number from facts.json, a naturalness audit (a native listener, or one clearly labelled model-only), the creator's dubbing voice, a back-transcription check and a timing check that each dubbed paragraph fits the original picture. Use for "dub this video", "translate the narration", "make a Spanish version" or "add audio tracks in other languages".

22 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use soak-test, team-live-ops and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • lilangMaxSkill

    soak-test

    Generate a soak test protocol for extended play sessions. Defines what to observe, measure, and log during long play sessions to surface slow leaks, fatigue effects, and edge cases that only appear after sustained play. Primarily used in Polish and Release phases.

    Also in 9 projects that use this

  • lilangMaxSkill

    team-live-ops

    Orchestrate the live-ops team for post-launch content planning: coordinates live-ops-designer, economy-designer, analytics-engineer, community-manager, writer, and narrative-director to design and plan a season, event, or live content update.

    Also in 9 projects that use this

  • +10 more from lilangMax

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 4 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 21 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Keep exactly: every number, unit and date in facts.json.

    line 30
  2. Distinctive:

    Keep each sentence in its own paragraph: every paragraph has to fit its own slot in the picture.

    line 33
  3. Distinctive:

    Read every paragraph twice, first against the source for meaning, then aloud for naturalness:

    line 40
  4. Distinctive:

    No subject drift: who sells, who pays, who owns is still clear.

    line 44
  5. Distinctive:

    No translationese: calqued idioms, source word order, bureaucratic verbs.

    line 45
  6. Very specific:

    Read the dubbing station from ~/.tubecrew/stack.json (run the setup skill if it is missing):

    line 53
  7. Very specific:

    Only clone a voice whose owner agreed.

    line 60
  8. Very specific:

    Write each language's title (at most 100 characters) and description (at most 5000 bytes) into upload.json localizations.

    line 82

“Common” is measured: kept by at least 6 in 10 of the 21 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Localize a video

The viewer should hear a narrator who talks the way people in their country talk, saying exactly the same facts, in time with the same pictures. Start from the final script (after the fact-check) and the final render: a later change to the source means re-translating and re-voicing every changed paragraph.

$SKILL below is this skill's folder.

Files

dub/<lang>/script.md       translation, same paragraph ids (P01, P02, ...) as script.md
dub/<lang>/tts.md          the text sent to the voice engine (numbers spelled out), if it differs
dub/<lang>/voice/P01.wav   one audio file per paragraph, named by its id
dub/<lang>/narration.wav   the paragraphs joined into one track (for the voice check and YouTube Studio)
dub/<lang>/captions.srt    captions timed to the dub
qa/voice-check-<lang>.json, qa/dub-fit-<lang>.json
upload.json                "localizations": {"<lang>": {"title": ..., "description": ...}}

1. Translate for meaning, not word by word

  • Rebuild each sentence the way a native narrator would say it: word order, idiom, form of address and rhythm of the target language. Keep the creator's questions, doubts and emphasis; never invent experiences or evidence.
  • Keep exactly: every number, unit and date in facts.json; the currency (a US company's dollars stay dollars); the country and institutions of the events; hedges ("about", "reportedly", "the company says"); product names and commands.
  • Keep each sentence in its own paragraph: every paragraph has to fit its own slot in the picture.
  • Length targets per language, the number table and the regional variant: $SKILL/references/translation.md. Shorten by cutting filler and repetition, never a number, a name, a direction (up/down, profit/loss) or a hedge.
  • Title and description say the same promise in the target language, with the same chapter times and links.

2. Native-listener audit

Read every paragraph twice, first against the source for meaning, then aloud for naturalness:

  • Hedges kept: "can keep" did not become "keeps".
  • Time direction right: "years ahead" did not become "years ago".
  • No subject drift: who sells, who pays, who owns is still clear.
  • No translationese: calqued idioms, source word order, bureaucratic verbs.
  • Names, terms and numbers read the way this language says them.

A model-only naturalness check is not human review. Unless a native speaker listened, write "model audit, not a native speaker" in the report.

3. Voice

Read the dubbing station from ~/.tubecrew/stack.json (run the setup skill if it is missing):

  • cosyvoice: local, free, one job at a time on the GPU. Use a clean reference clip of the creator's own voice.
  • elevenlabs: costs credits. Estimate them first (about one credit per character of tts.md), tell the creator the number and the remaining balance, and generate only after a yes.
  • none: stop after translated captions, title and description.

Only clone a voice whose owner agreed. Detail and retry rules: $SKILL/references/voice-and-timing.md.

4. Check each language

Back-transcribe the dub with the check-voiceover skill, then check the timing:

python <check-voiceover>/scripts/voice_check.py dub/es/script.md dub/es/narration.wav --language es \
  --out qa/voice-check-es.json
python $SKILL/scripts/dub_fit.py script.md qa/voice-check-transcript.json dub/es/voice --lang es

voice_check.py takes the paragraph files joined in order (or the assembled track). dub_fit.py needs the original narration's word-timed transcript (voice_check.py saves one when it transcribes audio). It FAILs a paragraph that needs more than 1.25x speed-up or starts more than 4 s from where the original paragraph started, and says about how much shorter to rewrite it. Fix by rewriting the translation, never by speeding the voice past the cap; then re-voice only the changed paragraphs and run both checks again. A high back-transcription score does not prove natural delivery: list the lines that need a human listen.

5. Package

  • Captions follow the dubbed timing; a number stays on one line with its unit.
  • Write each language's title (at most 100 characters) and description (at most 5000 bytes) into upload.json localizations; upload-private sends them with the video.
  • YouTube's API cannot attach extra audio tracks: the creator adds each dubbed track in YouTube Studio. Nothing here publishes anything.

Report back

Per language: status (text ready, audio ready or blocked), the voice_check and dub_fit verdict lines, the paragraphs re-voiced, lines that need a human listen, credits spent, and who did the native audit.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.