本文へ移動
cccskills
無料GitHub で公開

wjs-translating-subtitles

Use when the user has an SRT (or transcript text) in one language and wants it translated to another, with punctuation-bounded re-segmentation so cues end at real sentence breaks. Simplified Chinese (zh-CN) and English (en) are first-class targets; other targets follow the same rules. Outputs a target-language SRT or bilingual SRT — no audio, no burn-in. Triggers — "翻译字幕", "翻成中文", "translate this SRT", "中英双语字幕", "把这个 SRT 翻译成 X", "bilingual subtitles".

インストール方法を見る

含まれるファイル(1)

  • SKILL.md10.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

wjs-translating-subtitles

Source-language SRT in → target-language (or bilingual) SRT out. This skill is text-only. Burn-in lives in /wjs-burning-subtitles; voice dub in /wjs-dubbing-video.

When to use

  • User has an SRT in language A and wants it in language B.
  • User pasted a transcript (with or without timestamps) and wants a translation that becomes an SRT.
  • User has an SRT but cues end mid-sentence — this skill's re-segmentation step fixes that.

When NOT to use

  • No source-language SRT yet → run /wjs-transcribing-audio first.
  • User wants burned-in subtitles → finish translation here, then /wjs-burning-subtitles.
  • User wants voice dub → finish translation here, then /wjs-dubbing-video.

Pick the target

Resolve target from the user's phrasing once, don't re-ask:

  • "翻成中文 / 中文字幕 / 中文配音" → zh-CN.
  • "translate to English / English subs / English dub" → en.
  • "bilingual" / "双语" → produce both .<source>.srt and .<target>.srt (and optionally a combined .<source>-<target>.srt).
  • Ambiguous → default to whichever the user has historically chosen in the project.

Simplified Chinese and English are fully validated. Other targets (Japanese, Korean, French, etc.) work via the same rules; the bottleneck is TTS-voice availability if dubbing follows — see /wjs-dubbing-video before promising.

Shared translation principles

  • Prioritize meaning over literal wording.
  • Use concise subtitle-style language — viewers read at ~3 wps for Chinese, ~3–4 wps for English; lines that exceed that go off-screen before they can be read.
  • Preserve the tone of the speaker. Casual source → casual target; formal source → formal target.
  • Do not over-translate names, brands, cultural references, or technical terms.
  • Keep numbers, dates, names, and places accurate.
  • If a phrase has no exact equivalent, translate the meaning naturally. No literal/word-for-word constructions.
  • Avoid stiff, machine-translated output.

Translating into Simplified Chinese (zh-CN)

  • Use natural spoken Mandarin for casual speech, formal Mandarin for formal speech.
  • Use Simplified characters only (do NOT use Traditional Hanzi unless the user explicitly asks).
  • Subtitle lines should be roughly 15 Chinese characters or fewer per line, max 2 lines per cue (3 only when unavoidable for very long cues).
  • Use Chinese punctuation: 「,」「。」「;」「:」「、」「——」. Never mix English commas/periods into Chinese subtitles.
  • Minimize filler demonstratives 「这」「那」「这个」「那个」「那份」「那种」「那里」「那样」. Spanish-to-Chinese (and English-to-Chinese) MT routinely inserts these because the source has overt demonstratives that Chinese usually drops. Examples:
    • "这把我们带入二元世界的载体" → "把我们带入二元的载体"
    • "运用那份能量" → "运用这股能量" if needed, or just "运用能量"
    • "正是在这合一里" → "正是在合一中"
    • "像罪人那样翻滚" → "像罪人翻滚" / "像罪人般翻滚"
    • "那份精微的觉知" → "精微的觉知" Keep them only when they carry real meaning (deixis, contrast, or fixed phrase like spiritual "我就是那" / "tat tvam asi"). Default is to delete; add back only if the sentence becomes ambiguous.

Examples (Spanish → Chinese):

Spanish: No pasa nada.            → Chinese: 没关系。
Spanish: Vamos a ver qué pasa.    → Chinese: 我们看看会发生什么。
Spanish: Me parece una locura.    → Chinese: 我觉得这太疯狂了。
Spanish: ¿Qué quieres decir?      → Chinese: 你是什么意思?
Spanish: La verdad es que no lo esperaba.
                                  → Chinese: 说实话,我没想到会这样。

Translating into English (en)

  • Use natural conversational English. Avoid translationese ("It is precisely through entering the body…" → "It's by entering the body…").
  • Lines should be roughly 40–42 characters or fewer (about 7–9 words), max 2 lines per cue. Hard cap 50 chars per line.
  • Use ASCII punctuation: , . ; : — (em-dash). Avoid Unicode curly quotes — keeps .srt portable.
  • For contemplative/spiritual content, prefer plain words over Latinate jargon: "presence" over "manifestation," "wholeness" over "totality," "wake up" over "awaken to consciousness."

