ShortGPT 的核心是一个开源的 Python 框架,它利用大型语言模型(LLMs)和各种 AI 服务来自动化视频创作。通过为内容生成、语音合成、素材获取和视频编辑提供结构化方法,它简化了复杂的视频制作任务。该框架在 YouTube 自动化和 TikTok 创作者计划自动化中尤为流行,使创作者能够大规模制作引人入胜的内容。
ShortGPT 采用模块化架构,围绕几个关键组件构建,这些组件协同工作:
1. 内容引擎
该框架为不同类型的内容创作提供专用引擎:
- ContentShortEngine:专为创作短视频(如 TikTok 或 YouTube Shorts)设计,处理从脚本生成到最终渲染的所有环节
- ContentVideoEngine:针对长视频优化,管理音频生成、背景素材获取和字幕时间轴
- ContentTranslationEngine:专注于多语言视频的配音和翻译
- FactsShortEngine:使用自动获取的信息创建基于事实的短视频
2. 抽象内容引擎
所有内容引擎都继承自 AbstractContentEngine 类,该类为内容创作工作流提供了一致的基础。这个基类处理:
- 用于持久存储的数据库管理
- 分步内容创作流程
- 动态素材的路径管理
- 进度跟踪和日志记录
3. 编辑框架
编辑框架是 ShortGPT 视频制作能力的核心。它使用基于 JSON 的编辑语言,将复杂的视频编辑任务分解为 LLMs 可以理解和执行的可管理、可定制的步骤。该框架包括:
- EditingEngine:协调编辑步骤的主类
- EditingStep:定义各种编辑操作的枚举(添加字幕、水印、背景音乐等)
- CoreEditingEngine:使用 FFmpeg 处理实际的视频渲染
4. 用户界面
ShortGPT 提供基于 Gradio 的 Web 界面,通过友好的 GUI 使框架易于访问。该界面分为三个主要部分:
- 内容自动化:用于创建和管理视频内容
- 素材库:用于管理视频、音频和图像素材
- 配置:用于设置 API 密钥和首选项
工作流程
部署依赖
主要功能
自动化视频创作流程
ShortGPT 通过一系列明确定义的步骤自动化整个视频创作过程。例如,ContentShortEngine 遵循以下工作流:
- 脚本生成:使用 AI 创建引人入胜的脚本
- 音频生成:使用 TTS 服务将脚本转换为旁白
- 音频处理:优化音频时间和速度
- 字幕时间轴:使用语音识别生成带时间轴的字幕
- 素材获取:从网络查找相关图片和视频
- 背景选择:选择合适的背景音乐和视频
- 素材准备:处理所有素材以供编辑
- 视频渲染:将所有元素合成为最终视频
- 元数据生成:为平台创建标题和描述
多语言支持
ShortGPT 支持多语言内容创作,包括:
- 英语、西班牙语、阿拉伯语、法语、波兰语、德语、意大利语、葡萄牙语、俄语、普通话、日语和印地语
- 脚本和字幕的自动翻译
- 特定语言的字幕渲染(例如阿拉伯语文本的特殊处理)
外部依赖
技术栈
ShortGPT 利用强大的技术组合来实现其功能:
技术 | 用途 |
OpenAI GPT | 脚本生成、翻译和内容规划 |
MoviePy | 视频编辑和渲染 |
ElevenLabs | 高质量语音合成 |
EdgeTTS | 免费的多语言文本转语音 |
Whisper | 用于字幕时间轴的语音识别 |
Pexels API | 素材视频和图片获取 |
Gradio | Web 界面框架 |
TinyDB | 用于内容管理的轻量级数据库 |
FFmpeg | 视频处理和渲染 |
Gemini API 在 ShortGPT 中用作 OpenAI API 的替代方案,用于执行大语言模型(LLM)完成任务,如脚本生成、编辑提示词生成等。在 llm_completion 函数中,系统会优先检查 Gemini API 密钥。如果存在,则使用 Gemini API 进行 LLM 完成;否则回退到 OpenAI API。
可扩展性
ShortGPT引擎系统的核心是AbstractContentEngine类,它作为所有内容生成引擎的基础。这个抽象基类提供了一个基于步骤的工作流系统,负责处理从脚本生成到最终视频渲染的整个内容创作过程。
该架构遵循清晰的继承模式:
AbstractContentEngine(基类)ContentShortEngine(继承抽象类,提供通用短视频功能)- 特定引擎如
FactsShortEngine和RedditShortEngine(继承ContentShortEngine)
这种分层架构意味着您可以利用现有功能,同时专注于实现引擎的独特之处。
ShortGPT引擎使用步骤字典来定义内容创作过程。每个步骤都是按顺序执行的方法:
FAQ:
1.如何判断视频中图片时间轴位置,与字幕如何对应?
项目通过一个多步骤流程来确定图片时间轴位置并与字幕对应,核心是使用 Whisper 进行音频分析生成字幕时间戳,然后通过 LLM 生成图片查询和时间戳对。 content_short_engine.py:72-82
核心流程
1. 字幕时间生成 (_timeCaptions)
首先使用 Whisper 分析音频,生成带时间戳的字幕:
whisper_analysis = audio_utils.audioToText(self._db_audio_path)
self._db_timed_captions = captions.getCaptionsWithTime(whisper_analysis)
content_short_engine.py:72-76
2. 图片搜索查询生成 (getImageQueryPairs)
gpt_editing.getImageQueryPairs 函数接收带时间的字幕,使用 LLM 生成图片查询和时间戳对: gpt_editing.py:12-51
关键逻辑:
- LLM 返回 JSON 格式数据,包含
timestamp和querygpt_editing.py:24-26 - 计算每个图片的结束时间:
min(time + maxTime, next_time),确保图片显示不超过maxTime(默认2秒) gpt_editing.py:32-37 - 返回格式:
[((time, end), query + " image"), ...]gpt_editing.py:39
3. 视频渲染时的对应
在 _editAndRenderShort 中,图片和字幕使用相同的时间戳系统添加到编辑引擎: content_short_engine.py:140-148
# 添加字幕
for timing, text in self._db_timed_captions:
videoEditor.addEditingStep(caption_type, {'text': text.upper(),
'set_time_start': timing[0],
'set_time_end': timing[1]})
# 添加图片
for timing, image_url in self._db_timed_image_urls:
videoEditor.addEditingStep(EditingStep.SHOW_IMAGE, {'url': image_url,
'set_time_start': timing[0],
'set_time_end': timing







浙公网安备 33010602011771号