Agent preset
scaefy-video-production
Code-generated video production skill pack — engine-neutral, free and offline at its core, gated by measurements instead of opinions.
- Source
- fatihtoprakk
- License
- MIT
- Updated
- Updated 2 days ago
Readme
# Scaefy Video Production **English** · [Türkçe](README.tr.md) **A code-generated video production skill pack — engine-neutral, free at its core, and gated by measurements instead of opinions.** Your coding agent writes the film as code. A timeline renders every frame as a pure function of time, stills are captured from a real browser, ffmpeg encodes, audio is mixed, and the delivery passes a quality gate that fails loudly. No timeline editor, no keyframe dragging, no "looks good to me". > **v0.1.0** — 10 skills, a dependency-free 30-second example film verified in a real > browser, and a CI pipeline that runs every gate on each push. > [GitLab](https://gitlab.com/fatihtoprak/scaefy-video-production) (primary) · > [GitHub](https://github.com/fatihtoprakk/scaefy-video-production) (mirror) --- ## See it work `example/` holds a complete **30-second, 1920x1080, 25 fps** film — a real one, built for the agency that maintains this pack. It has **zero dependencies**: open `example/index.html` in a browser and it plays. No build step, no package install, no network. ```bash # watch it open example/index.html # capture stills and measure them PUPPETEER_CACHE_DIR="$PWD/.puppeteer-cache" TMPDIR="$PWD/.tmp" \ URL="file://$PWD/example/index.html?clean=1" \ node tools/shots.mjs shots 2 6 12 18 24 28 python3 tools/check-frames.py shots/*.png --theme light # measure every text box against the safe area, from the DOM PUPPETEER_CACHE_DIR="$PWD/.puppeteer-cache" TMPDIR="$PWD/.tmp" \ node tools/probe-layout.mjs --safe 0.08 --url "file://$PWD/example/index.html?clean=1" 2 6 12 18 24 28 ``` The film's on-screen copy is Turkish and its English subtitles ship alongside it, because the brand it was made for is Turkish. The pack's own prose is English. --- ## Why this exists Most "AI video" tooling ties you to one engine, one provider, or a heavy framework. This pack makes three commitments instead: 1. **Engine-neutral.** A film is built with one engine — HTML + GSAP for one-shot work that needs fast iteration, Remotion for data-fed templates that get re-rendered, or AI generation for photoreal footage. The pack teaches all three and never mixes them inside a single film. 2. **Free and offline at the core.** The default pipeline needs no API key, no account, and no network. AI footage is an optional layer you can add, skip, or run locally. 3. **Gated by measurements.** Loudness, true peak, frame integrity, safe-area overflow, and determinism are checked by scripts that return a non-zero exit code — not by a paragraph asking you to be careful. --- ## The zero-cost guarantee | Layer | Cost | Network | What it covers | |---|---|---|---| | **A · Code-generated graphics** (core) | **Free** | **None** | Kinetic typography, counters, data bars, name cards, logo reveals, end cards, captions, transitions, full motion-graphics films | | **B · AI footage** (optional) | Free with a GPU, otherwise paid | Yes | Photoreal b-roll, characters, scenes | Layer B has three paths, and you choose: | Path | Cost | Hardware | Examples | |---|---|---|---| | Local open source | **Free** | GPU required | Wan 2.1/2.2, Hunyuan Video, LTX Video, Flux | | Free tier | Free (limited) | None | Provider trial credits | | Paid API | Paid | None | Seedance 2.0, Veo, Kling | If a brief needs AI footage and you have neither a GPU nor a quota, the agent falls back to Layer A and **says so** — it never silently connects to a paid service. --- ## Quick start Requirements: **Node 18+**, **Python 3.10+**, **ffmpeg**. All local, all free. ```bash git clone <this-repo> cd scaefy-video-production # Resolve a working ffmpeg (tests execution, not existence) FF="$(tools/ffmpeg.sh)" && echo "ffmpeg OK" # Run every quality gate bash tools/verify.sh ``` To install as a DSH agent preset: ```bash mkdir -p ~/.dsh/.agent-presets cp -R . ~/.dsh/.agent-presets/scaefy-video-production ``` To use the skills with any agent that supports the [Agent Skills](https://agentskills.io) standard: ```bash npx skills add <this-repo> ``` --- ## Try these prompts Paste any of these into your agent. Each one is phrased the way a person actually talks, not the way a manual reads — the skill descriptions are written to catch them. **Plan before spending.** The cheapest thing you can change is the edit. > Plan a 30-second launch video for our homepage. Give me a brief and a timed > animatic first — do not render anything until I approve the pacing. **Turn a site into a film.** > Turn this landing page into a 20-second tour that uses the site's own visuals. **Make a vertical cut that isn't a crop.** > There's a finished master in `out/`. Give me a 15-second 9:16 version. Recomp > it for portrait — if you can't tell me what a centre crop would cut off, you > haven't checked it. **Keep a character consistent across shots.** > Here are four product stills. Write me a look bible and show me the stills > before you generate any video from them. **Fix the sound, then prove it.** > The music is fighting the narration. Duck it under speech and hit −14 LUFS > integrated with true peak under −1 dBTP, then show me the measurement. **Captions that survive a muted feed.** > Add English subtitles and tell me the reading speed of every cue. Nothing above > 17 characters per second. **Just tell me what's wrong with this file.** > QC `out/final.mp4` against the 1080p delivery spec and list what fails. **More than one language.** > Take the Turkish film and give me an English-subtitled version without touching > the master. ### What makes these prompts work The pack's skills route on **triggers**, not on exact wording. You do not need to name a skill. But three habits get better results: - **Ask for the cheap artifact first.** "Brief and animatic before you render" costs minutes instead of hours when the plan is wrong. - **Ask for the measurement.** "Show me the number" turns an opinion into a check, and `qc.py` already produces it. - **State the constraint, not the method.** "Recomp it, don't crop it" gets you a designed portrait version; "make it vertical" gets you a centre crop. --- ## Skills ### First-party | Skill | What it does | |---|---| | `brand-asset-intake` | Turns scattered brand assets into verified, machine-readable tokens: palette extraction, WCAG contrast, type scale and safe areas for 16:9/9:16, and a clean asset tree. Refuses to invent a missing logo or colour. | | `video-motion-graphics` | Builds the graphics layer in code: word-build kinetic typography, portrait mosaics, data and counter bars, name cards, logo reveal, end card — frame-accurate at 25 fps. | | `video-post-delivery` | Encodes, normalises, subtitles, and QC-checks a master against exact delivery specs, then derives short and vertical versions. Fails loudly rather than shipping a broken file. | ### Vendored (MIT, attributed — see `THIRD_PARTY_NOTICES.md`) | Skill | Origin | |---|---| | `bang-motion` | HTML + CSS + GSAP cinematic motion graphics, by Bang Tutorial | | `remotion-marketing-video` | Remotion + React marketing video workflow, by Sourabh | --- ## Tooling | Tool | Purpose | |---|---| | `tools/ffmpeg.sh` | Resolves a *working* ffmpeg — tests execution, not existence | | `tools/shots.mjs` | Captures stills at exact times, awaiting `ready` and `seekAsync` | | `tools/export-frames.mjs` | Exports a full frame sequence for encoding | | `tools/check-frames.py` | Black/frozen frames, safe-area overflow, ink coverage, contrast | | `tools/contact-sheet.py` | Builds a review sheet from frames, in numeric time order | | `tools/probe-layout.mjs` | Measures real glyph boxes from the DOM — never guess a type size | | `tools/verify.sh` | Runs every gate in one command | | `tools/banned-strings.txt` | Blocklist for leakage checks | The frame tools measure what is measurable and leave taste to a human. The layout probe reads `Range.getClientRects()` so it reports actual ink bounds regardless of alignment. --- ## Delivery matrix | Output | Duration | Frame | Codec / settings | |---|---|---|---| | Master | 60 s | 1920×1080 or 3840×2160 | H.264 High, yuv420p, 25 fps CFR | | Event backup | 60 s | same | H.264 yuv420p + AAC, constant frame rate | | Silent playback | 60 s | same | Master + embedded subtitles | | Short cut | 30 s | 16:9 | Derived from the master | | Teaser | 15 s | 9:16 | Recomposed, not cropped | | Vertical full | 60 s | 1080×1920 | Graphics recomposed for portrait | Colour space Rec.709 / Gamma 2.4. Audio AAC 48 kHz, 320 kbps stereo. Loudness target **−14 LUFS integrated**, true peak **≤ −1 dBTP**. --- ## Related work This pack is deliberately lightweight and permissively licensed. These projects solve adjacent problems and are worth your attention: - [**OpenMontage**](https://github.com/calesthio/OpenMontage) — a batteries-included agentic video production framework (Python, 100+ tools, 60+ providers), licensed **AGPLv3**. Its free path — offline Piper TTS, open archival footage, local GPU generation — independently validates the architecture this pack is built on. It is *not* a dependency and no code is shared: AGPL and MIT works stay separate. - [**sub-level/marketing-videos**](https://github.com/sub-level/marketing-videos) — an MIT Remotion + AI-footage pipeline with excellent case studies. - [**pexoai/pexo-skills**](https://github.com/pexoai/pexo-skills) — MIT skills wrapping a multi-model cloud generation API. - [**seedance2-skill**](https://github.com/dexhunter/seedance2-skill) — MIT prompt-writing guide for Seedance 2.0, by Dex. --- ## License MIT — see `LICENSE`. Vendored third-party skills keep their own MIT licences and attribution; see `THIRD_PARTY_NOTICES.md`.
Install
# Copy the composition to $DSH_HOME/.agent-presets/scaefy-video-production/agent.cordis.yml
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install fatihtoprakk-scaefy-video-production from the hub