Install
openclaw skills install youtube-cn-subtitle-burninCreate Simplified Chinese or Chinese-English bilingual hard-subtitled videos from YouTube links or existing video/subtitle files. Use when the user asks to add/burn Chinese subtitles, translate YouTube videos, produce Chinese or bilingual SRT/ASS/MP4 outputs, download or prepare YouTube thumbnails/covers, extract or translate YouTube descriptions, add Chinese-subtitle labels or author information to covers, review subtitle readability, fix subtitle timing/splitting/size/occlusion problems, or incorporate user subtitle feedback into the workflow.
openclaw skills install youtube-cn-subtitle-burninTurn 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.
references/workflow.md end to end.Always load:
references/workflow.md before producing a video.references/quality-gates.md before accepting or delivering a result.references/review-template.md when writing the review file.references/feedback-ledger.md when the user gives feedback about a subtitle problem.cover edit: not requested.id values in the cleaned cue JSON, verify every id is returned, save a cache after each batch, and resume from the cache if interrupted.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.
Use this mode when the user asks to prepare, localize, or enhance the YouTube thumbnail/cover for the Chinese-subtitled version.
01-source/.07-cover/ with versioned names such as <video-id>.cover.zh.v1.png.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.preserve-original-text: keep all original cover text exactly as-is; do not translate, rewrite, erase, or replace the original thumbnail wording.中文字幕 in a visually suitable empty area.作者:<channel> or <channel> · @handle in a compact YouTube-style label.中文字幕 as the prominent label, author/source as the smaller secondary label, both with strong contrast and outline or solid label background.07-cover/ while leaving the generator's original output in place.<video-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.When the user points out a subtitle problem:
references/feedback-ledger.md.references/quality-gates.md and references/workflow.md so future runs prevent it.For every video, keep these outputs in the working project:
references/review-template.md