Model or dataset
YILS-LIN/short-video-factory avatar
YILS-LIN/short-video-factory

short-video-factory: a desktop batch editor that promises subtitle effects it has not built

One-click generation of product marketing and general short-form videos: AI batch auto-editing, a good-looking cross-platform desktop tool.

6,143 stars843 forksTypeScriptAGPL-3.0

At a glance

What is it?
An AGPL-3.0 Electron desktop app that turns prompt text plus shot footage into marketing and general content short videos, with copy generation, EdgeTTS narration, mixed editing, and a batch mode that is still fairly narrow in scope.
Who is it for?
This fits someone who already has a folder of usable footage, writes prompts well, and wants narration and assembly done on their own machine without a subscription editor. It does not fit a team that needs per project parameter control, a choice of narration providers, or subtitle styling, because those three sit unchecked on the roadmap.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • YILS-LIN/short-video-factory6,143 ★ · +708
Star history
Repository2026-09-162026-11-14
YILS-LIN/short-video-factory5.4k6.1k

708 Stars in the last 59 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

You install a downloaded build, and pnpm is enforced if you build from source

There is no npm install that gets you a working editor here. The documented path is to open the GitHub Release page, take the newest version, and install the package for your operating system. The application is described as cross platform, covering Windows, macOS, and Linux, and it is an Electron app whose entry point is dist-electron/main.js. A separate documentation site at short-video-factory.yils.blog holds the manual. The source tree shows how the build is arranged: electron/, src/, native/, build/, public/, locales/, tests/, an electron-builder.json5 packaging config, an uno.config.ts styling config, a vite.config.ts, and a vitest.config.ts. A .nvmdrc and a pnpm-lock.yaml sit at the root, and the package manifest enforces that choice before anything else runs.

json
"preinstall": "npx only-allow pnpm",
"postinstall": "node build/scripts/post-install.js",
"dev": "cross-env VITE_CJS_IGNORE_WARNING=true vite",
"build": "vue-tsc && cross-env VITE_CJS_IGNORE_WARNING=true vite build && electron-builder",
"lipo-ffmpeg": "node build/scripts/lipo-ffmpeg.js"

The preinstall hook rejects other package managers, so a contributor reaching for npm or yarn is stopped at the gate rather than at a build error. The lipo-ffmpeg script name points at macOS binary work on the bundled FFmpeg.

Copy generation targets an OpenAI compatible endpoint, and the model choice is yours

The script is the entry point to everything else, and it is generated first. The stated pipeline starts from a prompt plus storyboard footage, and the first stage turns that prompt into video copy. The compatibility claim is deliberately wide: the feature is marked complete as working with general OpenAI interface formats, which means the app is not pinned to a single vendor endpoint. The dependency list backs that up. In development packages there are three model SDKs side by side: @ai-sdk/openai, @ai-sdk/openai-compatible pinned at 3.0.53, and @ai-sdk/anthropic pinned at 4.0.58, alongside axios for direct HTTP work. All three SDKs sit in devDependencies. The project does not name a model, a temperature, or a token budget anywhere in its documentation, which leaves prompt length and response shape as your problem to tune inside the app.

Narration is EdgeTTS for now, and the roadmap admits more providers are missing

Speech is the narrowest part of the pipeline and the project says so. The completed feature is voice synthesis with EdgeTTS, meaning the narration is produced through the Edge text to speech service rather than through a paid API you hold a key for. Two acknowledgements at the bottom of the page credit the community forks of that client, rany2/edge-tts and duyquangnvx/edge-tts. The roadmap then leaves 更多的语音合成API, meaning more speech synthesis APIs, as an open box. So the current state is one voice route, and the intent to add others is stated but not delivered. There is no documented fallback if EdgeTTS is unreachable from your network, and no documented way to supply your own recorded audio to the mixing stage instead. The multilingual claim in the feature list covers Chinese and English, but the documentation does not separate which languages reach narration cleanly and which only work at the copy stage.

Subtitle styling is promised in the feature list and still sits unchecked on the roadmap

This is the clearest gap inside the project. The core feature list advertises automatic subtitle and effect addition as a way to raise video quality. The roadmap, further down the same page, leaves 字幕特效,支持多种字幕样式和特效, meaning subtitle effects with multiple styles and effects, as an unchecked item. The same list marks copy generation, EdgeTTS narration, video editing with combined script, video, audio and subtitles, batch processing, and multi language support as done. So the assembly step exists, the styling step does not, and both sentences appear in the same document. What ships today is a subtitle pass tied to two pinned packages: subtitle at 4.2.2-alpha.0, an alpha line rather than a stable release, and pixi.js at 8.17.1. An alpha dependency on the subtitle parser is worth knowing about before you build a delivery process on top of the output format, because a breaking change can arrive with a patch release of this app.

