Coolkid mascot CoolkidLab Build in Public. Level up together.
首頁新手教學SEO 歷程開源工具庫陪跑服務關於

SEO 菜鳥成長史 · #20

把 GEO audit 從 70 推到 81:5 步、3 commit、每一步的分數與證據

閱讀
摘要

跑 GEO(生成式引擎優化)盤點抓到 70 分,原以為是現況,重跑一次才發現是過時的存檔,真正的基準是 76。5 個動作把它推到 81,新鮮度雙日期加 2 分、HTML 註解清掉加 1 分、Service schema 單一事實來源加 1 分。Perplexity 從 62 升到 85 吃最多紅利,ChatGPT 從 70 持平,Google AI 80 沒動。三家對訊號的權重完全不同。

1. 起點是一個假分數

第一次跑盤點的時候,打開 geo-audit.json 看到 70 分,等級是「good」,腦袋自動進入「OK 還行」模式。

看了一下建議清單,二十幾條,準備抓投報率最高的先下手。

幾秒後我注意到檔案開頭的時間戳,2026-05-11。今天是 5 月 29 日。

這個分數是 18 天前的

過去 18 天我做了 about 的實體改造、3 個 hub 的 FAQPage、SEO 連載多了 4 篇、首頁 RPG 儀表板、全 18 篇的開頭快答。

70 分根本不是現況。

重跑一次即時盤點,76 分

第一個教訓,跑分之前先看時間戳。過時的存檔會讓你去修錯的題目。

2. 76 → 78:新鮮度 + 描述對齊 + 塞詞分散(第一波,commit 55dcf42)

76 分的盤點給的真實缺口有四個。

訊號項 5/6,新鮮度是 False,因為 schema 缺 dateModified,頁面也沒有看得見的最後更新。schema 的描述跟 meta 描述文字不一樣。信任堆疊少了兩項。首頁的「workflow」被判成 12.5% 的關鍵字密度。

這四個有共同主題,都是站台健康度的一致性訊號。

挑出 LASTMOD 跟 BRAND_DESCRIPTION 兩個常數。前者拆成部署日跟內容基準日兩個,後者改成跟首頁 meta 描述逐字一致。細節在 #18#19

塞詞那個比較麻煩。「workflow」在首頁出現 27 次,其中 11 次是真實的分類標籤跟導覽,動不得。

我只動了首頁 FAQ 三處多餘的「AI workflow」,把其中兩個換成中文的工作流,留下品牌核心句一次。密度從 7.9% 降到 5.3%。

部署後重跑,78 分

指標改前改後
signals freshness5/6 False6/6 True
schema_desc_matches_metaFalseTrue
consistency 缺失2 項0 項
brand_entity5/106/10
Perplexity 引用力6285(+23)
ChatGPT5570
Google AI8080

Perplexity 加 23 分這件事,讓我盯著看了很久。

其他平台變化都小,ChatGPT 加 15 分,Google AI 完全沒動。後面會再講為什麼。

3. 78 → 80:中間別人也在動(commit 66de945、fec2393)

我在做第一波的期間,另一個 session 也在動這個站,不同的 agent,跑不同的任務。

它做了兩件對盤點有幫助的事。一是修無障礙的對比度,PageSpeed 的無障礙分數從 93 推到 100。二是加了 llms-full.txt,在 head 補一個連結。

盤點沒有直接量無障礙,但站台健康度這個複合分數會吃到它的訊號。llms 那一項則從 12 分變 14 分。

我打開盤點的時候,它已經跑完這兩件事了。重跑,80 分

等級還是 good,優秀通常要 85 分以上。

這一段的教訓是,多人或多個 session 開發同一個站,盤點分數只是最後一次部署的快照

沒有單純的「我的改動拿了幾分」,只有「最後一個推上去的狀態值幾分」。

4. 80 → 81:HTML 註解 + Service schema + AI endpoint hints(第二波,commit 99695c9)

80 分的盤點裡面,最讓我皺眉的是提示注入那一項,嚴重度標成 critical。

html_comment_injection_count: 1
samples:
  - "LCP critical path — 不 preload 任何字體(教訓累積)。
     1) preload mascot.webp 跟 CSS 搶頻寬 → FCP 退步,已移除。..."

那是我在 build.py 的 page_shell 裡寫的開發註解,內容是「為什麼我們不預先載入字體」的決策紀錄。

