im-not-ai : un skill Claude pour effacer les marques d'IA dans un texte coréen
AI가 쓴 한글을 사람 글처럼 윤문하는 Claude 스킬 — Korean AI-text humanizer: detects and rewrites translationese, mechanical parallelism, and 71 other AI tells
En bref
- De quoi s’agit-il ?
- Le projet epoko77-ai/im-not-ai attaque un problème précis : le coréen produit par les modèles de langage porte des traces de traduction depuis l'anglais. Il les détecte par spans, choisit un chemin de réécriture selon le score du texte, et bloque toute dérive au-delà d'un seuil de modification.
- À qui s’adresse-t-il ?
- im-not-ai convient à qui rédige en coréen avec un assistant et doit publier sous son nom sans laisser passer le calque anglais. Il ne convient pas à qui écrit en français, en anglais ou en japonais : rien dans le dépôt ne couvre ces langues.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 9 jours.
- En quel langage est-il écrit ?
- Principalement Python, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Le calque anglais, pas la détection d'IA
Le dépôt ne cherche pas à savoir si un texte a été généré par une machine. Il part du constat inverse : le coréen produit par ChatGPT, Claude ou Gemini se reconnaît à des tournures qui viennent de l'anglais. Le README cite quatre exemples de réécriture, dont « AI 기술을 통해 효율을 높일 수 있다 » ramené à « AI로 효율을 높인다 », ou « ~에 의해 생성된 » remplacé par « ~가 만든 ». Le public visé est donc étroit : des rédacteurs coréens qui publient sous leur nom et veulent que le texte ne sente pas la machine. Les humanizers anglophones cités dans le README (QuillBot, Hix, Undetectable AI) traitent mal ce cas, parce que le problème n'est pas l'anglais mais ce que l'anglais laisse derrière lui une fois traduit. Le projet se présente comme un skill, c'est-à-dire une extension chargée par un agent de codage, pas comme un service web : il n'y a pas d'interface à ouvrir, la commande vit dans le terminal.
Trois chemins décidés par un score, pas par l'utilisateur
L'architecture décrite en version 2.2 place un script en entrée, prepare_monolith_input.py, qui note le texte selon des indicateurs nommés KatFish et post-editese, puis en déduit un route_hint parmi light, standard et heavy. Le texte impose donc le nombre d'appels au modèle. light fait un seul appel et saute le diagnostic comme la finalisation. standard en fait deux : un diagnostic, puis une réécriture ciblée. heavy en fait trois ou plus, avec un finalizer qui compare au texte d'origine. Un point de conception mérite d'être relevé : l'économie ne vient pas du choix du modèle, laissé à l'utilisateur, mais de la réduction du nombre d'appels. Le README chiffre ce raisonnement sur un texte de 10 000 caractères, découpé en 7 appels il consomme 610K tokens contre 134K en appel unique, soit un facteur 4,5, parce que chaque chunk recharge le rulebook et le diagnostic. Le découpage est donc réservé au chemin heavy et déconseillé en dessous de 15 000 caractères. Si le script de notation échoue, le README indique un repli automatique sur standard sans score.
La taxonomie comme source unique de vérité
Le cœur du projet est un fichier de référence, skills/humanize-korean/references/ai-tell-taxonomy.md, qui range les défauts en dix catégories notées A à J et 70 sous-patterns, plus un motif en attente de validation. Concrètement : A couvre le translationese, avec des identifiants précis comme A-16 pour l'emploi forcé de « 그/그녀 », A-18 pour la modification relative à gauche, A-19 pour la double particule « ~에서의/~에로의 ». D regroupe les formules toutes faites du type « 결론적으로 » ou « 시사하는 바가 크다 ». J vise la décoration visuelle, gras excessif, guillemets, tirets. Chaque motif reçoit une sévérité : S1 doit disparaître dès la première occurrence, S2 tolère une ou deux apparitions et disparaît à partir de trois, S3 ne compte que superposé à autre chose. La réécriture s'applique par spans détectés, et le README pose que les passages sans détection ne sont pas touchés. C'est la partie la plus défendable du dépôt : la règle est écrite, versionnée, et un agent séparé, korean-ai-tell-taxonomist, est chargé de l'administrer et d'examiner les nouveaux motifs avant promotion.
Installation par marketplace ou par clone
Deux voies sont documentées. La première passe par un marketplace de plugin, sans cloner le dépôt. Pour GitHub Copilot CLI : copilot plugin marketplace add epoko77-ai/im-not-ai, puis copilot plugin install humanize-korean@im-not-ai, et copilot plugin list pour vérifier. La mise à jour se fait avec copilot plugin update humanize-korean@im-not-ai, la suppression avec copilot plugin uninstall. Pour Claude Code, les commandes sont /plugin marketplace add epoko77-ai/im-not-ai puis /plugin install humanize-korean@im-not-ai, et le skill s'invoque par /humanize-korean. La seconde voie clone le dépôt et lance ./install.sh, qui détecte les binaires claude et codex présents et crée des liens symboliques globaux ; les options --claude-only et --codex-only restreignent l'installation, ./uninstall.sh la retire, ./update.sh détecte une nouvelle version, fait git pull et réinstalle, avec --check pour la seule détection. Le README signale que Copilot et Codex n'exposent qu'un chemin à appel unique : les parcours standard et heavy, avec diagnostic et finalisation, sont réservés à Claude Code. Il note aussi que l'installation directe depuis le dépôt par Copilot affiche un avertissement de dépréciation en version 1.0.79-5.
Le garde-fou des 30 % et ses angles morts
Un script déterministe, verify_change_rate.py, s'exécute sur tous les chemins et rend un verdict par code de sortie. Le README fixe la règle : au-delà de 30 % de modification, avertissement ; au-delà de 50 %, arrêt forcé. C'est le point qui distingue ce projet d'un simple prompt de réécriture, parce que la décision ne dépend pas du jugement du modèle. La limite est ailleurs. Le seuil porte sur un volume de changement, pas sur sa nature : un texte où l'on supprime quinze occurrences de « 결론적으로 » peut franchir la barre sans qu'aucune phrase importante n'ait bougé, tandis qu'une substitution discrète de vocabulaire peut passer sous les 30 % en changeant un propos. Le README annonce aussi quatre principes, dont la préservation à 100 % des faits, chiffres, noms propres et citations directes, et l'interdiction de changer de genre, un rapport ne devenant pas un essai. Ces principes sont énoncés, pas démontrés par un jeu de tests accessible dans le matériel fourni. Autre réserve : la notation d'entrée repose sur des indicateurs dont le dépôt donne le nom mais pas la formule, et le repli silencieux sur standard en cas d'échec peut faire croire à un routage réussi.
Ce que le dépôt ne couvre pas
Le projet est monolingue par construction. Toute la taxonomie décrit des calques de l'anglais vers le coréen, et les exemples de réécriture sont coréens. Sur un texte français ou anglais, il n'a rien à appliquer. La documentation précise également que le skill ne se charge pas dans Claude.ai ni dans ChatGPT : il faut un des quatre CLI pris en charge, Claude Code, GitHub Copilot CLI, OpenAI Codex CLI ou Gemini CLI, et pour le parcours complet, Claude Code uniquement. Le README mentionne un site, imnotai.kr, et un fichier README.en.md, mais rien dans le matériel fourni ne décrit une interface web fonctionnelle, et un agent nommé humanize-web-architect a été retiré en version 2.1. Il faut aussi noter la composition du dossier agents/ : sur les neuf agents présents, cinq sont des outils de développement liés à une campagne de recherche académique, et quatre seulement participent à la réécriture. Quatre autres agents de l'ancien pipeline strict ont été retirés en 2.1. La surface utile est donc plus petite que le nombre de fichiers ne le suggère.
Face à un prompt de réécriture écrit à la main
L'alternative évidente n'est pas un produit concurrent mais un prompt. On demande à un modèle de corriger le style, on relit, on publie. La différence d'approche est nette. Un prompt laisse au modèle le soin de décider ce qui est fautif, à chaque appel, avec un résultat qui varie selon la formulation et le contexte. im-not-ai fige la liste des motifs dans un fichier relu et versionné, fait choisir le chemin par un score calculé avant tout appel, et place un script déterministe en sortie pour refuser une réécriture trop large. Ce que l'on gagne est la reproductibilité et la traçabilité : un motif porte un identifiant, on peut contester A-19 en nommant A-19. Ce que l'on perd est la souplesse. Un défaut de style absent de la taxonomie ne sera pas traité, et le README le reconnaît en prévoyant un agent chargé d'examiner les motifs manquants et de les promouvoir. Un prompt attrape ce qu'il voit ; ce projet attrape ce qu'il a listé. Le choix dépend de savoir si vos brouillons présentent les mêmes défauts de façon répétée.
Licence, maintenance et coût de mise à jour
Le dépôt est sous MIT, une licence permissive qui autorise la réutilisation et la modification, y compris dans un produit distribué, à condition de conserver l'avis de copyright et le texte de la licence. Rien dans le matériel fourni ne signale de clause additionnelle, de marque déposée ni de restriction sur les fichiers de référence ; ce point mérite une vérification directe du fichier LICENSE si vous comptez redistribuer la taxonomie. Sur la maintenance, le rythme est documenté et serré : trois versions publiées entre le 22 juillet et le 18 août 2026, dont deux correctifs le même jour. Les notes de version indiquent la nature du travail, correction de l'emplacement du skill plugin en 2.3.2, résolution de chemins et frontières d'exécution en 2.3.1, validation par corpus contrastif en 2.3.0. Cette cadence a un coût pour l'utilisateur : les fichiers de référence peuvent changer entre deux versions, et une modification de la taxonomie déplace ce qui est considéré comme une faute. Une installation par marketplace se met à jour avec /plugin update ou copilot plugin update ; une installation par clone passe par ./update.sh. Dans les deux cas, relisez le diff des fichiers de référence avant de l'appliquer à un texte en production.
Conclusion éditoriale
im-not-ai convient à qui rédige en coréen avec un assistant et doit publier sous son nom sans laisser passer le calque anglais. Il ne convient pas à qui écrit en français, en anglais ou en japonais : rien dans le dépôt ne couvre ces langues. Avant de l'adopter, ouvrez skills/humanize-korean/references/ai-tell-taxonomy.md et vérifiez que les 70 sous-patterns correspondent aux défauts que vous voyez réellement dans vos brouillons, puis lancez verify_change_rate.py sur un texte déjà publié pour mesurer le taux de modification qu'il produit sur un écrit que vous jugez propre.
Notes de la communauté