| name | geo |
| description | 完整的 GEO(生成式引擎优化)服务流水线:给一个产品官网 URL 和介绍材料, 做站点诊断与 AI 答案采样、生成带验收标准的执行工单、产出可直接部署的资产 (llms.txt / JSON-LD / 定义块 / FAQ / 内容大纲与初稿)、自动验收工单是否闭环、 并打包成可直接发给客户的交付物。可按周期复跑,做长期 GEO 运营与月报。 国内和海外双市场并行:国内覆盖 智谱GLM/豆包/DeepSeek/Kimi/MiniMax/纳米AI/百度AI, 海外覆盖 Gemini/ChatGPT/Claude/Grok/Perplexity,问题库与指标按市场分开算。 当用户说「做 GEO」「生成式引擎优化」「让 AI 推荐我的产品」「AI 搜索里搜不到我们」 「GEO 方案/诊断/监测/月报/交付」「给客户做 GEO 服务」,或给一个产品网址要做 AI 可见性优化时使用。GEO 指生成式引擎优化,不是地理信息; 不用于传统 SEO 关键词排名、竞价投放或建站。 |
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
./scripts/service.sh install
全流程都在界面上,不用记命令:新建项目、编辑配置与问题库、写事实卡、
一键跑任意步骤或整个周期(带实时日志)、改工单状态、看资产、导入人工采样表、打开交付包。
界面为暗色四段主线(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 选型说明)
不要凭经验给 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 只留给品牌验证类。注意这类问题点名了品牌,答案必然复述品牌名,
脚本会把它们单独归入「品牌认知」,不混进可见性指标
无自有网站的项目(电商商品、线下品牌、小程序…)
没有官网也能做 GEO——AI 可见性本来就主要靠外部阵地,官网只占国内引用的 1.37%:
python3 scripts/geo.py init --no-site --name "商品名" --materials 介绍材料.md --market cn
材料文本取代官网正文成为推导底座(不给 --materials 会生成模板让你填)。
差异只有三处:抓取/体检自动跳过(技术层不适用)、llms.txt 与 JSON-LD 不产出
(需挂自有域名)、引用官网率显示「不适用」而不是 0。采样、竞品、阵地地图、
问题库、内容工作台、发布、验收、交付全部照常。
每期循环(serve 自动做完,这里说明每步在干什么)
抓取 + 体检
按六维打分:可抓取性 / 长度 / 结构 / 可抽取块 / 权威信号 / 对题性。
audit.json 的 layers 字段按「访问 → 定向 → 理解 → 可引用」四层给出修复顺序:
每层依赖上一层,先修失败的最上游层(详见 method.md 四层依赖模型)。
读结果时先看五件事:
layers 里最上游的 fail 层——访问层失败时,下游的一切优化在引擎侧不可见
- SPA 空壳页(
word_count 接近 0)——国内官网最常见致命伤,AI 抓取器看到的是空白
- robots / WAF 有没有拦 AI 抓取器——
ai_bots_blocked 是 robots 封禁(含通配符组),
ai_ua_blocked 是换 AI 爬虫 UA 实测被 WAF/CDN 拒绝(浏览器里看不出来的那种)
language_coverage 中英是否对等——做海外却没英文原生页直接 P0
block_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),脚本自动加载。
没有公开联网 API 的——国内纳米AI搜索/百度AI/豆包 App,海外 ChatGPT 网页版/
Claude 网页版/Google AI Overviews——走人工或浏览器采样:
python3 scripts/geo.py sample-sheet --slug <项目>
python3 scripts/geo.py sample-sheet --slug <项目> --intent buyer --limit 20
python3 scripts/geo.py sample-import --slug <项目> --file <采样表>
更快的路径是配套的 Chrome 采样助手插件(extension/,README 有安装说明):
侧栏载入周检队列 → 填入问题 → 一键提取答案与引用 → 回传看板自动入库。
手动模式回车由人按(零合规风险,交付给客户用这个);「自动跑队列」需显式开启,
会代你发送,仅限自己账号小批量、人在场、撞验证码即停——README 里写明了风险边界。
数据只进本机 127.0.0.1,无后台采集、无遥测。
意图分组贯穿三处:问题库页每组一张卡(该组提及率、失守题数、无内容题数),点卡片筛选;
插件按分组挑队列并分节排列;周检表 --intent buyer 取的也是同一批组。
分三类看——买家意图(推荐/比较/替代/价格,离成交最近,优先补)、
需求教育(场景/风险)、探测(品牌验证,点名题不计入提及率)。
采样进来后到看板 样本库(现状 → 样本库)复核:机器判读是正则,品牌名撞词、
否定语境、竞品别名都可能误判。逐条纠正提及/位次/竞品,改完立刻重算当日指标,
纠正过的样本打 manual_override,重跑不会覆盖人工结论。
口径纪律(详见 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 可导进项目管理工具)、验收表、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 采样 / 导出人工采样表 / 回灌 |
expand | 拓词:百度下拉/Google 补全扩出真实需求候选题(--no-llm 用模板转写) |
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 方案