Skip to content

Repository files navigation

YY ClipCheck

ClipCheck is a local command-line preflight for short-form video files. It asks ffprobe what is actually in each file, applies an explicit versioned profile, and returns readable or JSON results before an upload begins.

npx yy-clipcheck --profile youtube-shorts ./short.mp4
clipcheck --profile yy-vertical-v1 ./renders/*.mp4
clipcheck --profile instagram-reels --json ./exports > report.json

It makes no network requests and uploads nothing. ffprobe must be available on PATH. The YY house profile also invokes ffmpeg to measure integrated loudness and true peak using the ebur128 filter.

Install

ClipCheck requires Node.js 20 or newer plus ffprobe on PATH. Install FFmpeg from https://ffmpeg.org/download.html, then run the current release directly from its public source repository:

npm exec --yes --package=git+https://github.com/yycore/clipcheck.git -- clipcheck --profile youtube-shorts ./short.mp4

Or install the command globally:

npm install --global git+https://github.com/yycore/clipcheck.git
clipcheck --list-profiles

Profiles

youtube-shorts

Checks the current classification boundary (square or vertical, no longer than three minutes) as errors. MP4, H.264, AAC/Opus, 48 kHz audio, yuv420p, and progressive scan are recommendations and therefore warnings rather than upload eligibility claims.

The profile was checked on 2026-08-01 against official YouTube documentation:

instagram-reels

Checks the published aspect-ratio range and minimum 30 fps. It conservatively interprets Meta's 720-pixel minimum resolution as applying to the shorter frame dimension. The profile was checked on 2026-08-01 against Meta's official Reels size guidance:

yy-vertical-v1

YY's internal delivery target: 1080x1920 or larger at 9:16, at least 30 fps, 60 seconds or less, MP4/H.264/yuv420p, AAC at 48 kHz, -18 to -14 LUFS, and true peak no higher than -1 dBFS. This is a house profile, not a platform rule.

Every profile warns when no matching .srt or .vtt sidecar exists. A warning does not change the process exit code.

Configuration

Use a JSON config when a production pipeline has a narrower house rule:

clipcheck --config clipcheck.config.json ./renders

See clipcheck.config.example.json. Unknown fields and rule overrides fail closed instead of being silently ignored.

Exit codes

Code Meaning
0 Every error-level check passed; warnings may exist.
1 At least one error-level check failed or was not observable.
2 Usage, configuration, file, ffprobe, or ffmpeg inspection error.

Boundaries

ClipCheck is a technical preflight, not a guarantee that a platform will accept, classify, recommend, monetize, or leave a video unchanged. Platform behavior and documentation can change after a profile's source_checked date. It does not inspect copyright, Content ID, community-policy, safe-area, visual quality, caption accuracy, or account-specific eligibility.

Display dimensions and aspect ratio account for 90-degree rotation metadata and non-square sample aspect ratios. The container check uses the file extension when available because FFmpeg reports MOV and MP4 as one format family.

Platform names identify the target guidance. This project is not affiliated with, sponsored by, or endorsed by those platforms.

Development

npm test
npm run check
npm run pack:check

License

Apache License 2.0. See LICENSE and NOTICE.

About

Offline, deterministic preflight checks for short-form video files.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages