plugins/ffmpeg-effects/skills/ffmpeg-karaoke-animated-text/SKILL.md
Complete karaoke subtitle system and advanced animated text effects. PROACTIVELY activate for: (1) Karaoke-style highlighted lyrics, (2) ASS/SSA advanced subtitle styling, (3) Scrolling credits (horizontal/vertical), (4) Typewriter text animation, (5) Bouncing/moving text, (6) Text fade in/out effects, (7) Word-by-word text reveal, (8) Kinetic typography, (9) Lower thirds animation, (10) Countdown timers and dynamic text. Provides: ASS karaoke timing format, drawtext with time expressions, scrolling text patterns, text animation formulas, kinetic typography techniques, subtitle styling reference, multi-line animated text.
npx skillsauth add JosiahSiegel/claude-plugin-marketplace ffmpeg-karaoke-animated-textInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
Use this skill for karaoke subtitles, kinetic typography, scrolling credits, animated lower thirds, typewriter text, timers, and dynamic text overlays. Keep answers practical: identify whether ASS or drawtext is the right tool, provide a copy-paste-ready command or ASS snippet, and call out timing units.
| Effect | Pattern |
|--------|---------|
| Karaoke ASS | Use ASS format with \k, \kf, or \ko timing tags |
| Burn karaoke | ffmpeg -i input.mp4 -vf "ass=karaoke.ass" -c:v libx264 -crf 18 -c:a copy output.mp4 |
| Scrolling credits | -vf "drawtext=textfile=credits.txt:y=h-80*t" |
| Typewriter | Stagger drawtext layers with enable='gte(t,...)' |
| Fade in text | -vf "drawtext=text='Title':alpha='min(1,t/2)'" |
| Bouncing text | -vf "drawtext=text='Bounce':y='h/2+50*sin(t*5)'" |
| Moving text | -vf "drawtext=text='Move':x='w-mod(t*100,w+tw)'" |
| Rotation | Use ASS (\frz, \frx, \fry); drawtext does not rotate text natively |
Use for animated text and karaoke:
| Need | Best Tool | Why |
|------|-----------|-----|
| Word/syllable karaoke highlighting | ASS | Native \k, \kf, \ko support |
| Styled subtitles with outline/glow/rotation | ASS | Rich subtitle styling and transform tags |
| Simple overlay text | drawtext | Fast, direct FFmpeg filter |
| Timecode, frame numbers, metadata text | drawtext | Built-in variable expansion |
| Scrolling credits/news tickers | drawtext | Straightforward position expressions |
| Per-word kinetic captions | ASS or multiple drawtext layers | ASS is easier for rotation/scale; drawtext is direct for formula motion |
ASS uses TWO DIFFERENT time unit systems. This is a common source of bugs. Karaoke tags use centiseconds; ASS animation tags use milliseconds; FFmpeg drawtext expressions use seconds.
| Tag | Unit | Example | Duration |
|-----|------|---------|----------|
| \k | centiseconds | {\k50} | 0.5 seconds |
| \kf | centiseconds | {\kf100} | 1.0 second |
| \ko | centiseconds | {\ko25} | 0.25 seconds |
Conversion: seconds * 100 = centiseconds.
| Tag | Unit | Example | Duration |
|-----|------|---------|----------|
| \t(t1,t2,...) | milliseconds | \t(0,500,...) | 0-500ms animation |
| \fad(in,out) | milliseconds | \fad(200,300) | 200ms in, 300ms out |
| \move(x1,y1,x2,y2,t1,t2) | milliseconds | \move(0,0,100,100,0,1000) | 1 second move |
Conversion: seconds * 1000 = milliseconds.
| Expression | Unit | Example |
|------------|------|---------|
| t | seconds | t=2.5 means 2.5 seconds |
| enable='between(t,0,3)' | seconds | visible from 0-3 seconds |
| alpha='min(1,t/2)' | seconds | fade over 2 seconds |
; WRONG - mixing units:
Dialogue: 0,0:00:00.00,0:00:02.00,Style,,0,0,0,,{\k100\t(0,100,...)}Word
; {\k100} = 1 second, but \t(0,100,...) = 0.1 seconds
; CORRECT - matched duration:
Dialogue: 0,0:00:00.00,0:00:02.00,Style,,0,0,0,,{\k100\t(0,1000,...)}Word
For the full timing-unit reference, use ffmpeg-animation-timing-reference.
[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Karaoke,Arial,72,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,1,0,0,0,100,100,0,0,1,3,2,2,10,10,50,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:05.00,Karaoke,,0,0,0,,{\k50}Twinkle {\k50}twinkle {\k50}little {\k50}star
Burn into video:
ffmpeg -i input.mp4 \
-vf "ass=karaoke.ass" \
-c:v libx264 -crf 18 -c:a copy \
output_karaoke.mp4
For advanced styles, neon/gradient karaoke, per-character timing, and animated karaoke transforms, see references/karaoke-ass-patterns.md.
# Fade in title over 2 seconds
ffmpeg -i input.mp4 \
-vf "drawtext=text='Title':fontsize=100:fontcolor=white:x=(w-tw)/2:y=(h-th)/2:alpha='min(1,t/2)'" \
output.mp4
# Vertical bounce
ffmpeg -i input.mp4 \
-vf "drawtext=text='BOUNCE':fontsize=80:fontcolor=yellow:x=(w-tw)/2:y='(h-th)/2+50*sin(t*5)'" \
bounce.mp4
# Scroll credits upward at 80px/sec
ffmpeg -i input.mp4 \
-vf "drawtext=textfile=credits.txt:fontsize=48:fontcolor=white:x=(w-tw)/2:y=h-80*t" \
-c:v libx264 -crf 18 output.mp4
For spring/elastic/wobble formulas, typewriter effects, lower thirds, countdowns, stopwatches, metadata overlays, and multi-line text, see references/drawtext-animation-recipes.md.
ffprobe) to confirm duration, frame rate, and resolution.-c:v libx264 -crf 18, audio copy only when compatible).-ss, -t) before rendering a full music video or credit roll.references/karaoke-ass-patterns.md - ASS karaoke basics, \k / \kf / \ko, BPM timing, tag selection, neon/gradient styles, per-character karaoke, ASS color format, animated karaoke effects.references/drawtext-animation-recipes.md - Spring bounce, elastic overshoot, easing approximations, wobble/wiggle, pulse, wipes, typewriter, fades, moving text, kinetic typography, lower thirds, countdowns, stopwatches, dynamic variables, multi-line text.references/scrolling-credits-and-expressions.md - Music/education/credits timing, vertical credits, horizontal tickers, ASS rotation workaround, drawtext variables and expression cookbook.ffmpeg-animation-timing-reference - Timing units, caption durations, easing, sync tolerancesffmpeg-captions-subtitles - Subtitle fundamentals, extraction, burn-in, stylingffmpeg-kinetic-captions - Word-level pop/bounce/grow caption effectsviral-video-animated-captions - Social-video caption templatesffmpeg-shapes-graphics - Boxes, backgrounds, graphic overlaysffmpeg-transitions-effects - xfade and video transitionsdevelopment
This skill should be used when the user asks to train, debug, scale, or improve ML models. PROACTIVELY activate for: (1) PyTorch, TensorFlow/Keras, JAX, Flax, Hugging Face Trainer/Accelerate training loops, (2) distributed training, DDP/FSDP/DeepSpeed, TPU/GPU setup, (3) mixed precision AMP/bf16, gradient accumulation, checkpointing, seeding, (4) overfitting, imbalance, loss functions, regularization, LR schedules, warmup, (5) memory optimization, gradient checkpointing, offloading, quantization-aware training. Provides: reproducible training best practices across deep learning and classical ML.
development
This skill should be used when the user asks to productionize, track, version, govern, monitor, or automate ML systems. PROACTIVELY activate for: (1) MLflow, Weights & Biases, Neptune, Comet, ClearML experiment tracking, (2) model registry, model versioning, artifact lineage, reproducibility, (3) Kubeflow, SageMaker Pipelines, Vertex AI Pipelines, Azure ML pipelines, Databricks workflows, (4) CI/CD, continuous training/evaluation, A/B tests, canary/shadow deployments, (5) drift detection, model monitoring, data validation, responsible AI governance. Provides: end-to-end MLOps architecture and operational safeguards.
development
This skill should be used when the user asks to optimize, export, serve, compress, or accelerate ML inference. PROACTIVELY activate for: (1) latency, throughput, p95/p99, batching, concurrency, KV cache, memory, or cost issues, (2) quantization INT8/INT4, GPTQ, AWQ, bitsandbytes, pruning, sparsity, distillation, (3) ONNX export, ONNX Runtime, TensorRT, TorchScript, torch.compile, XLA, OpenVINO, Core ML, TFLite, (4) Triton, TorchServe, TF Serving, BentoML, Seldon, KServe configuration, (5) edge deployment, CPU/GPU/TPU/Inferentia serving. Provides: hardware-aware inference optimization and safe benchmarking.
testing
This skill should be used when the user asks to tune hyperparameters, run sweeps, optimize search spaces, or use AutoML. PROACTIVELY activate for: (1) Optuna, Ray Tune, FLAML, AutoGluon, Hyperopt, Nevergrad, KerasTuner, W&B sweeps, (2) grid search, random search, Bayesian optimization, TPE, Gaussian processes, evolutionary search, (3) ASHA, Hyperband, successive halving, multi-fidelity optimization, population-based training, (4) learning-rate finder, batch-size search, early stopping, pruning, (5) reproducible sweep design and experiment analysis. Provides: budget-aware hyperparameter search strategy.