Examples (Spanish → English):

Spanish: No pasa nada.            → English: It's nothing.
Spanish: Vamos a ver qué pasa.    → English: Let's see what happens.
Spanish: Me parece una locura.    → English: This feels crazy to me.
Spanish: ¿Qué quieres decir?      → English: What do you mean?
Spanish: La verdad es que no lo esperaba.
                                  → English: Honestly, I wasn't expecting this.

Re-segment at punctuation boundaries (mandatory)

Whisper segments by silence/breath, not grammar. The result almost always has cues that end mid-sentence (e.g., "...es una forma de aterrizar," next cue starts "el espíritu en el cuerpo..."). Any TTS that processes one cue at a time will then insert an unnatural pause exactly where the original speaker did not. The fix is mandatory before dubbing — and improves on-screen reading too.

Punctuation set differs:

  • Chinese cues must end at , 。 ; : —— or 、.
  • English cues must end at , . ; : — (em-dash) or, in practice for subtitles, occasionally a single dash. Never end an English cue on a comma-less clause break, and never split inside a phrase like "kind of" or "in order to".

Rules:

  • Every cue must end at a real punctuation mark. Never let a cue end on a noun, verb, conjunction, or article that flows into the next cue.
  • It is fine (and often necessary) to split a single source cue into 2–4 shorter cues, with timestamps interpolated by character position within the original cue's duration.
  • It is fine to merge the tail of one source cue with the head of the next when they form one clause — the merged cue inherits the start of the first and the end of the second.
  • Target 3–8 seconds per cue. Cues shorter than ~1.5s feel choppy on screen; cues longer than ~10s usually contain a missed punctuation break.

A typical 2–3 minute talk yields roughly 25–40 punct-bounded cues from 12–18 raw source cues. Don't try to keep the original cue count.

When TTS dubbing follows: the punctuation-bounded structure means each TTS clip is a complete utterance with proper end-intonation, and concatenating clips sounds natural because every join is at a real pause point.

SRT output rules

1
00:00:01,200 --> 00:00:04,800
中文字幕内容

2
00:00:04,800 --> 00:00:08,500
中文字幕内容
  • Number subtitles sequentially starting from 1.
  • Timestamp format: HH:MM:SS,mmm. Comma milliseconds, never period milliseconds.
  • Do not overlap timestamps.
  • Preserve the original timing unless adjustment is necessary.
  • Each subtitle should usually be 1–2 lines.
  • If one subtitle is too long, split it into shorter subtitles when timing allows.
  • Do not add commentary inside the subtitle file.

Bilingual output

When the user asks for bilingual: source on first line, target on second:

1
00:00:01,200 --> 00:00:04,800
No pasa nada.
没关系。

Rules:

  • Keep source first, target second.
  • Preserve timing.
  • Avoid adding extra explanations unless requested.
  • Keep both lines short enough to read.

Output formats

Depending on the user request, provide one or more:

  1. Target-only .srt
  2. Bilingual .srt (source line + target line)
  3. Target transcript without timestamps
  4. Side-by-side source/target table

Default output for "translate this SRT" with no other modifiers: target-only .srt + a short uncertainty note if needed.

File naming

input.srt                          # source (e.g., from /wjs-transcribing-audio)

translated outputs:
  input.zh-CN.srt                  # Simplified Chinese only
  input.en.srt                     # English only
  input.es-zh.srt                  # Spanish + Chinese bilingual
  input.es-en.srt                  # Spanish + English bilingual
  input.es-zh-en.srt               # three-language

BCP-47-style suffixes make the target language obvious at a glance and keep multiple target-language outputs side-by-side.

Handling unclear audio markers

