Szukaj

Wielojęzyczna automatyzacja: Mój skrypt AI-Powered Markdown Translator

ai-powered-markdown-translator

Przetłumaczony artykuł z fr na pl za pomocą gpt-5.4-mini.

Zobacz projekt na GitHubie ↗

Z przyjemnością przedstawiam mój projekt AI-Powered Markdown Translator, open-sourceowy skrypt w Pythonie, który automatycznie tłumaczy pliki Markdown z mojego bloga oraz niektóre README/dokumentacje z moich repozytoriów GitHub. Integrując najnowocześniejsze modele sztucznej inteligencji, takie jak OpenAI, Mistral AI, Anthropic (Claude) i Google Gemini, to narzędzie tłumaczy artykuły, README i dokumentacje techniczne na 14 języków, zachowując ich strukturę i formatowanie. Projekt ten pokazuje moje kompetencje w zakresie automatyzacji, integracji AI i inżynierii niezawodności, a także moją pasję do udostępniania treści technicznych wszystkim.

To nie jest tylko skrypt: to dowód mojej ekspertyzy i mojej wizji bardziej inkluzywnego świata cyfrowego.

Dlaczego ten projekt?

Pliki Markdown są kluczowe dla mojego cyfrowego ekosystemu: zawierają moje artykuły blogowe, tutoriale i open-sourceowe dokumentacje. Automatyzując ich tłumaczenie, udostępniam moje treści globalnej publiczności. Mój blog jest teraz dostępny w 14 językach dzięki temu skryptowi — blisko 1 800 przetłumaczonych wersji (w przybliżeniu, bez źródeł FR) jest dziś online na jls42.org, a licznik rośnie z każdą publikacją.

Wersja v1.9 (maj 2026) wyznacza nowy etap: kod tworzony na wyczucie (vibe coding) w duecie z AI (Claude Code + Codex), zabezpieczony przez przemysłowy stos jakości (14 hooków, 229 testów, SonarCloud, recenzja PR wspomagana przez AI), aby celować w czysty kod nawet wtedy, gdy każda linia nie jest ręcznie sprawdzana.

Oto konkretne przykłady działania skryptu:

  • Ten blog jls42.org w 14 językach — całe wielojęzyczne doświadczenie redakcyjne (artykuły, projekty, aktualności AI) jest tworzone przez ten skrypt. Możesz na przykład przeglądać wersję niemiecką, japońską, chińską, hiszpańską lub arabską serwisu — każda przetłumaczona treść redakcyjna przeszła przez niego (elementy interfejsu pochodzą natomiast z natywnego systemu i18n Astro).
  • Sam README projektu jest tłumaczony na 14 języków na GitHubie. Przykłady: angielski, hiszpański, chiński.

Ten projekt pokazuje, jak AI może rozwiązywać praktyczne problemy, jednocześnie wspierając dostępność.

Moje umiejętności w centrum uwagi

Ten projekt jest wizytówką moich kompetencji technicznych. Oto, co podkreśla:

  • Orkiestracja wielomodelowa: Claude Code w Opus do rozwoju, Codex jako rozwiązanie awaryjne (fallback), GPT-5.5 reasoning extra-high do podważania planów, /pr-review-toolkit do przeglądu przed merge
  • Integracja wielu API AI: podłączone 4 dostawców (OpenAI, Mistral AI, Claude, Gemini), z dostosowaniem do specyfiki każdego API (obsługa finish_reason / stop_reason, formatów odpowiedzi, limitów tokenów)
  • Inżynieria niezawodności: dwuwarstwowa walidacja po tłumaczeniu (deterministyczna anty-wyciek verbatim + probabilistyczna langdetect), wykrywanie cichych awarii (silent failures), zwroty przez jawny status
  • Przemysłowy stos jakości: 14 zautomatyzowanych hooków (ruff, mypy, shellcheck, Opengrep SAST, pip-audit, Lizard…), 229 testów unittest, 11 odznak SonarCloud, plus Codacy i CodeFactor
  • Duch open source: dostępny na GitHubie, GPLv3, README przetłumaczony na 14 języków

Te aspekty świadczą o mojej zdolności do tworzenia potężnych, niezawodnych i łatwych w utrzymaniu narzędzi w długim okresie.

Główne funkcje

Oto, co oferuje skrypt:

  • Multi-Provider: obsługa 4 API (OpenAI, Mistral AI, Claude, Gemini)
  • Modele 2026: GPT-5.5, Claude Sonnet 4.6, Gemini 3.1 Pro jako domyślne
  • Tryb ekonomiczny (--eco): szybsze i tańsze modele
  • Pojedynczy plik (--file): tłumaczenie jednego pliku zamiast całego katalogu
  • Zachowanie nazwy (--keep_filename): zachowuje oryginalną nazwę i rozszerzenie (idealne dla Astro, Hugo itd.)
  • Obsługa .env: automatyczne wczytywanie kluczy API z pliku .env
  • Obsługa plików .mdx: oprócz klasycznych plików .md
  • Zachowanie formatowania: bloki kodu, kod inline, linki i metadane pozostają nienaruszone

