一篇實際內容很長的中文文章,Yoast SEO 卻把它判定只有 46 個字,直接跳出「內容遠低於建議的 300 字下限」的警告。這不是說明書上的假設案例,是 2022 年真的有使用者把這個落差回報到 Yoast SEO 官方 GitHub 上,議題至今仍是開放狀態,還沒有真正修好。如果你是經營中文網站的人,這種紅燈大概不陌生:關鍵字明明擺在標題、第一段、meta 描述該有的位置,字數與密度那兩盞燈卻怎麼調都亮著警示色。
問題不在你的文章寫得不夠扎實,而在 Yoast 跟 Rank Math 這兩套外掛,從一開始設計字數計算的方式,就是照英文的邏輯在算。這正是 Yoast 中文站主最容易被誤導的地方,把工具算出來的數字當成內容品質的裁判,結果把力氣花在討好一個天生就量不準的度量。
中文文章在 Yoast 與 Rank Math 上常見的紅燈與離譜字數
最先浮上檯面的落差,就是前面提到那則 2022 年 6 月開在 Yoast SEO 官方 GitHub 上的回報,issue 編號 #18537:那篇被判定只剩 46 個字的文章,實際內容並不短,落差不是一點點,是把一篇篇幅完整的文章看成連最低門檻都不到的短文,而且這則議題至今仍掛在開放狀態,沒有標記修復。
Rank Math 這邊的案例更誇張。2024 年一則支援論壇貼文附上截圖:同一份內容裡含英文的時候,編輯器字數欄顯示 3759 字;把英文拿掉、只留中文之後,欄位反而降到 1182 字,而且關鍵字密度的讀數變得異常偏高。字數不但沒有隨中文字的多寡合理增減,還跟著英文比例上上下下。
另一份 2024 年的 Rank Math 官方支援單裡,使用者反映即使中文正文長度早就足夠,後台還是持續跳出「Content is xxx words long. Consider using at least 600 words.」這類提示。這些不是單一個案:Yoast 官方社群支援串直接確認「Yoast SEO 目前不支援中文語言檢測」,Yoast 自家 GitHub 上還有一則 2016 年開立、標題就叫「Counting words for Asian languages」的議題,雖然已在 2022 年 5 月被標記關閉,但同一類問題並沒有真正解決,同年 6 月就冒出前面提到那則「46 字」的新議題,2025 年 7 月甚至又有阿拉伯文版本的同類回報,顯示這是拉丁字母以外語言持續、至今未根治的通病。
把這幾件事擺在一起看,反差就很清楚:關鍵字擺在標題、段落開頭、meta 描述該有的位置,是你能控制、也確實做對的事;字數與密度,是機器算出來的數字。當做對的事跟機器給的燈號兜不起來,問題幾乎可以肯定出在機器那一端,而不是內容本身。根因要往下拆才看得到,出在中文書寫本身的一個特性上。
中文沒有空格可讓外掛切出字詞
英文、法文、德文這類語言,天生用空格把每個字隔開,字數統計工具只要抓「連續非空白字元」當一個詞,準確度就已經有八九成。中文的書寫系統完全不靠空格分隔詞語,一整段文字在電腦眼中,很可能只是一長串沒有任何斷點的字元,這是 Yoast、Rank Math 這類外掛設計時,對語言差異沒有處理好的地方,不是你的內容本身出了問題。
要從一長串中文字元裡切出有意義的詞,需要「斷詞」(word segmentation)這套技術,這本身就是中文自然語言處理裡一個獨立的研究課題,中央研究院詞庫小組(CKIP)為此開發了專門的斷詞系統。換句話說,「切詞」對中文從來不是隨便切一下就好的小事。這套邏輯落到外掛身上會出什麼結果,拿一段真實的中文段落實測就看得出來。
一段 155 字的中文只被切出一個詞
取一段 155 個字元(含標點)的真實繁體中文段落,內容連續書寫、不含任何空格。分別用兩種最基本的切法計算:一種是依空白字元切分(等同 Python 的 text.split()),另一種是抓取連續非空白字元(等同正規表示式 \S+)。兩種切法算出來的結果一樣,整段文字都只被切出 1 個「詞」,因為裡面沒有任何一個空格可以當切點。
這跟前一節列出的官方案例,其實是同一套機制在作怪:一篇長文被 Yoast 判成只有 46 字、3759 字混英文之後降到 1182 字,都是因為只要段落裡沒有英文、數字或標點造成的偶發斷點,連續書寫的中文,在「依空白斷詞」的演算法眼中幾乎就是一整塊。155 字換算出 1 個詞的實測結果,就是這個機制最直接的示範。

