# ClipForge: self-hosted AI short-video generator for e-commerce, reviewed

> ClipForge turns one product photo into a Douyin, Kuaishou, Xiaohongshu or TikTok Shop sales video, with a free local pipeline and a paid AI pipeline behind one confirmation click. Here is what the repository actually documents, and where it stops.

**xixihhhh/clipforge** — ClipForge（原『带货剪手』/ daihuo-jianshou）：开源 AI 带货短视频神器——上传一张商品图，AI 自动提炼卖点 + 写种草脚本 + 锁定商品原图不变形 + 配画面/配音/字幕，一键产出抖音小店 / 快手 / 小红书 / TikTok Shop 卖货短视频。0 成本批量出片、开源无水印、本地自部署。也支持一句话主题成片。Open-source AI e-commerce/UGC short-video generator.

- Repository: https://github.com/xixihhhh/clipforge
- Website: https://xixihhhh.github.io/clipforge/
- Stars: 907 · Forks: 203
- Language: TypeScript
- License: AGPL-3.0
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/xixihhhh-clipforge

## The problem ClipForge targets: one product photo, one sellable clip

The README frames the project around a single workflow: upload a product image, and the system extracts selling points, writes a seeding script, keeps the original product image undistorted, and adds footage, voiceover and subtitles. The output is a short vertical video intended for Douyin Shop, Kuaishou, Xiaohongshu, WeChat Channels or TikTok Shop. The stated audience is a seller or operator who needs dozens of clips a day without a per-clip fee, and the README claims batch output at zero cost with no watermark.

That framing matters because the alternative it competes with is not a video editor. It is the manual loop of writing copy, finding b-roll, recording voiceover and burning subtitles, repeated for every SKU. ClipForge also supports a one-line topic mode for non-commerce subjects, so the same pipeline can produce faceless videos outside product marketing. The project was renamed from daihuo-jianshou, and the README states the repository history continues under the new name.

## Two pipelines, one confirmation click: how the free and AI paths differ

The architecture separates generation from assembly. The free path uses stock footage, text-to-speech and local composition through FFmpeg, and the README describes it as costing nothing and taking roughly two minutes. The AI path is billed per second by whichever model platform you configure, and the README is explicit that the free script acts as a confirmation gate: you read the voiceover copy, then click once to generate, and that click is the only place money is spent.

The stack is a Next.js 16 application with React 19 and TypeScript 5, Tailwind CSS 4 for the interface, better-sqlite3 for local storage, and drizzle-orm for schema management. FFmpeg and ffprobe handle composition, with ffmpeg-static and @ffprobe-installer/ffprobe as dependencies. The project ships a web UI, a CLI at bin/clipforge.mjs, an MCP server at mcp/clipforge-mcp.mjs, and a skills directory, all described as sharing the same production capabilities. A server-side pipeline table called pipeline_runs persists free-pipeline execution so that closing the browser tab does not lose the run, and the README states that reopening the project reconnects to live progress.

There is a real design decision in the Dockerfile worth reading before you deploy. The image deliberately installs Debian's ffmpeg package rather than using the static Linux binary from ffmpeg-static, because the comment states that the johnvansickle FFmpeg 7.x build lacks harfbuzz and therefore has no drawtext filter at all. Since subtitles, price stickers, covers and end cards all depend on drawtext, the static binary would break every text-bearing composition in a Docker deployment. That is a specific, verifiable trade-off rather than a preference.

## Installing ClipForge with Docker and producing a first clip

The Dockerfile documents a one-command self-hosted path. The container listens on port 3000 and expects a volume mounted at /data for its database and generated files. The README states that no API key is required to produce a clip, because the free path uses stock footage and Edge TTS.

```bash
docker run -d -p 3000:3000 -v clipforge-data:/data ghcr.io/xixihhhh/clipforge:latest
```

After the container starts, open http://localhost:3000 in a browser. You should see the ClipForge workbench. From there, the README describes the creation flow as asking two questions: the production mode (free quick cut at zero cost, or AI generation billed per second with the price shown on the option) and the commerce format (recommended, talking-head presenter, short drama, or image-text montage).

For a source checkout rather than a container, package.json requires Node.js 20 or newer and pnpm 10 or newer, with pnpm pinned at 10.33.0. The relevant scripts are dev, build, start, cli and mcp.

```bash
corepack enable
pnpm install --frozen-lockfile
pnpm dev
```

The README points first-time users at TUTORIAL.md and TUTORIAL.en.md, which it says cover installation, key configuration, producing a first free clip in about three minutes, an error lookup table, and where data is stored. If you prefer a terminal over the browser, the CLI entry point is exposed as a package script.

```bash
pnpm cli
```

For automation, the MCP server is a separate Node script, and the README states that the web UI, MCP, CLI and Skill share the same production capability set rather than being separate implementations.

## Where ClipForge stops: cost gates, model dependence and the FFmpeg surface

The most important limitation is that the free pipeline and the paid pipeline are not equivalent. Free output uses stock footage and TTS, which means the visuals are generic rather than derived from your product. The README's own framing of the AI tier is that it produces true image-to-video with locked product identity, cross-shot consistency and native dialogue. If your product needs its actual appearance preserved across shots, the free tier does not do that, and the AI tier bills per second through a third-party model platform.

