autocrop-vertical — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited autocrop-vertical (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
YOLOv8 detects people in each scene's middle frame, then per-scene picks one of two strategies:
Frame-accurate (no scene-boundary drift), VFR-aware, audio-sync compensated.
crop=ih*9/16:ih step with a call to this script for any clip that has >1 face detected, or whenever the source isn't a static talking head.C:\Users\A\Desktop\Autocrop-vertical\C:\Users\A\Desktop\Autocrop-vertical\.venv\Scripts\python.exe (Python 3.12, CPU torch — torch 2.x has no Python 3.14 wheels yet)C:\Users\A\Desktop\Autocrop-vertical\main.pyyolov8n.pt (~6 MB, auto-downloads on first run to repo root)ffmpeg and ffprobe on PATH (already installed via Gyan.FFmpeg winget package)."C:\Users\A\Desktop\Autocrop-vertical\.venv\Scripts\python.exe" \
"C:\Users\A\Desktop\Autocrop-vertical\main.py" \
-i "<input.mp4>" \
-o "<output_vertical.mp4>"Output: 9:16 mp4 with subject tracked through scenes. Output height = source height (no upscaling).
# Instagram feed 4:5
... -i in.mp4 -o out.mp4 --ratio 4:5
# Square 1:1 for IG carousel
... -i in.mp4 -o out.mp4 --ratio 1:1
# High quality (CRF 18, slow preset) — final masters
... -i in.mp4 -o out.mp4 --quality high
# Fast preview encode (CRF 28, veryfast)
... -i in.mp4 -o out.mp4 --quality fast
# Dry-run: show the per-scene TRACK/LETTERBOX plan, no encode
... -i in.mp4 -o out.mp4 --plan-only
# NVIDIA NVENC hardware encode (auto-falls back to libx264 if unavailable)
... -i in.mp4 -o out.mp4 --encoder hw
# Faster scene detection on long videos (skip every other frame)
... -i in.mp4 -o out.mp4 --frame-skip 1--quality | CRF | x264 preset | Use for |
|---|---|---|---|
fast | 28 | veryfast | Drafts, previews |
balanced | 23 | fast | Default — good for Shorts uploads |
high | 18 | slow | Master copies, archival |
In viral-clipper, after clip extraction and before the final ffmpeg render, branch:
ffprobe on the cut clip to get resolution.face_count <= 1 AND faces stay near horizontal-center (±15% of width) for >80% of the clip → use simple ffmpeg center-crop (faster).--quality balanced --encoder hw.Result: Shorts where two-person interviews keep both heads in frame instead of chopping one off.
YOLOv8n on CPU runs scene-middle inference in ~150-300 ms per scene. The dominant cost is PySceneDetect (~50% of total runtime) + libx264 encoding. Rough ranges on a typical laptop:
| Source | Approx runtime |
|---|---|
| 720p, 60s | ~30-60 s |
| 1080p, 60s | ~60-120 s |
| 1080p, 12 min | 5-12 min |
If batch-processing many clips, --encoder hw (NVENC on the RTX 5080 laptop) can roughly halve total time at the encode stage.
"C:\Users\A\Desktop\Autocrop-vertical\.venv\Scripts\python.exe" \
"C:\Users\A\Desktop\Autocrop-vertical\main.py" --helpShould print the usage block. If torch / ultralytics import fails, reinstall via:
"C:\Users\A\Desktop\Autocrop-vertical\.venv\Scripts\python.exe" -m pip install -r "C:\Users\A\Desktop\Autocrop-vertical\requirements.txt"git pull --rebase and panic if you see this file uncommitted..venv is locked to Python 3.12 via py -3.12 -m venv. Don't recreate it with the system Python..mp4 from -o, it auto-appends.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.