WordPress 核心的字數功能,其實已經支援中日韓字元
問題不是電腦技術做不到,而是 Yoast、Rank Math 各自的分析引擎,沒有用上早就存在的解法。WordPress 官方開發文件記載,區塊編輯器內建的字數計算套件 @wordpress/wordcount,它的 count() 函式接受一個 type 參數,可以指定「words」(依單字計算)、「characters_excluding_spaces」(不含空格的字元數)或「characters_including_spaces」(含空格的字元數)三種計算方式。WordPress 會依網站的語言設定,自動為中日韓等語言切換成字元計算模式,而不是硬套英文式的單字計算。
Yoast 自己在前面提到的 GitHub 議題 #17323 裡,也承認了這件事,原話是「WordPress has build code to be able to count words in Asian languages… We should take this as inspiration」,等於直接說 WordPress 核心早就有解法,只是 Yoast 獨立開發的分析引擎當時沒有完整跟進。這也不是舊版才有、早就修好的老問題:2025 年開立的另一則 GitHub 議題 #22402,實測範例雖然是阿拉伯文,但同樣回報 Yoast 輸出到結構化資料(schema)裡的 wordCount 明顯低於第三方工具算出的實際字數,證明非空格分詞或非拉丁字母語言的計數問題,到近期都還持續被使用者回報。
日文在 Yoast 的規則裡有例外,中文沒有這道保護
Yoast 官方的評分邏輯文件《SCORING READABILITY.md》寫得很具體:「小標分布」(Subheading distribution)這項檢查,預設規則是超過 300 字(旗艦內容 250 字)卻沒有小標就判紅燈;日文則另外訂了一套以字元數為單位、數值加倍的門檻,超過 600 個字元(旗艦內容 500 個字元)才判紅燈。文件裡沒有任何一行 Chinese: 的對應例外。「段落長度」(Paragraph length)檢查也一樣:預設超過 200 字判紅燈,日文版本放寬到超過 400 個字元,中文同樣沒有專屬版本。
「句子長度」(Sentence length)檢查預設每句超過 20 個字算長句(部分語言放寬到 25 字或收緊到 15 字),日文版本用 40 個字元當門檻,中文一樣被套用沒有調整過的通用單字數門檻。至於「轉承詞」(Transition words)與「被動語態」(Passive voice)這兩項,文件註明要該語言有對應的語言分析模組(research)才會啟用,中文本來就不在 Yoast 官方語言支援清單內,這兩項對中文文章根本不會執行。這一點要分清楚,不是「錯誤地打紅燈」,而是「根本沒有這項檢查」,性質跟前面數字算錯的檢查不一樣。Yoast 官方語言支援頁面列出的名單裡,確實找不到中文。
字數、密度與可讀性這三項,中文站基本上不用看
把前面的機制拆開來看之後,結論其實很單純,後台那一排檢查裡,凡是靠「切出幾個詞」去計算的項目,對中文網站基本上不用花力氣去優化到綠燈,因為燈本身量的東西就是錯的。
文字長度、關鍵字密度、可讀性分數,這三項都建立在同一個被誤判的字數之上。
英文單字訂出的三百字門檻,套用中文完全失準
Yoast 官方部落格一篇談字數與 SEO 關係的文章,公布了一張「依頁面類型訂字數門檻」的表:一般文章或頁面建議 300 字以上、旗艦內容(cornerstone)建議 900 字以上、分類描述建議 30 字以上、產品描述建議 200 字以上。文章明白寫著,沒有達到門檻,就會在 Yoast SEO 的分析裡看到紅燈,達到或超過門檻才會看到綠燈。
這些數字全部是以英文的「word」為單位訂出來的,文章通篇沒有提到任何針對中文或字元數的替代版本。把這套門檻套進一個會把整段中文只切出個位數「字」的計算邏輯,結果幾乎不可能達標,不是你寫得不夠長,是這把尺本來就不是拿來量中文的。
字數分母算錯讓關鍵字密度整個失真
Rank Math 官方 SEO 詞彙頁對「關鍵字密度」的定義很明確,密度等於關鍵字出現次數除以總字數,再乘以 100。它舉的例子是,總字數 1000、關鍵字出現 20 次,密度就是 2%。這個公式本身沒有問題,出問題的是拿去除的那個分母。
回頭看前面那個真實案例,同一份內容,含英文時字數欄顯示 3759,拿掉英文只留中文後降到 1182。分母被腰斬,同樣次數的關鍵字出現,除出來的百分比自然被相對放大,這正是使用者在官方支援論壇回報「密度異常偏高」背後的數學成因,跟正文實際重複關鍵字的頻率其實沒有對應關係。
Flesch 可讀性分數本來就只為英文設計
這項分數的問題不是「對中文特別不友善」,而是它從設計之初就只考慮英文。Yoast 官方一篇說明自家可讀性分析怎麼建構的文章提到,Flesch Reading Ease 這套公式,量的是英文文章的難易度,而且明白註記在英文以外的語言並不可靠,它依賴的是句子長度(每句幾個字)跟每個字的音節數,這套建構在英文語音結構上的計算方式,中文本來就沒有對應的「音節」概念可以套。
Yoast 官方語言支援頁面也註明,Flesch Reading Ease 分數只在部分支援語言裡才提供,中文不在名單內。也就是說,就算你的中文文章寫得再流暢,這項分數對你來說本來就不該是一個要追的目標,它從一開始設計時就不是為了衡量中文而存在。
字數計算的誤差,連帶拖累段落與句子長度的評分
前面「日文在 Yoast 規則裡有例外」那一節已經列出具體數字:段落長度預設超過 200 字判紅燈(日文放寬到 400 個字元)、句子長度預設超過 20 字算長句(日文放寬到 40 個字元)。這些門檻的「字」,指的都是英文式的單字,而不是中文的字元。
把這套單字數門檻,套用在一段被誤判成「整段只有個位數詞」的中文文章上,算出來的段落長度與句子長度,自然也沒有意義。不是這幾項子檢查各自獨立出錯,而是它們共用同一套壞掉的字數邏輯,字數本身算錯了,建立在它之上的每一項評分都會跟著歪掉。
焦點關鍵字出現在標題與首段的判斷仍然可信
看到這裡,很容易矯枉過正,把 Yoast 跟 Rank Math 給的所有建議都當耳邊風。其實不必,凡是「判斷某個東西存不存在、出現在哪裡」這類靠字串比對就能完成的檢查,根本不需要先把文字正確切成一個一個詞,中文網站可以放心參考。
分辨的原則很簡單,先問這項檢查是不是要先把文章切成一個個詞才能算。要,就對中文抱持懷疑;不要,只是找有沒有出現、算字元、算標籤數量,就可以照建議做。

