← 查看文章

视频

短视频工厂这个名字,起得挺准

深拆 YILS-LIN/short-video-factory:它用 Electron 桌面端把文案、TTS、随机素材分段和 FFmpeg 合成串成一条本地流水线。

短视频工厂这个名字,起得挺准

有些视频工具想当导演。

有些工具更像工厂。

这个差别要先说清楚,不然后面很容易错怪工具。

导演要理解镜头、人物、情绪、节奏。这个动作该不该保留,那个眼神要不要多停半秒,某句台词后面是不是要留一点空,都是导演和剪辑的判断。

工厂做的是另一件事:把固定流程跑稳。

给它文案,给它素材,给它语音和字幕,它按流程合成一条视频。今天做 1 条,明天做 20 条,参数改一改还能继续跑。

YILS-LIN/short-video-factory 就是这种工具。

它的中文名叫“短视频工厂”,README 里也写得很直:一键生成产品营销与泛内容短视频,桌面端,本地运行,支持文案生成、语音合成、视频剪辑、字幕和批量处理。

这篇文章不把它包装成“AI 视频导演”。它更像一台本地短视频流水线。

这条线先画清楚。用对了,能省时间;用错了,会很别扭。

short-video-factory 把文案、语音、素材和 FFmpeg 串成流水线

1. 它解决的是批量初稿,不是精剪成片

你可以想象一个很常见的需求。

你有一个产品,准备发一批短视频:

主题:AI 会议纪要工具
素材:办公室、会议、产品界面、人物工作状态
BGM:几首轻快背景音乐
目标:每天生成几条不同版本的产品营销视频

如果每条都找人精剪,成本高。

如果直接让 AI 生成整条视频,又容易发散。

short-video-factory 走的是中间路线:本地桌面应用里,先让大模型写文案,再用 TTS 合成语音,再从素材库抽视频片段,最后用 FFmpeg 合成。

源码里这条链路很清楚。

src/views/Home/index.vue 里,点击渲染后大概走四步:

GenerateText
SynthesizedSpeech
SegmentVideo
Rendering

这四步就是它的骨架。

它不像 video-use 那样先转写素材、分析口播、确认剪辑策略。它也不像产品片 Skill 那样先研究产品定位、拆参考片、做质量闸门。

它更简单,也更直接。

把生产流程固定下来,让普通用户在桌面端里跑。

2. 文案生成:接 OpenAI 兼容接口

第一步是文案。

src/views/Home/components/TextGenerate.vue 里用的是 @ai-sdk/openai。用户可以配置三个东西:

apiUrl
apiKey
modelName

这意味着它不绑死某个模型服务。只要你的服务兼容 OpenAI 接口,就有机会接进去。

代码里目前没有复杂的系统提示词。它主要把用户输入的 prompt 发给模型,然后用 streamText 把生成内容流式写到界面上。

这里的好处是灵活。

你想做产品营销,可以写产品卖点;想做治愈语录,可以写语气要求;想做知识类短视频,也可以让模型先生成一段旁白。

这里的边界也很清楚。

文案质量取决于你给的 prompt 和模型本身。这个项目没有在源码里内置一套很重的选题、脚本、爆款结构审稿流程。它把“写什么”留给用户和大模型。

所以如果你想把它用好,最好先准备一套自己的文案 prompt,而不是只写一句“帮我生成一条带货视频文案”。

3. TTS:EdgeTTS 负责语音和字幕

文案生成后,第二步是语音。

electron/tts/index.ts 里接的是 EdgeTTS。

它会把文本合成 MP3。如果打开字幕,还会生成同名 SRT 文件。

代码里还有两个细节值得看。

第一,它会用 music-metadata 解析合成后的音频时长。如果时长拿不到,或者时长是 0,就直接报错。这个检查很必要,因为后面的视频素材长度要跟着语音时长走。

第二,临时语音文件和字幕文件会放到应用的 temp 路径里,退出前清理。这是桌面端工具该做的脏活。

从 Skill 写法看,这一步给我的启发是:不要把 TTS 当成一个“生成语音”的黑盒。你至少要拿到三个结果:

语音文件
字幕文件
音频时长

没有音频时长,后面的剪辑就没法算。

4. 素材选择:它主要按时长随机抽片段

第三步是素材。

src/views/Home/components/VideoManage.vue 会让用户选择一个素材文件夹,然后只筛出 .mp4 文件。

渲染时,它会根据 TTS 时长调用 getVideoSegments

这段逻辑很实在:

  • 单段素材最小 2 秒
  • 单段素材最大 15 秒
  • 从素材列表里随机选
  • 对每个素材随机取一个 start/end
  • 一直凑到总时长覆盖语音时长

代码里没有看到按画面内容做语义理解的逻辑。

这不是批评。它本来就是工厂。

如果你的素材库已经按主题准备好,比如全是咖啡店、产品特写、办公室场景,那随机抽片段可以快速拼出一批可用初稿。

如果素材库很杂,有会议、猫、海边、代码屏幕混在一起,它也会照抽。抽出来的东西看着怪,责任不全在工具。

这个工具要求用户先把素材库管好。

5. 合成:FFmpeg 是最后的装配线

最后一步在 electron/ffmpeg/index.ts

它用 ffmpeg-static,所以桌面端可以带着 FFmpeg 跑,不要求用户手动配置系统里的 FFmpeg。

合成时大概做这些事:

读取多个视频片段
trim 每个片段
scale 到目标尺寸
pad 补边
concat 拼接
烧录字幕
语音 loudnorm
BGM loudnorm
语音和 BGM 混音
输出 MP4

这里能看出它不是一个纯前端壳。

Electron 负责桌面能力,Vue 负责界面,TTS 和 FFmpeg 在本地执行,配置和状态存在本地。它确实把短视频生产链路做成了一个可运行的应用。

当然,它的合成策略也比较朴素。

比如素材选择主要按随机和时长,不会自动判断哪个镜头更适合哪句文案;转场效果也不是重点。GitHub issue 里有人提过“是否考虑增加简单的转场效果”,这类反馈其实很符合它的使用场景。

6. 公开反馈:大家想要的,是更聪明的素材和语音

GitHub API 在 2026 年 7 月 17 日返回的数据是:4401 个 star,641 个 fork,open issues 是 25。在中文开源视频工具里,这个关注度不低。

更值得看的,是 issue 里大家提的方向。

issue #57 提到自定义语音音色,issue #60 提到支持本地部署语音接口,issue #71 建议集成 FunASR/SenseVoice 做语音识别和字幕生成。

这些反馈说明用户不只想“有语音”,还想让语音更可控。

素材这边也有变化。PR #72 提到接入 TwelveLabs 智能剪辑,按文案语义匹配素材。这个方向正好补它原来随机抽片段的短板。

还有 issue #69 这类渲染失败问题。视频工具就是这样,用户一多,系统、素材格式、路径、编码都会冒出来。

这类反馈比“好用”“强大”更有价值。它们告诉我们:短视频工厂跑起来以后,下一步自然会走向两件事。

一是素材匹配更聪明。

二是语音和字幕更可控。

7. 怎么装、怎么用

仓库地址在这里:

https://github.com/YILS-LIN/short-video-factory

普通用户可以先看 Release,下载桌面端。

如果你想让 AI 帮你装,可以把 GitHub 地址给 AI,然后说:

帮我安装 short-video-factory。
我想先用它生成一条产品营销短视频,尽量走最简单的桌面端方式。

第一次使用时,不要直接把一堆乱素材扔进去。

你可以先准备一个小素材库:

素材文件夹:
- 10 段产品界面录屏
- 10 段办公室/会议/工作状态 B-roll
- 2 首 BGM

文案 prompt:
生成一段 40 秒以内的产品营销短视频旁白。
产品是 AI 会议纪要工具。
受众是经常开会的团队负责人。
语气自然,不要广告腔。

先跑一条,看看它生成的文案、语音、字幕、素材拼接是不是在你能接受的范围里。

再考虑批量。

这类工具不要一上来就追求“一键完美”。先让流程跑通,再一点点加素材标签、文案模板、语音风格和封面。

8. 如果自己实现一套,该怎么写

如果你想写一个“短视频工厂 Skill”,可以照这个结构来:

适用场景:
批量生成产品营销、语录、泛内容短视频初稿。

输入:
- 文案主题或产品卖点
- 素材文件夹
- BGM 文件夹
- TTS 音色
- 输出尺寸
- 输出路径

工作流:
1. 生成文案
2. 合成语音
3. 生成 SRT 字幕
4. 读取音频时长
5. 从素材库选片段
6. 用 FFmpeg trim/scale/pad/concat
7. 烧字幕
8. 混语音和 BGM
9. 输出 MP4

关键约束:
- 没有素材就先提示用户准备素材库
- 不要把随机抽片段说成“理解画面”
- 输出前检查音频时长和视频时长
- 渲染失败要把 FFmpeg 错误暴露给用户

自己实现短视频工厂的最小流水线

如果要继续升级,可以加三层能力。

第一层,素材标签。

给每段素材加上 办公室产品界面人物工作情绪轻松 这类标签,让文案里的句子能匹配素材。

第二层,画面理解。

接视频理解模型或 TwelveLabs 这类服务,让素材选择从随机走向语义匹配。

第三层,质量检查。

至少检查输出 MP4 是否存在、时长是否接近语音、字幕是否生成、音频是否为空。

这三层加上去以后,它才会从“能批量拼”走向“更像可控生产”。

9. 我的判断

short-video-factory 的优点和边界都在名字里。

它适合做工厂:固定流程、批量初稿、本地合成。

它不适合装导演:复杂叙事、精确镜头、情绪节奏、人物动作,这些最好还是交给更细的剪辑流程。

这并不丢人。

很多内容生产不是一上来就要精品。你先要有一条可重复的生产线,然后才谈哪一段需要人工精修。

如果你只是想用:

先准备一个干净的素材文件夹,少量素材跑通一条产品营销视频,再尝试批量。

如果你想学着写:

别把“自动生成短视频”写成一句大话。把文案、语音、字幕、素材片段、合成、检查拆成一条流水线。

你可以这样写自己的 Skill

适用场景:批量生成产品营销、语录、泛内容短视频初稿。

触发条件:用户有素材库、BGM、文案主题,想批量生成多条短视频。

输入:提示词、素材文件夹、输出尺寸、BGM 文件夹、TTS 音色、输出路径。

输出:带语音、字幕、BGM 的 MP4。

工作流:生成文案,合成语音和字幕,按语音时长抽视频片段,用 FFmpeg 合成。

关键约束:不要假装理解素材内容;随机抽片段适合批量初稿,不适合精剪成片。

可选工具:OpenAI 兼容接口、EdgeTTS、FFmpeg、SQLite、Electron、素材语义检索服务。

可改造方向:增加素材标签、画面识别、镜头去重、中文平台字幕样式和封面自动生成。