搜索

多语言自动化:我的 AI-Powered Markdown Translator 脚本

ai-powered-markdown-translator

使用 gpt-5.4-mini 将文章从法语翻译成中文。

在 GitHub 上查看项目 ↗

我很高兴向你介绍我的项目 AI-Powered Markdown Translator,这是一个开源 Python 脚本,用于自动翻译我博客中的 Markdown 文件,以及我 GitHub 仓库中的部分 README/文档。通过集成 OpenAIMistral AIAnthropic(Claude)Google Gemini 等前沿人工智能模型,这个工具能够将文章、README 和技术文档翻译成 14 种语言,同时保留其结构和格式。这个项目展现了我在自动化AI 集成可靠性工程方面的能力,也体现了我让技术内容惠及所有人的热情。

这不只是一个脚本:它是我专业能力与我对更具包容性的数字世界愿景的证明。

为什么要做这个项目?

Markdown 文件是我数字生态中的核心:它们承载着我的博客文章、教程和开源文档。通过自动化翻译,我让我的内容能够被全球受众访问。如今,我的博客已借助这个脚本提供 14 种语言 版本——目前在线的已翻译版本(按量级估算,不含法语源文)已接近 1,800 个,并且随着每次发布还在持续增长,全部托管在 jls42.org 上。

v1.9(2026 年 5 月)标志着一个新阶段:以凭感觉(vibe coding)的方式进行 AI 结对开发(Claude Code + Codex),并由一套工业级质量栈保驾护航(14 个 hooks、229 个测试、SonarCloud、AI 辅助 PR 审查),目标是在每一行都未必手工复查的情况下,依然保持代码整洁。

以下是这个脚本在真实场景中的具体示例:

  • 这个 jls42.org 博客提供 14 种语言版本——整个多语言编辑体验(文章、项目、AI 新闻)都由这个脚本生成。比如,你可以浏览站点的德语版日语版中文版西班牙语版阿拉伯语版——所有翻译过的编辑内容都经过它处理(而界面元素则来自 Astro 原生的 i18n 系统)。
  • 项目自己的 README 也在 GitHub 上被翻译成 14 种语言。示例:英语西班牙语中文

这个项目展示了 AI 如何在促进可访问性的同时解决实际问题。

我的能力亮点

这个项目是我技术能力的一面窗口。它重点体现了以下几点:

  • 多模型编排:用 Claude Code 的 Opus 开发,Codex 作为回退(fallback),GPT-5.5 reasoning extra-high 用于在执行前挑战方案,/pr-review-toolkit 用于合并前审查
  • 多 AI API 集成:连接了 4 个提供商(OpenAI、Mistral AI、Claude、Gemini),并针对各自 API 的特性进行了适配(finish_reason / stop_reason 处理、响应格式、token 限制)
  • 可靠性工程:双层翻译后验证(确定性防止逐字泄漏 + 概率式 langdetect)、静默失败(silent failures)检测、显式状态返回
  • 工业级质量栈:14 个自动化 hooks(ruff、mypy、shellcheck、Opengrep SAST、pip-audit、Lizard…)、229 个 unittest 测试、11 个 SonarCloud 徽章,以及 Codacy 和 CodeFactor
  • 开源精神:可在 GitHub 上获取,采用 GPLv3 许可,README 已翻译成 14 种语言

这些方面体现了我构建强大、可靠且可长期维护工具的能力。

主要功能

这个脚本提供了以下能力:

  • 多提供商:支持 4 个 API(OpenAI、Mistral AI、Claude、Gemini)
  • 2026 模型:默认使用 GPT-5.5、Claude Sonnet 4.6、Gemini 3.1 Pro
  • 经济模式--eco):更快、成本更低的模型
  • 单文件模式--file):只翻译单个文件,而不是整个目录
  • 保留文件名--keep_filename):保留原始文件名和扩展名(非常适合 Astro、Hugo 等)
  • .env 支持:从 .env 文件中自动加载 API 密钥
  • .mdx 文件支持:除传统 .md 文件之外
  • 保留格式:代码块、内联代码、链接和元数据都会保持不变

