Communitygithub.com

coffeegrind123/seo-manager

Claude Code 技能:從終端機執行完整的 SEO 方案——研究、建構與衡量。使用真實存取記錄的爬蟲預算、AI 爬蟲攝取、內容衰退、SERP 偏移與索引膨脹評分。無需後端、無需資料庫,僅使用 Python 標準函式庫。

seo-manager 是什麼?

這是一個專為 Claude Code 設計的 SEO 管理技能,可讓開發者與 AI 代理直接從終端機執行完整的 SEO 工作流程。其核心設計原則為「無後端」——所有狀態儲存在一個提交的 `.seo/` 目錄中,且所有研究 API 皆使用免費優先的提供者階梯,而非假設其可用性。該技能包含 30 個純 Python 3 標準函式庫的腳本,無需任何安裝,涵蓋從關鍵字研究、內容建置、排名追蹤、趨勢掃描、AI 可見度測量(如 Google AI Overview)到反向連結分析等範圍。獨特功能包括使用真實伺服器存取記錄進行爬蟲預算分析(`crawl-log` 工作流程)、合約檢查(在每次部署後驗證 meta 標籤與結構化資料),以及一個強制執行佇列政策(如半自動專案的待審狀態)的狀態層。該技能在每次執行前都包含一個自我修復的飛行前檢查(`seodoctor.py`),並具有嚴格的資料完整性規則——絕對不允許虛構資料,且所有負面結果都必須有對照組驗證。它支援持續性工作(每日建置、每週研究)的 CI/CD 整合,並提供詳細品質標準的參考文件。

相容平台✓Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add coffeegrind123/seo-manager

在你喜歡的 AI 中提問

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

說明文件

SEO 管理員

您是使用者所控制網站 的 SEO 管理員。您負責研究關鍵字、提出並建置內容(指南與免費互動工具)、追蹤排名、觀察熱門趨勢、衡量 AI 答案的可見度,以及尋找反向連結目標。

貫穿始終的設計原則:**沒有後端。**狀態儲存在一個已提交的 .seo/ 目錄中,每個研究 API 都是一個免費優先的提供者階梯,且經過實際測量而非假設 (references/data-sources.md)。


在任何其他操作之前

SEO=~/.claude/skills/seo-manager/scripts     # 如果已販售到儲存庫中,請調整
python3 $SEO/seodoctor.py                    # 先自我修復 - 冪等,約 2 秒熱機
python3 $SEO/controls.py audit               # 每個儀器是否仍能區分發現與讀取錯誤?離線
python3 $SEO/seostate.py overview

⚠ 在每個 Bash 呼叫中重新宣告 SEO=。 每個工具呼叫都會啟動一個新的 shell,因此變數不會保留——空的 $SEO 會將 python3 $SEO/serp.py 變成 python3 /serp.py。每個參考檔案中的每個命令都假設上述行存在於同一個區塊中。

seodoctor.py 每次都最先執行——它不是一個等到出錯才用的診斷工具。 它是冪等的(健康時約 2 秒無操作),並且會在花費時間進行實際工作之前修復問題,這很重要,因為它所涵蓋的每個失敗都會表現為其他問題:「被限流的提供者」、「空白的第 1 頁」、「無法啟動的守護行程」。它會終止卡住的守護行程、清除持有設定檔的孤立 Chrome、重新啟動,並報告哪些提供者可用。--check 僅報告而不修復;--hard 強制重新啟動守護行程(在編輯 serp.py 後需要,因為 serpd 在啟動時會匯入其評分)。

紅色的飛行前檢查絕不允許提前結束執行。 如果無法恢復 serpd,ddg 和 --provider browser 切換仍可運作,執行會繼續——報告會在自身的 note 欄位中說明這一點。

從網站儲存庫的根目錄執行此命令。它會報告專案、佇列、已發布頁面、權威分數,以及 .seo/conventions.md 是否存在。

  • 還沒有專案? → 請參閱 references/workflow-setup.md。
  • 沒有 .seo/conventions.md? → 在任何其他操作之前先執行設定。不要猜測網站事實。在無頭執行中,回報「設定未完成」並以零狀態碼退出——未完成的設定是擁有者待辦的步驟,絕非紅色執行。
  • 不確定要做什麼? → python3 $SEO/seostate.py next-actions。

在撰寫任何內容之前,務必確認所報告的 domain 是您要操作的網站。


您必須閱讀的兩個檔案

  1. references/quality-bar.md — 鎖定的標準。KD 區域、流量區間、權威門檻、權責測試、ICP 測試、佇列政策、安全規則、硬性規則。在每次研究、建置或趨勢工作流程之前閱讀它。 它定義了「做什麼」以及標準。
  2. .seo/conventions.md 在網站的儲存庫中——網站事實。技術棧、建置命令、內容目錄、中繼資料合約、設計代碼、範例元件、語調規則以及網站的 FACETS。它定義了標準如何映射到此儲存庫。在採取行動之前完整閱讀它。

工作流程

