一键导入
caption-renderer
Burn karaoke captions into video using FFmpeg ASS subtitles (~20s for 16s video)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Burn karaoke captions into video using FFmpeg ASS subtitles (~20s for 16s video)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Align text to audio timestamps using Qwen3-ForcedAligner (~30ms precision)
Full pipeline from manga panels to animated video. Two audio modes: dialogue (Qwen3-TTS + karaoke captions) or music (ElevenLabs + rolling lyrics).
Generate multi-panel manga from character reference and story beats
Generates original background music using Google's Music Generation API. Creates soundtracks matched to scene mood and timing.
Concatenates video clips and optionally adds background music using FFmpeg.
Generates anime character images from photo analysis using Nano Banana Pro (gemini-3-pro-image-preview). Creates character sheets with full body and portrait views at 2K resolution.
| name | Caption Renderer |
| description | Burn karaoke captions into video using FFmpeg ASS subtitles (~20s for 16s video) |
| triggers | ["Add captions to video","Karaoke subtitle overlay","Rolling lyrics on video"] |
Burn karaoke-style rolling captions into video using FFmpeg ASS subtitles.
Words start white (not yet sung) and fill to gold as the karaoke sweep passes. Automatically scales to 1080x1920 if input is lower resolution (e.g., Veo's 720x1280).
Performance: ~20s for 16s video at 720x1280 input, ~40s with scale to 1080x1920.
from skills.render_captions import CaptionRenderer, CaptionSegment, WordSegment
renderer = CaptionRenderer()
# Create captions with word-level timing
captions = [
CaptionSegment(
text="Hello world!",
startMs=0,
endMs=2000,
speaker="Mochi",
words=[
WordSegment("Hello", 0, 800),
WordSegment("world!", 900, 2000),
],
),
]
# Render video with captions (auto-scales to 1080x1920)
output = await renderer.render_with_captions(
video_path=Path("video.mp4"),
captions=captions,
)
# Render multiple clips with per-clip captions
output = await renderer.render_concatenated_video(
clip_paths=[clip1, clip2, clip3],
clip_captions=[captions1, captions2, captions3],
audio_paths=[audio1, audio2, audio3],
)
\k karaoke tags for word-level gold highlightingsubtitles= filter burns captions in a single passscale= filter normalizes resolution in the same pass