🚀 12 Schritte zur automatischen Short-Produktion
Vereinbaren Sie ein unverbindliches Strategiegespräch
📊 System-Architektur
ShortGPT ist eine modulare Pipeline-Engine. 12 Verarbeitungsschritte von der Skript-Generierung bis zum fertigen YouTube-Video mit Metadaten. Jeder Schritt ist isoliert testbar.
⚙️ 12-Schritt Pipeline
Script
GPT generiert Content-Skript
Audio
Temp Audio → Speed Up → Timed Captions
Images
Search Terms → Image URLs
Render
Assets → Edit → Render → YouTube Metadata
💻 Code — ContentShortEngine (Kern-Pipeline)
12-Step Dictionary mit Callbacks
class ContentShortEngine(AbstractContentEngine):
def __init__(self, short_type, background_video_name,
background_music_name, voiceModule,
num_images=None, watermark=None,
language=Language.ENGLISH):
super().__init__(short_id, short_type, language,
voiceModule)
self.stepDict = {
1: self._generateScript,
2: self._generateTempAudio,
3: self._speedUpAudio,
4: self._timeCaptions,
5: self._generateImageSearchTerms,
6: self._generateImageUrls,
7: self._chooseBackgroundMusic,
8: self._chooseBackgroundVideo,
9: self._prepareBackgroundAssets,
10: self._prepareCustomAssets,
11: self._editAndRenderShort,
12: self._addYoutubeMetadata
}
def _generateTempAudio(self):
script = self._db_script
# Auto-Translate bei Fremdsprache
if self._db_language != Language.ENGLISH.value:
self._db_translated_script = \
gpt_translate.translateContent(
script, self._db_language)
script = self._db_translated_script
self._db_temp_audio_path = \
self.voiceModule.generate_voice(
script,
self.dynamicAssetDir + "temp_audio.wav")
💻 Code — Editing Engine mit Captions
MoviePy-basierte Video-Komposition
def _editAndRenderShort(self):
outputPath = self.dynamicAssetDir + "rendered_video.mp4"
if os.path.exists(outputPath):
return
videoEditor = EditingEngine()
# Voiceover-Audio hinzufügen
videoEditor.addEditingStep(
EditingStep.ADD_VOICEOVER_AUDIO,
{'url': self._db_audio_path})
# Hintergrundmusik (11% Lautstärke, Loop)
videoEditor.addEditingStep(
EditingStep.ADD_BACKGROUND_MUSIC, {
'url': self._db_background_music_url,
'loop_background_music': self._db_voiceover_duration,
"volume_percentage": 0.11
})
# 1920x1080 → 1080x1920 Shorts-Format cropen
videoEditor.addEditingStep(
EditingStep.CROP_1920x1080,
{'url': self._db_background_trimmed})
# Subscribe-Animation
videoEditor.addEditingStep(
EditingStep.ADD_SUBSCRIBE_ANIMATION,
{'url': AssetDatabase.get_asset_link(
'subscribe animation')})
# Optional: Watermark
if self._db_watermark:
videoEditor.addEditingStep(
EditingStep.ADD_WATERMARK,
{'text': self._db_watermark})
# Timed Captions (alle Text-Timings)
for timing, text in self._db_timed_captions:
videoEditor.addEditingStep(
EditingStep.ADD_CAPTION_SHORT, {
'text': text.upper(),
'set_time_start': timing[0],
'set_time_end': timing[1]
})
videoEditor.renderVideo(outputPath)
💻 Code — YouTube Metadaten & Datei-Export
GPT-generierte Titel, Beschreibung & Tags
def _addYoutubeMetadata(self):
os.makedirs('videos/', exist_ok=True)
# GPT generiert YouTube-Metadaten
(self._db_yt_title,
self._db_yt_description,
self._db_yt_tags) = gpt_yt.generate_title_description_dict(
self._db_script)
# Dateiname aus Titel + Timestamp
now = datetime.datetime.now()
date_str = now.strftime("%Y-%m-%d_%H-%M-%S")
# Nur alphanumerische Zeichen im Dateinamen
clean_title = re.sub(r"[^a-zA-Z0-9 '\n\.]", '',
self._db_yt_title)
newFileName = f"videos/{date_str} - {clean_title}"
# Video verschieben
shutil.move(self._db_video_path, newFileName + ".mp4")
# Metadaten als Textdatei
with open(newFileName + ".txt", "w", encoding="utf-8") as f:
f.write(f"---Youtube title---\n"
f"{self._db_yt_title}\n"
f"---Youtube description---\n"
f"{self._db_yt_description}\n"
f"---Youtube Tags---\n"
f"{self._db_yt_tags}")
self._db_video_path = newFileName + ".mp4"
self._db_ready_to_upload = True
🎯 Strategische Erkenntnisse
Modulare Pipeline = Testbarkeit
Jeder der 12 Steps ist unabhängig. Fehler in Step 6 blockieren nicht Steps 1-5. Einzeln testbar, einzeln debugbar.
Callback-Dictionary-Pattern ist wartbarer als sequentielle Scripts.
Translation = Reichweite ×10
Ein englisches Skript → 10 Sprachen = 10 Videos zum Preis von einem. Die Translation-Engine macht Content global.
Multi-Language ist der einfachste Wachstumshebel auf YouTube.
Docker = Deployment-Freiheit
Dockerfile + docker-compose.yml: Ein Befehl, läuft überall. GPU-Support für Coqui TTS, CPU-Fallback für Edge-TTS.
Containerisierung eliminiert „works on my machine"-Probleme.
Eigene Content-Engine? In 3 Wochen.
ShortGPT ist Open Source — ich helfe Ihnen beim Setup, Customizing und Betreiben. Oder baue Ihre eigene Engine von Grund auf.