/install youtube-cn-subtitle-burnin
YouTube Chinese Subtitle Burn-in
Overview
Turn a YouTube video into a Simplified Chinese or optional Chinese-English bilingual hard-subtitled MP4 and deliver the reusable subtitle files alongside it. Retain SRT/ASS, thumbnail, original/translated description, screenshots, design confirmation frames, and review notes. Treat subtitle quality as a video QA task, not just a translation task.
Workflow Decision
- New YouTube link: follow
references/workflow.mdend to end. - Existing subtitle/video needs fixing: inspect the current outputs, then run only the affected workflow stages.
- User reports a subtitle problem: locate the exact timestamp/subtitle first, then follow "Feedback Iteration" below.
Always load:
references/workflow.mdbefore producing a video.references/quality-gates.mdbefore accepting or delivering a result.references/review-template.mdwhen writing the review file.references/feedback-ledger.mdwhen the user gives feedback about a subtitle problem.
Non-Negotiable Rules
- Do not deliver a video until subtitle timing, sentence completeness, video streams, and sample screenshots have been checked.
- Do not treat the burned MP4 as the only deliverable. The final Chinese subtitle files must be kept and listed for delivery.
- Download and retain the original video thumbnail when downloading the video.
- Extract and retain the original YouTube description. If the description is not Chinese, translate it into Chinese with the current agent model and preserve proper nouns, product names, URLs, and chapter timestamps.
- Ask whether the video thumbnail/cover should be prepared for the Chinese-subtitled version unless the user already specified a cover preference. If the user asks for direct end-to-end completion and did not mention cover work, keep the original thumbnail only and record
cover edit: not requested. - Do not burn the whole video with an unreviewed subtitle style. First create a subtitled one-minute preview clip and confirm readability, especially font size and outline. If the first minute has no subtitles, extend or move the preview until subtitles are visible.
- Before full burn-in, extract 3-5 subtitle design confirmation frames from the preview and confirm size, line count, vertical position, and occlusion. In direct-completion mode, self-check these frames and record the result.
- When the user asks you to handle the whole job directly, self-check the preview with screenshots and continue instead of stopping for preview approval. Record that preview readability was self-checked.
- Default to translating with the current agent model. External LLM APIs or command-line translation tools are fallbacks only, not the main path.
- For long subtitles, translate through numbered batches from the stable
idvalues in the cleaned cue JSON, verify every id is returned, save a cache after each batch, and resume from the cache if interrupted. - Prefer semantic-screen subtitles: each screen should contain a complete sentence or closed meaning block. Avoid ending a screen with dangling words such as "所以,", "并且", "接下来要", "我要", "它会", or "然后会".
- Do not wrap subtitles by raw character count alone. Keep Chinese phrases, product names, English phrases, code, commands, and number/unit pairs intact across line breaks.
- Treat YouTube automatic subtitles as risky. Always check overlap before converting to ASS or burning.
- Bilingual mode is optional. Default to Chinese-only unless the user asks for bilingual subtitles. If the source video already has burned-in English subtitles, default to Chinese-only and move Chinese text away from the existing subtitle area unless the user explicitly requests bilingual output anyway.
- In bilingual mode, use Chinese above English. Chinese may use at most two lines, English defaults to one smaller line, and the whole subtitle area defaults to at most three lines. If Chinese would require three lines, repair or split the Chinese subtitles before generating bilingual ASS.
- If YouTube translated Chinese captions are rate-limited or unavailable, stop retrying after a small number of attempts and use English captions plus the current agent model. Record the source limitation in the review.
- Never overwrite previous MP4/SRT/ASS outputs. Create a new version and record what changed.
Scripts
Use these helpers from the skill directory:
python3 scripts/check_subtitle_quality.py path/to/subtitles.srt
python3 scripts/check_subtitle_quality.py path/to/subtitles.ass
python3 scripts/extract_youtube_description.py 01-source/video.info.json --out 01-source/video.description.original.md
python3 scripts/download_youtube_thumbnail.py "https://youtu.be/VIDEO_ID" --out-dir 01-source --format jpg
python3 scripts/prepare_youtube_transcript.py 01-source/video.en.vtt --json-out 02-transcripts/video.en.cues.json --srt-out 02-transcripts/video.en.cleaned.srt
python3 scripts/make_translation_batches.py 02-transcripts/video.en.cues.json --out-dir 03-translation/translation-batches --cache 03-translation/video.zh.cache.json --max-chars 6000
python3 scripts/apply_translation_cache.py 02-transcripts/video.en.cues.json 03-translation/video.zh.cache.json --srt-out 03-translation/video.zh.v1.srt
python3 scripts/repair_chinese_subtitles.py 03-translation/video.zh.v1.srt --out 03-translation/video.zh.v2.srt
python3 scripts/srt_to_ass.py 03-translation/video.zh.v2.srt --out 04-subtitle-ass/video.zh.v2.ass
python3 scripts/make_bilingual_ass.py --zh-srt 03-translation/video.zh.v2.srt --en-srt 02-transcripts/video.en.cleaned.srt --out 04-subtitle-ass/video.zh-en.v1.ass
python3 scripts/check_subtitle_style.py 04-subtitle-ass/video.zh-en.v1.ass --style-profile bilingual-default --require-version-comment
python3 scripts/check_bilingual_alignment.py --zh-srt 03-translation/video.zh.v2.srt --en-srt 02-transcripts/video.en.cleaned.srt --report 06-review/bilingual-alignment.md
python3 scripts/check_ffmpeg_subtitle_support.py
python3 scripts/burn_subtitles_pil.py path/to/source.mp4 path/to/subtitles.ass --out 05-output/output.zh-burned.vN.mp4
python3 scripts/inspect_video.py path/to/output.mp4
python3 scripts/make_preview_clip.py path/to/source.mp4 path/to/subtitles.ass --out 06-review/preview.v1.mp4
python3 scripts/extract_source_subtitle_frames.py path/to/source.mp4 --out-dir 06-review/source-subtitle-check
python3 scripts/extract_design_frames.py 06-review/preview.v1.mp4 path/to/subtitles.ass --out-dir 06-review/design-confirmation-v1
python3 scripts/extract_review_frames.py path/to/output.mp4 --out-dir 06-review/screenshots-vN
python3 scripts/make_cover_preview.py 07-cover/video.cover.zh.v1.png --out 07-cover/video.cover.zh.v1.preview-320.jpg
python3 scripts/record_feedback.py --issue "字幕太小,看不清" --category size --fix "Add style screenshot approval before full burn" --reusable yes
extract_youtube_description.py extracts YouTube metadata and the original description, and reports whether translation is needed. download_youtube_thumbnail.py downloads and converts the YouTube thumbnail for retention or cover preparation. prepare_youtube_transcript.py turns YouTube rolling VTT into stable cue JSON/SRT. make_translation_batches.py creates numbered batches for the current agent model to translate; make_codex_translation_batches.py remains as a compatibility alias for older workflows. apply_translation_cache.py writes checked translations back to SRT. repair_chinese_subtitles.py merges dangling endings, removes empty cues, and repairs simple overlaps. srt_to_ass.py creates styled Chinese-only ASS with semantic line wrapping and the fixed zh-only-default style unless a raised profile is chosen. make_bilingual_ass.py combines reviewed Chinese SRT and cleaned English SRT into bilingual ASS with Chinese above English and the fixed bilingual-default style. check_subtitle_style.py verifies that ASS files match the selected fixed style profile. check_bilingual_alignment.py checks Chinese/English timing overlap and writes representative samples for meaning-and-voice review. check_subtitle_quality.py catches overlap, empty cues, short flashes, dangling endings, bad line breaks, and bilingual layout violations. check_ffmpeg_subtitle_support.py verifies whether ffmpeg can burn subtitles. make_preview_clip.py creates a subtitled preview before full burn using the same fixed style profile. extract_source_subtitle_frames.py extracts source frames to check whether the original video already has burned-in subtitles. extract_design_frames.py extracts design confirmation frames from the subtitled preview. inspect_video.py verifies MP4 duration, resolution, and audio/video streams. extract_review_frames.py creates screenshots for visual checks. make_cover_preview.py creates a 320px cover preview for thumbnail-size readability checks. record_feedback.py appends reusable subtitle feedback to the ledger and can update the shared gates/workflow.
If check_ffmpeg_subtitle_support.py reports that no checked ffmpeg can burn subtitles with native filters, use burn_subtitles_pil.py for the full MP4 instead of creating a one-off renderer inside the project workspace.
Cover Processing Mode
Use this mode when the user asks to prepare, localize, or enhance the YouTube thumbnail/cover for the Chinese-subtitled version.
- Keep the original thumbnail unchanged in
01-source/. - Create edited covers in
07-cover/with versioned names such as\x3Cvideo-id>.cover.zh.v1.png. - Record one cover mode before editing:
preserve-original-text: default; keep all original cover text and add only中文字幕plus author/source.translate-original-text: use only when the user explicitly asks to translate the existing cover copy.localized-rewrite: use only when the user asks for a Chinese-platform cover or a literal translation is visibly weak.
- Default cover treatment for a Chinese-subtitled video is
preserve-original-text: keep all original cover text exactly as-is; do not translate, rewrite, erase, or replace the original thumbnail wording. - Add
中文字幕in a visually suitable empty area. - Add YouTube author/source information such as
作者:\x3Cchannel>or\x3Cchannel> · @handlein a compact YouTube-style label. - Use a consistent label treatment:
中文字幕as the prominent label, author/source as the smaller secondary label, both with strong contrast and outline or solid label background. - Preserve the original thumbnail composition, face, product signal, logo, and main title unless the user explicitly asks for a redesign.
- Do not cover faces, important UI, product marks, or the original title. Text must be readable at thumbnail size with strong contrast and outline.
- Use image editing/generation capability for the cover edit, then copy the generated image into
07-cover/while leaving the generator's original output in place. - Create a 320px preview such as
\x3Cvideo-id>.cover.zh.v1.preview-320.jpg, then verify the label, title, face/product/logo preservation, and author/source readability at thumbnail size before delivery.
Feedback Iteration
When the user points out a subtitle problem:
- Locate the exact timestamp, subtitle block, screenshot, or output version.
- Classify the issue as translation, segmentation, timing, hold duration, size, occlusion, terminology, or readability.
- Fix the current video/subtitle output and re-run the relevant checks.
- Record the feedback in
references/feedback-ledger.md. - If the issue can recur on future videos, update
references/quality-gates.mdandreferences/workflow.mdso future runs prevent it. - Re-package the skill after modifying skill files.
Output Record
For every video, keep these outputs in the working project:
- source metadata and original subtitles
- original YouTube description, and Chinese translated description when the original is not Chinese
- original video thumbnail, and edited thumbnail/cover if requested
- cleaned English subtitle
- translated Chinese SRT for reuse
- styled Chinese-only or bilingual ASS used for burn-in
- hard-subtitled MP4
- design confirmation frames from the subtitled preview
- review screenshots
- review record using
references/review-template.md
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install youtube-cn-subtitle-burnin - 安装完成后,直接呼叫该 Skill 的名称或使用
/youtube-cn-subtitle-burnin触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
YouTube Chinese Subtitle Burn-in 是什么?
Create Simplified Chinese or Chinese-English bilingual hard-subtitled videos from YouTube links or existing video/subtitle files. Use when the user asks to a... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 43 次。
如何安装 YouTube Chinese Subtitle Burn-in?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install youtube-cn-subtitle-burnin」即可一键安装,无需额外配置。
YouTube Chinese Subtitle Burn-in 是免费的吗?
是的,YouTube Chinese Subtitle Burn-in 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
YouTube Chinese Subtitle Burn-in 支持哪些平台?
YouTube Chinese Subtitle Burn-in 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 YouTube Chinese Subtitle Burn-in?
由 woodenxyz(@woodenxyz)开发并维护,当前版本 v0.1.0。