From video-editing
Render one or more video files using a previously saved render profile. Use when the user says "render these clips at YouTube 1080p", "apply my <profile> preset", "batch render this folder with <profile>", or similar. Reads render-profiles.json + system-profile.json; writes outputs to a renders/ folder.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin video-editingThis skill is limited to using the following tools:
Apply a saved render profile to a file, a folder of files, or a list of files. The profile carries codec/encoder/resolution/rate-control/audio/extra args — this skill just builds the ffmpeg command and loops.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Apply a saved render profile to a file, a folder of files, or a list of files. The profile carries codec/encoder/resolution/rate-control/audio/extra args — this skill just builds the ffmpeg command and loops.
DATA_DIR="${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/video-editing"
PROFILES_FILE="$DATA_DIR/render-profiles.json"
SYS_FILE="$DATA_DIR/system-profile.json"
test -f "$PROFILES_FILE" || { echo "No saved profiles — run create-render-profile first."; exit 1; }
test -f "$SYS_FILE" || { echo "No system profile — run profile-system first."; exit 1; }
jq '.profiles | keys' "$PROFILES_FILE" and ask.<project>/renders/rendered/ folder next to inputsRead fields with jq:
P=$(jq -r --arg n "$NAME" '.profiles[$n]' "$PROFILES_FILE")
ENCODER=$(echo "$P" | jq -r .encoder)
RES=$(echo "$P" | jq -r .resolution)
RC_MODE=$(echo "$P" | jq -r .rate_control.mode)
RC_VAL=$(echo "$P" | jq -r .rate_control.value)
AUDIO_CODEC=$(echo "$P" | jq -r .audio.codec)
AUDIO_BR=$(echo "$P" | jq -r .audio.bitrate)
EXTRA=$(echo "$P" | jq -r '.extra_args | join(" ")')
RENDER_NODE=$(jq -r .gpu.render_node "$SYS_FILE")
Construct per encoder family:
*_vaapi): -vaapi_device "$RENDER_NODE" -vf 'format=nv12,hwupload,scale_vaapi=...' -c:v $ENCODER -qp $RC_VAL ...*_nvenc): -c:v $ENCODER -rc constqp -qp $RC_VAL ... (or -b:v if mode=bitrate)-c:v $ENCODER -crf $RC_VAL -preset medium ...Always pass -c:a $AUDIO_CODEC -b:a $AUDIO_BR and the profile's extra_args.
Print the resolved ffmpeg template (with placeholders for IN/OUT) and the list of files about to be rendered. Ask for confirmation if more than 1 file.
For each input:
out="$OUT_DIR/$(basename "${in%.*}").${CONTAINER}"
ffmpeg -hide_banner -y -i "$in" <args> "$out"
After each render, report file size and the ratio vs. source. After the batch, summarize: N files, total input size → total output size, elapsed time.
If the chosen encoder fails (common with VAAPI on misconfigured systems), fall back to the encoder marked working for the same codec in system-profile.json and warn the user. If even that fails, abort and tell them to re-run profile-system.