盤點的邏輯是這樣,HTML 註解會被 AI 爬蟲讀到,所以任何看起來像「給 AI 指示」的註解,都會被標記成潛在的提示注入。

這是規則誤判,但盤點的邏輯不算錯

HTML 註解確實會被部分 AI 爬蟲抓進去,OpenAI 的網頁讀取器就會。純開發用的文件本來就沒理由留在 HTML 輸出裡,應該寫在原始碼的 Python 註解,不要進到 build 之後的 HTML。

我清掉 8 個。提示注入從 critical 變成乾淨,註解數從 1 變 0。

順手做了另外兩件事。第一是 Service schema 的單一事實來源

陪跑服務本來只有 /ai/service.json 一個檔案在描述,沒有內嵌 JSON-LD 進 HTML。我新寫一個 service_schema(),三個地方共用同一份資料,寫進 JSON 檔、首頁內嵌、服務頁內嵌。

schema 的類型從 3 種變 4 種,品牌實體從 6 分變 7 分。

第二是 AI 端點的發現提示。head 加兩個 link,指向 /ai/service.json 跟 /ai/summary.json。

盤點的 AI 發現項沒有翻成 True,它的偵測邏輯比預期挑剔。但這是前瞻性的標準動作,還是做了。部署後,81 分

5. 為什麼停在 81 = 實質終點

剩下的建議我逐條過了一遍:

