ShortGPT 的核心是一个开源的 Python 框架,它利用大型语言模型(LLMs)和各种 AI 服务来自动化视频创作。通过为内容生成、语音合成、素材获取和视频编辑提供结构化方法,它简化了复杂的视频制作任务。该框架在 YouTube 自动化和 TikTok 创作者计划自动化中尤为流行,使创作者能够大规模制作引人入胜的内容。

image

image

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 密钥和首选项

工作流程

image

部署依赖

image

主要功能

自动化视频创作流程

ShortGPT 通过一系列明确定义的步骤自动化整个视频创作过程。例如,ContentShortEngine 遵循以下工作流:

  1. 脚本生成:使用 AI 创建引人入胜的脚本
  2. 音频生成:使用 TTS 服务将脚本转换为旁白
  3. 音频处理:优化音频时间和速度
  4. 字幕时间轴:使用语音识别生成带时间轴的字幕
  5. 素材获取:从网络查找相关图片和视频
  6. 背景选择:选择合适的背景音乐和视频
  7. 素材准备:处理所有素材以供编辑
  8. 视频渲染:将所有元素合成为最终视频
  9. 元数据生成:为平台创建标题和描述
多语言支持

ShortGPT 支持多语言内容创作,包括:

  • 英语、西班牙语、阿拉伯语、法语、波兰语、德语、意大利语、葡萄牙语、俄语、普通话、日语和印地语
  • 脚本和字幕的自动翻译
  • 特定语言的字幕渲染(例如阿拉伯语文本的特殊处理)

外部依赖

image

技术栈

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(继承抽象类,提供通用短视频功能)
  • 特定引擎如FactsShortEngineRedditShortEngine(继承ContentShortEngine)

这种分层架构意味着您可以利用现有功能,同时专注于实现引擎的独特之处。

ShortGPT引擎使用步骤字典来定义内容创作过程。每个步骤都是按顺序执行的方法:

image

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 格式数据,包含 timestampquery gpt_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

image

posted on 2026-07-01 10:31  PetterLiu  阅读(18)  评论(0)    收藏  举报