CtrlK
BlogDocsLog inGet started
Tessl Logo

gamussa/reels-producer-skill

help quicky produce instagram reels and youtube shorts

94

2.12x
Quality

96%

Does it follow best practices?

Impact

87%

2.12x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

render-engines.mdskills/reel-builder/references/

Render Engines (ffmpeg vs MoviePy)

Two renderers accept the same plan/cut_plan.json and produce the same kind of file, so they can be compared on identical input.

render_reel.pyrender_moviepy.py
Engineffmpeg — per-segment cuts, concat demuxer, one muxMoviePy — in-memory clip graph, single write
Dependencyffmpeg onlypip install moviepy
Speedfastslower — roughly 5x on a short 1080 preview
Gradingffmpeg filter chainthe same chain, applied as a second pass

render_reel.py is the default. Only reach for MoviePy when the user asks to compare, or when a plan needs per-clip compositing that the flat concat model cannot express.

Running the comparison

Same plan, same grade, same resolution — change only the script:

python3 scripts/render_reel.py    plan/cut_plan.json --preview --grade rapha --out preview/ab_ffmpeg.mp4
python3 scripts/render_moviepy.py plan/cut_plan.json --preview --grade rapha --out preview/ab_moviepy.mp4

render_moviepy.py prints its wall-clock time so the two are directly comparable. Grading is not reimplemented — MoviePy handles cut, concat, and audio, then the identical GRADES chain from render_reel.py runs as a second ffmpeg pass. That keeps the assembly engine as the only variable.

Ask before switching

Which engine to use is a user-facing choice, not an implementation detail: it changes render time and, slightly, the audio mix. Offer the comparison rather than silently swapping engines mid-project.

Known differences

  • Duration can differ by a frame or two. Concat butts segments together; MoviePy's compose recomputes the timeline.
  • Audio level differs slightly — measured about 2.7dB quieter from MoviePy on the same plan with the same gains. Check loudness before publishing a master rendered by the non-default engine.
  • Preview size is 540x960 from both, ignoring --resolution.

.mcp.json

tile.json