NanoSkill
提交你的 Skill

SEO 審核代理技能

作者JeffLi1993382GitHub 星標GitHub

一個輕量級的 SEO 審核代理技能,適用於 Claude Code、OpenClaw 和 Codex。執行快速單頁 SEO 審核,檢查核心的頁面及網站層級問題,並生成結構化的 SEO 報告,內含可執行的修復建議。

SEO 審核SEO頁面 SEO網站審核安全掃描通過
結果預覽

完整 Demo

查看由此代理技能生成的實際 SEO 審核結果。

開始使用

完成第一個任務

  1. seo-audit-step-1
    01

    步驟 1:安裝

    將技能添加到您的代理中

  2. seo-audit-step-2
    02

    步驟 2:審核任務

    使用一個 URL,並要求進行優先排序的審核。

  3. seo-audit-step-3
    03

    步驟 3:檢視結果

    取得您可以立即採取行動的優先 SEO 修復建議。

安裝指令

$ npx skills add JeffLi1993/seo-audit-skill

關於

SEO 審核是一個輕量級的 SEO 審核代理技能,適用於像是 Claude Code、OpenClaw 和 Codex 等 AI 編碼代理。它可幫助代理檢查單一 URL、確認核心 SEO 問題,並生成結構化審核報告,包含證據、影響與建議修復。

該技能專注於初步 SEO 檢查,包括標題標籤、元描述、H1 標籤、規範標籤、圖片 alt 文字、關鍵字位置、robots.txt、sitemap.xml、404 處理、URL 規範化、E-E-A-T 信任頁面,以及 JSON-LD 結構化資料驗證。

當您需要在發布頁面前快速進行 SEO 健康檢查、審查著陸頁、診斷基本排名問題,或決定是否需要進行更深入的技術 SEO 審核時,即可使用它。

核心功能

它的強大之處

  • 快速單頁 SEO 審核

    對任何 URL 執行快速 SEO 審核,無需設定完整的爬蟲或分析工作流程,即可初步了解頁面的 SEO 健康狀況。

  • 核心頁面 SEO 檢查

    檢查標題標籤、meta 描述、H1 標籤、canonical 標籤、圖片 alt 文字、標題結構、關鍵字位置、內部連結和字數。

  • 網站層級 SEO 基礎

    檢視基礎的 SEO 訊號,例如 robots.txt、sitemap.xml、404 處理、URL 規範化、i18n / hreflang 和 E-E-A-T 信任頁面。

  • JSON-LD 結構化資料驗證

    偵測頁面是否具有正確的結構化資料,驗證常見的 schema 類型,並標記缺少或不完整的 JSON-LD 欄位。

  • 結構化 SEO 審核報告

    產生一份清晰的 SEO 審核報告,包含通過、警告和失敗狀態,並針對每個重要問題提供證據、影響和具體的修正建議。

使用場景

什麼時候適合使用

  • 在發佈前審核著陸頁

    在發佈首頁、產品頁、工具頁或 SEO 著陸頁之前使用此技能,及早發現基本的 SEO 問題。

  • 執行快速 SEO 健康檢查

    檢查頁面是否具有正確的標題、meta 描述、H1、canonical 標籤、結構化資料、內部連結和其他基本的 SEO 訊號。

  • 檢視有排名問題的現有頁面

    當頁面已被索引但排名不佳,或者當您想快速找出明顯的頁面和網站層級問題時,可以使用它。

SKILL.md

seo-audit — 基本 SEO 審核

一個輕量級 SEO 代理技能,專為快速、預設的單頁 SEO 審核設計。由 OpenClaw 提供支援。適合首次檢查頁面或需要快速評估,無須深入技術細節時使用。


何時使用此技能

在以下情況使用 seo-audit

  • 使用者說:「審核這個頁面」、「檢查 SEO」、「分析我的網址」、「快速 SEO 檢查」、「我的頁面有什麼問題」
  • 未指定特定深度——這是預設的進入點
  • 使用者需要快速、易讀的摘要,而非全面的技術細部分析