標題、首段與 meta 描述的關鍵字比對,靠字串而非斷詞
關鍵字有沒有出現在標題、meta 描述、第一段,這類檢查本質上是「這串字有沒有出現在那段文字裡」的字串搜尋。Yoast 官方的評分邏輯文件開頭就說明,部分讀後分析檢查是「language-independent」(跟語言無關),像段落長度、小標分布這類;另一部分則是「language-specific」(依語言而定),像被動語態、轉承詞這類需要專屬語言字典或分析模組的檢查。
依這個分類往下推,「關鍵字出現在標題或首段」屬於不需要語言特定字典、單純比對子字串是否存在的檢查,中文不需要斷詞就能直接比對,可信度不受前面那套壞掉的字數邏輯牽連。這一項如果亮紅燈,代表你真的沒把關鍵字放進該放的位置,值得認真處理。
meta 描述與標題的長度用字元而非單字計算
meta 描述與標題的長度限制,通常量測的是字元數(或顯示寬度),不是「詞數」。前面提過的 WordPress 官方 @wordpress/wordcount 文件裡,characters_excluding_spaces 跟 characters_including_spaces 本來就是獨立於「words」之外的計算類型,量的是字元數量,不是切出來的詞數。
對中文來說,一個字就是一個字元,這類計算不會因為斷詞失敗而出錯。換句話說,Yoast 中文使用者如果看到標題或 meta 描述長度超標的提醒,那多半是真的超過限制,跟前面談的字數失真是兩碼子事,可以放心照著調整。
內部連結、外部連結與圖片數量的計數,跟語言完全無關
內部連結、外部連結的數量,以及圖片、多媒體的數量,這幾項檢查在做的事情是計數「有幾個連結標籤、有幾個 img 標籤」,本質是在解析 HTML 結構,不涉及文字內容的詞語切分。
不管網站用哪種語言寫作,連結標籤跟圖片標籤的計數方式都完全相同,中文與任何語言得到的結果不會有差別。這一類建議跟前面關鍵字位置的判斷一樣,可以直接照做,不用懷疑。

