百原GEO Platform(下稱「百原GEO」或「本平台」)是本書主角,由百原科技(Baiyuan Technology)開發與維運。本章是後續 10 章的地圖索引。
市場上第一代 GEO 工具多數停留在監測層面:提供一個儀表板,告訴使用者「你現在幾分」。問題是,監測只是診斷,不是治療。使用者看到低分之後會問:「然後呢?」
百原GEO 的設計起點,是把整個流程視為一個閉環(Closed Loop):
flowchart LR
A[監測<br/>Scan] --> B[診斷<br/>Diagnose]
B --> C[優化<br/>Optimize]
C --> D[部署<br/>Deploy]
D --> E[驗證<br/>Verify]
E --> A
E -.->|幻覺偵測| F[修復<br/>Remediate]
F --> D
Fig 2-1: 每一環節都必須可被自動化、可被量化、可被追溯。任何必須「人工做一次」的環節都是系統的疤痕。
基於這個原則,我們把系統切分為三個模組。
負責週期性地把品牌送去問 AI,把回應抓回來、結構化、評分。
核心職責
技術選型
負責讓 AI 更容易認識、引用這個品牌。
核心職責
@id 互連(見 Ch 7)負責偵測並修復 AI 對品牌的錯誤認知,讓閉環收斂。
核心職責
flowchart TD
U[使用者建立品牌] --> W[Wizard 引導 Schema.org 填寫]
W --> G[系統產出 AXP 影子文檔 + JSON-LD]
G --> CF[CF Worker 對 AI Bot 提供影子內容]
CF --> S[Scan Module 派發意圖查詢<br/>到 15+ AI 平台]
S --> R[回應回流 → 評分]
R --> D[儀表板呈現七維度<br/>+ 競品對比 + 缺口分析]
R --> Q[Quality Module 偵測幻覺]
Q --> C[生成 ClaimReview<br/>注入 AXP + RAG]
C --> V[哨兵/完整掃描驗證]
V -->|收斂| S
V -.->|仍有問題| C
Fig 2-2: 閉環可以以「小時」為單位(哨兵)或以「日」為單位(完整掃描)運作;使用者看到的只是儀表板上的分數變化,背後是上述八個步驟的持續循環。
| 層級 | 技術 | 主要職責 |
|---|---|---|
| Edge | Cloudflare Workers | AI Bot UA 偵測、影子文檔注入、sitemap/robots 代管 |
| Frontend | Next.js 16(Webpack)+ React 19 + TypeScript + Tailwind v4 | 儀表板、品牌管理、Wizard、i18n(zh-TW / en) |
| API | Node.js + Express 4 + Helmet + express-rate-limit + Zod | REST API、多租戶、JWT + 2FA |
| Worker | BullMQ 5 + Node.js 任務執行程序 | 掃描、評分、AXP 生成、幻覺偵測、RAG 同步 |
| AI Routing | 自研 modelRouter + OpenAI SDK + 各廠商直連 SDK | 多 Provider 容錯 |
| Data | PostgreSQL 16 + pgvector + Redis 7 | 關聯資料、向量檢索、快取、隊列 |
| Deploy | Docker Compose on AWS Lightsail(PROD)/ 本機 Docker(UAT) | 環境隔離 |
| RAG | 中央共用 RAG 引擎(內部 SaaS 基礎設施) | 多租戶知識庫同步與查詢 |
截至 2026-04-18,系統已演進至 v2.19.4;累計功能迭代約 20 個 minor version、migration 檔案 139 支、前端頁面 60+、API endpoint 180+。
百原GEO 是 B2B SaaS,同一個資料庫同時服務多組客戶,資料隔離是合約等級的義務,不是一個「最好有」的 nice-to-have。我們採用雙保險策略:
brands、scan_results、geo_scores 等核心表建立 RLS 政策,依 current_setting('app.org_id') 過濾;即使應用層寫錯 SQL,資料也不會跨組洩漏org_id,與 RLS 形成雙層驗證;若 RLS 政策被誤刪,應用層仍能保障隔離flowchart LR
R[HTTP Request] --> M[Auth Middleware<br/>解析 org_id]
M --> C[Controller]
C --> Q[Query Layer<br/>顯式帶 WHERE org_id]
Q --> PG[(PostgreSQL)]
M -.->|SET app.org_id| PG
PG --> RLS{RLS Policy<br/>依 current_setting 過濾}
RLS --> D[(Data)]
Fig 2-3: 應用層與資料庫層各自獨立執行一次過濾。單一層出錯不會造成跨組洩漏。
此設計來自早期一次接近失誤的事件:僅靠應用層帶條件,人類會忘記;僅靠 RLS,政策變更時無法被一般 CI 偵測。雙保險讓兩種疏漏都需要同時發生才會出問題。
截至本書撰寫時,百原GEO 覆蓋 15 個 AI 平台,分成三群:
| 類型 | 數量 | 代表平台 |
|---|---|---|
| 全球通用型 | 7 | OpenAI GPT-4o/4o-mini、Anthropic Claude、Google Gemini、Meta Llama、Mistral、xAI Grok、Cohere |
| 中文模型 | 5 | 百度文心、DeepSeek、月之暗面 Kimi、智譜 ChatGLM、阿里通義千問 |
| 搜尋型 | 3 | Perplexity、ChatGPT Search、Google AI Overview(爬蟲側) |
覆蓋一個平台的成本不僅是「串一個 API」,還包括:model ID 映射、extraParams 設計、timeout/retry 策略、幻覺偵測模板、評分校準、UI 呈現。每加一個平台約需 2–4 個工程日。
導覽:← Ch 1: GEO 時代背景 · 📖 目次 · Ch 3: 七維度評分 →