# Skill Captions

Render, preview, validate, and burn consistent production subtitles from QC-passed...

- Repository: https://github.com/Pluviobyte/rnskill (1706 stars)
- Category: Media
- License: see repository
- Last updated: 2026-09-21
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add Pluviobyte/rnskill --skill skill-captions -g -a claude-code -y`
Codex: `npx skills add Pluviobyte/rnskill --skill skill-captions -g -a codex -y`
Cursor: `npx skills add Pluviobyte/rnskill --skill skill-captions -g -a cursor -y`
Gemini CLI: `npx skills add Pluviobyte/rnskill --skill skill-captions -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add Pluviobyte/rnskill`

## Description

Render, preview, validate, and burn consistent production subtitles from QC-passed real-timestamp caption artifacts. Use for AI-video production, washed-video production, IndexTTS2 explainers, practical long-form videos, talking-head edits, Kimi-style dark rounded captions, warm-white translucent captions, subtitle styling, subtitle overlays, or fixing caption size, position, shadow, drift, and 4K scaling. Always pair with ra-audio-to-subtitles when final word timestamps do not already exist.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Skill-字幕

Separate subtitle timing from subtitle appearance:

- Let `ra-audio-to-subtitles` own ASR, phrase grouping, timestamps, SRT/VTT, and
  `caption-qc.json`.
- Let this skill own typography, panel geometry, fixed anchoring, preview,
  overlay rendering, burn-in, and render QC.
- Never estimate production timing from character count, scene duration, or
  TTS segment duration.

## Required workflow

1. Lock the final narration audio or final merged video.
2. Run `ra-audio-to-subtitles` unless the project already has the canonical
   caption artifacts described in `references/timing-contract.md`.
3. Require `caption-qc.json` to report `status: pass`.
4. Select a style from `references/style-registry.json`. Use `anchor-dark`
   when the contract does not specify another style.
5. Generate a representative still preview before rendering a full video.
6. Inspect the preview against `references/layout-qc.md`.
7. Render the captioned derivative. Preserve the clean video and portable
   SRT/VTT.
8. Run `scripts/validate_caption_render.py` and archive its JSON report.

## Registered styles

`anchor-dark` reproduces the approved Kimi K3 subtitle treatment: STHeiti
Medium, warm white text, a tight charcoal translucent rounded panel, no text
stroke, no text shadow, no large panel shadow, and a fixed bottom-center
anchor. Read `references/style-anchor-dark.md` before changing its values.

`anchor-light` keeps the exact same typography, size, padding, width, bottom
anchor, line fitting, and resolution scaling as `anchor-dark`. Only its surface
changes: dark ink on a warm-white translucent panel with a fine border and
subtle soft shadow. Read `references/style-anchor-light.md` before changing its
values. This is the second registered style; `anchor-dark` remains the default.

Scale every 1080p metric by `target_height / 1080`. Render 4K captions at 2×
their 1080p measurements; never upscale a rasterized 1080p subtitle layer.

## Commands

Preview a QC-passed project:

The rest: https://github.com/Pluviobyte/rnskill/blob/HEAD/skills/skill-captions/SKILL.md
