{"id":51653922,"url":"https://github.com/seacen/human-tone","last_synced_at":"2026-07-14T07:02:23.022Z","repository":{"id":370136734,"uuid":"1293304351","full_name":"seacen/human-tone","owner":"seacen","description":"Strip AI flavor from writing, across agents — a de-AI-flavor skill + one-command installer. 去除文字里的 AI 味,一条命令装到你所有 agent。","archived":false,"fork":false,"pushed_at":"2026-07-08T09:59:45.000Z","size":107,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-08T10:13:28.788Z","etag":null,"topics":["agent-skills","ai","ai-writing","chinese","claude-code","codex","cursor","editing","humanizer","llm","prompt-engineering","writing"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seacen.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-08T08:31:15.000Z","updated_at":"2026-07-08T10:00:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/seacen/human-tone","commit_stats":null,"previous_names":["seacen/human-tone"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/seacen/human-tone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seacen%2Fhuman-tone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seacen%2Fhuman-tone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seacen%2Fhuman-tone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seacen%2Fhuman-tone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seacen","download_url":"https://codeload.github.com/seacen/human-tone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seacen%2Fhuman-tone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35450066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-14T02:00:06.603Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skills","ai","ai-writing","chinese","claude-code","codex","cursor","editing","humanizer","llm","prompt-engineering","writing"],"created_at":"2026-07-14T07:02:22.291Z","updated_at":"2026-07-14T07:02:23.014Z","avatar_url":"https://github.com/seacen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003c!-- logo goes here --\u003e\n\u003c/div\u003e\n\n# human-tone\n\n\u003e **Make AI-written text read like a person wrote it.** Strip the AI tone, translationese, and boilerplate while keeping what you meant — facts, numbers, terms, the author's voice. Native in Chinese and English, ready for any language.\n\u003e\n\u003e **把 AI 写的文字改回像人写的。** 去掉 AI 腔、翻译腔、套话,但不动你真正要表达的——事实、数字、术语,还有作者的语气。中英文都地道,也能扩到任何语言。\n\n**🌐 Language:** [**中文**](README.md) · **English (this page)**\n\n[![version](https://img.shields.io/badge/version-1.0.0-2ea44f)](https://github.com/seacen/human-tone/releases)\n\u0026nbsp;[![license](https://img.shields.io/github/license/seacen/human-tone?color=blue)](LICENSE)\n\u0026nbsp;![works with](https://img.shields.io/badge/works_with-any_agent-8A2BE2)\n\n---\n\n## Why human-tone\n\nMost de-AI-flavor tools go wrong one of two ways. Some **only swap words**: ban \"delve\" and the model reaches for \"explore\" — one synonym and the tell is back. Others **cut too much**: they strip a legal document's fixed phrasing or an author's deliberate refrain along with the slop. human-tone works differently:\n\n- **It goes after the pattern, not a word list.** It watches for 16 recurring cross-language patterns (evaluative inflation, mechanical antithesis, translationese, and so on) and catches every variant, so a synonym can't slip past.\n- **Native in Chinese and English, and ready for any language.** Chinese translationese and the English GPT tone each get handled on their own terms; supporting a new language is just adding a folder — the core rules don't change. Most tools only watch English; human-tone was built for many languages from the start.\n- **It would rather miss than misfire.** It reads the register first: a legal \"shall be processed\", an academic \"we conducted an analysis\", an author's intentional refrain — all left alone. Whether a word goes depends on whether its neighbors pile up and whether cutting it loses meaning. When unsure, it leaves the text.\n- **It has sources.** The subtractive method comes from Orwell's *Politics and the English Language* (with Strunk \u0026 White's *The Elements of Style*); the Chinese translationese rules from Yu Guangzhong's *On Improving Europeanized Chinese* (with Si Guo's books on translation); which kinds of writing may be edited — a legal brief versus a chatty post — comes from Biber's and Halliday's work on register.\n- **What's left still reads human.** If a pass flattens the piece — every sentence the same length, the voice sanded off — that counts as damage and it rolls back. After rewriting, it rescans for leftovers — a script re-checks the patterns a model's memory would miss — and reconciles every fact against the original, so nothing is dropped or invented.\n- **It sidesteps the traps others fall into.** It doesn't play writing teacher (only a \"when not to touch\" guardrail remains), and doesn't cut blindly — some tools delete every adverb or ban every dash, and add fresh AI tells doing it.\n- **It's tested.** It ships two sample sets: one of things that should be cleaned, to measure how much it catches; one where not a single character should move, to measure whether it misfires.\n\n## How it works: universal rules + language packs\n\nAI flavor comes in two layers, so the rules do too — adding a language changes not one line of the core logic.\n\n- **The universal layer** — the defects every language shares, and the standard for deciding whether to cut (things like evaluative inflation and mechanical antithesis). These come with the way models generate text and recur whatever the language, so they're written once and hold no words from any specific language.\n- **A language pack** — how one of those defects actually shows up in a given language: its common AI words, which kinds of writing count as normal, which terms are off-limits, its translationese table. One folder per language.\n\nWrite the standard once and every language uses it; the specific words stay in each pack. **Adding a language is dropping a folder** into `languages/` (with `pack.md`, `minimal.md`, `signals.json`); the universal layer stays put. See the [language-pack protocol](skills/human-tone/references/languages/README.md).\n\n## Install\n\nOne command, no clone — it installs onto every agent you have (Claude Code, Codex, Cursor, Windsurf, Cline, Aider, and the Chinese agents Qoder, Trae, CodeBuddy):\n\n```\nnpx github:seacen/human-tone\n```\n\nIt does two things: it installs the human-tone skill on each of your agents, then writes one line into each agent's config that references those rules (a reference, not the pasted text). The rules stay in context, so your writing gets cleaned as you go. It takes effect right away.\n\n\u003e Why keep the rules always loaded: a skill only runs when the model thinks to invoke it, and for prose it can already write, it won't. Put the rules in the config and the cleaning happens on its own.\n\nJust want the skill and will call it yourself? Run `npx skills add seacen/human-tone`, then invoke `human-tone` in your agent for a full deep clean.\n\n## Install options\n\nEvery touched file is backed up (`*.human-tone.bak`), reruns don't double-write, and it all reverses:\n\n```\nnpx github:seacen/human-tone --dry-run              # show what would change, touch nothing\nnpx github:seacen/human-tone --uninstall            # remove all of it\nnpx github:seacen/human-tone --scope project        # install into the current project, not globally (default: global)\nnpx github:seacen/human-tone --lang zh              # install one language's rules (default: both)\nnpx github:seacen/human-tone --agents claude,codex  # limit to specific agents\n```\n\nNeeds Node (`npx` relies on it anyway; one script runs on both macOS and Windows).\n\n## Layout\n\n```\nskills/human-tone/   the skill: SKILL.md + references/ (universal layer + languages/ packs) + scripts/\ninstall.mjs          cross-agent installer\nevals/               rubric, comparison design, test samples\ndocs/DESIGN.md       design notes\n```\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseacen%2Fhuman-tone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseacen%2Fhuman-tone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseacen%2Fhuman-tone/lists"}