| name | seoulscribe |
| description | Use this skill whenever the user asks to translate, subtitle, hardsub, softsub, polish, QC, or localize Korean videos into Traditional Chinese, especially K-pop idols, Korean artists, YouTube interviews, fan content, music-show clips, behind-the-scenes videos, or Korean variety shows. This skill should trigger even if the user only says 韓文字幕、韓國綜藝、KPOP、偶像訪談、重新上字幕、字幕組、翻譯影片, or provides a Korean/YouTube video link. |
SeoulScribe
Turn Korean/K-pop video material into Taiwan Traditional Chinese subtitles with a fansub-team workflow: context research, term consistency, subtitle translation, ASS styling, hardsub/softsub output, and QC.
Read First
- For K-pop and variety translation choices, read
references/translation-guide.md.
- For current artist/show research sources, read
references/research-sources.md.
- For deterministic subtitle checks or ASS generation, use
scripts/subtitle_tools.js.
Default Output
Deliver these files when media processing is requested:
[video-id].zh-Hant.kpop.srt
[video-id].zh-Hant.kpop.ass
[video-id].zh-Hant.hardsub.1080p.mp4 when hardsub is requested
research-brief.md when the clip depends on current K-pop, artist, fandom, or show context
Do not call the job done until ffprobe can read the final video and at least 2 screenshots confirm subtitle placement.
Workflow
-
Confirm the right source.
- If a URL is provided, download the best available quality for personal/local use only.
- Prefer official subtitles/transcripts over ASR.
- If
yt-dlp -F only shows low quality for YouTube, update yt-dlp and retry with YouTube JS extraction before accepting 360p.
- Check disk space before rendering: final hardsubs need source size plus output size.
-
Build a short research brief before translating.
- Identify show/channel, episode title, date, guests, agency, group, fandom name, current comeback/activity, and relevant running jokes.
- Verify names from official sources first: agency pages, artist channels, show pages, official YouTube descriptions.
- Use fan wikis, Reddit, or social posts only as fallback, and label them unofficial.
- Date-stamp current facts because K-pop rosters and activity status drift quickly.
-
Translate like a Taiwan K-pop subtitle team.
- Use natural Taiwan Traditional Chinese.
- Preserve K-pop terms fans expect: comeback, stage, ending fairy, dance challenge, lightstick, fan chant, bias, maknae/忙內 when context needs fandom flavor.
- Translate honorifics by relationship and scene: 선배 as 前輩, 오빠/형/언니/누나 as 哥/姐/歐巴/姊姊 only when that is how the Taiwan audience would hear the joke.
- Keep official artist/group/fandom names consistent. Do not invent Chinese names.
- Preserve jokes, teasing, hierarchy, awkwardness, and variety-show punchline timing over literal word order.
- Keep on-screen editorial captions in brackets when useful:
[字幕] 台詞.
-
QC subtitles before rendering.
- Prefer 1-2 lines.
- For Traditional Chinese, target readable density around 9 chars/sec for polished output; variety clips can exceed slightly only when the original is intentionally rapid.
- Avoid overlong lines; split by phrase, punctuation, punchline, or speaker shift.
- Remove duplicate filler when it hurts readability, but keep repeated words when repetition is the joke.
- Run:
node scripts/subtitle_tools.js qc input.srt
- Render with readable ASS defaults.
- For 1080p K-pop/variety hardsubs, default to bottom-centered white text with black opaque box.
- Default style: PingFang TC, size 66, BorderStyle 3, Outline 14, Alignment 2, MarginV 74.
- If the original video already has important lower-third Korean text, choose the easier-to-read position and mention the tradeoff.
- Generate ASS:
node scripts/subtitle_tools.js ass input.srt output.ass --width 1920 --height 1080 --font-size 66 --margin 74
- Render and verify.
ffmpeg -hide_banner -y -i source.mp4 -vf "ass=output.ass" -c:v libx264 -preset veryfast -crf 21 -c:a copy final.mp4
ffprobe -hide_banner -v error -show_entries format=duration,size:stream=codec_type,codec_name,width,height -of json final.mp4
ffmpeg -hide_banner -v error -ss 00:00:10 -i final.mp4 -frames:v 1 qa-001.jpg
Use -movflags +faststart only when there is enough free disk for the second pass.
Translation Passes
Use three passes unless the clip is tiny:
- Draft: translate every cue with names and terms preserved.
- Context pass: fix jokes, honorifics, K-pop terms, speaker relationships, and current activity references.
- Subtitle pass: shorten for reading speed and line breaks while keeping the punchline.
Research Brief Template
# Research Brief
- Source:
- Date checked:
- Show/channel:
- Guests/cast:
- Agencies/groups/fandoms:
- Current activity/comeback context:
- Name/term table:
- Variety-show running jokes or callbacks:
- Source links:
Red Flags
- Do not ship 360p if a higher YouTube format is recoverable.
- Do not translate idol/group names from scratch.
- Do not flatten 선배/후배 or 반말/존댓말 jokes into generic speech.
- Do not over-polish variety captions until the joke sounds like a textbook.
- Do not claim final output is done without video readback and screenshots.