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:

  1. Erkennen, was sich geändert hat
  2. Inhalt mit Anweisungen an Claude senden
  3. Ergebnisse zurück in den Branch committen