Автоматический перевод блога с помощью Claude и GitHub Actions
Каждый пост, который я пишу, переводится автоматически. Claude выполняет перевод, коммитит результаты в main, и переведённые версии деплоятся вместе с оригиналом.
Процесс
Рабочий процесс перевода запускается в GitHub Actions, когда английский контент мержится в main:
on:
push:
branches: [main]
paths:
- 'content/**/*.en.md'
flowchart LR
B[Мерж в main] --> C[Переводы сгенерированы]
C --> D[Закоммичено в main]
D --> E[Продакшен деплой со всеми языками]
Промпт
Рабочий процесс использует 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
Один промпт обрабатывает все 9 языков. «Переводить естественно» даёт более плавный результат, чем «переведи этот текст». Блоки кода и технические термины остаются на английском.
Обработка Front Matter
Посты Hugo имеют YAML front matter. Некоторые поля нужно переводить (заголовок), другие нет (дата, slug):
«Сохраняй структуру frontmatter точно, но переводи заголовок»
Английский:
---
title: "Hello World"
date: 2025-12-20
draft: false
---
Хинди:
---
title: "नमस्ते दुनिया"
date: 2025-12-20
draft: false
---
Коммит
Рабочий процесс устанавливает идентичность бота и ограничивает возможности Claude:
- 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 ограничивает Claude записью файлов и выполнением git-команд.
Качество
Достаточно хорошо для личного блога. Переводы Claude плавные и хорошо передают смысл. Носитель языка заметит иногда неуклюжие формулировки, но это лучше, чем я мог бы сделать сам.
Другие применения
Тот же паттерн работает для генерации документации, резюме changelog, написания сообщений коммитов и релизных заметок:
- Определить, что изменилось
- Отправить контент Claude с инструкциями
- Закоммитить результаты обратно в ветку