Nowości v1.9 (maj 2026):

  • Walidacja po tłumaczeniu: automatyczne wykrywanie cichych awarii (silent failures) — sprawdzany język docelowy, przechwytywane obcięcia na wszystkich providerach.
  • Przypis wielopozycyjny (--note_position, --note_format): góra, dół albo oba; format dziedziczony (legacy) lub format marker (marker format) zgodny z osadzoną kartą (embed card) GitHub.
  • Wzmocniony tryb --news: już wprowadzony w v1.8, aby chronić źródłowe cytaty EN przez placeholdery, w v1.9 zyskuje zaostrzone sprawdzanie po przywróceniu (resztkowy placeholder = błąd, oryginalny cytat i URL atrybucji weryfikowane, flagi źródło/docelowy kontrolowane) — używany we wszystkich artykułach ia-actualites bloga.
DostawcaJakość (domyślnie)Ekonomiczny (--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

Ewolucja v1.0 → v1.9

WersjaDataGłówny wkład
1.0–1.42024OpenAI, potem Mistral, potem Claude
1.5wrz. 2024Refaktor klientów, modele 2024 (gpt-4o, claude-3.5-sonnet)
1.6sty. 2026Modele 2026 (gpt-5, claude-sonnet-4-5, gemini-3-pro), Gemini, tryb --eco, pojedynczy plik (--file)
1.7sty. 2026--keep_filename, .env, zachowany kod inline
1.8mar. 2026Modele GPT-5.4 domyślnie, tryb --news z placeholderami cytatów
1.9maj 2026Walidacja po tłumaczeniu, przypis wielopozycyjny, stos jakości 14 hooków + 229 testów + recenzja AI

Programowanie na wyczucie + zabezpieczenia

Cała wersja v1.9 została napisana w duecie z AI. Mój przepływ pracy: Claude Code (Opus, wyłącznie) pisze kod, Codex przejmuje stery, gdy Opus się blokuje albo okno użycia jest wyczerpane, GPT-5.5 (reasoning extra-high) podważa plany przed wykonaniem, a skill /pr-review-toolkit:review-pr sprawdza PR przed każdym merge. Sam nie czytam kodu ponownie. Aby ten tryb pracy był wykonalny w produkcji, zainwestowałem w odpowiedni stos zabezpieczeń:

  • 14 hooków automatycznych (pre-commit + pre-push): shellcheck, ruff, prettier, detect-secrets, Lizard CCN, mypy, Opengrep SAST, pip-audit, unittest
  • 229 testów unittest (~98 % pokrycia nowego kodu v1.9)
  • Testy praktyczne: multi-repo na różnorodnych README, wewnętrzne użycie produktu (dogfooding) na blogu (produkcja = test na żywo), weryfikacja wyglądu renderu (przeglądarka lub podgląd Markdown)
  • 3 zewnętrzne platformy: SonarCloud (11 odznak), Codacy, CodeFactor
  • Skill /pr-review-toolkit:review-pr: recenzja wspomagana przez AI z wykorzystaniem wielu agentów przed merge
  • Dwuwarstwowa walidacja po tłumaczeniu: deterministyczna (anty-wyciek verbatim) + probabilistyczna (langdetect)

Nie chodzi o to, by udowodnić, że potrafi się robić klasyczną inżynierię. Chodzi o to, że nie ma się wyboru: kod AI, którego nikt nie sprawdza, zasługuje na więcej zabezpieczeń, a nie na mniej. Ta dyscyplina została szczegółowo opisana w techniczny deep-dive.

W produkcji na tym blogu

Projekt tłumaczy sam siebie: jego README jest w 14 językach i generuje wszystkie wielojęzyczne wersje tego bloga.

  • Artykuły blogowe, 4 projekty i 98 artykułów ia-actualites dają łącznie blisko 1 800 przetłumaczonych wersji bez źródeł FR (pokrycie per język zmienne w zależności od treści)
  • Tryb --news używany systematycznie na artykułach ia-actualites, aby zachować źródłowe cytaty EN
  • Zabezpieczenie v1.9 aktywne od maja 2026: od wprowadzenia podwójnej walidacji po tłumaczeniu nie wykryłem już żadnego silent-failure języka docelowego
  • Meta-spójność: strona, którą czytasz po angielsku, niemiecku, japońsku… jest tłumaczona przez ten skrypt

Jak pójść dalej

Aby zrozumieć, jak powstała ta wersja v1.9 (nowości w szczegółach, wielomodelowy przepływ pracy, zabezpieczenia wdrożone po to, by celować w czysty kod bez ręcznego przeglądania), zobacz pełny techniczny deep-dive.

A jeśli chcesz porównać ton z wcześniejszym wydaniem, artykuł z 2024 o v1.5 trzyma bardziej klasyczny format release notes.

Wypróbuj sam

Odkryj projekt na GitHubie, przetestuj go na swoich plikach Markdown i podziel się opinią. Twoje pomysły pomagają mi go ulepszać!

Kontakt: contact@jls42.org