支語警察 — 把文章/文案/對話裡不小心混入的中國大陸用語(支語)抓出來、改回台灣慣用語。 用 AI 寫完稿後特別好用,因為 LLM 的中文語料以簡體/中國來源為主,常產出「繁體皮、簡體骨」 的文字(視頻、質量、默認、調用、數據庫…)。當使用者說「叫支語警察來」「支語警察」「找支語」 「這篇有沒有支語」「把中國用語改成台灣用語」「幫我抓陸用語/對岸用語」「/支語警察」, 或要求檢查/淨化一段中文是否含對岸用詞時,務必觸發本技能。也提供 `支語警察 開 / 關` 來開關「常駐自動巡邏」hook。功能是正經糾錯與改正,不是嘴砲玩梗。 支援三種偵測強度:普通版(常態)、進階版、以及「支語檢察官 / ULTRA」深度法辦模式 (使用者說「支語檢察官」「切進階」「ULTRA 模式」「逐字法辦」時切換)。
Scanned 9/7/2026
Install to Claude Code
npx -y skills add Hans-Hanlin/taiwanizer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of taiwanizer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hans-hanlin-taiwanizer)More formats (shields.io, HTML) on the badges page.
---
name: taiwanizer
description: >
支語警察 — 把文章/文案/對話裡不小心混入的中國大陸用語(支語)抓出來、改回台灣慣用語。
用 AI 寫完稿後特別好用,因為 LLM 的中文語料以簡體/中國來源為主,常產出「繁體皮、簡體骨」
的文字(視頻、質量、默認、調用、數據庫…)。當使用者說「叫支語警察來」「支語警察」「找支語」
「這篇有沒有支語」「把中國用語改成台灣用語」「幫我抓陸用語/對岸用語」「/支語警察」,
或要求檢查/淨化一段中文是否含對岸用詞時,務必觸發本技能。也提供 `支語警察 開 / 關`
來開關「常駐自動巡邏」hook。功能是正經糾錯與改正,不是嘴砲玩梗。
支援三種偵測強度:普通版(常態)、進階版、以及「支語檢察官 / ULTRA」深度法辦模式
(使用者說「支語檢察官」「切進階」「ULTRA 模式」「逐字法辦」時切換)。
---
# 支語警察
把中文文字裡的**支語(中國大陸慣用語)**抓出來、改回**台灣慣用語**。名字是趣味外皮,
**任務本身是正經的糾錯與改正**——不嘴砲、不玩梗、不教訓人,就是乾淨俐落地指出哪裡是支語、
換成什麼、為什麼。
## 為什麼需要它
台灣有自己的詞彙與語感,但常常就那幾個字讓整篇文案「變支」。尤其用 AI 寫作之後更明顯:
LLM 的中文訓練語料以簡體/中國來源為主,而且多半只做**字級**簡轉繁、沒做**詞級**在地化,
產出「繁體皮、簡體骨」——字是繁體,選詞還是對岸的(視頻 / 質量 / 默認 / 數據庫 / 調用)。
這層詞彙偏移簡繁轉換工具修不掉,正是本技能要補的洞。
## 判定哲學:三級 + 白名單(很重要,別當矯枉過正的警察)
1. **硬錯(hard)** — 台灣基本不用、辨識度高的支語。**直接改正**。
例:軟件→軟體、視頻→影片、質量→品質、默認→預設、屏幕→螢幕、服務器→伺服器、調用→呼叫。
2. **灰色地帶(grey)** — 台灣其實也用、或語境不同、或已深度融入的詞。**不要自動改**,
改成**列出來請使用者校對**「有這幾個詞要不要改」,把決定權留給人。
例:迭代、優化、數據、用戶、智能、通過、靠譜、顏值、內捲、躺平、落地。
3. **同名異實(context)** — 台灣與中國**同字不同義**的假朋友。**絕不自動改**,
偵測到就跳出「⚠️ 看你是哪個意思」提示、把兩岸語義講清楚,讓人自己判斷。
例:**土豆**(台=花生/陸=馬鈴薯)、**質量**(台=物理 mass/陸=quality)、
**水平**(台=horizontal/陸=程度)。硬改這類會把對的字改錯,比漏抓更糟。
4. **白名單(whitelist)** — 看起來像、其實是台灣本來就用的詞,**絕不要抓**。
例:社群(台灣正解,中國才叫「社区」)、渲染、部署、繼承、置頂、彈幕、人設、資訊、訊息。
> 誤抓白名單詞(尤其「社群、渲染、部署」)是支語警察最常翻車、最被反感的地方。寧可漏抓,不要錯抓。
## 三種偵測強度模式(分級制)
詞庫約 5 萬條,依「可靠度 × 使用頻率」分三級,由 `~/.claude/taiwanizer.level` 控制:
| 模式 | 約條數 | 內容 | 何時用 |
|------|--------|------|--------|
| **普通版**(預設常態)| ~2,600 | hard 全部 + 日常/AI/coding/生活高頻 + **精選人名地名品牌譯名**(奔馳/奧巴馬/悉尼)+ 同名異實 | 平常寫稿、hook 巡邏。快、零誤判 |
| **進階版** | ~7,000 | + NAER 14 個寫作相關學術領域(計算機/醫學/教科書…)| 寫長文、專業文、要更嚴 |
| **支語檢察官 ULTRA** | ~5 萬 | + 冷僻科學 jargon(naer-sci) | 逐字法辦、學術文件深審(噪音較多、需人工複核)|
**兩種觸發法(重要分清):**
1. **單次深審(最常見)**——使用者寫完一篇,說「**叫支語檢察官出來驗證**」「**請檢察官審這篇**」
「**用 ULTRA 審**」「**逐字法辦**」:對這篇做**一次性最高階 L3 檢查**,**不改變平常預設模式**:
```bash
python scripts/police.py <貼文檔> --level 3
```
出完整報告(硬錯改正 + 灰色校對 + 同名異實 + 譯名)。審完,下一篇若沒特別說,仍是普通版。
2. **永久切換預設**——使用者說「平常都用進階」「預設切檢察官」:才改持久模式:
```bash
python scripts/mode.py 普通 # 或 進階 / 檢察官 / status
```
`scripts/police.py` 依「目前模式(或 `--level`)」只載入該層級的 grey;hard 與同名異實永遠全載。
> 寫完貼文找檢察官驗 = 走第 1 種(單次 `--level 3`),這樣常態保持普通版的零誤判,
> 又能在發文前用最嚴的標準把關一次。
> 原則:普通版只放「真的會出現在台灣人寫作裡」的詞,確保零誤判;檢察官那 5 萬條多是專業
> jargon,平常開只會拖累+誤判,深度審核才展開。L3 屬深審模式、本就會有噪音,需人工複核。
## 人工核對回饋閉環(越用越強)🔁
這是本 skill 的靈魂:**普通版自動做掉大部分;支語檢察官最仔細、但太仔細所以要人工核對;
人工核對後的判斷再寫回詞庫——越用越強。**
```
普通/進階 ─自動─→ 檢察官(ULTRA)深審 ─→ 你核對(誤判?確認?修正?) ─→ 寫回詞庫 ─→ 下次更準 🔁
```
**契約**:每次跑檢察官深審、使用者給了判斷,就用 `scripts/learn.py` 把判斷寫回詞庫,不要讓它白費:
| 使用者的判斷 | 指令 | 效果 |
|---|---|---|
| 「這誤判 / 不該抓」 | `learn.py whitelist <詞>...` | 加白名單,所有模式不再抓 |
| 「這確定是支語,要常態抓」 | `learn.py promote <詞>` | 升級 hard、進普通版、自動改 |
| 「這太武斷,只提示就好」 | `learn.py demote <詞>` | hard → grey |
| 「這台陸同字不同義」 | `learn.py context <詞> "<說明>"` | 標同名異實、絕不自動改 |
| 「台灣詞改成 X」 | `learn.py fix <詞> <台灣詞[,詞2]>` | 修配對 |
| 「這根本不是支語/壞配對」 | `learn.py drop <詞>` | 整條刪除 |
每筆寫回都記在 `references/_review_log.jsonl` 可追溯。**特別有代表性的核對(如土豆、互聯網片段)
順手也記進 `references/cases.md`**(見記錄契約)——案例庫與詞庫一起長大。
## 標準流程
### 1. 先跑字典偵測引擎(確定性、快、可靠)
對要檢查的文字跑 `scripts/police.py`。它會回傳硬錯、灰色地帶、夾帶的簡體字、以及自動改正後的全文。
```bash
python scripts/police.py <檔案路徑>
# 或把文字從 stdin 餵進去;要結構化 JSON 加 --json(給程式/hook 用)
```
詞庫在 `references/taiwanizer_dict.json`(hard / grey / whitelist 三區)。**新發現的支語就加進這個 JSON**,
不要把規則散寫在別處——這份字典是唯一真相來源,也方便日後擴充。
### 2. 再做語境型補抓(字典抓不到的,靠你判斷)
字典只能抓固定詞。有些支語是**句式 / 組合 / 語感**層級,字典漏得掉,要你用語感補:
- 句式:「給到」「做一個 X 的動作」「不要太 X」「有被 X 到」「屬於是」「主打一個」
- 語感詞:把「視頻號、打勞道、栓Q、yyds、絕絕子、妥妥的、破防、emo」這種網路支語也納入
- 但同樣守白名單原則:不確定、台灣也通用的,歸到「灰色/請校對」,別硬判。
### 3. 輸出報告(固定格式)
ALWAYS 用這個結構回覆:
```
🚨 支語警察報案紀錄
【硬錯 — 已改正 N 處】
視頻 → 影片
質量 → 品質
(…逐條列,附一句為什麼)
【灰色地帶 — 請你校對這 M 個詞要不要改】
迭代 → 疊代 / 改版(程式語境可留;產品語境建議改)
數據 → 資料(統計語境可留)
(…列出來,但不要自動改)
【夾帶簡體字】(若有)視 质 软
---
改正後全文:
<把硬錯都換掉、灰色維持原樣的完整文字>
```
原則:**硬錯直接改進全文**;**灰色地帶只在清單裡提醒、全文維持原樣**,等使用者決定。
若完全乾淨,就回「✅ 本篇沒抓到支語,乾淨。」
## 三種使用方式
### A. 隨叫隨到(最常用)
使用者用 AI 寫完稿,說「叫支語警察來」「支語警察」「這篇有沒有支語」「/支語警察」。
→ 找出要檢查的文字(剛產出的稿、使用者貼的文、或指定的檔案),跑流程,給報告。
### B. 開關常駐巡邏 hook
- `支語警察 開`(或 `開啟巡邏` / `/支語警察 開`)→ 把巡邏旗標設為開:
寫入檔案 `~/.claude/taiwanizer.flag` 內容 `on`。
- `支語警察 關` → 寫入 `off`。
- 回報目前狀態時讀這個檔。
旗標開啟後,已安裝的 hook(見下)會在每次 AI 回完話時自動巡一遍、發現硬錯就提醒。
設定旗標(用對的家目錄;Windows 是 `%USERPROFILE%\.claude\taiwanizer.flag`):
```bash
python scripts/toggle.py on # 或 off / status
```
### C. 安裝常駐 hook(需使用者同意,會改 settings.json)
hook 腳本是 `scripts/hook.py`,掛在 `Stop` 事件:AI 每次回完話,hook 讀旗標,
若為 `on` 就掃描剛剛那則回覆,發現硬錯時把報案摘要印到 stderr 提醒(不阻擋、不改寫對話)。
**安裝前一定要先把下面這段 settings.json 攤給使用者看、確認再寫入**(這會讓它每輪自動跑):
```json
{
"hooks": {
"Stop": [
{ "hooks": [ { "type": "command",
"command": "python ~/.claude/skills/taiwanizer/scripts/hook.py" } ] }
]
}
}
```
旗標預設 `off`,所以就算掛上去、沒按 `支語警察 開` 也不會吵。
## 詞庫維護
`references/taiwanizer_dict.json` 是核心資產。每條:`{"zh":支語, "tw":[台灣詞...], "note":說明}`。
- 確定台灣不用 → 放 `hard`
- 台灣也用/語境敏感/已融入 → 放 `grey`
- 容易被誤抓、其實是台灣正解 → 放 `whitelist`
判斷依據:維基教科書《大陸台灣計算機術語對照表》、g0v 萌典兩岸詞典、教育部兩岸常用詞語對照表。
詞庫已 ingest 開源台灣詞庫(OpenCC TWPhrasesIT + 支語檢查器,授權 Apache/MIT)——
科技/食物進 hard、生活/流行語進 grey。每筆 import 帶 `source` 欄位可稽核。
資料來源、授權、以及「下一批可接的權威來源(g0v csld、國教院樂詞網…)」見 `references/sources.md`;
要重新整理/擴充跑 `python scripts/ingest_open_dicts.py`(會去重)。
## 案例庫(few-shot + 發文素材)
`references/cases.md` 收錄真實審查裡**特別有代表性的案例**,尤其灰色地帶的拿捏。
- **判斷灰色地帶時先翻它**:遇到拿不準的詞(台灣也用、但組合走味那種),參考 cases.md
裡同類案例的分寸,避免一刀切。
- **記錄契約**:跑完一輪,若出現「拿捏得特別準、特別有感、或一般人常搞錯」的案例
(灰色地帶優先),用 cases.md 的模板 append 一則、並更新索引表。
這些案例會累積成「台灣用語 / 支語科普」發文的現成素材。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!