Skip to content
Back to skills

Remotion Qa

ASecurity

Measure a rendered video (Remotion or any mp4) for sound-off readability before it ships - dead air after the viewer has finished reading, beats too short to read, and text hidden under the Reels/Shorts/TikTok UI - and check type sizes against mobile floors. Use after every render or re-cut of a reel, short, ad or social video, and before handing a video to anyone.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
designbash

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add Wanfeng1028/muse --skill remotion-qa --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Remotion Qa?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Remotion Qa
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wanfeng1028-remotion-qa/badge)](https://www.skillsdirectory.com/skills/wanfeng1028-remotion-qa)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: remotion-qa
description: Measure a rendered video (Remotion or any mp4) for sound-off readability before it ships - dead air after the viewer has finished reading, beats too short to read, and text hidden under the Reels/Shorts/TikTok UI - and check type sizes against mobile floors. Use after every render or re-cut of a reel, short, ad or social video, and before handing a video to anyone.
---

# remotion-qa

Measure the **rendered file**, never the composition source. A source can't tell
you whether a line wrapped, whether a card overflowed into the platform UI, or
how long a frame actually sat frozen. A readability check that compares a
duration with the value it was computed from can never fail, so it is not a check.

## 1. Pacing, in both directions

```bash
npx remotion-qa pace out/video.mp4 --beats captions.srt
```

`--beats` takes `.srt`, `.vtt`, or JSON (`[{ "start": 0, "end": 2.5, "text": "line one\nline two" }]`,
or `{ "from", "to" }` in frames with `fps`). If the project has no captions file,
write a beats file from the composition's own text and timings.

Read the output correctly:

- **A static run is not automatically dead air.** A frozen frame while the
  viewer is still reading is reading time. Dead air is only the part after
  they've finished. The tool does this subtraction for you when given beats:
  `required = longest_line_chars / 15 + 0.4s per extra line + 1s`, counted from
  when the beat arrives.
- **TOO FAST** beats are the opposite failure: the text leaves before it can
  be read sound-off. Both count.
- **Footage with a slow push registers as still** (a few % zoom over a beat is
  under a pixel per frame). Only judge runs that sit on a flat graphic ground.
- **The tail of an eased entrance reads as still** (an ease-out is ~94% done
  at half its duration). A run starting mid-entrance is part entrance, part hold.

**Fix over-holds by pacing, not trimming.** Shortening the beat trades dead air
for "too fast". Stagger the reveal so a list builds at reading pace (items
~20 frames apart, not 4), then hold only for the last item to settle.

## 2. Safe zones

```bash
npx remotion-qa safezone out/video.mp4 --frames qa-frames/
```

Reports how far ink reaches into each platform overlay (the caption, buttons,
progress bar), in canvas px. Open the saved frames: text in a shaded zone is a
defect, decoration there is fine. Bands holding footage aren't judged; say so
rather than calling them clear.

Channels: `reels-union` (default for 9:16, the worst case of IG Reels, FB Reels
and YT Shorts), `ig-reels`, `fb-reels`, `yt-shorts`, `yt-landscape`,
`feed-square`, `feed-portrait`.

## 3. Type sizes

```bash
npx remotion-qa floors --channel reels-union --font-factor 1.08
```

Floors are calibrated to a 360pt-wide Android (on-device pt = canvas px / 3 on a
1080 canvas). They are **floors, not targets**: size each element as large as
its layout allows. Lighter faces need a `--font-factor` (1.08 for Manrope
600/700). In a composition, `assertLegible(px, role)` throws below the floor.

Bigger type changes line counts, and line counts change reading time, so
**re-run pacing after any size change**.

## 4. Gate renders

```bash
npx remotion-qa render MyComp out/video.mp4 --max 5
```

Renders, then fails if any static run exceeds `--max` seconds, moving the file
to `out/video.failed-pace.mp4` so nothing sits at the path people send from.

## Report

Per file: each static run with the text on screen, its required seconds and the
dead air; each too-fast beat; each safe-zone intrusion with depth and the frame;
any type under its floor. Recommend a fix per finding, preferring a stagger to a
trim. Never change copy or timing as part of a sizing fix, or sizes as part of a
pacing fix: report what the other pass should pick up.

Files in this skill

  • LICENSE1.1 KB
  • SKILL.md3.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.