That leads to the second constraint: ClipForge is a bring-your-own-key orchestrator. The README states that fees are paid to the model platform you choose and that ClipForge itself is free. There is no bundled model quota. If the model platform changes pricing or availability, the cost and capability of the AI path change with it, and the README notes that unknown prices are displayed as a range rather than a fabricated exact number.

The third constraint is the composition layer. Because subtitles, stickers and cards run through FFmpeg's drawtext filter, the deployment is sensitive to which FFmpeg build is on PATH. The Dockerfile handles this by installing Debian's package, but a bare-metal install that falls back to the static binary will hit the missing-filter problem the Dockerfile comment describes. The project does not document a rollback procedure for a completed render, and the README does not describe a hosted fallback if local composition fails.

## ClipForge compared with Opus Clip and Vidyo AI

Opus Clip and Vidyo AI are the names people search alongside ClipForge, and the difference is structural rather than a feature checklist. Both of those are hosted services: you upload media to their infrastructure and they return clips, with their own pricing and their own processing pipeline. ClipForge inverts that. It runs on your machine or your server, stores data in a local SQLite database under /data in the container, and calls out to model providers only for the AI tier using keys you supply.

That inversion is the whole argument. A self-hosted pipeline means your product images and source footage do not leave your infrastructure except when you explicitly invoke a paid model. It also means you own the upgrade path, the FFmpeg version and the database. The cost is operational: you run Node.js, pnpm, FFmpeg and a volume, and you debug your own composition failures. A hosted clip service trades that operational work for a subscription and for handing over the media.

The second difference is the target format. Opus Clip and Vidyo AI are primarily oriented toward repurposing long-form content into short clips. ClipForge is oriented toward generating new commerce video from a product image and a script, with a template library and a hook library aimed at conversion. Those are different jobs that happen to share the word clip.

## Licence, maintenance and what an upgrade actually costs

ClipForge is licensed AGPL-3.0-only, as declared in package.json and shown in the README badge, with a separate NOTICE file at the repository root. AGPL-3.0 is a strong copyleft licence with a network clause: if you modify the software and let users interact with it over a network, the licence's terms apply to that interaction. For an internal deployment where you do not distribute changes, the practical burden is low. For a product built on a modified ClipForge that you expose to customers, the obligation is materially different, and LICENSE and NOTICE are the documents to read rather than a summary. This is not legal advice.

On maintenance, the last push to the default branch was on 2026-09-07, and the repository is not archived. Releases v0.9.4, v0.9.3 and v0.9.2 all landed within the same week, and package.json declares version 0.9.5, which suggests the version field moves ahead of tagged releases. The changelog entries in the README are detailed and version-numbered, which makes upgrade planning easier than a project with only commit history.

Upgrade cost is dominated by two things: the SQLite schema managed through drizzle, and the FFmpeg filter surface. Drizzle migrations live in the drizzle directory with drizzle.config.ts at the root, so a schema change between versions is visible in the repository rather than hidden. The Docker image bundles its own FFmpeg, so upgrading the container upgrades the filter set with it. A source install does not, and that is where version drift between your system FFmpeg and the filters the composition pipeline expects will surface.

## Conclusion

Adopt ClipForge if you already produce e-commerce video at volume and want the generation step self-hosted, scriptable through the CLI and MCP entry points, and gated by an explicit paid confirmation. Do not adopt it if you need a hosted service with no Node.js, FFmpeg or model keys to manage, or if AGPL-3.0 does not fit how you intend to distribute your version. Before committing, run the Docker image with a /data volume and confirm that the free pipeline completes on your own product image, then read LICENSE and NOTICE against your distribution plan.

## FAQ

### What is ClipForge?

ClipForge is an open-source AI short-video generator for e-commerce. According to the README, you upload a product image and it extracts selling points, writes a seeding script, keeps the product image undistorted, and adds footage, voiceover and subtitles for Douyin Shop, Kuaishou, Xiaohongshu or TikTok Shop.

### Is ClipForge free to use?

The software itself is free and open source under AGPL-3.0, and the README describes a free pipeline using stock footage, voiceover and local composition that costs nothing. The AI tier is billed per second by the model platform you configure, and the README states that fees are paid to that platform rather than to ClipForge.

### How do I install ClipForge?

The Dockerfile documents a single command that runs the image on port 3000 with a volume at /data, after which you open http://localhost:3000. For a source checkout, package.json requires Node.js 20 or newer and pnpm 10 or newer, and the README points to TUTORIAL.md and TUTORIAL.en.md for the full setup.

### Does ClipForge need an API key?

The Dockerfile comment states that the container can produce a clip without a key, using free stock footage and Edge TTS. Keys are needed for the AI generation tier, which calls third-party model platforms under a bring-your-own-key model.

### Can ClipForge be called from an agent or a script?

Yes. The repository ships a CLI at bin/clipforge.mjs, an MCP server at mcp/clipforge-mcp.mjs, and a skills directory, and the README states that the web UI, MCP, CLI and Skill share the same production capabilities. The package scripts expose these as pnpm cli and pnpm mcp.

## Sources

- [License: AGPL-3.0](https://github.com/xixihhhh/clipforge/blob/main/LICENSE)
- [Project website](https://xixihhhh.github.io/clipforge/)
- [README](https://github.com/xixihhhh/clipforge/blob/main/README.md)
- [Releases](https://github.com/xixihhhh/clipforge/releases)
- [xixihhhh/clipforge on GitHub](https://github.com/xixihhhh/clipforge)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/xixihhhh-clipforge
