Skip to content
cccskills
FreePublished on GitHub

karaoke-captions

Generate TikTok/Shorts-style karaoke captions using MLX Whisper, ASS subtitles, and FFmpeg libass. Use when burning word-level highlight captions into a video, matching caption style from a screenshot, rendering ASS karaoke subtitles, or when the user runs /karaoke-captions.

The English summary is being prepared. Showing the original description.

Works withTikTok

Run score Not tested

See how to install

Files included (11)

  • SKILL.md3.3 KB
  • .gitignore269 B
  • presets/style.json369 B
  • presets/yellow.json369 B
  • README.md1.7 KB
  • references/style-guide.md2.7 KB
  • requirements.txt25 B
  • scripts/extract_words.py2.0 KB
  • scripts/gen_ass.py7.3 KB
  • scripts/match_style_from_image.py4.2 KB
  • scripts/render.sh1.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Karaoke Captions Skill

Generate dynamic, TikTok/Shorts-style karaoke captions with word-level highlight sweeps using ASS subtitles and FFmpeg libass. Supports style matching from a reference screenshot.

Scripts, presets, and references live next to this skill. Run the commands from the skill directory (or pass absolute paths).

Requirements

  • macOS with Apple Silicon (MLX Whisper)
  • Python 3.10+
  • FFmpeg with libass (brew install ffmpeg)
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
reference.png --------(match_style_from_image.py)--------> style.json --+
                                                                   +--(gen_ass.py)--> captions.ass --(render.sh)--> output.mp4
input.mp4 ---------------------------------->(extract_words.py)--> words.json --+

File Architecture

FilePurposeRole
input.mp4Source videoInput
reference.pngStyle reference image (optional)Visual Prompt
words.jsonWord-level timestamps [{"word": ..., "start": ..., "end": ...}]Persistent Raw Data
style.jsonFont, size, highlight color, outline, soft shadow, margin, words per lineStyle Config
captions.assASS subtitle script with two-layer blurred drop shadow and inline color overridesGenerated Intermediate
output.mp4Final video with burned-in subtitlesOutput Deliverable

Standard Workflow

Step 1. Extract Word Timestamps

python scripts/extract_words.py \
  input.mp4 words.json \
  --model mlx-community/whisper-large-v3-turbo

(For Chinese videos, add --language zh).

Step 2. Select Style or Auto-match from Reference Image

  • From Reference Image:
    python scripts/match_style_from_image.py \
      reference.png style.json --video input.mp4
    
  • From Presets:
    • presets/style.json: Default neon green highlight (#00FF00), Arial Black, all-caps, 4 words/line.
    • presets/yellow.json: Yellow highlight (#FFFF00), Arial Black, all-caps.

To adjust appearance manually, see Style Guide.

Step 3. Generate ASS Subtitles

python scripts/gen_ass.py \
  words.json style.json captions.ass --video input.mp4

Step 4. Render Preview & Visual Check

# Preview segment:
scripts/render.sh input.mp4 captions.ass preview.mp4 3 8

# Frame snapshot:
scripts/render.sh frame input.mp4 captions.ass preview_frame.png 4.5

Step 5. Render Final Video

scripts/render.sh input.mp4 captions.ass output.mp4

References & Presets

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Audit a repo's agent context — CLAUDE.md files, codebase docs, skills, and tool/MCP designs — against Anthropic's Claude 5 context-engineering guidance ("unhobbling": Anthropic cut ~80% of Claude Code's system prompt with no eval loss). Finds overconstraint, conflicting instructions, redundancy, stale facts, and missing "unknown knowns"; produces a scored findings report with concrete rewrites, then applies approved fixes. Use when someone says "audit my CLAUDE.md", "context audit", "unhobble this repo", "review our agent docs/skills/tools", or after upgrading to Claude 5-generation models.

The English summary is being prepared. Showing the original description.

AI-Builder-Club/skills1.3KUpdated Sep 16, 2026

Scaffold an isolated CLOUD dev box per agent (via crabbox + Daytona) for any codebase — the parallel-safe counterpart to dev-local-setup. Each agent gets its own full stack (own DB + dev server) and an in-box browser for e2e, so concurrent loops never collide on ports/state. Sets up the snapshot image, .crabbox.yaml, an idempotent setup.sh (also boots the stack locally), and a cbx.sh wrapper. Use when the user says "set up crabbox", "give each agent its own box", "add cloud testing", "make this repo testable in the cloud / on Daytona", "parallel-test this", or when setup-codebase-harness needs true per-agent isolation.

The English summary is being prepared. Showing the original description.

AI-Builder-Club/skills1.3KUpdated Sep 16, 2026

Scaffold a one-command `dev-local` launcher for ANY codebase. Investigates the repo to find its services, ports, and infra dependencies, then generates a single `scripts/dev-local.sh` (up/down/status/logs/restart) that runs every dev server in one tmux session, plus a short skill doc describing it. Use when someone says "set up dev-local", "make a one-command dev launcher", "I want one script to start this repo", "scaffold dev-local for this project".

The English summary is being prepared. Showing the original description.

AI-Builder-Club/skills1.3KUpdated Sep 16, 2026

Set up an end-to-end test suite in any repo, following practices that make e2e a reliable per-PR gate: real flows over bypass, layered assertions, a reusable auth/session helper, video+trace evidence, and a compounding suite. Use when a repo has no e2e (or weak e2e) and you want system-level tests — "set up e2e", "add end-to-end tests", "scaffold a test gate".

The English summary is being prepared. Showing the original description.

AI-Builder-Club/skills1.3KUpdated Sep 16, 2026

Spin up a new loop (domain) in a file-based knowledge base — bootstrap the substrate if it's missing, gather the loop's charter, scaffold domains/<loop>/README.md, then do ONE real test run and record it in the loop's Timeline and LOG.md. Use when the user says "set up a new loop", "create a domain", "start a new beat/workstream", or names a recurring job they want the agent to own.

The English summary is being prepared. Showing the original description.

AI-Builder-Club/skills1.3KUpdated Sep 16, 2026

Delegate tasks to ANY CLI agent (claude, codex, aider, ...) running in a detached tmux session, with a race-safe done-signal protocol and multi-turn iteration. Use when delegating work to a non-Claude CLI agent, when the user says "tmux delegate", "run agent in tmux", "delegate to codex/aider", or when executor work should run in an observable background terminal instead of the Agent tool.

The English summary is being prepared. Showing the original description.

AI-Builder-Club/skills1.3KUpdated Sep 16, 2026

See all skills by AI-Builder-Club

Report a problem with this skill