若使用者需要更多深度,請升級到 seo-audit-full

提示: 如需深度技術審核、進階頁面 SEO 或完整報告,請使用 seo-audit-full 技能。


預期的輸入

輸入必要備註
頁面網址要審核的頁面
原始 HTML 或頁面內容可選可進行更準確的頁面分析
GSC / 分析數據可選基本審核不需要

如果只提供網址且沒有原始碼或爬蟲數據可用,請明確說明:

限制: 此審核僅基於可見的頁面內容和公開可取得的訊號。原始碼、GSC 數據、爬蟲記錄和效能指標不在此審核範圍內。


輸出

透過填寫 assets/report-template.html 中的範本來產生基本 SEO 審核報告, 然後將其儲存為檔案——永遠不要將原始 HTML 列印到終端機

檔案命名: reports/<hostname>-<slug>-audit.html

https://example.com/blog/best-tools → reports/example-com-blog-best-tools-audit.html
https://example.com/                → reports/example-com-audit.html

儲存後,告訴使用者:

✅ 報告已儲存 → reports/example-com-audit.html
   立即開啟? (是 / 否)

若是 → 執行: open reports/example-com-audit.html


範本佔位符 — 各自獨立填寫:

佔位符內容
{{summary_verdict}}一句話:總檢查數,多少失敗/警告/通過
{{summary_critical_html}}每個關鍵(失敗)項目的 <li>,或 <li class="summary-empty">無</li>
{{summary_warnings_html}}每個警告項目的 <li>,或 <li class="summary-empty">無</li>
{{summary_passing_html}}每個通過檢查的 <li>,或 <li class="summary-empty">無</li>

指令碼

撰寫任何發現之前,先執行這些指令碼。它們輸出結構化的 JSON——直接使用 JSON 作為證據;不要手動重新擷取相同的網址。

相依性: pip install requests (html 解析使用 Python 標準庫)

# 步驟 1: 站點層級檢查 (robots.txt + sitemap.xml)
python scripts/check-site.py https://example.com

# 步驟 2: 頁面層級檢查 (H1, title, meta description, canonical)
python scripts/check-page.py https://example.com
# 附帶主要關鍵字 (建議 — 啟用 H1 關鍵字存在檢查)
python scripts/check-page.py https://example.com --keyword "running shoes"

# 可選: 擷取原始頁面 HTML 以供進一步檢查
python scripts/fetch-page.py https://example.com --output page.html

# 步驟 3: JSON-LD schema 驗證
python scripts/check-schema.py https://example.com
# 或從先前擷取的 HTML (避免冗餘擷取):
python scripts/check-schema.py --file page.html

每個指令碼以代碼 0 (全部通過/警告) 或 1 (任何失敗/錯誤) 退出。

嚴格範圍 — 不要新增任何未列於下方的檢查。沒有例外。

允許的站點層級檢查 (在 {{site_checks_html}} 中):

  • robots.txt · sitemap.xml · 404 處理 · URL 規範化 · i18n / hreflang

允許的 E-E-A-T 檢查 (在 {{eeat_checks_html}} 中):

  • 關於我們 · 聯絡方式 · 隱私權政策 · 服務條款 · 媒體/合作夥伴 (僅當存在時)

允許的頁面層級檢查 (在 {{page_checks_html}} 中),按以下確切順序輸出: URL Slug · 標題標籤 · Meta 描述 · H1 標籤 · 規範標籤 · 圖片 Alt 文字 · 字數 · 關鍵字放置 · 標題結構 · 內部連結 · Schema (JSON-LD)

圖片 Alt 文字邏輯:

  • 從靜態 HTML 解析 <img> 標籤
  • 通過:所有圖片都有非空的 alt (具有 alt="" 的裝飾性圖片可接受)
  • 警告:任何內容圖片缺少 alt 屬性
  • 未驗證 (status-info):靜態 HTML 中找到 0 張圖片 → 可能為 JS 渲染,無法驗證

