Code

Python: Content automatisch übersetzen

Automatisiere Übersetzung deines programmatischen SEO-Contents in mehrere Sprachen. Erhalte SEO-Begriffe, HTML-Struktur und halte Qualität im großen Maßstab aufrecht.

Python: Content automatisch übersetzen

Überblick

Automatisiere Content-Übersetzung für mehrsprachige programmatische SEO-Seiten. Dieses Beispiel zeigt wie du HTML-Content übersetzt während SEO-Begriffe, HTML-Struktur erhalten bleiben und Qualität aufrechterhalten wird.

Der Code

import os
import json
from openai import OpenAI
from typing import Optional

# OpenAI Client initialisieren
client = OpenAI(
    api_key=os.environ.get('OPENAI_API_KEY'),
    base_url=os.environ.get('OPENAI_API_BASE')  # Optional: für xAI, lokale Modelle
)

def translate_content(
    title: str,
    content_html: str,
    meta_description: str,
    slug: str,
    target_lang: str = 'de'
) -> Optional[dict]:
    """
    Übersetze Blog-Post-Content von Englisch zur Zielsprache.
    Erhält HTML-Struktur und behält SEO-Begriffe auf Englisch.
    
    Args:
        title: Post-Titel auf Englisch
        content_html: HTML-Content auf Englisch
        meta_description: Meta-Description auf Englisch
        slug: URL-Slug (wird übersetzt)
        target_lang: Zielsprach-Code (Standard: 'de' für Deutsch)
    
    Returns:
        Dict mit übersetztem: title, content_html, meta_description, slug
    """
    lang_names = {
        'de': 'German',
        'en': 'English',
        'fr': 'French',
        'es': 'Spanish'
    }
    target_lang_name = lang_names.get(target_lang, target_lang)
    
    # System-Prompt für Übersetzung
    system_prompt = f"""Du bist ein professioneller Übersetzer spezialisiert auf SEO und technischen Content.
Übersetze den bereitgestellten Blog-Post-Content von Englisch zu {target_lang_name}.

BEHALTE DIESE BEGRIFFE AUF ENGLISCH (üblich in {target_lang_name} Tech/SEO-Industrie):
- SEO, pSEO, Programmatic SEO, Keywords, Long-tail Keywords
- Content, Content Marketing, Ranking, Rankings, SERP
- Crawling, Crawl Budget, Crawler, Indexing, Index
- Backlinks, Link Building, CTR, Bounce Rate
- Landing Page, CMS, API, URL, HTML, CSS, JavaScript
- Template, Meta Tags, Meta Description, Schema Markup
- Core Web Vitals, E-E-A-T, Canonical, Redirect, Sitemap
- Browser, Cache, Hard Refresh, Soft Refresh, Cookies
- Alle Markennamen (Google, Chrome, Firefox, Safari, etc.)

Regeln:
1. Erhalte ALLE HTML-Tags und Struktur exakt
2. Übersetze nur den Text-Content, nicht HTML-Attribute
3. Behalte die oben gelisteten englischen Begriffe - sie sind Standard im deutschen Tech-Writing
4. ÜBERSETZE WIRKLICH den Slug zu {target_lang_name} Wörtern (nicht nur -de anhängen)
   Beispiel: "browser-hard-refresh-chrome" → "browser-cache-leeren-chrome"
5. Behalte denselben Ton und Stil bei
6. Stelle sicher dass meta_description unter 160 Zeichen bleibt

Gib ein JSON-Objekt zurück mit diesen Keys:
- title: übersetzter Titel
- content_html: übersetzter HTML-Content (erhalte alle Tags)
- meta_description: übersetzte Meta-Description (max 160 Zeichen)
- slug: ÜBERSETZTER URL-Slug mit {target_lang_name} Wörtern (lowercase, Bindestriche, keine Sonderzeichen)"""

    user_prompt = f"""Übersetze diesen Blog-Post zu {target_lang_name}:

TITLE: {title}

META_DESCRIPTION: {meta_description}

SLUG: {slug}

CONTENT_HTML:
{content_html}"""

    try:
        response = client.chat.completions.create(
            model=os.environ.get('OPENAI_API_MODEL', 'gpt-4o-mini'),
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": user_prompt}
            ],
            max_completion_tokens=32000
        )
        
        raw_content = response.choices[0].message.content
        
        # Response bereinigen - Markdown-Code-Blöcke entfernen falls vorhanden
        content = raw_content.strip()
        if content.startswith("```json"):
            content = content[7:]
        if content.startswith("```"):
            content = content[3:]
        if content.endswith("```"):
            content = content[:-3]
        content = content.strip()
        
        result = json.loads(content)
        
        # Erforderliche Felder validieren
        required = ['title', 'content_html', 'meta_description', 'slug']
        for field in required:
            if field not in result:
                raise ValueError(f"Übersetzung fehlt erforderliches Feld: {field}")
        
        return result
        
    except json.JSONDecodeError as e:
        print(f"JSON-Parsing fehlgeschlagen: {e}")
        return None
    except Exception as e:
        print(f"Übersetzung fehlgeschlagen: {e}")
        return None

# Beispiel-Nutzung
english_content = {
    "title": "How to Clear Browser Cache in Chrome",
    "content_html": "

How to Clear Browser Cache

Clearing your browser cache can help resolve loading issues.

", "meta_description": "Learn how to clear browser cache in Chrome to fix loading problems.", "slug": "clear-browser-cache-chrome" } result = translate_content(**english_content, target_lang='de') if result: print(f"Übersetzter Titel: {result['title']}") print(f"Übersetzter Slug: {result['slug']}") else: print("Übersetzung fehlgeschlagen")

Wichtige Features

  • SEO-Begriffserhaltung: Behält technische Begriffe auf Englisch
  • HTML-Struktur: Erhält alle HTML-Tags und Attribute
  • Slug-Übersetzung: Übersetzt URL-Slugs natürlich
  • Meta-Description: Stellt korrekte Länge für SEO sicher
  • Error-Handling: Graceful Handling von API-Fehlern

Skalierungs-Tipps

  • Batch-Übersetzung mehrerer Seiten gleichzeitig
  • Cache Übersetzungen um Neuübersetzung zu vermeiden
  • Nutze async/await für gleichzeitige Übersetzungen
  • Überwache Übersetzungsqualität mit Samples
  • Richte Retry-Logik für fehlgeschlagene Übersetzungen ein

Weitere Vorlagen