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 是您要操作的網站。
您必須閱讀的兩個檔案
references/quality-bar.md— 鎖定的標準。KD 區域、流量區間、權威門檻、權責測試、ICP 測試、佇列政策、安全規則、硬性規則。在每次研究、建置或趨勢工作流程之前閱讀它。 它定義了「做什麼」以及標準。.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,指出任何目前無法證明自身的儀器。它是為了…