⛔ 強制規則 — 僅輸出 report-template.html 中定義的檢查列。 如果檢查不在上述允許清單中,不要輸出它——即使你發現問題。 沒有例外。沒有「額外」檢查。沒有即興添加。 範本是唯一的真相來源。將其視為嚴格的白名單。

仍然禁止 (屬於 seo-audit-full):OG 標籤 · Twitter 卡片 · 社交標籤 · 頁面權重 · 核心網頁指標 · Robots Meta

如何使用 JSON 輸出:

  • 將每個欄位的 statuspass / warn / fail / error 直接對應到報告檢查表
  • 使用每個欄位的 detail 字串作為發現中證據行的起點
  • 除非有額外的可觀察證據,否則不要與指令碼輸出矛盾
  • {{site_checks_html}} 中使用 <div class="subsection-label">標籤</div> 分隔檢查群組: 可爬取性 · URL 規範化 · i18n / hreflang · Schema (JSON-LD) 以及在 {{eeat_checks_html}} 之前加上 <div class="subsection-label">E-E-A-T 信任頁面</div>

LLM 審查 — 當 llm_review_required: true 時強制執行:

指令碼標記需要語意或品質判斷而無法執行的欄位。 絕不遺留未解決的 llm_review_required: true——始終做出明確的判斷決定。

H1 — 當 keyword_match == "partial" 觸發:

h1_text : (來自 h1.values[0])
keyword : (傳遞給指令碼的 --keyword)

判斷:此 H1 在語意上是否涵蓋關鍵字的搜尋意圖?
  - 考慮同義詞、自然變體、主題覆蓋
  - 是 → 降級為 "pass",註明變體
  - 否  → 保持 "warn" 或升級為 "fail",解釋落差

Title — 當 keyword_match == "partial"keyword_position != "start" 觸發:

title   : (來自 title.value)
keyword : (傳遞的 --keyword)

判斷:
  1. 標題在語意上是否涵蓋關鍵字的搜尋意圖?
  2. 標題文法正確且自然可讀嗎?
  3. 關鍵字位置 — 根據頁面類型套用不同標準:
     - 首頁   : 品牌 + 核心關鍵字是正確的 (例如 "Acme | AI 工作流程自動化")
                    不要將品牌優先視為問題。
     - 內頁: 核心關鍵字應在前導 (例如 "團隊的 AI 工作流程自動化 — Acme")
                    如果關鍵字被埋在標題中間而沒有充分理由,標記為問題。

重要 — 不要將以下標記為負面:
  - 年份 (例如 "2026") → 信號新鮮度,提高點擊率 — 視為正面,除非
    頁面明確是常青內容,標註日期會損害長期性。
  - 數字 (例如 "5 個最佳"、"前 10"、"3 步驟") → 設定清晰期望,
    在點擊率上始終優於非數字標題 — 總是視為加分項。
  - 特定修飾詞 ("開源"、"自託管"、"免費") → 縮小意圖
    並吸引更高品質的點擊 — 不要懲罰。

URL Slug — 當 keyword_match != "full"is_homepage == false 觸發:

slug    : (來自 url_slug.slug)
keyword : (傳遞的 --keyword)

判斷:
  1. Slug 是否包含主要關鍵字或自然變體?
  2. 路徑層次是否合理? (/category/keyword 是理想的)
  3. 是否簡潔且人類可讀?
  首頁 (is_homepage: true):跳過 — 無需判斷。

Meta Description — 當內容存在時總是觸發:

meta_description : (來自 meta_description.value)
keyword          : (傳遞的 --keyword)

判斷所有四項:
  1. 完整的句子? (1-2 個句子,沒有片段)
  2. 提到具體結果 — 而非模糊的空話?
     好:"使用 AI 驅動的範本,將設計時間減少 60%"
     差:"滿足您所有設計需求的最佳工具"
  3. 關鍵字或自然同義詞使用一次 — 而非堆砌?
  4. 比典型競爭對手會寫的更為具體?