看到紅燈不必照單全收,官方也提供關掉特定檢查的做法
釐清了哪些燈號可信、哪些天生失準之後,剩下的問題是,那些注定失真的紅燈,該拿它怎麼辦。第一件要分清楚的事是,「內容分析分數」跟「這篇文章在 Google 能不能排上去」是兩件不相干的事,分數只是外掛自己算給你看的參考值,不是 Google 拿去排名的依據。
如果紅燈本身不影響排名,你可以選擇不理它;如果它已經干擾到你判斷內容好壞的心情,兩家外掛官方都提供關閉特定檢查的正式功能,不必去改外掛的程式碼這種偏門做法。
Yoast 的網站功能設定裡有一道可讀性分析總開關
Yoast 官方說明頁記載了完整步驟:進入 WordPress 後台的 Yoast SEO 設定,依序點選 Settings、General、Site features,把「Readability analysis」這個開關切換成關閉,再儲存變更。也可以到「使用者」的個人資料頁面,勾選「Disable Readability analysis」,只針對登入的這個使用者關閉。
要注意的是,這是整組讀後分析一起關,不是逐項只關掉字數或密度。想要更細的控制,只關字數、留下其他檢查,Yoast 目前沒有提供介面選項,得靠開發者層級的程式碼才能做到。
Rank Math 用篩選器,可以只關掉字數或密度其中一項
Rank Math 官方知識庫記載的做法 granularity 更細:到後台「外觀」→「佈景主題檔案編輯器」(區塊佈景主題則是「工具」→「佈景主題檔案編輯器」),選擇 rank-math.php 這個檔案,貼上一段篩選器(filter)程式碼。要關掉「關鍵字密度」檢查,程式碼如下:
add_filter('rank_math/researches/tests', function ($tests, $type) {
unset($tests['keywordDensity']);
return $tests;
}, 10, 2 );Code language: PHP (php)
要關掉「內容長度」(字數)檢查,把鍵名換成 lengthContent 就好;文件也說明可以在同一段程式碼裡,一次 unset 多個測試鍵名,同時關掉好幾項。跟 Yoast 的整組總開關比起來,這種做法可以只關掉真正失準的字數或密度,其他關鍵字位置、連結數量這類仍然可信的檢查照常運作。
調整這些設定不會改變網站的搜尋排名
Rank Math 官方針對中文字數問題的回覆,立場說得很清楚,SEO 分數僅供參考,不會影響網站實際的 SEO 表現。真正會影響收錄與排名的,是搜尋引擎自己讀到的內容,不是外掛儀表板上算出來的那個數字。
換句話說,不管你決定要不要動手關掉這些檢查,對排名都不會有任何影響,這只是後台介面上的一個提示燈,不是 Google 用來評分的機制。既然如此,真正值得追問的問題,其實是 Google 自己真正在意什麼。
字數與密度都不是 Google 真正在意的重點
把視角從「外掛怎麼算」拉高到「Google 真正在意什麼」,這裡的答案不是靠揣測,Google 自己的公開文件跟公開發言講得相當明白。就算外掛對中文的判斷完全準確,字數跟密度本來就不是 Google 官方承認會拿來排名的東西,中文網站不必為了討好一個連 Google 自己都不看重的指標而糾結。
Google 官方明講,沒有偏好的字數這回事
Google 搜尋中心官方文件《製作實用、可靠且以使用者為優先的內容》,在「避免建立以搜尋引擎為優先的內容」這份警訊清單裡,列了一句自我檢視的問題,後面直接附上括號答案:「您是否因為聽說或讀到 Google 對於撰寫的內容有偏好的字數,所以您才撰寫一定字數的內容?(不,我們沒有這種偏好)。」這是 Google 官方文件裡明文寫出的括號附註,直接否認任何偏好字數的存在。
這句話等於直接堵掉了「字數要衝到某個數字才會被 Google 喜歡」這種想像。如果你的文章因為 Yoast 或 Rank Math 顯示字數不足而亮紅燈,先確認你要在意的其實不是那盞燈,而是內容本身有沒有把該講的事講完整。
關鍵字密度從來不是 Google 排名的判斷依據
Google 的 John Mueller 在官方 SEO office-hours 這類公開問答場合,曾被問到 Google 是否會考慮關鍵字密度。他的回答很直接,Google 沒有「最適關鍵字密度」這個概念,關鍵字密度不重要,重要的是內容有沒有把該講清楚的事講明白。這場公開問答的完整內容,被 Search Engine Roundtable 逐字整理報導過。
這個立場跟 Google 官方《垃圾內容政策》裡對「濫填關鍵字」的定義也對得上,那段文字把重點放在「刻意重複提到同樣的字詞或詞組,頻率過高而顯得不自然」這個行為模式,而不是任何百分比門檻。換句話說,不管 Rank Math 幫你算出的密度數字是 2%還是 8%,Google 自己根本沒有一把尺在對照這個數字。
真正該看重的是內容夠不夠完整,有沒有第一手經驗與可靠來源
與其跟外掛的燈號拉扯,不如把力氣放回 Google 官方公開講過、真正拿來判斷內容品質的地方。同一份《製作實用、可靠且以使用者為優先的內容》文件,列出幾個可以拿來自問的具體問題:內容是否提供原創的資訊、報告、研究或分析?內容是否針對主題提供充實、完整或詳盡的說明?呈現資訊的方式是否讓人覺得信服,例如有清楚的資訊來源、具備專業知識的證據?
這份文件也把 E-E-A-T(經驗、專業性、權威性、可信度)列為 Google 用來判斷內容排名的混合因素之一,其中可信度被列為最重要的一環。對 Yoast 中文站主來說,這幾個問題,遠比字數欄位那個算不準的數字,更值得花時間回答。
字數紅燈、密度警示、可讀性評分,這幾盞燈背後其實是同一套沒有針對中文設計的計算方式,套在一段連續書寫、沒有空格的文字上算出來的錯誤數字。它不是在告訴你內容寫得不夠好,只是在告訴你,這套工具目前還沒學會怎麼讀中文。
下次再看到這幾盞燈亮紅,可以先分清楚哪些是真的值得處理,關鍵字有沒有放對位置、連結跟圖片夠不夠;哪些只是機器算錯留下的雜訊。把力氣放回內容本身有沒有講清楚、有沒有可信的來源,比盯著一個連 Google 都沒在看的數字,划算得多。
