dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Code-generated video production skill pack — engine-neutral, free and offline at its core, gated by measurements instead of opinions.
English · Türkçe
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 (primary) · GitHub (mirror)
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.
# 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.
Most "AI video" tooling ties you to one engine, one provider, or a heavy framework. This pack makes three commitments instead:
| 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.
Requirements: Node 18+, Python 3.10+, ffmpeg. All local, all free.
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:
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 standard:
npx skills add <this-repo>
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.mp4against 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.
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:
qc.py already produces it.| 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. |
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 |
| 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.
| 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.
This pack is deliberately lightweight and permissively licensed. These projects solve adjacent problems and are worth your attention:
MIT — see LICENSE. Vendored third-party skills keep their own MIT licences and
attribution; see THIRD_PARTY_NOTICES.md.