If the source SRT contains [inaudible] or [unclear]:

  • Translate the surrounding context naturally.
  • Keep the bracketed marker in the target SRT (don't invent content).
  • If a [unclear] chunk makes a cue ungrammatical in the target language, leave it bracketed and add a note in the response (not in the SRT file).

Quality gate before handoff

  • Subtitle numbers are sequential
  • Timestamps are valid (HH:MM:SS,mmm, no overlap)
  • Milliseconds use commas
  • Translation is natural; speaker tone preserved
  • Line length within platform/cue caps
  • Proper nouns accurate
  • No cue ends mid-clause / mid-phrase
  • No invented content

Downstream

  • /wjs-burning-subtitles — burn this SRT onto the video, or soft-mux as a togglable track.
  • /wjs-dubbing-video — generate a TTS voice dub from this SRT, time-aligned to the original timing.
  • For bilingual playback: most platforms can soft-mux multiple subtitle tracks, but if you need bilingual visible at once, burn the *.source-target.srt directly via /wjs-burning-subtitles.

Common pitfalls

  • Letting the cue end mid-sentence after translation. The source's silence-aligned cues are unsafe boundaries; re-segment at punctuation, always.
  • Filler demonstratives in Chinese output. MT inserts 「这」/「那」 because the source had eso/that. Delete them aggressively.
  • Period milliseconds. Whisper local writes .mmm; SRT spec is ,mmm. Always normalize.
  • Translating proper nouns. Brand names, place names, technical terms — leave as-is or use the conventional target-language version (e.g., "OpenAI" stays, "New York" → "纽约").
  • Over-shortening for cue caps. If a line is genuinely longer than the cap, split into two cues with interpolated timestamps; don't drop meaning to fit the cap.
  • Forgetting to do re-segmentation when no dub is requested. The punct-bounded SRT is also better for reading — line endings at natural pauses match how viewers scan. Re-segment even when burn-only.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

王建硕的思维框架与表达方式。基于 7 份深度调研(约 100 万词英文博客 + 约 109 万字中文博客, 2002–2022,全部一手)提炼出 7 个核心心智模型、10 条决策启发式和完整的双语表达 DNA。 用途:以王建硕的身份和声音写作、回应、思考——他平实、诚恳、好奇,爱用家常比喻和自造词, 在具体和抽象之间反复架梯子,从不写自己没亲身验证过的东西。 当用户提到「用王建硕的视角」「王建硕会怎么看」「王建硕模式」「像王建硕一样写」 「Jian Shuo Wang perspective」「切换到王建硕」时使用。 即使用户只是说「帮我用王建硕的角度想想」「如果是王建硕会怎么写这篇」也应触发。 一旦激活,本次对话后续所有回应都保持王建硕身份,直到用户明确说「退出」—— 不需要每轮重新点名。 不适用:用户要的是关于王建硕本人的客观介绍 / 事实查询(「王建硕是谁」「他哪年创业的」), 那种问题正常回答即可,不要进入角色扮演。

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user asks to audit what's wrong with a project, "make it right", "看看项目出了什么问题", "为什么用户的需求还没上线", "为什么没提交App Store", "为什么没新build", or wants a holistic state-of-the-project check covering unmerged branches, stalled PRs, failed GitHub Actions, stale builds, plan drift (TODOS.md / ROADMAP), unreleased commits, and log errors. Runs read-only investigation, presents a grouped checklist, fixes only after explicit user confirmation. Aware of the Cathier iOS app workflow (Xcode + fastlane + auto-merge @claude PRs from in-app feedback).

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user has a video + an SRT and wants the subtitles either burned into the pixels (libass, always-visible) or soft-muxed as a togglable track. Also handles the final composite step for the localization pipeline — burn subs, mix a dub track, and keep the original audio as a low-volume bed, all in ONE ffmpeg encode (no cascade). Verifies libass availability and auto-downloads a static evermeet ffmpeg build when Homebrew's stripped binary lacks it. Triggers — "烧字幕", "硬字幕", "burn subtitles", "burn-in subs", "embed subtitle", "soft mux SRT", "把字幕烧进视频", "做最终合成".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user complains about spam on his X/Twitter posts — 同城面付 / 寻固炮 / 线下上门 / 免费破处 这类引流号在他推文下刷的 emoji 垃圾回复 — and wants them removed. Covers the last 7 days (X recent-search window). Triggers — "把这些spam删掉", "清理X垃圾回复", "推文下面好多引流号", "clean spam replies", "/wjs-cleaning-spam".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user wants a 王建硕-style WeChat article (article.md) turned into a narrated short MP4 video — TTS voiceover via 火山引擎 Volcano TTS, HyperFrames CSS/GSAP animation per scene, subtle SFX, abstract watercolor background, full pipeline rendering to 1080×1920 portrait MP4 (30-90s). Triggers — "把这篇文章做成视频", "做一个解说视频", "讲解视频", "/wjs-converting-text-to-video".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when migrating a WordPress site to a Hugo static site on GitHub Pages from a WXR export (.xml) plus the wp-content/uploads folder — preserving /archives/<id>/ URLs, localizing images, and deploying via GitHub Actions. Triggers — "把 WordPress 迁成 Hugo", "wordpress 转静态站", "migrate WordPress to Hugo", "WXR to Hugo", "publish WordPress to GitHub Pages", "/wjs-converting-wp-to-hugo".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

jianshuo のスキルをすべて見る

このスキルの問題を報告する