v1.9 新增内容(2026 年 5 月)

  • 翻译后验证:自动检测静默失败(silent failures)——检查目标语言是否正确,并在所有提供商上拦截截断问题。
  • 多位置注释--note_position, --note_format):顶部、底部或两者都放;支持传统格式(legacy)或标记格式(marker format),兼容 GitHub 嵌入卡片(embed card)。
  • 增强的 --news 模式:该模式在 v1.8 中已引入,用于通过占位符保护英文来源引文;在 v1.9 中,它获得了更严格的恢复后验证(残留占位符即报错、验证原始引文和归属 URL、检查目标/源标记)——已用于博客中的所有 ia-actualites 文章。
提供商质量(默认)经济模式(--eco
OpenAIgpt-5.5gpt-5.4-mini
Claudeclaude-sonnet-4-6claude-haiku-4-5-20251001
Mistralmistral-large-latestmistral-small-latest
Geminigemini-3.1-pro-previewgemini-3.1-flash-lite-preview

v1.0 → v1.9 演进

版本日期主要变化
1.0–1.42024OpenAI,随后是 Mistral,再随后是 Claude
1.52024 年 9 月重构客户端,2024 模型(gpt-4o、claude-3.5-sonnet)
1.62026 年 1 月2026 模型(gpt-5、claude-sonnet-4-5、gemini-3-pro)、Gemini、--eco 模式、单文件(--file
1.72026 年 1 月--keep_filename.env、保留内联代码
1.82026 年 3 月默认 GPT-5.4 模型,带引用占位符的 --news 模式
1.92026 年 5 月翻译后验证、多位置注释、14 hooks + 229 tests + AI 审查的质量栈

凭感觉开发 + 保护措施

整个 v1.9 都是在 AI 结对开发中完成的。我的流程是:Claude Code(仅限 Opus)负责编写代码,Opus 卡住或使用窗口耗尽时由 Codex 接手,GPT-5.5(reasoning extra-high)会在执行前挑战方案,而 /pr-review-toolkit:review-pr skill 会在每次合并前审阅 PR。我自己不会手工复查代码。为了让这种开发方式能够在生产环境中可行,我投入了一套相称的保护措施:

  • 14 个 hooks 自动化检查(pre-commit + pre-push):shellcheck、ruff、prettier、detect-secrets、Lizard CCN、mypy、Opengrep SAST、pip-audit、unittest
  • 229 个 unittest 测试(v1.9 新代码约 98% 覆盖率)
  • 实战测试:针对多个仓库的不同 README 进行测试,在博客上进行产品内自用(dogfooding)(生产即真实测试),以及可视化渲染检查(浏览器或 Markdown 预览)
  • 3 个外部平台:SonarCloud(11 个徽章)、Codacy、CodeFactor
  • /pr-review-toolkit:review-pr skill:合并前的多智能体 AI 辅助审查
  • 双层翻译后验证:确定性(防止逐字泄漏)+ 概率式(langdetect

重点不是证明我会做传统工程。重点是别无选择:未经人工复查的 AI 代码,应该配备更多而不是更少的防护措施。这种纪律在技术深度解析中有详细说明。

在这个博客上的实际运行

这个项目会自我翻译:它的 README 有 14 种语言版本,并且负责生成这个博客的所有多语言版本。

  • 博客文章4 个项目98 篇 ia-actualites 文章合计形成了接近 1,800 个已翻译版本,不含法语源文(各语言覆盖率会因内容而异)
  • --news 模式ia-actualites 文章中被系统性使用,以保留英文来源引文
  • v1.9 保护措施自 2026 年 5 月起生效:自从引入双层翻译后验证以来,我再也没有检测到目标语言的 silent-failure
  • 元一致性:你现在看到的英文、德文、日文等页面,都是由这个脚本翻译出来的

进一步了解

如果你想了解 v1.9 是如何产出的(新增功能详情、多模型工作流、以及为了在不逐行复查的情况下追求整洁代码而设置的保护措施),可以阅读完整技术深度解析

如果你想把这次发布与更早版本的语气做对比,2024 年关于 v1.5 的文章采用了更传统的 release notes 格式。

亲自试试

GitHub 上查看这个项目,使用你的 Markdown 文件来测试它,并分享你的反馈。你的想法能帮助我把它打磨得更好!

联系contact@jls42.org