重要 — 不要將以下標記為負面:
  - 年份 (例如 "2026") → 信號新鮮度,改善對時間敏感查詢的點擊率。
    僅在頁面明確是常青內容時才註明年份,若標註日期會損害時。
  - 數字 (例如 "5 個最佳"、"3 步驟") → 具體化,強烈的點擊率信號。
  - 結尾的 "還有更多。" → 最多是輕微的風格註記,絕非警告或失敗。

建議工作流程

按以下順序遵循這些步驟:

  1. 確認範圍 — 確認這是基本審核;註明任何缺失的數據

  2. 推斷主要關鍵字 — 使用 fetch-page.py 擷取頁面,然後確定主要關鍵字:

    • 如果使用者明確提供關鍵字 → 直接使用它
    • 如果沒有 → 閱讀頁面 H1、標題和第一段,然後推斷最有可能的 目標關鍵字詞組(搜尋者會輸入什麼來找到此頁面?)
    • 在執行檢查前明確陳述推斷的關鍵字:

      "推斷的主要關鍵字: 開源 claude 替代方案"

  3. 執行 check-site.py — 解析 JSON 輸出的 robots、sitemap、404 處理和 URL 規範化

    404 檢查: 擷取 <origin>/this-page-definitely-does-not-exist-seo-audit-check

    • 返回 404 → 通過 · 返回 200 (軟 404) → 失敗 · 返回 301 至首頁 → 警告

    URL 規範化檢查 (每一項都是獨立的子檢查):

    • HTTP→HTTPS: 擷取 http://<host> — 必須 301 至 https://。返回 200 → 失敗。
    • www 一致性: 擷取 https://www.<host>https://<host> — 其中一個必須 301 至另一個。兩者皆返回 200 → 警告。
    • 尾隨斜線: 比較實際提供的 URL 與頁面上的 canonical 標籤。不符 → 警告。
    • Canonical 匹配: canonical 標籤 href 必須與最終重新導向後的 URL 完全一致。不符 → 警告。
  4. E-E-A-T 基礎設施檢查 — 針對以下每個信任頁面,檢查兩個層級:

    • 層級 1 — 存在: 擷取 URL,檢查 HTTP 狀態 (200 = 存在,404/重導 = 缺失)
    • 層級 2 — 可達: 擷取首頁 HTML,檢查頁尾或導覽列是否包含到此頁面的連結
    頁面必要
    關於我們
    聯絡方式
    隱私權政策
    服務條款
    媒體 / 合作夥伴否 — 僅當存在時包含

    狀態規則:

    • 頁面缺失 (非 200) → 失敗
    • 頁面存在但未在頁尾/導覽列中連結 → 警告
    • 頁面存在且連結於頁尾/導覽列 → 通過
    • 可選頁面缺失 → 跳過,不包含該列
  5. 執行 check-page.py --keyword "<推斷的關鍵字>" — 解析 JSON 輸出的 H1、title、 meta description、canonical 和 URL slug

  6. i18n / hreflang 檢查 — 僅當頁面包含 hreflang 標籤或 <html lang> 暗示多語言時才執行:

    • 完全跳過 (無關) 如果未找到 hreflang 標籤且網站看似單一語言
    • 如果存在 hreflang 標籤,檢查:
      • 相互對稱性:每個引用的 URL 必須連結回所有其他變體 — 任何中斷的連結 = 失敗
      • 語言代碼:必須是有效的 BCP 47 (例如 zh-CN 而不是 zhen-US 而不是 en-us) — 錯誤代碼 = 警告
      • x-default:應存在於語言選擇器或備用頁面 — 缺失 = 警告
      • html[lang] 屬性:必須與頁面的主要 hreflang 相符 — 不符 = 警告
      • URL 結構:建議模式 — 預設語言 (通常 en) 在根目錄無前綴, 其他語言在子路徑下 (/zh//es/)。
        • /page (en) + /zh/page + /es/page → 通過
        • /en/page + /zh/page → 警告 (en 前綴是多餘的,浪費爬取深度)
        • 僅當模式明顯不一致或 en 有不必要的前綴時才標記
  7. 執行 check-schema.py — 解析 JSON 輸出的 schema 類型和欄位驗證

    python scripts/check-schema.py https://example.com
    # 或從先前擷取的 HTML:
    python scripts/check-schema.py --file page.html
    

    指令碼提取 JSON-LD 區塊,根據 Schema.org 規範驗證 @type 和必要欄位。 llm_review_required: true 總是設定 — 確認 inferred_page_type 符合實際頁面內容。

    頁面類型 → 預期的 @type 參考:

    頁面類型預期的 @type最低必要欄位
    首頁WebSite + Organizationname, url, logo
    部落格 / 文章Article 或 BlogPostingheadline, datePublished, author, image
    產品Productname, image, offers (price, priceCurrency)
    常見問題FAQPagemainEntity[].name, acceptedAnswer.text
    操作指南HowToname, step[].text
    本地商家LocalBusinessname, address, telephone
    通用著陸頁無關 — 跳過,沒有廣泛支援的類型
    • 通過:正確的 @type 存在,所有必要欄位有效,無衝突
    • 警告:@type 存在但缺少推薦欄位
    • 失敗:預期的 @type 完全缺失
    • 無關:通用著陸頁 — 不要懲罰
  8. 總結發現 — 每個發現必須遵循證據 / 影響 / 修復格式

  9. 優先動作 — 列出前三大最具影響力的修復

  10. 渲染報告 — 儲存至 reports/<hostname>-<slug>-audit.html,然後詢問使用者是否開啟

  11. 升級提示 — 如果發現超出基本範圍的問題,建議使用 seo-audit-full


報告細節撰寫規則

檢查表中的詳細資料儲存格必須遵循這些規則——沒有例外:

通過 → 一個簡短短語。沒有列表,沒有闡述。

良好:"有效的 XML urlset · 104 個網址 · 在 robots.txt 中引用。"
不良:"有效的 XML urlset 包含 104 個網址。在 robots.txt 中正確引用。
       部落格文章可能透過此網站地圖被索引。"

警告 → 一個 <div class="detail-issue"> 包含 ≤2 個要點。一個 <div class="detail-fix"> 包含修復。

良好:
  <div class="detail-issue">· 標題 48 個字元 — 低於最低標準 2 個。 · 年份 "2026" 會使頁面標註日期。</div>
  <div class="detail-fix">擴展至 50–60 個字元;若為常青內容則移除年份。</div>

不良:三句散文解釋標題標籤是什麼以及為何長度重要。

失敗 → 與警告相同。以確切的失敗開頭。沒有背景解釋。

不要解釋某個檢查是什麼,不要重複狀態徽章中已可見的資訊, 不要將讀者視為不熟悉 SEO 基礎。


強制性發現格式

每個重要發現必須遵循此結構:

**發現:[發現標題]**

- **證據:** [觀察到的內容 — 直接引用、截圖參考或可測量的數據]
- **影響:** [這對 SEO 或用戶體驗為何重要]
- **修復:** [具體、可執行的建議]

不要寫模糊的結論。如果證據不足,明確陳述假設。


升級提示

在每個基本審核報告結尾包含此內容:

想要更深入的分析嗎? 這是一項基本 SEO 審核,涵蓋站點層級訊號和核心頁面檢查。 如需進階技術 SEO、內容品質評分、結構化資料分析以及完整的爬取發現,請使用 seo-audit-full 技能。


參考檔案

  • 詳細審核範圍和欄位定義:references/REFERENCE.md
  • 最終 HTML 報告範本:assets/report-template.html
  • 站點層級檢查指令碼:scripts/check-site.py
  • 頁面層級檢查指令碼:scripts/check-page.py
  • 原始頁面擷取器:scripts/fetch-page.py
  • Schema 驗證指令碼:scripts/check-schema.py

常見問題