Automatische Blog-Übersetzungen mit Claude und GitHub Actions
Jeder Beitrag, den ich schreibe, wird automatisch übersetzt. Claude übernimmt die Übersetzung, committet die Ergebnisse nach main, und die übersetzten Versionen werden zusammen mit dem Original deployt.
Der Ablauf
Der Übersetzungs-Workflow läuft in GitHub Actions, wenn englischer Content nach main gemergt wird:
on:
push:
branches: [main]
paths:
- 'content/**/*.en.md'
flowchart LR
B[Merge nach main] --> C[Übersetzungen generiert]
C --> D[Nach main committet]
D --> E[Produktions-Deploy mit allen Sprachen]
Der Prompt
Der Workflow verwendet claude-code-action:
For each .en.md file that was added or modified:
1. Read the English content
2. Create translations for these languages: es, nl, de, it, fr, ja, zh, ru, hi
3. Save each translation as filename.{lang}.md (e.g., hello-world.es.md)
4. Preserve the frontmatter structure exactly, but translate the title
5. Translate the body content naturally
6. Keep code blocks, URLs, file paths, and technical terms unchanged
Ein Prompt behandelt alle 9 Sprachen. “Natürlich übersetzen” produziert flüssigere Ausgabe als “übersetze diesen Text.” Codeblöcke und Fachbegriffe bleiben auf Englisch.
Front Matter Behandlung
Hugo-Beiträge haben YAML Front Matter. Manche Felder sollten übersetzt werden (Titel), andere nicht (Datum, Slug):
“Behalte die Frontmatter-Struktur exakt bei, aber übersetze den Titel”
Englisch:
---
title: "Hello World"
date: 2025-12-20
draft: false
---
Hindi:
---
title: "नमस्ते दुनिया"
date: 2025-12-20
draft: false
---
Der Commit
Der Workflow richtet eine Bot-Identität ein und beschränkt, was Claude tun kann:
- name: Setup git identity
run: |
git config --global user.email "claude[bot]@users.noreply.github.com"
git config --global user.name "claude[bot]"
- name: Translate with Claude
uses: anthropics/claude-code-action@v1
with:
claude_args: "--allowedTools 'Write,Bash(git:*)'"
prompt: |
...
Use `git add`, `git commit`, and `git push` to add the translations directly to main.
--allowedTools beschränkt Claude auf das Schreiben von Dateien und das Ausführen von Git-Befehlen.
Qualität
Gut genug für einen persönlichen Blog. Claudes Übersetzungen sind flüssig und erfassen die Bedeutung gut. Ein Muttersprachler würde gelegentlich ungeschickte Formulierungen bemerken, aber es ist besser als ich es selbst könnte.
Andere Anwendungen
Das gleiche Muster funktioniert für Dokumentationsgenerierung, Changelog-Zusammenfassungen, Commit-Nachrichten und Release Notes:
- Erkennen, was sich geändert hat
- Inhalt mit Anweisungen an Claude senden
- Ergebnisse zurück in den Branch committen