Community研究與資料分析github.com

nimajafari/lighthouse-skill

用於執行 Google Lighthouse 的代理技能 — 測量與驗證網頁品質(效能、無障礙性、SEO、最佳實踐):支援 CLI、預算、CI、程式化 API。

lighthouse-skill 是什麼?

此技能讓 AI 代理能夠執行 Google Lighthouse,測量網頁品質指標(效能、無障礙性、SEO、最佳實踐),並以結構化 JSON 格式回報分數與失敗稽核。它包裝了官方的 Lighthouse CLI,並提供一個腳本 wrapper 來多次執行、選取中位數以減少變異,並輸出精簡的稽核結果,避免因輸出完整報告而浪費 AI 上下文視窗。此技能支援已部署的 URL 和本機開發伺服器,並可使用效能預算(LightWallet)在 CI/CD 管道中閘控建置。它專為測量-修復-重新測量的工作流程設計:先取得基準分數與失敗稽核,套用修復(使用子技能如效能、無障礙性等),然後重新執行以驗證改進。此技能主要透過 CLI 運作,需要 Node 22 LTS+ 和本機安裝的 Chrome/Chromium。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add nimajafari/lighthouse-skill

Installed? Explore more 研究與資料分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Lighthouse

執行 Google Lighthouse 來測量網頁品質,並驗證修復確實讓數據有所改善。Lighthouse 會稽核指定 URL 的效能、無障礙性、SEO 和最佳實踐,為每個類別回傳 0–100 的評分,以及一份包含具體指導說明的失敗稽核清單。

何時使用此技能

此技能負責測量。同系列的其他技能負責修復。工作流程是一個循環:

測量(此技能) → 修復(效能/無障礙性/SEO/最佳實踐) → 重新測量

當你需要:取得基準分數、找出具體的失敗稽核、設定效能預算、在 CI 中閘控建置、或證明某項改進(或回歸)時,請使用此技能。不要憑空猜測改進 — 測量、改變一件事、再次測量。

運作方式

  1. 選擇目標 URL — 一個已部署的 URL,或一個本機開發/預覽伺服器(http://localhost:3000)。
  2. 執行 Lighthouse — 建議使用 scripts/run-lighthouse.sh <url>;它會多次執行,選取中位數,並輸出精簡的 JSON(完整的報告檔案很大,會浪費上下文)。
  3. 讀取類別評分和失敗稽核 從 JSON 中。
  4. 將每個失敗稽核對應到修復 使用相關的品質技能。
  5. 重新執行 並回報前後的差異。

安裝與執行 (CLI)

Lighthouse 的說明文件建議全域安裝(需要 Node 22 LTS+),並且需要你系統上已安裝一個Chrome/Chromium:

npm install -g lighthouse
# 或:yarn global add lighthouse

lighthouse https://example.com --view    # 基本執行;--view 會開啟 HTML 報告

Lighthouse 會自動偵測已安裝的 Chrome;你也可以使用 CHROME_PATH 環境變數指定特定的二進位檔。

如果你只是想快速執行一次而不想全域安裝,也可以使用 npx lighthouse <url> — 發佈的 CLI 二進位檔支援此用法,雖然官方文件只涵蓋全域安裝。

適合代理程式的機器可讀執行(輸出 JSON 到檔案,安靜模式,無頭模式):

npx lighthouse https://example.com \
  --quiet \
  --chrome-flags="--headless=new" \
  --only-categories=performance,accessibility,seo,best-practices \
  --output=json --output-path=./lh.json

包裝腳本(建議使用)

scripts/run-lighthouse.sh 包裝了 CLI,執行 N 次,選取中位數(Lighthouse 官方建議的減少變異方法),並將精簡的 JSON 輸出到 stdout — 只包含類別評分和失敗稽核。人類可讀的日誌則輸出到 stderr。

# 用法:run-lighthouse.sh <url> [執行次數] [類別]
skills/lighthouse/scripts/run-lighthouse.sh https://example.com 3
skills/lighthouse/scripts/run-lighthouse.sh http://localhost:3000 5 performance,accessibility

輸出範例:

{
  "success": true,
  "url": "https://example.com",
  "runs": 3,
  "lighthouseVersion": "13.x",
  "scores": { "performance": 78, "accessibility": 95, "seo": 92, "best-practices": 96 },
  "failingAudits": [
    { "id": "largest-contentful-paint", "score": 0.4, "displayValue": "4.2 s" },
    { "id": "unused-javascript", "score": 0.3, "displayValue": "Potential savings of 180 KiB" }
  ]
}

主要標誌

標誌用途
--output=json|html|csv報告格式(可重複多次以輸出多種格式)
--output-path=<path>報告寫入位置
--only-categories=…限制稽核範圍為 performance,accessibility,seo,best-practices
--preset=desktop桌面版設定(預設為行動版:模擬中階手機 + 慢速 4G 網路)
--chrome-flags="--headless=new"無頭模式執行(適用於 CI/伺服器)
--budget-path=budget.json強制執行效能預算(LightWallet)
--throttling-method=simulate|devtools|provided節流方式(simulate 為預設的實驗室節流)
--quiet抑制進度日誌
--view執行完成後開啟 HTML 報告

讀取 JSON

評分是 categories 下的 0–1 浮點數;稽核細節在 audits 下。

# 類別評分 (0–1) → 乘以 100 得到常見的百分制評分
jq '.categories | to_entries | map({(.key): (.value.score)}) | add' lh.json

# 核心網頁指標的實驗室數值
jq '.audits | {
  LCP: .["largest-contentful-paint"].displayValue,
  CLS: .["cumulative-layout-shift"].displayValue,
  TBT: .["total-blocking-time"].displayValue
}' lh.json

