Lighthouse 只測預設主題:雙主題站的 a11y 盲區
自動化得分 A11y 94,進去看是 guide 區 7 個 h3 用了 --primary-dark(#0891b2),
在深色卡片背景上 contrast ratio 只有 3.97:1,勉強未達 AA 的 4.5:1 門檻。
修之前習慣地把淺色主題也算一遍:--primary(#06b6d4)當文字色、白底——
結果是 2.43:1。
同樣的文字色,淺色主題遠比深色主題糟,但 Lighthouse 只跑預設(深色)主題, 所以得分 94 看起來「只差一點」,實際上淺色主題的 guide h2、h3 和 13 個連結全都失格。 這是雙主題站的系統性盲區:Lighthouse 得分是單一主題快照,不代表另一套主題安全。
修法是新增一個 CSS token --guide-accent,深色主題設 #22d3ee(8.09:1)、
淺色 body.light 覆蓋成 #0e7490(5.36:1),
guide h2/h3 和 13 個連結全換過。同時把 <div class="container">
改成 <main class="container">,補上缺失的 main landmark。
復測 A11y 100。
SEO 得分 100,但 og:image 根本不存在
Lighthouse SEO 100,手審才發現 og:image 完全缺失。分享到任何社群平台都沒有預覽圖; AI 搜尋引擎爬取頁面時也拿不到視覺線索。
處理方式是手刻一份 1200×630 卡片 HTML,跑 headless Chrome 截圖產出 og-image.png,
同步把 twitter:card 從 summary 換成 summary_large_image。
這種工作 Lighthouse 不量、SEO 工具不報,只有手審才找得到。
FAQ 有內容、沒結構化資料
頁面原本有 2 個 FAQ 問題,但沒有 FAQPage JSON-LD。結構化資料的價值不只是 Google 的 rich result(Google 2023-08 起已把 FAQ rich results 限縮至政府/健康網站), 更在於 Bing 和 AI 搜尋引擎的語意解析——schema.org markup 對機器讀取的價值獨立於 Google rich result 顯示與否。
FAQ 從 2 題擴至 5 題(新增 PWA 安裝方式、語言支援、Free vs Pro 差異),
FAQPage JSON-LD 與可見文字逐字對齊。同步修掉其他幾個 metadata 的停更痕跡:
JSON-LD 的 softwareVersion 從 3.1.0 更到 3.8.4(停更了 6 個版本)、
sitemap 首頁 lastmod 從 2026-05-11 更到 07-18、
manifest 的「80+ 公式庫」改為「100 條」。
事後用 schema.org 官方驗證器確認:WebApplication + FAQPage 兩個 schema、零錯誤零警告。 Google Rich Results Test 顯示「FAQ 不在結果中」——符合預期(那個工具只列有資格顯示的類型), 不代表 markup 有問題。
廣告文案跟現實對不上
2026-06-25 送出 Carbon Ads 申請,07-18 確認被拒。申請失敗的直接後果是: pricing modal Free 方案寫著「含 Google AdSense 廣告」——但廣告根本不存在。 更糟的是,這條文案與贊助 modal 的「零廣告承諾」正面矛盾。
改成「未來可能顯示贊助廣告」,README 中英文對比表和 CLAUDE.md 同步更新。 這類誠實化修正沒有技術挑戰,卻是最值得做的維護—— 用戶讀到的東西和實際行為必須一致,不論這個不一致有多「無害」。
刻意不做的三件事
評估後決定 backlog 的項目同樣重要,記下來:
inline minify(~19KB)與單檔可讀性設計衝突;
TTFB 690ms 和 10 分鐘 cache 是 GitHub Pages 平台固定值,動不了;
全站淺色主題 --primary 文字對比清查(本次只修 guide/footer 區,
app 主體其他 --primary 文字在淺色主題可能同樣不足)——留作獨立一輪。
關鍵教訓
Lighthouse 得分是單主題快照:雙主題站的 a11y 審查必須對每個主題手動計算 contrast ratio,自動化工具的盲區剛好藏著最難察覺的問題。
分數滿分不等於沒問題:SEO 100 但 og:image 完全缺失、FAQPage 有內容無 schema、softwareVersion 停更 6 版——這些 Lighthouse 全測不到。
Schema.org markup 的價值不依賴 Google rich result:FAQ rich results 早已限縮顯示,但結構化資料對 Bing 和 AI 搜尋引擎的語意解析仍然有效。
文案誠實化是最值得做的維護:廣告不存在卻寫「含廣告」,跟「零廣告承諾」正面矛盾。無論多小的不一致都需要修。
刻意不做的事同樣需要記錄:明確寫下為什麼不做 inline minify、不改 TTFB,讓下次審查時不必重新評估同樣的選項。