GEO 全流程服務
從診斷到交付的完整鏈路,不只是給建議:
抓取 → 體檢 → AI答案採樣 → 產生工單 → 產出資產 → 報告 → 自動驗收 → 客戶交付包
核心判斷只有一句:GEO 的終點不是排名,是 AI 答案裡那句話是不是按你的口徑說的。 所以最小單位不是頁面,是可被抽取的事實塊。
專案目錄:/Users/brucejan/geo,每個客戶/產品一個 work/<slug>/。
最快的用法:給一個網址
python3 scripts/geo.py new --url https://example.com --market both
九步全自動:建專案 → 抓官網 → 體檢 → 自動推導品牌事實/競品/問題庫 → 重跑體檢 → AI 答案採樣 → 工單與建設藍圖 → 資產與報告 → 三份交付物。
產出 work/<slug>/deliverables/:
| 檔案 | 回答什麼 |
|---|---|
1-GEO診斷報告.html | 現在什麼樣 |
2-GEO優化方案.html | 應該改成什麼樣、為什麼 |
3-GEO執行方案.html | 誰在什麼時候做什麼、做到什麼算完成 |
自動推導出來的品牌事實必須人工覆核——bootstrap 只從官網正文抽取,
抽不到的一律標「待確認」,絕不用常識填充。標了「待確認」的欄位
(成立時間、工商主體、可具名客戶等)需要你補齊或明確不對外說。
兩種用法
介面(推薦)
python3 scripts/geo.py ui # 預設 http://127.0.0.1:8765
全流程都在介面上,不用記命令:新建專案、編輯設定與問題庫、寫事實卡、 一鍵跑任意步驟或整個週期(含即時日誌)、改工單狀態、看資產、匯入人工採樣表、打開交付包。
介面為暗色四段主線(AtlasGEO):現狀(總覽 / 引擎表現 / 競品對比 / 問題庫)→ 診斷(差距診斷 / 陣地地圖 / 品牌事實庫)→ 提升(行動計畫 / 內容工作台)→ 成效(效果驗收 / 報告與交付),外加設定與三步接入引導。統一說法:GEO 健康分(五項加權,未測項權重歸一)、提及率、引用份額、陣地、任務、內容。總覽標題是由數據自動生成的一句結論;所有數字來自同一份採樣,算不出的顯示「未測」,不編數。 任務在背景子行程跑,關掉頁面也會繼續;同一專案同時只允許一個任務,避免搶同一份 audit.json。
只用標準庫起服務,前端零外部依賴,斷網可用。
命令列
python3 scripts/geo.py serve --slug <專案>
抓取 → 體檢 → 採樣 → 工單 → 資產 → 報告 → 驗收上期 → 打包交付,全做完。
產出在 work/<slug>/delivery/<日期>/,可直接發客戶。
首次接一個新客戶走下面的步驟 0–2 做好底座,之後每期只跑這一條。
先讀什麼
- 每次必讀:
references/method.md(評分口徑和所有判據的出處,腳本就是它的程式碼實作) - 排外部信源優先級時必讀:
references/cn-source-ranking.md(CN-GEO 187,818 條引用實算榜。官網只佔 1.37%,這個數字會改變資源分配) - 打國內平台:
references/cn-platforms.md| 打海外:references/global-platforms.md - 寫內容/改頁面:
references/content-patterns.md - 更深方法或原始數據:
references/sources.md(含 GEORank / GEOFlow 選型說明) - 採樣/平台異常先對表:
references/known-issues.md(豆包超時、302 國內/海外端點模型目錄、 SPA 空殼、llms.txt 範圍過濾)
不要憑經驗給 GEO 建議。每條建議都要能追到 method.md 裡的某條實測數字,
說不出依據的別寫進方案。
步驟 0 · 建專案
python3 scripts/geo.py init --url <產品官網> --name <品牌名> --market both
--market 取 cn / global / both。
雙市場不是「順帶也做海外」,是兩套並行的戰場——問題庫、內容、競品清單、指標全部分開。
紀律見 global-platforms.md 第 5 節。
步驟 1 · 吃透產品,建事實底座
讀官網 + 使用者給的材料(PDF/PPT/文件/公眾號文章都行),補全 geo.json:
brand:規範名、別名和常見錯寫(品牌消歧的地基)、產品線、行業、目標用戶、業務目標competitors:3–6 個真實競品,帶別名。首期可以留空——先跑一輪「推薦類」問題的採樣, 從 AI 答案裡反推真實競爭集,比主觀拍腦袋準得多。雙市場時國內外競品通常不是同一批,都要列全 (排名指標是相對這個清單算的,漏掉真實對手會高估名次)
同時寫 work/<slug>/content/facts.md 品牌事實卡,範本見 content-patterns.md 第 1 節。
每條事實標證據等級 A–E,沒來源的標「待確認」,不許編。
這份文件是後面所有資產生成的輸入——llms.txt、JSON-LD、定義塊都從它來。
材料不夠就直接問用戶要,別猜產品能力和價格。
步驟 2 · 建問題庫
問題庫決定採樣什麼、寫什麼內容、怎麼算指標。按七組各出 3–6 題: 推薦 / 比較 / 替代 / 價格 / 風險 / 品牌驗證 / 場景。
每題必須標 market,腳本據此路由——中文題不會打到 Perplexity,英文題不會打到豆包:
{"id": "q001", "group": "推薦", "market": "cn", "text": "國內做私域營運的 SaaS 有哪些好用的?"}
{"id": "q101", "group": "推薦", "market": "global", "text": "What's the best CRM for small B2B teams in 2026?"}
{"id": "q900", "group": "品牌驗證", "market": "both", "text": "<品牌> 是家什麼公司?"}
cn:中文口語問法,不要翻譯腔 |global:英文原生問法,不是機翻both只留給品牌驗證類。注意這類問題點名了品牌,答案必然複述品牌名, 腳本會把它們單獨歸入「品牌認知」,不混進可見性指標
每期循環(serve 自動做完,這裡說明每步在做什麼)
抓取 + 體檢
按六維打分:可抓取性 / 長度 / 結構 / 可抽取塊 / 權威訊號 / 對題性。 讀結果時先看四件事:
- SPA 空殼頁(
word_count接近 0)——國內官網最常見致命傷,AI 抓取器看到的是空白 - robots 有沒有封 AI 抓取器——封了就什麼都別談
language_coverage中英是否對等——做海外卻沒英文原生頁直接 P0block_gap缺得最多的塊——內容工程第一優先級
AI 答案採樣
| 市場 | 平台 | 變數 | 說明 |
|---|---|---|---|
| 國內 | 智譜GLM | ZHIPUAI_API_KEY | OpenAI 相容端點,不聯網 |
| 國內 | 豆包 | ARK_API_KEY | 火山方舟;聯網要在控制台單獨開通內容外掛,沒開通自動降級 |
| 國內 | DeepSeek | DEEPSEEK_API_KEY | 不聯網,測模型參數化知識裡的品牌認知 |
| 國內 | Kimi | MOONSHOT_API_KEY | 預設不聯網 |
| 國內 | MiniMax | MINIMAX_API_KEY | OpenAI 相容端點,不聯網 |
| 海外 | Gemini | GEMINI_API_KEY | OpenAI 相容端點,不帶 grounding |
| 海外 | OpenAI(ChatGPT) | OPENAI_API_KEY | Chat Completions 預設不聯網 |
| 海外 | Claude | ANTHROPIC_API_KEY | Anthropic 原生協定,不聯網 |
| 海外 | Grok | XAI_API_KEY | xAI API,不聯網 |
| 海外 | Perplexity | PERPLEXITY_API_KEY | 原生聯網並回傳 citations,海外證據品質最好 |
Key 放專案根目錄 .env(已 gitignore,權限 600),腳本自動載入。
豆包在 302.AI 模式下走「搜尋+回答」組合,單題超時讀 .env 的 AI302AI_SEARCH_ASK_TIMEOUT
(預設 45s)。平台/端點異常先對 references/known-issues.md 對表,別讓任務空轉。
沒有公開聯網 API 的——國內奈米AI搜尋/百度AI/豆包 App,海外 ChatGPT 網頁版/ Claude 網頁版——走人工或瀏覽器採樣:
python3 scripts/geo.py sample-sheet --slug <專案>
python3 scripts/geo.py sample-import --slug <專案> --file <採樣表>
口徑紀律(詳見 method.md 第 4 節):
- 國內 ≠ 海外,跨市場平均提及率沒有解釋力,報告裡各佔一張表
- API ≠ 網頁端,Web ≠ App(千問 web 與 App 信源只有 24.5% 重合),單獨記單獨算
- 沒有答案原文/截圖/採樣環境記錄的,不許標成「真實採樣」
- 歸因預設寫「觀察相關」,除非有基線視窗 + 對照 Prompt + 競品對照
- 採樣頻率克制,遵守平台服務條款,不批量濫採、不模擬登入
產生工單 plan
診斷結果 → tasks.json,這是執行狀態的單一真相源。每條工單必須有:
依據(追到 method.md 哪一條)、負責角色、工作量、時間視窗、驗收標準、市場。
七個工作包:實體消歧 / 頁面技術 / 內容矩陣 / 標題體系 / 知識庫 / 外部證據 / 監測閉環。
優先級順序(method.md 第 6 節):
門票問題 → 事實錯誤 → 抽取塊缺口 → 高價值問題無承接 → 外部信源(P1,不是 P2) → 長尾擴量。
外部信源是 P1 不是 P2,因為官網只佔全庫引用 1.37%。 官網是事實源不是引用源,把它從 60 分做到 90 分的邊際收益,遠低於拿下一個榜單站詞條。
產出資產 generate
到 work/<slug>/assets/,中英分開:
| 產物 | 說明 |
|---|---|
llms.txt / llms.en.txt | 官方事實索引,直接傳網站根目錄 |
jsonld/*.json | Organization / SoftwareApplication / FAQPage / Article / BreadcrumbList,貼進 <head> |
snippets/definition.*.html | 定義塊,放首屏口號下方(口號保留,不影響轉換) |
snippets/faq.*.html | FAQ 塊,答案必須在靜態 HTML 裡可見,不要純 JS 折疊 |
outlines/*.md | 每個目標問題一份內容大綱(含標題候選、章節骨架、字數與抽取塊要求) |
drafts/*.md | 加 --draft 時呼叫已配 LLM 出全文初稿 |
分工:結構性資產由程式碼確定性產生(不會漏 schema 欄位);文章正文由你按 outline 寫——
程式碼寫不出好文案。--draft 的初稿必須人工核實事實後才能發布。
自動驗收 verify
重抓站點 → 跑 checker → 回寫工單狀態。這是「服務」和「建議」的分界線:
能自動驗收的,就不靠人口頭說做完了。做完會翻成 done,回歸了會翻回 todo。
無法程式判定的(如百科詞條是否過審)標「待人工」,確認後手動標記:
python3 scripts/geo.py task --slug <專案> --id T-003 --status done --note "詞條已上線"
python3 scripts/geo.py status --slug <專案> # 進度看板
客戶交付 deliver
打包到 work/<slug>/delivery/<日期>/:總覽 index、診斷報告、執行方案、
工單表(HTML + CSV 可匯入專案管理工具)、驗收表、建設地圖、引擎表現 / 競品對比
(複用 UI 同一套 analytics 口徑,逐引擎提及率/引用份額/樣本回放 + 競品×引擎矩陣/失守問題)、
assets 目錄、交付說明。
跑完之後你要做的事(腳本做不了的部分):
- 讀
reports/latest.md看 delta:均分漲跌、提及率變化、新出現的 P0 - 看「AI 實際引用的信源域名 Top」和「與全國大盤對照」——這是當期真實的分發地圖, 用它修正外部信源計畫
- 檢查採樣答案裡有沒有事實錯誤(品牌說錯、張冠李戴、價格錯、歸錯行業)→ 立刻 P0
- 按
outlines/寫內容,按plan.md更新進度
建議節奏:頁面體檢每週,答案採樣每兩週或每月(採樣有成本,指標本身有雜訊,跑太密看不出訊號)。
全部命令
| 命令 | 作用 |
|---|---|
new | ★ 只給一個網址,全自動出三份交付物 |
autopilot | 對已建好的專案跑完整引導流程 |
bootstrap | 從官網正文推導品牌事實、競品、問題庫 |
deliverables | 出三份正式交付物(診斷/最佳化/執行) |
init | 只建專案骨架,不跑流程 |
crawl / audit | 抓站 / 六維體檢 |
sample / sample-sheet / sample-import | API 採樣 / 匯出人工採樣表 / 回灌 |
plan | 診斷結果 → 帶驗收標準的工單 |
generate | 產出可部署資產(--draft 加 LLM 初稿) |
report | Markdown + 自包含 HTML 報告,含 delta 與大盤對照 |
verify | 重抓並自動驗收工單(--no-recrawl 用現有結果) |
task / status | 單條工單狀態 / 專案看板 |
deliver | 打包客戶交付物 |
ui | 全流程介面:新建專案、設定、問題庫、事實卡、一鍵執行、工單、資產、交付 |
serve | 全流程一條命令 |
cycle | 輕量循環(抓取→體檢→採樣→報告,不含工單與交付) |
list | 所有專案 |
排期自動執行
用 schedule skill 建定時任務:
每週一早上跑
python3 /Users/brucejan/geo/scripts/geo.py serve --slug <專案>, 然後讀work/<專案>/reports/latest.md,如果出現新的 P0、提及率下降超過 10 個百分點, 或有工單從 done 回歸成 todo,就告訴我。
邊界
做:GEO 診斷、方案、工單、內容工程、資產生成、AI 答案監測、驗收閉環、客戶交付包。
不做:
- 傳統 SEO 關鍵字排名、外鏈買賣、競價投放
- 建站/改站的實際程式碼實施(給方案、給可直接用的片段,落地由客戶開發做)
- 繞過平台限制的批量採集、模擬登入、刷量
- 編造品牌事實、客戶案例、價格或資質——查不到就標「待確認」,問用戶
不承諾任何平台一定會引用某個頁面。GEO 提高的是機率,不是保證。 給客戶寫方案時這句話必須原樣寫進去。
目錄
/Users/brucejan/geo/
├── SKILL.md
├── references/
│ ├── method.md 評分口徑與全部判據出處
│ ├── cn-source-ranking.md 國內信源實測榜(CN-GEO 實算,含復算腳本)
│ ├── cn-platforms.md 國內平台適配
│ ├── global-platforms.md 海外平台適配
│ ├── content-patterns.md 可抽取內容範本
│ └── sources.md 資料索引(含 GEORank / GEOFlow 選型)
├── scripts/
│ ├── geo.py CLI 總入口
│ ├── crawl.py 抓站 audit.py 六維體檢
│ ├── sample.py 多平台採樣 benchmark.py 與全國大盤對照
│ ├── tasks.py 工單系統 generate.py 資產生成
│ ├── verify.py 自動驗收 deliver.py 客戶交付包
│ ├── bootstrap.py 自動推導底座 deliverables.py 三份交付物
│ ├── blueprint.py 建設地圖
│ ├── dashboard.py 介面後端 ui.html 前端工作台
│ ├── jobs.py 背景任務(子行程 + 即時日誌)
│ └── report.py 報告渲染 geolib.py 共用工具
└── work/<slug>/
├── geo.json 品牌、競品、問題庫、平台、目標
├── content/facts.md 品牌事實卡(所有資產的輸入)
├── evidence/ 抓取快照 audit.json 體檢結果
├── samples/ 採樣原始答案 metrics/ 每期指標
├── tasks.json 工單(執行狀態單一真相源)
├── assets/ 可部署資產
├── reports/ 每期報告 + latest.md
├── verify/ 每期驗收結果
├── delivery/<日期>/ 客戶交付包
├── history/ 歷史基線(算 delta)
└── plan.md 30/60/90 方案