← Search

Promo Video Maker
Video & Media 📌 Pinned version: commit 279ba51
⚙ Needs: Before you start: read this whole install prompt…

Promo Video Maker

Make a commercial-grade promo video for a product, website, app, SaaS, open-source project, course, AI model or event: product research, a requirements interview the user approves before anything...

At a glance
What
Make a commercial-grade promo video for a product, website, app, SaaS, open-source project, course, AI model or event: product research, a requirements interview the user approves before anything...
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 279ba51
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 279ba51 · 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, nothing to install first. Using the skill afterwards needs Node 18 or newer, Python 3.9 or newer and ffmpeg already on the machine (its environment check, template/scripts/doctor.py, only reports what is missing; it never installs system software). The optional ElevenLabs API key is what unlocks composed music and AI narration; without one, the workflow uses library music and subtitles instead. One licensing note from the README: the Remotion framework the videos are built with is free for individuals and companies of up to three people; larger teams need a paid Remotion company licence. The skill itself is MIT-licensed and free. Install "promo-video-maker" for me. It makes a commercial-grade promotional video for a product, website, app, SaaS, open-source project, course, AI model or event (a 4K MP4 plus a web version): it researches the product, interviews me about requirements and gets my approval before producing anything, collects real assets and 4K page screenshots, matches music to the beat grid, adds AI narration when configured, mixes, checks the result automatically, and delivers. Repository: https://github.com/liyupi/ai-promo-video-maker (the skill is the whole repository at the pinned commit: SKILL.md at the root, with AGENTS.md, references/ and template/) Pinned version: install the code at commit 279ba5178c3c80d472b84ac2efa36c6fca33bba2 exactly. Do not substitute a newer version. If this commit is unreachable, stop and tell me. 1. Clone https://github.com/liyupi/ai-promo-video-maker into a temporary folder, check out commit 279ba5178c3c80d472b84ac2efa36c6fca33bba2, and copy the whole repository folder (everything except the .git folder) from that checkout. Then compare every file with the fingerprints recorded for this listing on 2026-10-19: [FINGERPRINTS] - .env.example: SHA-256 0779c48499289b5bffc5d5289bc910d365d613e3e51ba8ed6ef4d27e465cc61d - .gitignore: SHA-256 6450cdfceb2a3c1903fd36268e7b9b80cab7b095bc06f4ce3fc8400bb1a6b4a9 - AGENTS.md: SHA-256 4f9f26be57f7c508f4776886cc5c2c45f289e501ceaed8ff957c3cea20c42d13 - CLAUDE.md: SHA-256 b0084658487ba12849552ac3c427ffeabf8fd7c05fa933618bebc6486c921c55 - LICENSE: SHA-256 4cbefbfd342922bb9d70500dc71c9711d097df0ead67bae4c302e2572f5bd1a3 - README.md: SHA-256 6b50bb1d06d4bd9462d154dde75a40ec411ef9b558512d9dba52050254da0cc6 - SKILL.md: SHA-256 05a421d462a928caca933cddaaed2b2de2b782581f067c91268834b4f784a7fc - docs/images/case-ainav.jpg: SHA-256 3ea6bfb490f1aac1f626b33a18ad47c06c0ecbbbe9f1106e2fe3bb5ae3ac800a - docs/images/case-codenav.jpg: SHA-256 67ae0e5c285833bd2c1f3b588ff2a999f9981c85de7c2ac72906a7abd1d1ede9 - docs/images/case-fable.jpg: SHA-256 c44a95abde33140983925a0d88402caf7e0c65832810c93706a31b16403db347 - docs/images/case-mianshiya.jpg: SHA-256 6909044f0001359a40a10e25a9a46ec8b5bb2c033ab5805edff1c6f22383e9a0 - docs/images/case-vibe.jpg: SHA-256 6d8b07ef1dc34a849a18e06f7649f7758095234ce6947f831728538a5ef32158 - docs/images/showcase.gif: SHA-256 5b14d7cbc39b91206a76676ca856f56369728be4556913ff29ab4a6cdca71c60 - docs/images/styles-ainav.jpg: SHA-256 83fabec546164db53681c9b36c1d81d6fe823d020006e3a85646fb67e610c104 - docs/images/styles-mianshiya.jpg: SHA-256 4684bd4c5f16312ab743379b32a4b5ce77287d6d74ab498ad4bacd6a25361def - outputs/.gitkeep: SHA-256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - references/校验清单.md: SHA-256 22bbdb9e95681a3784dd89b4c3a2e31ae89b62012637d1f343b0225afe9550a2 - references/案例复盘.md: SHA-256 055b4ff20613eeab2c41bdd4f08f9776c5fc8c4a0d4535205e4e2dfe0579d551 - references/素材获取.md: SHA-256 b08e96858823357c29ded2a585327b2adeda8ddc1188770a4baed8d0fcdc065b - references/踩坑记录.md: SHA-256 c248eff24ce32e7268695499aa1984c9f532c052b782760d8411d37f7c1b68e0 - references/配音.md: SHA-256 c145ed43b5d2d36926eb1cefaf6ec9f8c942d4dd23311dda8f2f06e3a492888c - references/需求问询.md: SHA-256 6554bac6a2da64abb8f790baec6400cf190da7409761b6d16d0901565fa780cb - references/音乐与卡点.md: SHA-256 cfb10206b4c46273a387c540c3f4236f7e7c3177379bc26090c1fda1b484f224 - references/风格方向.md: SHA-256 ad6692272ba1f84e607accdc0a2ed546667a7e21b40405cedccb88a01ea87ad6 - template/.gitignore: SHA-256 d949b82250919879af0759c44c199cd4f966f85ac3f324df75ffeb3e589a9b7f - template/audio-src/.gitkeep: SHA-256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - template/eslint.config.mjs: SHA-256 7f2ca640409fd597965bedf929073b9a74f143643e1711150c4cac3b6ec5c80d - template/fonts-src/.gitkeep: SHA-256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - template/fonts.json: SHA-256 b437f6f2b0afdd51b63dd1dde88f74861ad6f6c7b01a5a8fb3e920f1922fc579 - template/package-lock.json: SHA-256 050d86e0d271e545cd4d2ee3368438153343fefc970b4894d4ea1ef57c2e87e4 - template/package.json: SHA-256 58366900cf98a0865ae067a0a82708c4ea88ca8c0e014368374928c4bd738217 - template/public/audio/.gitkeep: SHA-256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - template/public/fonts/.gitkeep: SHA-256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - template/public/img/.gitkeep: SHA-256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - template/remotion.config.ts: SHA-256 22beb54e7dc3e01fc2b479471d7317ede7797c993b50fac658356187916bc59d - template/requirements.txt: SHA-256 72fb3d88c04fc7b9ea36abd797ea9ce9f7b860f03e04ec693d71aa8c9ab5b9ff - template/scripts/audiolib.py: SHA-256 950d965438698b74771c306ec386506fc8bf95e5be593c717e96bc01b048c24c - template/scripts/check_assets.py: SHA-256 2444205d4339e19e952ed3360f3c3cc97583c535f75a2685144a2930d18ea5e2 - template/scripts/check_video.py: SHA-256 cfd391e192c172007751bcb4b97e321bfd4ca25ee774437f098308b3d8ee468a - template/scripts/doctor.py: SHA-256 b4ac59d40395318f3ab71171a5657af2999f47b68138b79a7e59756b5d97151f - template/scripts/elevenlabs.py: SHA-256 bd8ca6957fdd5f8ac1987101ca3b9b58e06d38d02c7380fce6537b5ab17f7dac - template/scripts/fonts.py: SHA-256 56c5989796a9359f86703e0c0b90010a64a1137f052ebaea00163977d58adcc7 - template/scripts/images.py: SHA-256 2c65dacb0898e5a82e689461dd4bc58cd2b41e13623da58bd3e36b764ef421a5 - template/scripts/labelfont.py: SHA-256 09fbef81945f72c9b7e43dbb77446913923826d540dd4a07d5da2d6e8b33a5dd - template/scripts/mix.py: SHA-256 34c0186ebc4ac3f5fdd95463c9499db639a64894ec1d9787f6d6230bde4f9537 - template/scripts/music.py: SHA-256 3293d1deba035beae4335fcf4110a56752d7f9c3edd0792adf1531b7924b80d9 - template/scripts/sheet.py: SHA-256 d8f37fdd2ec39798aa99f41226aa7c56897a4612c8c39b1f31c0f655f0f97b5e - template/scripts/shot.py: SHA-256 004b6b2c5783bc09df8c080c83382f4a62c93b75f9e664cac439e45a884ccdd8 - template/scripts/snapshot.js: SHA-256 b77a3816dece60886c90cd020159483ed021446a687c3b78bd177759e76e5014 - template/scripts/snapshot.py: SHA-256 f5da159604b4d31d4051c7af0b9a155b60bf13e2576840c59a5171da8cd70257 - template/scripts/stills.mjs: SHA-256 c854f12a13bbb9c2d2848f86cba7ab370fc71441c3c35d219693da3bdf07fe1e - template/scripts/sync_template.py: SHA-256 540dd8bd128dac7af4fbccac849bcf11c52e6464a99d9bc7f9841576e4184354 - template/scripts/xgrab.py: SHA-256 206f812b0eaa214bba68653abc59bb2f70886efdaa3c88d6fb3c870c27a8f8bc - template/src/Promo.tsx: SHA-256 32d5739feb038224c02f8bb02631256e2aa2330b5a6befaa83e8cf408f478edc - template/src/Root.tsx: SHA-256 7fd1b6c7a0b88c246c0ffe0002ed2f76d63003fdb5f1db3d8b272daa73203773 - template/src/assets.ts: SHA-256 72fdcd9296c743506ac43d8c5ad06d568fc2c913be0b187d0a71a16e7a481729 - template/src/components/BrowserFrame.tsx: SHA-256 4e892d79b7ac67442516a89d297f566cf9fb04181f02e1ffb188b04355c55017 - template/src/index.css: SHA-256 3dd44199d74abfd5d2404ac2eba755dafe0ecefd7a26ba4023531c37e6170f52 - template/src/index.ts: SHA-256 957e481dd33a29b4a55ae0e95dbf763b7e48c37c427ca4bd1275faf34bc07a74 - template/src/lib/anim.ts: SHA-256 e35acfa6a6caa1a19d4c85d8f794f26ec2a325c77a72647a339707bff980ca19 - template/src/lib/fonts.ts: SHA-256 740450382607859e7f080369e91ef3b8e23e107a34065fca74da0b931287b629 - template/src/lib/theme.ts: SHA-256 c6bc92be3f13d008e91e6ef625d36a059211a41e05c8308f746502626c6688ed - template/src/scenes/Example.tsx: SHA-256 32d63990306cca2294a1d07e0b812a835870ae9ca6c9c26bcb6f765c580f446e - template/src/timing.json: SHA-256 af8c32d2b1e2b0bce867ab0c5eb5464002c5e6e17394d868dea53a8ead67e829 - template/src/ui/Clip.tsx: SHA-256 dc1ec6cc0c6e81fd78c17f39b515da8e237d81673bdcd69904246201f8d8dcd6 - template/tsconfig.json: SHA-256 d0ed6ad74a2acce1c17a98e919ca77b3d6e0ba6631511b3d5e961b8666df3942 - template/web/App.tsx: SHA-256 69c09940bb055d0d197ca8162d38e2e8384821d187fece4c9bbc559002fdfa4c - template/web/config.ts: SHA-256 6c3d01f3510a05b0244907f9bef73679aa049ef59e041221894b2891e1faa231 - template/web/index.html: SHA-256 921957fd1e821523770f376f73e632c013b470dbee338431259483af992b0320 - template/web/main.tsx: SHA-256 897175850e908319246cea32d535a1df811dbe7c3574978dd9f7e6800930aff7 - template/web/style.css: SHA-256 6033c01814390ac2e1ba5e880d6e3f6d91e92ebcd639fa85488081dcb6745f4b - template/web/vite.config.ts: SHA-256 9bae8fe22b19dfb7201192ebb29c175901dc5ca88bfc315c1f5aa51454fb7fbc 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 and AGENTS.md in full (SKILL.md is the entry point and defers to AGENTS.md, the full work specification, written in Chinese; CLAUDE.md only points to it), skim the reference documents in references/, and look over the template's scripts, then 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 package is the whole repository, 72 files (about 7.2 MB): SKILL.md and AGENTS.md, 8 reference documents in references/ (the requirements interview, style directions, asset sourcing, music and beat matching, voiceover, the checklists, the pitfalls log and the case reviews), template/ (a complete Remotion 4 and React 19 project that is copied for each new video, with its Python helper scripts for screenshots, music analysis, mixing, font subsetting and final checks, its package.json and package-lock.json), docs/ (the README's images, which production does not use) and outputs/.gitkeep. The scripts are plain readable Python, JavaScript and TypeScript; nothing is obfuscated. - Nothing is sent anywhere during installation itself; the only download at install time is the repository from GitHub at the pinned commit. The files name no telemetry. The .env.example in the package has an empty ELEVENLABS_API_KEY value: no key ships with the skill. - The workflow has hard human gates: it interviews me first and writes a requirements file, and production only starts after I explicitly approve it; music and narration voices are auditioned by me before they are locked; and blockers only I can solve (a login, an unverifiable fact, a doubtful asset copyright) stop the work and come back to me. Everything it produces is written into a promo folder in the current workspace, never into the skill's own folder. - At use time, the setup downloads are the template project's npm install (the Remotion stack), pip install -r template/requirements.txt (numpy, scipy, Pillow, fonttools, brotli, playwright, after telling me first) and playwright install chromium for the screenshot browser, on top of the Node, Python and ffmpeg I provide. - The sends at use time, all part of making the video I asked for: to ElevenLabs (api.elevenlabs.io), only when I have set my key in the workspace .env or the ELEVENLABS_API_KEY environment variable, go the narration script for text-to-speech (a voice I pick, which can be my own cloned voice from my account), the scoring prompts for composed music and sound effects, and the finished mix audio for a Scribe transcription check; to Mixkit (mixkit.co), when there is no ElevenLabs, go the searches and downloads of free library music and effects; for research, the workflow reads the product's official pages and sources with search, fetch or curl and the GitHub API via gh, screenshots the product's real pages at 4K with Playwright (for a page that needs a login, its shot.py --login opens a window where I log in myself), and can fetch an X post's original media through the public fxtwitter API with template/scripts/xgrab.py, with no login. Every asset's source is recorded in the project's research notes, and the interview asks me about copyright boundaries before assets are used. 3. When I say "yes, install", install it as a skill: copy the whole repository folder (everything except .git) into the agent's skills directory, in a folder named "promo-video-maker", keeping all 72 files. The upstream routes, npx skills add liyupi/ai-promo-video-maker -g or cloning the repository and opening it as a project, install the same content; either route is fine as long as every file matches the fingerprints. 4. Verify with no network calls: frontmatter valid, all 72 files in place. 5. Report what was installed, where, and what I still need to do myself (for example: have Node 18+, Python 3.9+ and ffmpeg on the machine before first use, decide myself whether to provide an ElevenLabs key, and name the product to promote myself; using the skill is a separate step that only starts when I ask for it, and the use-time downloads and sends disclosed above happen only then). 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.