← Search

FFmpeg Auto-Assemble
Media 📌 Pinned version: commit 96c49b3
⚙ Needs: Before you start: read this whole install prompt…

FFmpeg Auto-Assemble

At a glance
What
Cost
Free
Needs
Before you start: read this whole install prompt, tell me in a few lines what this skill does and what installing it involves, and wait for my go-ahead before you do anything else.
Install
Copy the installer prompt below into your Muse — your agent does the rest.

Version:

⌁

Install

Copy the install package below, then paste it into Muse📌 Pinned version: commit 96c49b3
Wanna be extra careful?

The install prompt below already includes the vetting steps: your agent follows the community checklist before installing anything with executable code. Want more?

How to check a build before installing →

🔒 Security and provenance
📌 Pinned version: commit 96c49b3 · 2026-10-19
Skill Harbor never reviews the code of a listed skill. These are dated facts about the install prompt and our install test, not a safety certification. Review a skill yourself before you install it. How we verify

Before you start: read this whole install prompt, tell me in a few lines what this skill does and what installing it involves, and wait for my go-ahead before you do anything else. Prerequisites: none for the install itself: no account, no API key, no paid service, and nothing else to install first — installing is only copying the skill folder. Using the skill afterwards is a different matter, so read this first: rendering needs (1) Python 3.9 or newer with three pip packages — Pillow, NumPy and edge-tts (the repository's requirements.txt asks for pillow>=10, numpy>=1.24, edge-tts>=6.1) — none of them is installed by this install; (2) ffmpeg (built with libass, and libx264 for encoding) and ffprobe on PATH — ffmpeg is a separate system install, not a pip package; and (3) a CJK font installed on the system for the burned-in subtitles and cards (the scripts auto-detect one; on Linux that is typically Noto Sans CJK). One use-time route also uses the network, with no key and no account: by default every narration line is sent to Microsoft's Edge TTS online service through the edge-tts library (disclosed in full in point 2) — the --tts none mode avoids the network entirely. I provide the inputs myself: a storyboard.json plus the product images or video clips it references. Install "ffmpeg-auto-assemble" for me. It turns a storyboard.json (product images or video clips plus a narration script) into a finished ecommerce short video with one ffmpeg pipeline: voice-over synthesis, one shot per storyboard entry (Ken Burns motion on a still image, or a trimmed video clip), xfade transitions, burned-in ASS subtitles with styled title and call-to-action text, background music with automatic ducking under the voice (a locally synthesized royalty-free bed by default, or my own music file), and two-pass loudness normalisation to about -14 LUFS, outputting an MP4 (1080x1920, 9:16, by default; --size also allows e.g. 1080x1080 or 1920x1080) plus an .srt subtitle file next to it. Repository: https://github.com/xianyu110/ecommerce-video-skills (the skill is the whole skills/ffmpeg-auto-assemble/ folder at the pinned commit: SKILL.md plus its scripts/ folder, 6 files) Pinned version: install the code at commit 96c49b349b7d975bda8f05ce6669c1d33500c269 exactly. Do not substitute a newer version. If this commit is unreachable, stop and tell me. 1. Clone https://github.com/xianyu110/ecommerce-video-skills into a temporary folder, check out commit 96c49b349b7d975bda8f05ce6669c1d33500c269, and copy the skills/ffmpeg-auto-assemble/ folder from that checkout. Then compare every file in the folder with the fingerprints recorded for this listing on 2026-10-19: [FINGERPRINTS] - SKILL.md: SHA-256 2fcedce4f6b5c87660cc4def11f31d07fe2e02dc5697930e5551c593de7e3c28 - scripts/assemble.py: SHA-256 e55ed538d3662133724b9d1154ee8f6f9419253636388fbb9d8a54c280528048 - scripts/make_bgm.py: SHA-256 f02581b6d77422767b839f0c3b8a1475f74e9910e7a5efc817b71ba97eb5783e - scripts/make_cards.py: SHA-256 b6173bebd9a9a3d69d14688b091d3328f0e4792c72e6fde7530205babc2136d5 - scripts/make_subs.py: SHA-256 8c8e9208e5dee5db0f92ed3e5fc9850f99896be5ca02792d79b5f35b26f89cef - scripts/tts_edge.py: SHA-256 f3263ce63fa29e106cc38be0cec2daf564e9609e37c99c3709eef0136c0a9d76 If a file does not match, it changed since the listing was prepared: do not install it yet, tell me what you found and let me decide. 2. Read SKILL.md in full and read all five scripts in scripts/ (assemble.py, make_bgm.py, make_cards.py, make_subs.py, tts_edge.py), and tell me in plain words: what the skill does when used, which services it connects to, whether it reads or sends any personal information or keys, and anything that seems unusual. Stop on any red flag and tell me before going further. Confirm these points from the files: - The skill folder holds 6 files only: SKILL.md (5,125 bytes) and five Python scripts in scripts/ (assemble.py 14,821 bytes, make_bgm.py 2,909 bytes, make_cards.py 8,184 bytes, make_subs.py 5,751 bytes, tts_edge.py 4,628 bytes). The five scripts in this folder are byte-identical copies of the same-named scripts at the repository root (scripts/): the skill is self-contained in its own folder — assemble.py imports make_subs, make_bgm and tts_edge from its own folder only, and needs no file from elsewhere in the repository. SKILL.md's workflow text mentions sibling skills (a storyboard can be authored by selling-point-storyboard, and finished videos can be handed to platform-spec-export and cover-title-ab), but those are optional workflow suggestions, not file dependencies of this folder. The quick-start example path examples/aura-bottle/storyboard.json is a repository example, not something this skill needs for my own storyboards. - Nothing is sent anywhere during installation itself; the only download at install time is the skill folder from GitHub at the pinned commit. No script is run during installation, no key is asked for, and there is no telemetry in the folder. The folder reads no environment variables, no API keys and no credential files — confirmed in all five scripts. - What leaves this machine at use time, disclosed here before it ever happens — using the skill is a separate step that only starts when I ask for a video, and there is exactly one network route in the folder: the default voice-over. scripts/tts_edge.py (called by assemble.py unless I pass --tts none) hands each narration line — the text of the storyboard's line field (or the localised field I choose, e.g. line_en), one line per shot — together with the voice name (default zh-CN-YunxiNeural, or the storyboard's / my chosen voice), rate and pitch, to the edge-tts library, which sends them to Microsoft's Edge TTS online service and downloads the synthesised MP3 audio back; the script then trims and converts it locally with ffmpeg. No API key, account or payment is involved, and nothing else is sent: not my images, not my video clips, not the storyboard file itself — only the narration text I put in the line fields, the voice name, the rate and the pitch. Results are cached locally under a hash of (text, voice, rate, pitch), so re-running the same line does not send it again. The standalone tts_edge.py --list <locale> mode also queries that same Microsoft service for its voice list. With --tts none, nothing is sent anywhere at all: shot durations are estimated from the narration's character count and the render is a silent, fully offline preview. - One honesty correction to the upstream text, so you repeat it to me if I quote it: SKILL.md and the README call this pipeline "purely local" / "no cloud service". That is true of the rendering itself and of --tts none, but the default voice-over is an online Microsoft service, as disclosed above — the narration text does leave this machine on the default route. - The local-only parts at use time: everything else runs on this machine. assemble.py drives the locally installed ffmpeg/ffprobe (per-shot render, xfade chain, audio decode, loudness measurement) and Pillow (still preparation, blurred-fill backgrounds); make_bgm.py synthesizes the default background music locally with NumPy (no download, no licence issue), or assemble.py loops a music file I supply locally; make_subs.py builds the ASS/SRT subtitles locally (it only runs the local fc-list command to detect a CJK font); make_cards.py draws product/end cards locally with Pillow. The storyboard's image/video paths are read locally, relative to the storyboard file. - Do not install Pillow, NumPy, edge-tts or ffmpeg during this install, do not run any of the five scripts, and do not render any video: setting up the rendering prerequisites is my decision, later, when I actually ask for a video. 3. When I say "yes, install", install it as a skill: copy the whole ffmpeg-auto-assemble folder into the agent's skills directory, in a folder named "ffmpeg-auto-assemble", keeping all 6 files (SKILL.md at its root and the five scripts in its scripts/ subfolder). A manual clone followed by copying the skills/ffmpeg-auto-assemble folder into ~/.claude/skills/ is the route described here; any other route is fine only as long as every installed file matches its fingerprint. 4. Verify with no network calls: frontmatter valid (name: ffmpeg-auto-assemble), all 6 files in place with matching fingerprints. Do not run assemble.py, make_bgm.py, make_cards.py, make_subs.py or tts_edge.py to verify. 5. Report what was installed, where, and what I still need to do myself (for example: install Python 3.9+ with Pillow, NumPy and edge-tts, and ffmpeg with libass plus ffprobe, and a CJK font, myself; write or obtain a storyboard.json and provide the product images or video clips it references, at 1000px or more on the product images; decide myself whether the voice-over may send my narration lines to Microsoft's Edge TTS service, or use --tts none for a fully offline silent preview; using the skill is a separate step that only starts when I ask for it, and the use-time send disclosed above happens only then, only on the default voice-over route). GitHub is optional: if I have a GitHub account or the gh CLI, you may use it; otherwise public access is fine. Never require it unless it's in the prerequisites above. Rules: don't touch anything outside the temp folder and the install target. If anything looks off, stop and ask me.

?

Questions

How do I install a build?

Every product page includes a copy-paste install prompt. Paste it into your Muse and it sets the build up for you — no manual configuration.

Where does my money go?

Straight to the seller. Skill Harbor never processes payments: checkout happens on the seller’s own page, usually Stripe.

What does the ✓ next to a creator’s name mean?

It means we confirmed the identity of the person behind the listing. It says nothing about the code itself — always check a build before installing it.