Batch mode is one preset job running on repeat, not a folder watcher

The batch feature is checked off, and reading the wording closely shows what it actually is. It supports one batch task that keeps synthesising videos automatically according to a preset, which is a looping job over an already configured setup rather than a scheduler that scans a directory, watches for new files, or runs several different presets side by side. A single preset means every output in the run shares the same settings, so a library where clips need different pacing, different voice, or different lengths needs several runs or manual intervention. The project does not document queue priority, retry on failure, resume after a crash, or a limit on concurrent renders. The local storage underneath is better-sqlite3 pinned at 9.6.0, so state can persist across sessions, but what is stored and whether a failed render can be resumed is not described. Archiver at ^7.0.1 handles packaging, music-metadata at ^11.7.3 reads tags from your audio assets, and ws at ^8.18.3 is also a dependency.

Everything runs on your machine, with a bundled FFmpeg doing the assembly

The privacy claim is structural rather than a promise about servers. The app is described as running fully locally so user data stays safe, and the dependency list backs the local part: ffmpeg-static at ^5.2.0 ships the encoder inside the app, i18next with i18next-fs-backend handles the interface language from files in locales/, and electron-log at ^5.4.3 writes diagnostics to disk instead of a remote collector. systeminformation at ^5.27.7 reads host details, which is consistent with an app that needs to know about the machine it is rendering on. What is not local is the copy generation, which calls out to whatever OpenAI compatible endpoint you configure, and the EdgeTTS narration, which leaves the machine. So the raw footage and the finished files can stay on your disk while the script text still travels to a provider. The lipo-ffmpeg script in the build scripts hints that the bundled binary needs per architecture handling, which is the kind of detail that matters on an Apple silicon machine.

The three unchecked roadmap boxes are the honest part of the page

Three items remain open, and they are the ones a buyer would ask about first: more complete parameter adjustment, more speech synthesis APIs, and subtitle effects with multiple styles. Everything else on the roadmap is marked complete, including a finished user manual. Maintenance looks current rather than abandoned, with the last push landing on 2026-11-02 and tagged releases at v1.3.0 from 2026-10-16, v1.2.2 from 2026-04-07, and v1.2.1 from 2026-03-12. The testing setup is real for an app of this size, with vitest as the runner and separate scripts for the language model suite, type checking, and an Electron side harness, and the repository records 18 open issues against more than 6000 stars. The licence is AGPL-3.0 with a 2025 copyright line, which matters if you plan to wrap it in a service you host, since AGPL obligations reach network use.

Editorial conclusion

This fits someone who already has a folder of usable footage, writes prompts well, and wants narration and assembly done on their own machine without a subscription editor. It does not fit a team that needs per project parameter control, a choice of narration providers, or subtitle styling, because those three sit unchecked on the roadmap. Before you commit, open the manual at the project homepage, count how many voice providers you actually need, and check the release page for a build matching your operating system, since the install path is a downloaded package rather than a package manager entry.

Frequently asked questions

How do I install short-video-factory?

The documented path is the GitHub Release page: download the newest version and install the build for your system, which covers Windows, macOS, and Linux. The manual lives at short-video-factory.yils.blog. Contributors cloning the source are held to pnpm, because the preinstall script runs npx only-allow pnpm and rejects other package managers.

Does short-video-factory need a subscription or an API key?

Copy generation is compatible with general OpenAI interface formats, so it needs a compatible endpoint rather than a specific vendor, and narration goes through EdgeTTS, which is not a paid voice API. The app itself runs locally with a bundled FFmpeg, and the current release is v1.3.0 under AGPL-3.0.

Can short-video-factory style subtitles and add effects yet?

Not yet. Automatic subtitles and mixing are marked complete, but subtitle effects with multiple styles and effects is still an unchecked roadmap item, alongside more complete parameter adjustment and more speech synthesis APIs. The subtitle parser dependency is also pinned to an alpha version.

Official sources

  1. License: AGPL-3.0
  2. Project website
  3. README
  4. Releases
  5. YILS-LIN/short-video-factory on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/yils-lin-short-video-factory.svg)](https://hysenlabs.com/projects/yils-lin-short-video-factory)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/yils-lin-short-video-factory.svg)](https://hysenlabs.com/projects/yils-lin-short-video-factory)

Was this useful?