建議我的判定
Add sameAs Wikipedia/Wikidata/LinkedIn/Crunchbase化名個人品牌沒這些真帳號,空帳號頂多不加分、標一個你沒有的 entity 才反傷(#21 完整論述)
Expand content to 500+ words首頁是 RPG dashboard,276 字是設計取捨。要拉到 500 字得改視覺,品牌取捨 > 分數
Create /ai/service.json誤判,檔案已存在 live 200
Form labels / WebMCP沒有表單可加 label;WebMCP 是 Chrome 還在 propose 的標準,不急

四項建議全部不該追。兩項是品牌跟誠實的邊界,一項是誤判,一項是標準還沒定。

所以 81 是這個站結構上能拿的最高分。再上去要嘛改 RPG 視覺,要嘛加假的社群連結。前者品牌不能讓,後者誠實不能讓。

6. 各家 AI 引擎的權重差異最值得看

三家引擎從 70 推到 81 的變化曲線,完全不一樣:

引擎76 時81 時變化
ChatGPT5570+15 (主要在 78→80 a11y / llms-full)
Perplexity6285+23 (76→78 新鮮度紅利)
Google AI80800 (一開始就高,靜止)

盤點工具給 Perplexity 的分數,對新鮮度的反應明顯比另外兩家大。

Perplexity 主打即時回答,直覺上比較看重新鮮度。但它內部怎麼排序、是不是用日期過濾候選池,沒有公開資料,我無法驗證

我能講的只有工具分數的變化,不是 Perplexity 的真實引用機制。

Google AI Overviews 對舊內容相對寬容。

它跟傳統 Google 搜尋排序共享更多訊號,新鮮度只是其中一個權重不高的因素。從 80 分開始就難動,因為它要的是 E-E-A-T 跟反向連結這種需要時間累積的東西。

意思是,你寫 GEO 內容想被誰引用,要選不同的武器。

想被 Perplexity 引用,就拼新鮮度、拼結構化 schema、拼數據密度,這是短跑武器,幾天看得到效果。想被 ChatGPT 引用,就拼 llms.txt 的完整度、拼可引用單元,這是中跑武器。

想被 Google AI Overviews 引用,就拼 E-E-A-T、反向連結跟主題權威,這是長跑武器,幾個月才有訊號。新站想要速效就先打 Perplexity,反正不會傷到其他兩個。

▸ 常見問題

用什麼工具跑 audit?

geo-optimizer-skill,MIT 授權。pip install 後 geo audit --url <site> 直接跑。輸出含 platform-specific scores、schema breadth、prompt injection 偵測、embedding proximity 等。

為什麼 audit 擋我 localhost?

SSRF 防護。audit 工具預設不允許掃 localhost / 127.0.0.1 / 內網 IP,避免被當 SSRF 攻擊向量。要測本地 build 只能部署到 staging URL 才能掃。

分數降了該怎麼辦?

先看 timestamp 跟 git log 對齊,確認是哪一次部署造成的。然後看 score_breakdown — 哪一個 sub-score 掉分。降分通常比上升更容易抓 root cause,因為剛剛改了什麼很清楚。

可以為了拿分把首頁文字加長嗎?

可以但要看交易。首頁 276 字 → 500 字大概能拿 +1~2 分。但要嘛塞 keyword(傷 stuffing)、要嘛塞 boilerplate(傷信任)、要嘛把 RPG dashboard 的視覺壓垮。Lab 選擇守住視覺。audit 是工具不是目的 — 分數推到看不到大缺口就停。

70 推到 81 的 5 步紀錄完成。

三家 AI 引擎的權重不同,Perplexity 短跑、ChatGPT 中跑、Google AI 長跑。81 分是這個站的結構上限,剩下的要靠長期累積。下篇 #21 講為什麼我拒絕加假的社群連結。

名詞解釋

HTML
網頁的骨架語言,定義「這是標題、這是段落、這是圖片」。
部署(deploy)
把做好的網站或程式「推上線」讓所有人用得到的動作。
提交(commit)
Git 的一個存檔點:把這次改動連同一句說明記錄下來,之後隨時可以回到這個版本。
GEO(生成式引擎優化)
讓 ChatGPT、Perplexity 這類 AI 在回答問題時引用你網站內容的優化方法,是 SEO 在 AI 時代的延伸戰場。
無障礙(accessibility / a11y)
讓視力不佳、不便操作的人也能順利使用網站的設計標準。WCAG AA 是國際標準的中間等級,要求文字與背景對比度 ≥ 4.5:1。
提示詞(prompt)
你打給 AI 的那段指令或描述。寫得越具體(要什麼、給誰用、長怎樣),AI 做出來的東西越接近你要的。
llms.txt
放在網站根目錄、寫給 AI 看的網站導覽檔(社群慣例):告訴 AI 這個站有什麼內容、重點頁在哪、全文去哪抓。
爬蟲(crawler)
自動瀏覽網頁、把內容抓回去的程式。Google 靠爬蟲收錄網頁,AI 公司靠爬蟲收集資料。
Meta 描述(meta description)
搜尋結果裡標題下面那兩行說明文字。不直接影響排名,但寫得好能提高被點進來的機率。
結構化資料(Schema / JSON-LD)
用機器看得懂的格式跟搜尋引擎說明「這頁是文章、作者是誰、何時更新」,有機會換到更豐富的搜尋結果外觀。
關鍵字堆砌(keyword stuffing)
把關鍵字硬塞滿整篇文章的過時手法。現在不只沒用,研究實測在 AI 引用場景還會扣分。
反向連結(backlink)
別的網站連到你網站的連結,等於外部幫你投的信任票,是搜尋排名的重要訊號。

看完這篇之前先確認:

適合你
  • 第一次跑 GEO audit、看著一堆建議不知從哪下手
  • 自己的站還在 70-80 分區間想推到 80+
  • 對 audit 分數的「真假」有疑問,不確定哪些建議該認真追
不適合
  • 已經 85+ 分的成熟站(剩下的是長期累積,不是結構優化)
  • 完全不在乎 audit 分數、只看實際引用流量的站
  • 找「保證上 90」的 SEO 服務(沒有,這篇只是紀錄不是處方)
最常踩
  • 拿過時的 audit 存檔當現況 — 時間戳要看
  • 為了拿分加假訊號(假 sameAs、假 schema、誇大數字) — audit 拿到分但長期被罰
  • 把 audit 分數當絕對權威 — 三家平台對訊號權重完全不同,總分是平均後的失真

不想錯過 Lab 的新文章?
訂閱後有新文章上線,就寄信通知你,
點有興趣的進來看就好。

填 email 就完成訂閱(信由 Substack 代寄)、隨時取消、不轉賣 email。

如果內容對你有用就太好了
隨喜斗內

Buy Me a Coffee at ko-fi.com
NEXT CHAPTER ▸ #21 audit 建議加 sameAs 但我拒絕:化名個人品牌 vs KG entity 的邊界

相關閱讀

這篇背後的真實開發過程記錄在 Build Log。 搜尋標籤:geoauditperplexitychatgptgoogle-aibuild-in-public70-to-81

本篇為個人實驗紀錄。GEO audit 分數來自第三方工具,不同工具評分標準不同,本文做法不保證在你的網站產生相同結果,請依自身狀況驗證。教育研究用途,不構成投資建議。

← 回 SEO 菜鳥成長史

⚠ 本站所有內容僅供教育與研究用途,不構成投資建議,不保證任何獲利。投資有風險,使用者須自行判斷並承擔結果。