{"slug":"jianshuo-wjs-translating-subtitles-044bb1","title":"SRT\u5b57\u5e55\u7ffb\u8bd1\u4e0e\u6807\u70b9\u91cd\u5207\u5206","description":"\u628a\u4e00\u79cd\u8bed\u8a00\u7684SRT\u6216\u8f6c\u5199\u6587\u672c\u8bd1\u6210\u76ee\u6807\u8bed\u8a00\u6216\u53cc\u8bedSRT\uff0c\u5e76\u6309\u6807\u70b9\u5f3a\u5236\u91cd\u5207\u5206\uff0c\u4f7f\u6bcf\u6761\u5b57\u5e55\u5728\u771f\u5b9e\u53e5\u8bfb\u5904\u7ed3\u675f\uff1b\u542b\u4e2d\u82f1\u884c\u5bbd\u4e0a\u9650\u3001\u4e2d\u6587\u5197\u4f59\u6307\u793a\u8bcd\u5220\u51cf\u4e0e\u4e13\u6709\u540d\u8bcd\u4fdd\u7559\u89c4\u5219\u3002\u7eaf\u6587\u672c\uff0c\u4e0d\u542b\u538b\u5236\u4e0e\u914d\u97f3\u3002","category":"\u6539\u7a3f","tags":["jianshuo","\u5efa\u7855","\u6539\u7a3f"],"author":"\u5efa\u7855 \u00b7 jianshuo","source_url":"https://github.com/jianshuo/claude-skills/blob/d36bc423286a34eb32adc604121e5c7714b08740/wjs-translating-subtitles/SKILL.md","license":"MIT","status":"published","verification":"source_reviewed","verification_notes":"\u5df2\u6838\u5bf9\u539f\u59cb\u4ed3\u5e93\u3001\u56fa\u5b9a\u63d0\u4ea4\u3001\u8bb8\u53ef\u3001\u6280\u80fd\u6b63\u6587\u4e0e\u5305\u7ed3\u6784\uff0c\u5e76\u8865\u5145\u4e2d\u6587\u6267\u884c\u9a8c\u6536\u8bf4\u660e\uff1b\u672a\u8fd0\u884c\u5305\u5185\u811a\u672c\u3002","revision":"ae124a02417f422498bc2c36b6d82263","created_at":"2026-11-02T14:47:08+00:00","updated_at":"2026-11-02T14:47:08+00:00","source_repo":"jianshuo/claude-skills","source_path":"wjs-translating-subtitles/SKILL.md","source_commit":"d36bc423286a34eb32adc604121e5c7714b08740","source_updated_at":"2026-11-02T14:46:04+00:00","stars":0,"proxy_score":null,"score":null,"grade":null,"dimensions":{},"evaluation":{},"installs":0,"platforms":[],"formats":[],"category_slug":"editing","category_name":"\u6539\u7a3f","quality":{"review_type":"text_and_package_review","readiness":"text_ready","reviewed_at":"2026-11-02T14:46:04+00:00","review_summary":"\u7ffb\u8bd1\u4e0e\u91cd\u5207\u5206\u89c4\u5219\u5199\u5f97\u5177\u4f53\u53ef\u6267\u884c\uff0c\u542b\u4e2d\u82f1\u884c\u5bbd\u4e0e\u5e38\u89c1\u673a\u7ffb\u8154\u5904\u7406\uff0c\u7eaf\u6587\u672c\u5373\u53ef\u4f7f\u7528\uff1b\u4f46\u4e0a\u4e0b\u6e38\u6280\u80fd\u4e0d\u5728\u5305\u5185\uff0c\u4e14\u9a8c\u8bc1\u7ed3\u8bba\u672a\u7ecf\u672c\u6b21\u590d\u6838\u3002","cost_notes":"\u672c\u6280\u80fd\u672c\u8eab\u4e0d\u8c03\u7528\u4ed8\u8d39API\uff1b\u82e5\u540e\u7eed\u63a5TTS\u914d\u97f3\uff0c\u8d39\u7528\u9700\u5355\u72ec\u786e\u8ba4\u3002","source_sha256":"3415a88f9b4e70ed1ec20bbe0c65965b185ec29f17b41d3b1a6f345becd49aa6","prerequisites":["\u7eaf\u6587\u672c\u5904\u7406\uff0c\u65e0\u9700\u989d\u5916\u5de5\u5177\u6216\u8d26\u53f7","\u82e5\u540e\u7eed\u8981\u538b\u5236\u6216\u914d\u97f3\uff0c\u9700\u53e6\u884c\u5177\u5907\u5bf9\u5e94\u6280\u80fd\u4e0e\u5de5\u5177"],"checks":["\u6bcf\u6761\u5b57\u5e55\u7ed3\u5c3e\u4e3a\u6807\u70b9\uff0c\u65e0\u5728\u540d\u8bcd\u3001\u52a8\u8bcd\u3001\u8fde\u8bcd\u6216\u51a0\u8bcd\u5904\u622a\u65ad","\u4e2d\u6587\u884c\u4e0d\u8d85\u8fc7\u7ea615\u5b57\u3001\u82f1\u6587\u884c\u4e0d\u8d85\u8fc7\u7ea642\u5b57\u7b26\uff0c\u5355\u6761\u4e0d\u8d85\u8fc72\u884c","\u65f6\u95f4\u6233\u4e3a\u9017\u53f7\u6beb\u79d2\u4e14\u65e0\u91cd\u53e0\uff0c\u5e8f\u53f7\u4ece1\u8fde\u7eed","\u4e2d\u6587\u8bd1\u6587\u4e2d\u65e0\u6e90\u8bed\u76f4\u8bd1\u5e26\u5165\u7684\u5197\u4f59\u201c\u8fd9/\u90a3/\u8fd9\u4e2a/\u90a3\u4e2a\u201d","\u4e13\u6709\u540d\u8bcd\u3001\u6570\u5b57\u3001\u65e5\u671f\u4e0e\u6e90\u6587\u4e00\u81f4\uff0c\u672a\u64c5\u81ea\u6539\u5199\u6216\u97f3\u8bd1"],"limitations":["\u4ec5\u7b80\u4f53\u4e2d\u6587\u4e0e\u82f1\u6587\u88ab\u4f5c\u8005\u6807\u4e3a\u5145\u5206\u9a8c\u8bc1\uff0c\u5176\u4ed6\u76ee\u6807\u8bed\u8a00\u6309\u540c\u4e00\u89c4\u5219\u5904\u7406\u4f46\u672a\u7ecf\u672c\u5305\u9a8c\u8bc1","\u91cd\u5207\u5206\u4f9d\u8d56\u6e90SRT\u5df2\u6709\u65f6\u95f4\u6233\uff0c\u7eaf\u6587\u672c\u8f93\u5165\u9700\u5148\u81ea\u884c\u751f\u6210\u65f6\u95f4\u8f74","\u65e0\u6cd5\u5224\u65ad\u8bd1\u6587\u8bed\u4e49\u662f\u5426\u5b8c\u5168\u51c6\u786e\uff0c\u9700\u4eba\u5de5\u6216\u53e6\u8bbe\u6821\u5bf9\u73af\u8282","\u672a\u8fd0\u884c\u4efb\u4f55\u811a\u672c\u6216\u6837\u4f8b\uff0c\u89c4\u5219\u6b63\u786e\u6027\u4ec5\u6765\u81ea\u6587\u672c\u5ba1\u9605"],"issues":["SKILL.md \u5f15\u7528 /wjs-transcribing-audio\u3001/wjs-burning-subtitles\u3001/wjs-dubbing-video \u7b49\u672a\u968f\u5305\u63d0\u4f9b\u7684\u6280\u80fd\uff0c\u5355\u72ec\u5b89\u88c5\u65f6\u8fd9\u4e9b\u73af\u8282\u7f3a\u5931","\u6587\u4e2d\u201cfully validated\u201d\u4e3a\u4f5c\u8005\u8868\u8ff0\uff0c\u672c\u6b21\u5ba1\u9605\u672a\u590d\u73b0\u9a8c\u8bc1\u8fc7\u7a0b","\u65e0\u914d\u5957\u811a\u672c\u6216\u6821\u9a8c\u5de5\u5177\uff0c\u8d28\u91cf\u95e8\u9700\u4eba\u5de5\u9010\u9879\u6838\u5bf9"],"missing_files":[]},"quality_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/SHILIU-QUALITY.md","usage_guide":{"task":"\u5c06\u6e90\u8bed\u8a00SRT\u7ffb\u8bd1\u4e3a\u76ee\u6807\u8bed\u8a00SRT\u6216\u53cc\u8bedSRT\uff0c\u5e76\u91cd\u5207\u5206\u5b57\u5e55\u8fb9\u754c\u4f7f\u5176\u843d\u5728\u6807\u70b9\u5904\u3002","inputs":"\u6e90\u8bed\u8a00SRT\u6587\u4ef6\uff08\u6216\u5e26/\u4e0d\u5e26\u65f6\u95f4\u6233\u7684\u8f6c\u5199\u6587\u672c\uff09\uff1b\u76ee\u6807\u8bed\u8a00\uff08zh-CN\u3001en \u6216\u5176\u4ed6\uff09\uff1b\u662f\u5426\u53cc\u8bed\uff1b\u5e73\u53f0\u884c\u5bbd\u7ea6\u675f\uff08\u53ef\u9009\uff09\u3002","outputs":"\u76ee\u6807\u8bed\u8a00SRT\uff08\u5982 input.zh-CN.srt\uff09\u6216\u53cc\u8bedSRT\uff08\u6e90\u884c\u5728\u4e0a\u3001\u8bd1\u884c\u5728\u4e0b\uff09\uff1b\u5e8f\u53f7\u8fde\u7eed\u3001\u9017\u53f7\u6beb\u79d2\u3001\u65f6\u95f4\u4e0d\u91cd\u53e0\u3001\u6bcf\u6761\u4ee5\u6807\u70b9\u7ed3\u5c3e\uff1b\u5fc5\u8981\u65f6\u9644\u4e0d\u786e\u5b9a\u6027\u8bf4\u660e\uff08\u5199\u5728\u56de\u590d\u4e2d\uff0c\u4e0d\u5199\u5165SRT\uff09\u3002","example_input":"\u628a\u8fd9\u4e2a\u897f\u73ed\u7259\u8bed SRT \u7ffb\u6210\u7b80\u4f53\u4e2d\u6587\uff0c\u6309\u6807\u70b9\u91cd\u65b0\u65ad\u53e5\uff0c\u8f93\u51fa\u4e2d\u6587\u5355\u8bed SRT\u3002","example_output":"\u793a\u610f\uff08\u975e\u771f\u5b9e\u8bd1\u6587\uff09\uff1ainput.zh-CN.srt\uff0c\u6761\u76ee\u5f62\u5982 1 / 00:00:01,200 --> 00:00:04,800 / \u6ca1\u5173\u7cfb\u3002\uff1b\u6761\u6570\u591a\u4e8e\u6e90\u6587\u4ef6\uff0c\u56e0\u957f\u53e5\u88ab\u6309\u6807\u70b9\u62c6\u5206\uff1b\u65f6\u95f4\u6233\u7531\u539f\u6761\u5185\u5b57\u7b26\u4f4d\u7f6e\u63d2\u503c\u5f97\u5230\u3002"},"read_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1","skill_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/SKILL.md","download_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/download","install_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/install","files":[{"path":"LICENSE","bytes":1082,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/LICENSE"},{"path":"SHILIU-QUALITY.md","bytes":1816,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/SHILIU-QUALITY.md"},{"path":"SKILL.md","bytes":11054,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/SKILL.md"},{"path":"shiliu-quality.json","bytes":1739,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/shiliu-quality.json"},{"path":"shiliu-source.json","bytes":277,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/shiliu-source.json"},{"path":"usage.json","bytes":878,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-translating-subtitles-044bb1/files/usage.json"}],"content":"---\nname: wjs-translating-subtitles\ndescription: 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 \u2014 no audio, no burn-in. Triggers \u2014 \"\u7ffb\u8bd1\u5b57\u5e55\", \"\u7ffb\u6210\u4e2d\u6587\", \"translate this SRT\", \"\u4e2d\u82f1\u53cc\u8bed\u5b57\u5e55\", \"\u628a\u8fd9\u4e2a SRT \u7ffb\u8bd1\u6210 X\", \"bilingual subtitles\".\n---\n\n# wjs-translating-subtitles\n\nSource-language SRT in \u2192 target-language (or bilingual) SRT out. **This skill is text-only.** Burn-in lives in `/wjs-burning-subtitles`; voice dub in `/wjs-dubbing-video`.\n\n## When to use\n\n- User has an SRT in language A and wants it in language B.\n- User pasted a transcript (with or without timestamps) and wants a translation that becomes an SRT.\n- User has an SRT but cues end mid-sentence \u2014 this skill's re-segmentation step fixes that.\n\n## When NOT to use\n\n- No source-language SRT yet \u2192 run `/wjs-transcribing-audio` first.\n- User wants burned-in subtitles \u2192 finish translation here, then `/wjs-burning-subtitles`.\n- User wants voice dub \u2192 finish translation here, then `/wjs-dubbing-video`.\n\n## Pick the target\n\nResolve target from the user's phrasing once, don't re-ask:\n\n- \"\u7ffb\u6210\u4e2d\u6587 / \u4e2d\u6587\u5b57\u5e55 / \u4e2d\u6587\u914d\u97f3\" \u2192 `zh-CN`.\n- \"translate to English / English subs / English dub\" \u2192 `en`.\n- \"bilingual\" / \"\u53cc\u8bed\" \u2192 produce both `.<source>.srt` and `.<target>.srt` (and optionally a combined `.<source>-<target>.srt`).\n- Ambiguous \u2192 default to whichever the user has historically chosen in the project.\n\nSimplified 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 \u2014 see `/wjs-dubbing-video` before promising.\n\n## Shared translation principles\n\n- Prioritize meaning over literal wording.\n- Use concise subtitle-style language \u2014 viewers read at ~3 wps for Chinese, ~3\u20134 wps for English; lines that exceed that go off-screen before they can be read.\n- Preserve the tone of the speaker. Casual source \u2192 casual target; formal source \u2192 formal target.\n- Do not over-translate names, brands, cultural references, or technical terms.\n- Keep numbers, dates, names, and places accurate.\n- If a phrase has no exact equivalent, translate the meaning naturally. No literal/word-for-word constructions.\n- Avoid stiff, machine-translated output.\n\n## Translating into Simplified Chinese (zh-CN)\n\n- Use natural spoken Mandarin for casual speech, formal Mandarin for formal speech.\n- Use Simplified characters only (do NOT use Traditional Hanzi unless the user explicitly asks).\n- 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).\n- Use Chinese punctuation: \u300c\uff0c\u300d\u300c\u3002\u300d\u300c\uff1b\u300d\u300c\uff1a\u300d\u300c\u3001\u300d\u300c\u2014\u2014\u300d. Never mix English commas/periods into Chinese subtitles.\n- **Minimize filler demonstratives \u300c\u8fd9\u300d\u300c\u90a3\u300d\u300c\u8fd9\u4e2a\u300d\u300c\u90a3\u4e2a\u300d\u300c\u90a3\u4efd\u300d\u300c\u90a3\u79cd\u300d\u300c\u90a3\u91cc\u300d\u300c\u90a3\u6837\u300d.** Spanish-to-Chinese (and English-to-Chinese) MT routinely inserts these because the source has overt demonstratives that Chinese usually drops. Examples:\n  - \"\u8fd9\u628a\u6211\u4eec\u5e26\u5165\u4e8c\u5143\u4e16\u754c\u7684\u8f7d\u4f53\" \u2192 \"\u628a\u6211\u4eec\u5e26\u5165\u4e8c\u5143\u7684\u8f7d\u4f53\"\n  - \"\u8fd0\u7528\u90a3\u4efd\u80fd\u91cf\" \u2192 \"\u8fd0\u7528\u8fd9\u80a1\u80fd\u91cf\" if needed, or just \"\u8fd0\u7528\u80fd\u91cf\"\n  - \"\u6b63\u662f\u5728\u8fd9\u5408\u4e00\u91cc\" \u2192 \"\u6b63\u662f\u5728\u5408\u4e00\u4e2d\"\n  - \"\u50cf\u7f6a\u4eba\u90a3\u6837\u7ffb\u6eda\" \u2192 \"\u50cf\u7f6a\u4eba\u7ffb\u6eda\" / \"\u50cf\u7f6a\u4eba\u822c\u7ffb\u6eda\"\n  - \"\u90a3\u4efd\u7cbe\u5fae\u7684\u89c9\u77e5\" \u2192 \"\u7cbe\u5fae\u7684\u89c9\u77e5\"\n  Keep them only when they carry real meaning (deixis, contrast, or fixed phrase like spiritual \"\u6211\u5c31\u662f\u90a3\" / \"tat tvam asi\"). Default is to delete; add back only if the sentence becomes ambiguous.\n\nExamples (Spanish \u2192 Chinese):\n\n```text\nSpanish: No pasa nada.            \u2192 Chinese: \u6ca1\u5173\u7cfb\u3002\nSpanish: Vamos a ver qu\u00e9 pasa.    \u2192 Chinese: \u6211\u4eec\u770b\u770b\u4f1a\u53d1\u751f\u4ec0\u4e48\u3002\nSpanish: Me parece una locura.    \u2192 Chinese: \u6211\u89c9\u5f97\u8fd9\u592a\u75af\u72c2\u4e86\u3002\nSpanish: \u00bfQu\u00e9 quieres decir?      \u2192 Chinese: \u4f60\u662f\u4ec0\u4e48\u610f\u601d\uff1f\nSpanish: La verdad es que no lo esperaba.\n                                  \u2192 Chinese: \u8bf4\u5b9e\u8bdd\uff0c\u6211\u6ca1\u60f3\u5230\u4f1a\u8fd9\u6837\u3002\n```\n\n## Translating into English (en)\n\n- Use natural conversational English. Avoid translationese (\"It is precisely through entering the body\u2026\" \u2192 \"It's by entering the body\u2026\").\n- Lines should be roughly **40\u201342 characters** or fewer (about 7\u20139 words), max 2 lines per cue. Hard cap 50 chars per line.\n- Use ASCII punctuation: `,` `.` `;` `:` `\u2014` (em-dash). Avoid Unicode curly quotes \u2014 keeps `.srt` portable.\n- For contemplative/spiritual content, prefer plain words over Latinate jargon: \"presence\" over \"manifestation,\" \"wholeness\" over \"totality,\" \"wake up\" over \"awaken to consciousness.\"\n\nExamples (Spanish \u2192 English):\n\n```text\nSpanish: No pasa nada.            \u2192 English: It's nothing.\nSpanish: Vamos a ver qu\u00e9 pasa.    \u2192 English: Let's see what happens.\nSpanish: Me parece una locura.    \u2192 English: This feels crazy to me.\nSpanish: \u00bfQu\u00e9 quieres decir?      \u2192 English: What do you mean?\nSpanish: La verdad es que no lo esperaba.\n                                  \u2192 English: Honestly, I wasn't expecting this.\n```\n\n## Re-segment at punctuation boundaries (mandatory)\n\nWhisper 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\u00edritu 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 \u2014 and improves on-screen reading too.\n\nPunctuation set differs:\n\n- Chinese cues must end at `\uff0c` `\u3002` `\uff1b` `\uff1a` `\u2014\u2014` or `\u3001`.\n- English cues must end at `,` `.` `;` `:` `\u2014` (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\".\n\nRules:\n\n- **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.\n- It is fine (and often necessary) to **split** a single source cue into 2\u20134 shorter cues, with timestamps interpolated by character position within the original cue's duration.\n- It is fine to **merge** the tail of one source cue with the head of the next when they form one clause \u2014 the merged cue inherits the start of the first and the end of the second.\n- Target 3\u20138 seconds per cue. Cues shorter than ~1.5s feel choppy on screen; cues longer than ~10s usually contain a missed punctuation break.\n\nA typical 2\u20133 minute talk yields roughly 25\u201340 punct-bounded cues from 12\u201318 raw source cues. Don't try to keep the original cue count.\n\nWhen 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.\n\n## SRT output rules\n\n```text\n1\n00:00:01,200 --> 00:00:04,800\n\u4e2d\u6587\u5b57\u5e55\u5185\u5bb9\n\n2\n00:00:04,800 --> 00:00:08,500\n\u4e2d\u6587\u5b57\u5e55\u5185\u5bb9\n```\n\n- Number subtitles sequentially starting from `1`.\n- Timestamp format: `HH:MM:SS,mmm`. Comma milliseconds, **never** period milliseconds.\n- Do not overlap timestamps.\n- Preserve the original timing unless adjustment is necessary.\n- Each subtitle should usually be 1\u20132 lines.\n- If one subtitle is too long, split it into shorter subtitles when timing allows.\n- Do not add commentary inside the subtitle file.\n\n## Bilingual output\n\nWhen the user asks for bilingual: source on first line, target on second:\n\n```text\n1\n00:00:01,200 --> 00:00:04,800\nNo pasa nada.\n\u6ca1\u5173\u7cfb\u3002\n```\n\nRules:\n\n- Keep source first, target second.\n- Preserve timing.\n- Avoid adding extra explanations unless requested.\n- Keep both lines short enough to read.\n\n## Output formats\n\nDepending on the user request, provide one or more:\n\n1. Target-only `.srt`\n2. Bilingual `.srt` (source line + target line)\n3. Target transcript without timestamps\n4. Side-by-side source/target table\n\nDefault output for \"translate this SRT\" with no other modifiers: **target-only `.srt`** + a short uncertainty note if needed.\n\n## File naming\n\n```text\ninput.srt                          # source (e.g., from /wjs-transcribing-audio)\n\ntranslated outputs:\n  input.zh-CN.srt                  # Simplified Chinese only\n  input.en.srt                     # English only\n  input.es-zh.srt                  # Spanish + Chinese bilingual\n  input.es-en.srt                  # Spanish + English bilingual\n  input.es-zh-en.srt               # three-language\n```\n\nBCP-47-style suffixes make the target language obvious at a glance and keep multiple target-language outputs side-by-side.\n\n## Handling unclear audio markers\n\nIf the source SRT contains `[inaudible]` or `[unclear]`:\n\n- Translate the surrounding context naturally.\n- Keep the bracketed marker in the target SRT (don't invent content).\n- 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).\n\n## Quality gate before handoff\n\n- Subtitle numbers are sequential\n- Timestamps are valid (`HH:MM:SS,mmm`, no overlap)\n- Milliseconds use commas\n- Translation is natural; speaker tone preserved\n- Line length within platform/cue caps\n- Proper nouns accurate\n- No cue ends mid-clause / mid-phrase\n- No invented content\n\n## Downstream\n\n- **`/wjs-burning-subtitles`** \u2014 burn this SRT onto the video, or soft-mux as a togglable track.\n- **`/wjs-dubbing-video`** \u2014 generate a TTS voice dub from this SRT, time-aligned to the original timing.\n- **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`.\n\n## Common pitfalls\n\n- **Letting the cue end mid-sentence after translation.** The source's silence-aligned cues are unsafe boundaries; re-segment at punctuation, always.\n- **Filler demonstratives in Chinese output.** MT inserts \u300c\u8fd9\u300d/\u300c\u90a3\u300d because the source had `eso/that`. Delete them aggressively.\n- **Period milliseconds.** Whisper local writes `.mmm`; SRT spec is `,mmm`. Always normalize.\n- **Translating proper nouns.** Brand names, place names, technical terms \u2014 leave as-is or use the conventional target-language version (e.g., \"OpenAI\" stays, \"New York\" \u2192 \"\u7ebd\u7ea6\").\n- **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.\n- **Forgetting to do re-segmentation when no dub is requested.** The punct-bounded SRT is also better for *reading* \u2014 line endings at natural pauses match how viewers scan. Re-segment even when burn-only.\n","usage":"\u8bfb\u53d6 SKILL.md\uff0c\u5e76\u6309\u9700\u8bfb\u53d6\u914d\u5957\u6587\u4ef6\uff1b\u4e0b\u8f7d ZIP \u83b7\u53d6\u5b8c\u6574\u5305\u3002\u6280\u80fd\u662f\u4efb\u52a1\u65b9\u6cd5\uff0c\u4e0d\u6388\u4e88\u65b0\u589e\u8d26\u6237\u3001\u4ed8\u8d39\u6216\u7cfb\u7edf\u6743\u9650\u3002"}
