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