Model or dataset
lynote-ai/humanize-text avatar
lynote-ai/humanize-text

Lynote Humanize Text: A Translation-Chain Rewriter You Can Read

Open-source text humanization pipeline with every intermediate step published. Two LLM rewrites at temp 1.3, then two hops across different NMT engines. Four documented methodologies you can read, modify, and run locally.

2,621 stars316 forksPythonMIT

At a glance

What is it?
Lynote's MIT-licensed pipeline runs two LLM rewrites at temperature 1.3 and then two hops across different machine translation engines. The README is unusually candid that this open chain has a ceiling.
Who is it for?
Adopt this if you want a readable, runnable reference implementation of a translation-chain humanizer and you are willing to supply your own DeepSeek and Niutrans keys. Do not adopt it if you need guaranteed detector bypass, multilingual output, or a maintained core: the README itself states the project is a 2026 exploration that Lynote has moved past, and the last push was on 2026-09-14.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem is not rewriting, it is the fingerprint

Anyone can ask a model to paraphrase a paragraph. The harder problem is that the paraphrase still carries the statistical signature of the model that produced it. Lynote's README frames the project as an answer to that: most humanizers, it says, are a black box with marketing claims attached, and this one is open source so you can read what it actually does. The intended user is a developer or technical writer who wants to inspect the mechanism rather than trust a hosted endpoint. The stated scope is narrower than the marketing around the category: the README says the toolkit is for improving readability and natural cadence of AI-assisted drafts, and it explicitly warns that detector scores are probabilistic and that the project does not guarantee rewritten text will be classified as human. That disclaimer is the most useful sentence in the repository, because it sets the boundary the rest of the tool operates inside.

Four hops, two engines, one distant-language detour

The pipeline is documented as four steps. Step 1 sends the input through an LLM at temperature 1.3, rewriting it into Chinese. Step 2 runs a second LLM pass at the same temperature, Chinese to Japanese, carrying step 1 as conversation history so the second rewrite stays coherent with the first. Step 3 hands the Japanese text to Google Translate for a Japanese to Finnish hop. Step 4 sends Finnish to English through Niutrans. The README's argument for why this works is that two different NMT engines introduce compounding structural changes, so no single-engine fingerprint survives, and that Chinese, Japanese and Finnish are chosen to maximize linguistic distance at each hop. The design bet is that meaning survives a round trip through three unrelated languages while surface form does not. That is a real mechanism and it is genuinely inspectable, which is more than most tools in this category offer. It is also a lossy one, and the README does not document a fidelity check at any hop.

Three tiers, and only one of them is in this repository

The README describes three tiers. Standard is the translation chain alone, described as the default balance and rated best for style preservation and fastest. Advanced adds multi-round LLM rewriting on top of the chain. Focus adds a detection-guided feedback loop and is rated moderate on style preservation and slower. The table makes clear that Standard, the tier shipped in this repo, is the one with the best style preservation and the least restructuring. The Python entry point reflects that: python -m src.standard.pipeline, with standard in the module path. If you need the deeper restructuring that Advanced or Focus promise, the repository does not appear to contain them, and the README points to the hosted product for all three tiers plus automatic per-passage selection, adaptive mixing within a document, and support for ten or more languages. So the open artifact is the simplest tier, not the strongest one.

Getting it running takes four commands and two keys

The quick start is short. Clone the repository, install dependencies with pip install -r requirements.txt, copy config/config.example.toml to config/config.toml, then run python -m src.standard.pipeline --input draft.txt. The config file is where the real setup lives. Under [api_keys] the README shows deepseek_api_key and niutrans_api_key, and under [llm] a provider key set to deepseek. DeepSeek is the default provider and OpenRouter is documented as the alternative, with an openrouter_api_key shown in the OpenRouter example. Note the asymmetry: the LLM side is swappable, the translation side is not. You need a Niutrans key regardless of which LLM you pick, because step 4 runs through Niutrans and the README documents no fallback engine for that hop. There is also an n8n path for no-code users, importable from n8n/humanize_standard.json, which wraps the same Standard chain rather than a different one.

The failure modes the README admits to, and the one it does not

The explicit limitation is stated twice. Detector scores are probabilistic, the project does not guarantee the output will be classified as human, and the README says it should not be used to misrepresent authorship or evade institutional policies. The academic-use note tells writers to follow their institution's policies on AI use and disclosure. Those are honest constraints and they matter more than the feature list. The unstated risk is compounding distortion: four transformations, two of them at temperature 1.3, one of them a double translation through languages with very different morphology. Temperature 1.3 is high enough that the same input can produce materially different output on separate runs, and the README does not document a determinism mode, a seed, or a diff against the original. For a draft you intend to edit, that is tolerable. For anything where the exact wording carries meaning, such as a legal clause or a technical specification, this is the wrong tool and the pipeline will quietly change things you did not ask it to change.

How it differs from a single-model paraphraser

The obvious alternative is one LLM call with a rewrite prompt, which is what the README means when it says everyone does that. The difference is not quality of prose, it is where the transformation happens. A single-model paraphraser keeps the text inside one model's distribution: the output is a resampling from the same statistical family as the input, which is exactly the property a detector is looking for. Lynote inserts two non-LLM engines into the middle, so the text leaves the LLM distribution entirely and comes back through a translation system that was never trained to imitate either the source model or the target author. That is a structurally different intervention, and it is why the README calls the translation chain the interesting part. The cost is control. A paraphraser preserves terminology because it can be told to; a Japanese to Finnish to English round trip has no instruction channel, so named entities, units and jargon are at the mercy of two engines you do not configure.

Maintenance, licence, and what the vendor says about its own repo

The licence is MIT, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. The README does not discuss licence implications for the hosted service, and nothing here is legal advice. On maintenance, the last push was on 2026-09-14 and the most recent release is v1.5.2 from 2026-08-05, so the repository is not abandoned, but the README's own framing matters more than the commit date. It describes the pipeline as the team's open exploration from early 2026, the most effective approach they had found at the time, released so anyone can run it and build on it. It then states that Lynote has moved beyond it to proprietary detect and humanize models trained with adversarial methods, and claims relative gains of roughly 30 percent on detector-bypass rate and 50 percent on output quality against this chain. Those are vendor-reported numbers with no methodology in the README, so treat them as a positioning statement rather than a measurement. The practical consequence is that the open repository is a reference implementation by the maintainer's own description, and feature work is likely to land in the hosted product.

Editorial conclusion

Adopt this if you want a readable, runnable reference implementation of a translation-chain humanizer and you are willing to supply your own DeepSeek and Niutrans keys. Do not adopt it if you need guaranteed detector bypass, multilingual output, or a maintained core: the README itself states the project is a 2026 exploration that Lynote has moved past, and the last push was on 2026-09-14. Before wiring it into anything, verify two things in config/config.toml: that your provider block matches the LLM you actually hold a key for, and that the Niutrans key is present, because the Finnish to English hop has no substitute engine documented in the README.

Official sources

  1. License: MIT
  2. lynote-ai/humanize-text on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes