关于 yontu
yontu 是面向土耳其语写作者和 AI Agent 的文本校对与润色工具,提供基于 TDK 的拼写检查、AI 文本模式识别和按文体制定的风格建议,并通过对比检查改写是否保留原意。
主要功能
- 01检查 TDK 拼写与标点规则
- 02识别 AI 与翻译痕迹
- 03覆盖 28 种文体的风格配置
- 04比较改写前后的信息保真度
- 05提供离线命令行、技能和 MCP 服务
适用场景
- 01按 TDK 规则检查土耳其语文本
- 02根据文体或语域调整措辞
- 03检查改写是否改变事实
- 04查看可读性与冗长表达
MCP 相关
MCP 服务提供文本检查与比较、风格指南和配置查询、安全修正、文本统计及规则说明工具。另有用于土耳其语改写和精简文本的提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 3 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tur | string | 否 | Tür (genre profile) id, for example blog, haber, commit. See list_profiles. |
| text | string | 是 | 土耳其语文本(允许 Markdown;跳过代码、URL 和引文)。 |
| detail | boolean | 否 | 返回每个发现字段(偏移量、来源)。 |
| enable | array | 否 | 按 ID 或标签启用默认关闭的规则。 |
| layers | array | 否 | 仅限这些层。 |
| filename | string | 否 | 仅用于检测 register 的文件名,例如 README.md。 |
| register | string | 否 | Register slug,例如 akademik、blog、teknik、hukuk。省略时自动检测。 |
| min_level | enum | 否 | 丢弃低于此级别的发现结果。info | warning | error |
详细介绍
yontu
面向 AI Agent 的土耳其语文本润色工具、TDK 检查器和风格指南。它打磨土耳其语文本:塑造形式,精炼表达。
yontu 是一款土耳其语文本润色工具(Türkçe humanizer)和 TDK 拼写与标点检查器,以 Agent 技能、离线命令行工具和 MCP 服务的形式提供。它能标记土耳其语文本中的 AI 和翻译痕迹,依据土耳其语言协会(TDK)规则检查拼写和标点,并根据文本所属体裁调整措辞。它适用于 Claude Code、Codex、Cursor、Gemini CLI 和任何 MCP 客户端。英文文本润色工具对土耳其语作用甚微,因此这里的每条规则都是为土耳其语编写的。
为什么需要
大多数文本润色工具针对英语。它们的规则来自维基百科的“AI 写作迹象”等列表,建立在 “delve” 和 “tapestry” 这类英语词汇之上。把它们用于土耳其语时,几乎检测不出任何问题。有些模式(如 em dash)也适用,但前提是背后有一条土耳其语规则(TDK 只允许在对话中使用破折号)。土耳其语 AI 文本的大多数问题另有表现:
- 每句话结尾都用
-mAktAdIr,以及长串-ArAk结构 önemli bir rol oynamaktadır和bu bağlamda这样的仿译表达- 替代格后缀的套话:“konusunda”“hususunda”“bir şekilde”
- 聊天机器人遗留表达:
Umarım bu e-posta sizi iyi bulur、Umarım yardımcı olur - 细心的土耳其语写作者不会犯的拼写和标点错误:
herşey、“ve”前加逗号、Türkçe'de
土耳其语的表达方式也会随语境变化。学术摘要、广告、博客文章、README、提交消息和法院请愿书,各有不同的句长、正式程度、人称代词和连接词。同一条规则修正一处,却可能破坏另一处:摘要中使用 -mAktAdIr 很正常,在博客文章中却是明显痕迹。选词同样重要:hızlı bir şekilde 通常只需写成“hızla”。
yontu 将这些内容整理为带来源的规则、按体裁划分的配置和词表,并为 Agent 提供一套保留原意的工作流。
包含内容
| 部分 | 内容 |
|---|---|
| 技能 | skills/yontu/:SKILL.md、九个参考文件,以及 references/turler/ 中每种体裁对应的一份指南。无需 Python 即可使用 |
| 检查器 | Python 3.9+,仅使用标准库,无需联网。包含 tdk、ai-iz、stil、yogunluk 几层 |
| 配置 | 17 种语域下的 28 种体裁(tür):句长、密度、正式程度、人称代词、语气和时态、连接词、词汇、标点、结构 |
| 保真度门禁 | yontu compare OLD NEW:改写新增数字、日期、名称、URL 或代码片段时失败;删去上述内容或更改否定或情态时发出警告 |
| MCP 服务 | yontu mcp,stdio,手写 JSON-RPC,无 SDK |
| 钩子 | 根据 Agent 的不同,使用编辑后或停止钩子:Claude Code、Codex、Cursor、Gemini CLI、Copilot、Antigravity。详情见 integrations/ |
前后对比
来自 skills/yontu/references/ornekler.md(README 体裁):
yontu:面向土耳其语文本的现代而强大的检查器
yontu 是一款现代、强大且易于使用的工具,可分析您的土耳其语文本,检测拼写错误、标点问题和 AI 痕迹。该项目的主要目标是提升您的写作质量!
用法:要执行分析,只需轻松运行以下命令:
yontu lint metin.md
yontu: Türkçe metinler için linter
yontu, Türkçe metindeki yazım hatalarını, noktalama sorunlarını ve yapay zekâ izlerini bulan
bir linterdir.
Kullanım: `yontu lint metin.md`
保留了名称、它能发现的三类问题和命令。删除了:形容词三连、感叹号和“kolayca”。标题改为句式大小写。没有添加任何内容。
快速开始
Claude Code(技能、MCP 服务、钩子)
/plugin marketplace add senrecep/yontu
/plugin install yontu@yontu
这是唯一同时会安装钩子的安装方式。命令:/yontu:turkcelestir、/yontu:yontu-lint。
任何能够读取技能文件夹的 Agent
npx skills add senrecep/yontu
这里只会复制技能:不包含 MCP 服务,也不包含钩子。
CLI
pipx install yontu # puts yontu on PATH
uvx yontu lint metin.md # no install
在检出目录中,无需安装:python3 skills/yontu/scripts/yontu lint metin.md。
MCP 服务
claude mcp add yontu -- uvx yontu mcp
其他客户端:
{
"mcpServers": {
"yontu": { "command": "uvx", "args": ["yontu", "mcp"] }
}
}
各 Agent 的配置
| Agent | 技能 | MCP | 钩子 |
|---|---|---|---|
| Claude Code | 插件 | 插件 | 插件 |
| Codex CLI | ~/.agents/skills | codex mcp add yontu -- yontu mcp | hooks.json |
| Gemini CLI | 扩展 | 扩展 | 设置文件 |
| Cursor | ~/.cursor/skills | mcp.json | hooks.json |
| claude.ai(网页、移动端) | 上传 zip 文件,参见文件夹 | 计划在 v0.2 中支持 | 无 |
| OpenCode、Hermes、Windsurf、Copilot、Cline、Zed、Claude Desktop、Antigravity | 参见文件夹 | 参见文件夹 | 部分支持 |
配置文件、确切路径,以及各版本的测试情况:integrations/。
安装配置
| 配置 | 加载内容 | Claude Code | 其他 Agent |
|---|---|---|---|
lite | 技能;通过 shell 运行检查器 | /plugin install yontu-lite@yontu | scripts/install.sh --<agent> --profile lite --apply |
standard | lite 加上钩子 | 使用 full | --profile standard 还会输出供合并的钩子配置 |
full | standard 加上 MCP 服务 | /plugin install yontu@yontu | --profile full 会输出钩子和 MCP 配置 |
不带 --apply 时,install.sh 只会试运行,且只写入技能文件夹。在 Claude Code 中,只安装两个插件中的一个,不要同时安装。
上下文开销:完整插件在 MCP 工具之外始终约占 150 个 token,lite 约占 130 个 token;重写整篇博客约需 3,900 个 token。数据、方法以及各阶段的加载内容:docs/CONTEXT.md。
工具
| MCP 工具 | 功能 |
|---|---|
lint_text | 返回包含层、规则 ID、级别、范围和建议的检查结果(detail: true 会返回所有字段) |
compare_texts | 检查两个版本之间的保真度 |
get_style_guide | 按 tür ID 获取某种文体的指南,或获取参考文件:先返回章节列表,再返回其中一个章节 |
fix_text | 仅应用安全的 tdk 修正 |
text_stats | 句子长度、可读性、密度 |
explain_rule | 返回规则 ID 对应的说明、来源和示例 |
list_profiles | 所有语域和文体 |
get_profile | 获取某种文体或语域的阈值 |
默认情况下,服务会列出前三个工具。在其环境变量中设置 YONTU_MCP_TOOLS=full,即可列出全部八个工具。无论是否设置,它都会响应其余五个工具,但大多数客户端只会向模型显示已列出的工具。
提示词:turkcelestir(翻译或改写为土耳其语)、yogunlastir(精简文本)。
CLI
yontu lint FILE [--register SLUG] [--tur ID] [--layer tdk,ai-iz] [--min-level warning] [--format json]
yontu lint FILE --fix [--write] # safe tdk fixes only; --write saves the file
yontu compare OLD NEW # fidelity gate
yontu stats FILE # sentence length, Ateşman readability, density
yontu rules [--layer tdk] # list rules
yontu explain AI-E6 # one rule with source and examples
yontu profiles [ID] # genres and registers
FILE 可以设为 -,表示标准输入。lint 和 compare 在报告 error 时以 1 退出,遇到用法错误时以 2 退出。
如果没有指定 --register 或 --tur,yontu 会根据内容猜测语域,并在无法判断时回退到 notr,此时所有风格规则的级别都是 info。
项目设置写入 .yontu.json(键为 register、tur、enable、rules)。使用 静默某条规则,或使用 和 `` 静默某个范围。
配置
--register 用于选择语域,--tur 用于选择文体。指定文体后,会自动确定对应的语域。
| 语域 | 文体(--tur) |
|---|---|
akademik | akademik-ozet、akademik-giris、akademik-tartisma、tez |
resmi | dilekce、resmi-yazi |
hukuk | hukuk(合同、裁决、法规、隐私声明) |
haber | haber |
deneme | kose |
blog | blog、linkedin |
teknik | teknik-dok、readme、changelog |
commit | commit |
ui | ui-buton、ui-hata、ui-bos |
pazarlama | reklam、e-ticaret |
sosyal | x、instagram |
kurumsal | resmi-eposta、basin-bulteni |
is-eposta | is-eposta |
sozlu | sunum |
edebi | edebi |
sohbet | sohbet |
notr | 无:所有风格规则的级别均为 info |
hukuk 和 edebi 仅启用 tdk 层和保真度检查。除非用户提出要求,否则该技能不会改写它们。
规则层
| 层 | 检查内容 | 级别 |
|---|---|---|
tdk | TDK Yazım Kılavuzu 和 Güncel Türkçe Sözlük 中的拼写与标点 | error、warning、info。唯一支持自动修复的层 |
ai-iz | AI 和翻译模式 | warning 或 info,不会修复 |
stil | 是否符合文体配置 | 主要为 info |
yogunluk | 冗长措辞、轻动词、包装表达 | 始终为 info |
每条 tdk 规则都会注明其来源,即 TDK Yazım Kılavuzu 中的章节或 Güncel Türkçe Sözlük 中的词条。相关链接位于 skills/yontu/references/kaynaklar.md。自动修复仅针对确定性高且误报率接近于零的规则(herşey → “her şey”、Türkçe'de → “Türkçede”)。词典中的重定向绝不会自动修复。
每条 ai-iz 规则都带有证据标签:veri(基于语料测量)、hakem(经审阅者达成一致)或 hipotez(观察所得,未经测量)。hipotez 规则的级别不会高于 info,hakem 规则的级别不会高于 warning。v0.1 规则集目前还没有 veri 规则;请参阅 ROADMAP.md。
运行 yontu rules 查看完整列表,运行 yontu explain ID 查看任意规则的说明。
局限性
- 不是 AI 检测器。yontu 报告的是模式。发现一项模式并不意味着文本由机器撰写,而报告中没有发现也不意味着文本不是机器撰写的。通过检测器不是目标。
- 启发式规则。
ai-iz、stil和yogunluk规则使用正则表达式,并基于表层形式进行计数,不进行形态分析。可能会出现误报,主要为info级别。 - 阈值尚未校准。句子区间和密度阈值来自文献和审阅,而非人类基线语料。在完成校准之前,级别保持为
info或warning。 - 没有词典。检查器能捕获已知的拼写错误,但无法捕获所有拼写错误。
贡献
请参阅 CONTRIBUTING.md。新增规则需要提供来源、证据标签和测试样例。各种文体中由人类撰写的优质土耳其语示例最有帮助:校准工作正需要这些示例。
致谢
- Türk Dil Kurumu:Yazım Kuralları 和 Güncel Türkçe Sözlük。
- Oguzhan Durmaz 开发的 turkish-humanify(MIT)以及 bushrabeg 开发的 turkce-humanizer(MIT);其理念经过改写,并依据 TDK 进行了核查。
- Wikipedia 的“Signs of AI writing”,用于模式目录的结构设计。
- 完整来源列表:
skills/yontu/references/kaynaklar.md。
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。