# 值得處理的失敗/機會稽核
jq '[.audits[] | select(.score != null and .score < 0.9)
     | {id, score, displayValue}]' lh.json

效能預算 (LightWallet)

當資源或時間超過門檻值時,讓稽核失敗。此技能附帶一個可直接編輯的 examples/budget.json;其格式如下:

[
  {
    "path": "/*",
    "timings": [
      { "metric": "largest-contentful-paint", "budget": 2500 },
      { "metric": "interactive", "budget": 3800 }
    ],
    "resourceSizes": [
      { "resourceType": "script", "budget": 300 },
      { "resourceType": "stylesheet", "budget": 100 },
      { "resourceType": "image", "budget": 500 },
      { "resourceType": "total", "budget": 1500 }
    ],
    "resourceCounts": [
      { "resourceType": "third-party", "budget": 10 }
    ]
  }
]
lighthouse https://example.com --budget-path=budget.json --output=json --output-path=./lh.json

大小單位為 KB,時間單位為 ms。預算結果會放在 JSON 中的 performance-budget 和 timing-budget 稽核底下。

實驗室數據 vs. 實測數據 — 在信任數字前請先閱讀

Lighthouse 是一個實驗室工具:一次合成載入,在模擬硬體上,使用模擬節流。它可重現,非常適合捕捉回歸問題,但不是真實使用者的體驗。

  • 變異是真實存在的。 單次執行可能會有 ±5–10 分的波動。至少執行 3 次並取中位數(包裝腳本已處理此問題)。
  • 如需真實使用者資料,請改用實測來源:CrUX、PageSpeed Insights(會同時顯示實驗室 + 實測數據)、Search Console 的 Core Web Vitals 報告,或將 web-vitals 函式庫回報至你的分析系統。
  • INP 無法透過單次 Lighthouse 載入測量 — 它需要真實的互動。Lighthouse 報告 Total Blocking Time (TBT) 作為其實驗室代理指標;請以實測的 INP 為準。

Lighthouse v13 說明(Insight Audits)

自 v13(2025 年 10 月+)起,Lighthouse 將效能稽核遷移至 Insight Audits。數個舊有的機會稽核 ID 被合併或移除(例如 CLS 相關稽核 → cls-culprits-insight,圖片稽核 → image-delivery-insight)。建議本身不變;只有稽核 ID 和報告分組方式改變。當解析舊版報告時,請將其視為超集,而非矛盾。在 CI 中鎖定一個 Lighthouse 版本,以確保你斷言所依賴的稽核 ID 保持穩定。

效能評分的構成方式

效能評分是實驗室指標的加權混合(權重在不同版本間會變動)。在最近的版本中,主要權重大致如下:

指標約略權重
Total Blocking Time (TBT)~30%
Largest Contentful Paint (LCP)~25%
Cumulative Layout Shift (CLS)~25%
First Contentful Paint (FCP)~10%
Speed Index~10%

由於 TBT/LCP/CLS 佔主導地位,修復這些指標最能提升評分。使用 Lighthouse Scoring Calculator 來查看指標變化如何確切影響分數。

CI 與程式化 API

保留在參考文件中以保持專注:

  • 持續整合 — @lhci/cli、lighthouserc.js 斷言、以及一個 GitHub Actions 工作流程:references/CI.md
  • 程式化 (Node) API — 使用 chrome-launcher 驅動 Lighthouse 以實現自訂流程、使用者流程和批次執行:references/PROGRAMMATIC-API.md

將稽核對應到修復

Lighthouse 類別使用哪個技能修復
效能 / Core Web Vitals一個效能或 Core Web Vitals 技能
無障礙性一個無障礙性 / WCAG 技能
SEO一個 SEO 技能
最佳實踐一個安全 / 最佳實踐技能

將此技能與 addyosmani/web-quality-skills 配對,以實現循環中的修復環節。

參考資料

相關技能