Automatische Blogvertalingen met Claude en GitHub Actions

Elke post die ik schrijf wordt automatisch vertaald. Claude handelt de vertaling af, commit de resultaten naar main, en de vertaalde versies worden samen met het origineel gedeployed.

De Flow

De vertaalworkflow draait in GitHub Actions wanneer Engelse content naar main wordt gemerged:

on:
  push:
    branches: [main]
    paths:
      - 'content/**/*.en.md'
flowchart LR
    B[Merge naar main] --> C[Vertalingen gegenereerd]
    C --> D[Gecommit naar main]
    D --> E[Productie deploy met alle talen]

De Prompt

De workflow gebruikt 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

Eén prompt handelt alle 9 talen af. “Vertaal natuurlijk” produceert vloeiendere output dan “vertaal deze tekst.” Codeblokken en technische termen blijven in het Engels.

Front Matter Afhandelen

Hugo posts hebben YAML front matter. Sommige velden moeten vertaald worden (titel), andere niet (datum, slug):

“Behoud de frontmatter structuur exact, maar vertaal de titel”

Engels:

---
title: "Hello World"
date: 2025-12-20
draft: false
---

Hindi:

---
title: "नमस्ते दुनिया"
date: 2025-12-20
draft: false
---

De Commit

De workflow stelt een bot-identiteit in en beperkt wat Claude kan doen:

- 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 beperkt Claude tot het schrijven van bestanden en het uitvoeren van git commando’s.

Kwaliteit

Goed genoeg voor een persoonlijke blog. Claude’s vertalingen zijn vloeiend en vangen de betekenis goed. Een native speaker zou af en toe onhandige formuleringen opmerken, maar het is beter dan ik zelf zou kunnen.

Andere Toepassingen

Hetzelfde patroon werkt voor documentatiegeneratie, changelog samenvattingen, commit berichten schrijven en release notes:

  1. Detecteer wat er is veranderd
  2. Stuur content naar Claude met instructies
  3. Commit resultaten terug naar de branch