📹 ShortGPT Local — Automatische YouTube Shorts Engine

Open-Source-Pipeline für automatisierte Shorts: Skript via GPT → Voiceover → Captions → Editing → YouTube-Metadaten. Mit Gradio-UI, Docker-Support und Multi-Language-Translation.

PythonGPTElevenLabsMoviePyGradioDocker

🚀 12 Schritte zur automatischen Short-Produktion

Vereinbaren Sie ein unverbindliches Strategiegespräch

📞 02406 803 7603 ✉️ info@computerkumpel.de

📊 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.

🧠
GPT-Skript
Generiert Content-Skripte via OpenAI. Prompt-Templates in YAML konfigurierbar. Reddit-, Facts- und Chat-Engines.
🎤
Multi-Voice
ElevenLabs, Edge-TTS, Coqui TTS — austauschbar via VoiceModule-Interface. Auto-Spracherkennung.
✂️
Editing Engine
12 Editing-Steps: Voiceover, Background Music, Crop, Captions, Watermark, Subscribe-Animation.
🌍
Translation
Automatische Übersetzung in 10+ Sprachen. Arabic-Caption-Support inkl. RTL-Layout.

⚙️ 12-Schritt Pipeline

1
📝

Script

GPT generiert Content-Skript

2-4
🎤

Audio

Temp Audio → Speed Up → Timed Captions

5-6
🖼️

Images

Search Terms → Image URLs

7-12
🎬

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.

📞 Jetzt anrufen ✉️ E-Mail senden