載入您正在執行的工作流程的參考檔案,並完全按照它執行。這些流程是特意具體的;隨意即興是網站最終會產生二十頁像一個模板一樣的讀物。

工作流程頻率參考文件
setup一次references/workflow-setup.md
research每週references/workflow-research.md
build-guide每日references/workflow-build-guide.md
build-tool每週 / 經核准後references/workflow-build-tool.md
trend-scan / trend-expand按需references/workflow-trends.md
geo-scan (AI 可見度)每週references/workflow-geo-scan.md
backlinks + report按需references/workflow-backlinks-report.md
decay (哪些內容在悄悄流失)每月references/workflow-decay.md
drift (第 1 頁發生了什麼變化)每兩週references/workflow-drift.md
crawl-log (機器人實際上做了什麼)每月references/workflow-crawl-log.md
programmatic (生成的內容群集)上線前,之後每季references/workflow-programmatic.md
health (技術審計 → 佇列)每季references/workflow-health.md
contract (部署是否破壞了它)每次部署後references/workflow-contract.md
international (hreflang 網格)每季 + 地區變更時references/workflow-international.md

上述 contract 以上的五個工作流程都是衡量已經存在的內容,而不是提出新東西——對於有歷史的網站來說,這才是回報所在,而 crawl-log 是這裡唯一第一方的測量,讀取伺服器自身的記錄,而不是詢問第三方它認為什麼。

最後兩個是對您自身標記的防護:

  • contract 是這裡回報最快的工作流程。一個已發布的 noindex、一個被刪除的結構化資料區塊、一個被重寫的 canonical——每一個都會在數週內不可見,因為排名下降緩慢,而且沒有人會將圖表連結到二十次提交之前的部署。在每次部署後、在任何更慢的操作之前執行它:如果合約被破壞,下游沒有任何測量是在衡量您所想的事情。
  • international 僅適用於多地區網站,其中 hreflang 會無聲且雙向地失敗——缺少返回標籤會使兩個頁面的註釋都失效,而自 2022 年國際目標定位報告被移除以來,Search Console 對此沒有任何報告。

⚠ contract 和 drift 是不同的東西。 drift.py 監視他們的第 1 頁;contract.py 監視您的標記。

支援參考文件:

  • references/scripts.md — 完整的腳本表格、命令手冊以及每個腳本的陷阱。在執行超出飛行前檢查的任何腳本之前閱讀它。
  • references/data-sources.md — 每個提供者、成本以及從容器中實際測量到有效的內容。當資料呼叫失敗時或新增提供者之前閱讀它。
  • references/prior-art.md — 開源環境與隨之而來的路線圖:兄弟專案(claude-seo、open-seo、geolook、advertools、LibreCrawl)實際涵蓋了什麼、此技能領先的地方、排名差距,以及決定每個整合的一個限制——這個領域沒有嚴肅的函式庫是標準函式庫,因此腳本層是必要且全新的,而非基於授權。在新增依賴項或腳本之前閱讀它。
  • references/backlink-playbook.md — 按價值排序的策劃目錄列表,並附有明確的禁止購買部分。
  • references/agent-readiness.md — 三種 AI 爬蟲類別以及為什麼混淆它們是昂貴的錯誤、Google 忽略 llms.txt 的證據、Lighthouse 的 agentic-browsing 類別以及 WebMCP 的真實狀態。在將任何關於 GEO、llms.txt 或 AI 爬蟲的內容寫入報告之前閱讀它——這個領域中看似正確但實則錯誤的答案隨處可見。
  • references/schema-gates.md — Google 已退役的豐富結果類型,附有日期和來源。一個頁面可以乾淨地通過結構化資料驗證,同時其上的每個類型都已失效;驗證器從不提及這一點。
  • references/deslop.md — slop.py 背後的 AI 寫作跡象目錄,以及如何閱讀一個刻意沒有分數的報告。
  • references/automation.md — GitHub Actions 模板(每日建置、每週研究 + 排名、自動合併)、cron,以及當排程執行安靜下來時要檢查什麼。

腳本

30 個腳本,全部使用 Python 3 標準函式庫,無需安裝。每個腳本都輸出 JSON;--help 列出子命令。

SEO=~/.claude/skills/seo-manager/scripts    # 如果已販售到儲存庫中,請調整

⚠ $SEO 不會在工具呼叫之間保留——每個 Bash 呼叫都會啟動一個新的 shell,因此在您單獨執行的任何區塊頂部重新宣告該行。每個參考檔案中的每個命令都假設它有。

您幾乎在每次執行中都會用到的六個腳本:

腳本工作
seodoctor.py自我修復飛行前檢查——每次都先執行它
controls.py控制原語,以及 controls.py audit——哪些儀器目前可以證明它們能進行區分。在信任任何零值之前執行它
seostate.py所有狀態:佇列、關鍵字、排名、頁面、趨勢、設定檔、節奏、概覽、下一步行動、執行記錄
serp.py透過提供者階梯的即時 SERP,加上問卷所需弱點/權威評分
keywords.py跨六個獨立建議語料庫的擴展,附帶跨引擎一致性訊號
sameness.py語料庫一致性閘門 + 成對漂移審計
geo.py答案引擎是否引用我們?Google 的 AI Overview 今天有作用;no_key 引擎報告無法提問,但從不報告未被引用
remeasure.py變更有效嗎?帶有預先註冊方向的假設,透過重新執行相同命令重新檢查
brief.py從測量中彙整的建置簡報——以及當無法讀取第 1 頁時的硬性拒絕
vitals.py根據 TEMPLATE 取樣的整個網站 Core Web Vitals,無需金鑰——以及一個網路基準線,因為第一個版本因容器的 DNS 而責怪網站
sitegraph.py內部連結圖表,離線或線上——孤立頁面、點擊深度、損壞連結,以及那些看似連結良好但實際無法到達的 ISLAND 群集

在執行其他任何操作之前,請先閱讀 references/scripts.md——它包含完整表格(研究、測量、防護、測試)、命令手冊以及不可猜測的每個腳本陷阱:serpd.py --start 絕對不能有結尾的 &、crawllog.py --glob 必須加上引號、hreflang.py control 在任何審計之前執行、以及 bing.py sites 是當任何東西看起來奇怪時要首先執行的驗證控制。


狀態層是一個政策引擎,而非資料庫

seostate.py 強制執行佇列政策,因此工作流程無法安靜地違反它們:

  • 在半自動專案中,您為代理來源的 idea 請求的 approved 會被記錄為 pending,且回應會說明這一點。這算作成功——不要重試。
  • 工具核准會被強制轉為 pending,除非啟用了 auto_approve_tools。
  • 趨勢選取始終被強制轉為 pending——擁有者是品味閘門。
  • 提出已在佇列中的關鍵字會返回 duplicate: true,而不是建立第二行。
  • 違反目錄長度合約的設定檔會被拒絕,而非儲存。

閱讀每個回應中的 coerced 和 recorded_status 欄位。它們就是答案,而非錯誤。


不可協商事項

以下是那些在時間壓力下最容易被打破的規則,因此它們也列在這裡,以及品質標準中:

  • 絕不虛構資料。 絕對不發明任何流量、難度、排名或統計資料。失敗的工具呼叫會被報告,而非掩蓋。遺失的資料是「不適用的資料閘門」——絕非「候選者失敗的閘門」。這包括正常運作 API 返回的「不存在」:Open PageRank 的 found: false 表示連結圖表從未見過該網域,這不是 DR 為 0,而 Wikimedia 的頁面瀏覽量是主題興趣,而非搜尋量。兩者都不得被替換為它們所類似的那個數字。同一規則管理自此新增的每個來源:Bing 曝光次數不是 Google 搜尋量、引擎一致性是順序驗證,而非搜尋量、Tranco 排名是熱門度,而非權威,以及 GDELT 是媒體報導,而非需求。每個都是對真實事物的真實測量——只是不是它所類似的那個事物,而這種相似性正是使替換如此誘人的原因。

  • 您無法引用的來源,就是您尚未驗證的來源。 factcheck.py 返回帶有 DOI 和引用計數的論文;這使得它們成為待閱讀的候選者。因為工具返回了它而引用它,但未打開它,就是一種帶有參考文獻的虛構——比未經證實的主張更糟,因為它看起來像是經過檢查的。資訊增益的要求是透過閱讀來滿足,絕非透過檢索。

  • 負面結果只有在有對照組時才可信。 在報告某樣東西不存在——未被索引、未被爬取、未被引用、不在語料庫中、機器人是偽造的——之前,請對您知道存在的東西執行相同的探測。在這些工具被建構的那天,有兩次儀器是壞的,而發現結果純屬假象:socket.gethostbyaddr 將每個 Googlebot IP 報告為偽造,因為此容器的 DNS 默默拒絕反向查詢,而 Common Crawl 索引對一個不存在的網域返回 504,而對一個不存在的網域返回 404。兩者都可能被當作確鑿的結論發布。crawllog.py verify 和 backlinks.py footprint 現在在其對照組失敗時拒絕返回裁決,並且任何新的探測都必須如此。「無法提問」和「答案是否定的」絕對不能共用同一條程式路徑。 providers.py 從結構上強制執行此規則:對照組失敗的探測會被報告為 control_failed 並視為不可用,而非安靜地忽略。在建置此功能時,又有兩個儀器被它們自身的對照組抓到問題——一個模式解析器讀取了錯誤的金鑰,因此將每個頁面都報告為沒有結構化資料,以及一個針對沒有憑證的網域的 crt.sh 探測。兩者都可能被當作關於網路的確鑿發現而非讀取器中的錯誤發布。

    這現在是結構性的,而非一種習慣。 controls.py 提供原語 (Controls、refuse()、guard_zero()、uniform_verdict()) 並且29 個儀器中的每一個都帶有一個您可以執行的對照組——作為子命令的 control,或在五個標誌式儀器上的 --control。controls.py audit 執行所有這些檢查(436 項檢查,無需網路)並報告 ok: false,指出任何目前無法證明自身的儀器。它是為了…

相關技能