geo-audit-skill

内容来源:README.md(说明文档) · 原始地址 · 查看安装指南

原始内容

geo-audit-skill

让 AI 搜索引擎主动引用你的内容 Get cited — not just ranked — by ChatGPT, Perplexity & Google AI Overviews

6 个专家智能体 · 6 个 Python 脚本 · 零依赖 · 普林斯顿 GEO 研究驱动 6 specialist agents · 6 Python scripts · zero deps · powered by Princeton GEO research

Python 3.9+ Claude Code Zero Dependencies Agents Non-Commercial

English · 中文


Why GEO?

SEO gets you ranked. GEO gets you cited.

When someone asks ChatGPT "what's the best tool for X?" — does your brand get mentioned? That's a GEO question, not an SEO one. Classic SEO tools can't answer it.

geo-audit-skill is a Claude Code multi-agent framework that audits both worlds — so the same page that ranks on Google also gets quoted by ChatGPT, Perplexity, Google AI Overviews, and Claude.


Why this tool, not another?

Most GEO tools swap "keyword density" for "AI optimization" and call it done. Four things make this different:

1. The only skill that covers SEO + GEO in one workflow. 6 specialist agents coordinate from crawl audit to content rewrite to schema deployment. Nothing else bridges both.

2. Scripts measure facts. LLM judges meaning. Never the other way around. Every objective check (crawler permissions, schema fields, page structure) runs as a standalone Python script first. The agent only applies semantic judgment to fields explicitly marked llm_review_required: true. This kills hallucination on measurable data — the core failure mode of every pure-LLM audit tool.

3. Offensive, not just defensive. The question-miner agent finds where AI engines answer poorly, scores each gap by Specificity × Gap × Brand Fit, and maps them to content angles your brand can own. Not "here's your score" — here's your attack plan.

4. Zero dependencies. Seriously. Pure Python stdlib. git clone → run. No pip, no Docker, no API keys required for the core checks.


60-Second Start

git clone https://github.com/zilisrikle/geo-audit-skill
cd geo-audit-skill

# Score your page's AI citability (0–30)
python3 scripts/check-geo.py https://yoursite.com/blog/post --verbose

# Check whether AI crawlers can reach you (15 bots incl. GPTBot, ClaudeBot, PerplexityBot)
python3 scripts/check-site.py https://yoursite.com

Or drop into Claude Code and just say:

geo audit: https://yoursite.com
mine questions: https://yoursite.com
generate schema for: https://yoursite.com/blog/post

What You're Missing Without GEO

Capability Classic SEO tools geo-audit-skill
Title / meta / H1 / canonical yes yes
Schema validation yes yes
Core Web Vitals yes yes
robots.txt + sitemap yes yes
AI crawler access check (15 bots) yes
llms.txt validation yes
AI citability score (0–30) yes
Question-gap mining (Reddit / Quora / competitor FAQs) yes
AI-extractable content engineering (CITE framework) yes
FAQPage / HowTo schema auto-generation yes

GEO Citability Score — 0 to 30

Based on Princeton's GEO research. Six dimensions, five points each:

Dimension What it measures
DA Direct Answer Section openers are standalone extractable sentences
DD Data Density Specific numbers, durations, study results
AS Authority Signals Named researchers, institutions, DOIs
SQ Structure Quality Heading hierarchy, FAQ, lists, comparison tables
FR Freshness datePublished, dateModified, visible dates
UQ Uniqueness Proprietary data, original frameworks

Grade: A (27–30) · B (22–26) · C (17–21) · D (12–16) · F (<12)


Architecture

                    ┌──────────────────────────────┐
                    │  Orchestrator (CLAUDE.md)     │
                    │  Routes tasks to agents       │
                    └──────────────┬───────────────┘
                                   │
          ┌──────────┬─────────────┼─────────────┬──────────┐
          │          │             │             │          │
   ┌──────▼──┐ ┌─────▼──────┐ ┌───▼──────┐ ┌───▼──────────┐ │
   │   seo   │ │    geo     │ │ question │ │   content    │ │
   │ auditor │ │  auditor   │ │  miner   │ │  engineer    │ │
   └──────┬──┘ └─────┬──────┘ └───┬──────┘ └───┬──────────┘ │
          │          │             │             │            │
          └──────────┴──────┬──────┴─────────────┘            │
                            │                                  │
               ┌────────────▼──────────────┐                  │
               │  schema-architect         ◄──────────────────┘
               │  code-reviewer            │
               └────────────┬──────────────┘
                            │
               ┌────────────▼──────────────┐
               │  Python scripts (stdlib)  │
               └───────────────────────────┘

Agent Team

Agent Role
seo-auditor On-page SEO, technical SEO, E-E-A-T, Evidence/Impact/Fix reports
geo-auditor AI visibility, 6-dimension citability scoring, AI crawler audit
question-miner Question-gap analysis across Reddit/Quora/competitor FAQs
content-engineer GEO-optimized content using the CITE framework
schema-architect JSON-LD generation for HowTo, FAQPage, Article, Organization
code-reviewer Quality gate for every content and markup change

Python Scripts (stdlib only)

Script Checks
check-site.py robots.txt · sitemap · AI crawler access (15 bots) · llms.txt
check-page.py title · meta · H1 · canonical · GEO structure signals
check-schema.py JSON-LD for every Schema.org type incl. FAQPage/HowTo
check-pagespeed.py Google PageSpeed Insights API v5 (mobile + desktop)
check-geo.py 0–30 citability score across 6 dimensions
fetch-page.py Raw HTML, redirect chain, Googlebot/browser diff, SSRF-protected

Scripts are deterministic — agents read script output before any semantic analysis, preventing hallucination on objective measurements.


Workflow Chains

SEO audit     /seo-audit <url>  →  scripts  →  Evidence/Impact/Fix

GEO audit     /geo-audit <url>  →  citability score  →  content-engineer
              →  schema-architect (FAQPage/HowTo)  →  code-reviewer

Question gap  question-miner (60–100 Qs)  →  score  →  content  →  FAQPage

Full sprint   seo + geo  →  P0/P1/P2  →  content + schema  →  review

Requirements

  • Claude Code (claude CLI)
  • Python 3.9+
  • No Python dependencies — stdlib only
  • Optional: Google PageSpeed API key (higher rate limits)

Known Limitations

WAF-protected sites (Cloudflare Managed Challenge, etc.)

Enterprise sites that deploy strict WAF rules (e.g. Cloudflare Managed Challenge) block script-based HTTP clients, including urllib. When check-site.py encounters a WAF challenge, it will:

  • Return "waf_blocked": true in the JSON output
  • Mark robots and sitemap results as unreliable with an explanatory note
  • Not silently report "robots.txt not found" when the file may actually exist

To audit a WAF-protected site, verify robots.txt and sitemap.xml manually in your browser, or with a verified crawler user-agent. check-geo.py is similarly affected — content-level scores may be unavailable if the page itself is challenge-gated.

macOS VPN / split-tunnel routing (198.18.0.0/15)

On macOS, some VPNs and system proxies resolve all DNS through a local relay that maps external domains to 198.18.x.x (RFC 2544 benchmark range). Python's ipaddress module classifies this range as private, which previously caused the SSRF guard to reject legitimate public domains. This is fixed as of this version — the guard now explicitly enumerates RFC 1918 blocks rather than relying on is_private.


Contributing · Roadmap · Star

  • CONTRIBUTING.md — how to report bugs, add AI crawlers, tune agents, submit PRs. Everyone who's typed check-geo.py on a real site has useful data to share.
  • ROADMAP.md — what's shipped, what's next, what we're not building. Upvote the issue you want most.
  • Star the repo if it helps — it's the clearest signal that GEO tooling in the open is worth maintaining.

Issues and PRs welcome. Let's push GEO open tooling forward together.


License — Non-Commercial

Released under the PolyForm Noncommercial License 1.0.0. Free for personal, internal, educational, and research use. Commercial use — including repackaging this project into a paid SaaS or reselling it as a service — is not permitted. See LICENSE.


中文

传统 SEO 让你被搜到。GEO 让 AI 主动引用你。

当有人在 ChatGPT 里问"X 领域最好的工具是什么?"——你的品牌会被提到吗?这是 GEO 问题,不是 SEO 问题。传统 SEO 工具答不了。

geo-audit-skill 是一个 Claude Code 多智能体框架,把传统 SEOGEO(生成式引擎优化)合二为一。让同一份内容既能在 Google 上排名,又能被 ChatGPT、Perplexity、Google AI 概述、Claude 主动引用。


为什么选这个,而不是别的?

大多数 GEO 工具不过是把"关键词密度"换了个叫法。四个真实的差异:

1. 唯一同时覆盖 SEO + GEO 的 Claude Code 技能。 6 个专用 Agent 协同,从爬虫审计到内容改写到 Schema 部署,全链路闭环。没有其他工具打通这两个世界。

2. 脚本测事实,LLM 做判断,顺序不能反。 所有客观指标(爬虫权限、Schema 字段、页面结构)先由独立 Python 脚本测量,Agent 只处理标记为 llm_review_required: true 的语义字段。从根本上杜绝 LLM 对可测量数据产生幻觉——这是所有纯 LLM 审计工具的通病。

3. 进攻,而不只是防守。 question-miner 主动探测 AI 引擎在哪些问题上回答得差,按「具体性 × 缺口度 × 品牌契合度」评分,直接给出你能抢占的内容真空区。不是"这是你的分数"——而是"这是你的进攻路线图"。

4. 零依赖,认真的。 纯 Python 标准库。git clone 即跑。核心功能不需要 pip、Docker、也不需要 API Key。


60 秒上手

git clone https://github.com/zilisrikle/geo-audit-skill
cd geo-audit-skill

# 给你的页面打一个 AI 可引用性分数(0–30)
python3 scripts/check-geo.py https://你的站点.com/blog/post --verbose

# 检测 AI 爬虫能不能访问你(15 个爬虫:GPTBot、ClaudeBot、PerplexityBot……)
python3 scripts/check-site.py https://你的站点.com

在 Claude Code 里直接说:

geo audit: https://你的站点.com
mine questions: https://你的站点.com
generate schema for: https://你的站点.com/blog/post

SEO vs GEO — 你漏了什么

能力 传统 SEO 工具 geo-audit-skill
标题 / 描述 / H1 / canonical
Schema 结构化数据验证
Core Web Vitals
robots.txt + sitemap
AI 爬虫访问检测(15 个平台)
llms.txt 验证
AI 可引用性评分(0–30)
问题缺口挖掘(Reddit / Quora / 竞品 FAQ)
面向 AI 提取的内容工程(CITE 框架)
FAQPage / HowTo Schema 自动生成

GEO 可引用性评分(0–30)

基于普林斯顿 GEO 研究,六个维度各 5 分:

维度 测什么
DA 直接回答 段落首句能否被独立提取为答案
DD 数据密度 具体数字、时长、研究结果的密度
AS 权威信号 具名研究者、机构、DOI
SQ 结构质量 标题层级、FAQ、列表、对比表格
FR 内容新鲜度 datePublished、dateModified、可见日期
UQ 独特性 专有数据、原创框架、品牌专属内容

评级: A(27–30)· B(22–26)· C(17–21)· D(12–16)· F(<12)


AI 爬虫检测

很多网站在不知情的情况下屏蔽了 AI 爬虫,直接导致 ChatGPT / Perplexity 永远抓不到你。check-site.py 一次检测 15 个主流 AI 平台:

GPTBot · ClaudeBot · PerplexityBot · Google-Extended · Applebot-Extended · Amazonbot · Bytespider · meta-externalagent · CCBot ……

任何关键爬虫被屏蔽 → P0 紧急问题,优先修复。


智能体团队

Agent 职责
seo-auditor 页面 SEO、技术 SEO、E-E-A-T、证据/影响/修复报告
geo-auditor AI 可见性、6 维可引用性评分、AI 爬虫审计
question-miner Reddit/Quora/竞品 FAQ 问题缺口分析
content-engineer 用 CITE 框架产出面向 AI 提取优化的内容
schema-architect 生成 HowTo、FAQPage、Article、Organization JSON-LD
code-reviewer 所有内容和标记变更的质量把关

Python 脚本层(仅标准库)

脚本 检测内容
check-site.py robots.txt · sitemap · AI 爬虫访问(15 个) · llms.txt
check-page.py 标题 · 描述 · H1 · canonical · GEO 结构信号
check-schema.py 所有 Schema.org 类型的 JSON-LD 验证
check-pagespeed.py Google PageSpeed Insights v5(移动端 + 桌面端)
check-geo.py 6 维 0–30 可引用性评分
fetch-page.py HTML 抓取 + 重定向链 + Googlebot 对比 + SSRF 防护

设计原则:脚本做客观测量(不幻觉),LLM 只做语义判断。


工作流

SEO 审计      /seo-audit <url>  →  运行脚本  →  证据/影响/修复报告

GEO 审计      /geo-audit <url>  →  可引用性评分  →  content-engineer
              →  schema-architect(FAQPage/HowTo)  →  code-reviewer

问题缺口      question-miner 挖 60–100 个问题  →  评分  →  内容 + FAQPage

完整冲刺      seo + geo  →  P0/P1/P2  →  内容 + Schema  →  质量审查

环境要求

  • Claude Codeclaude CLI)
  • Python 3.9+
  • 无外部依赖,仅使用标准库
  • 可选:Google PageSpeed API Key(提升速率限制)

已知限制

WAF 保护的站点(Cloudflare Managed Challenge 等)

部署了严格 WAF 规则的企业站点会拦截基于 urllib 的脚本客户端。check-site.py 遇到 WAF challenge 时会:

  • 在 JSON 输出中返回 "waf_blocked": true
  • robotssitemap 结果标记为不可靠,并附上说明
  • 不会robots.txt 可能实际存在的情况下,静默地报告"未找到"

如需审计 WAF 保护的站点,请在浏览器中手动验证 robots.txtsitemap.xml,或使用经过白名单认证的爬虫 UA。check-geo.py 同样受此影响——若页面本身被 challenge 拦截,内容层面的评分将无法获取。

macOS VPN / 分流路由(198.18.0.0/15)

在 macOS 上,部分 VPN 和系统代理会将所有 DNS 解析路由到本地中继,把外网域名映射到 198.18.x.x(RFC 2544 基准测试地址段)。Python 的 ipaddress 模块将该地址段识别为私有地址,导致 SSRF 防护误杀合法的公网域名。此问题已在当前版本修复——防护逻辑现在改为显式枚举 RFC 1918 地址块,不再依赖 is_private


贡献 · Roadmap · Star 支持

  • CONTRIBUTING.md —— 怎么报 bug、怎么补 AI 爬虫、怎么调 Agent 提示词、怎么提 PR。每一个在真实站点上跑过 check-geo.py 的人,都有值得分享的数据。
  • ROADMAP.md —— 已完成 / 进行中 / 计划中 / 探索中,以及明确不做的事。想推哪条,就给对应的 Issue 点赞。
  • 觉得有用就 Star 一下 —— 这是对"开放 GEO 工具链值得维护"最直接的信号。

欢迎提 Issue 和 PR,一起把 GEO 玩出新高度。


开源协议 — 禁商用

采用 PolyForm Noncommercial License 1.0.0。个人使用、内部使用、学习、研究完全免费。不允许任何形式的商业用途——包括把本项目打包成付费 SaaS、作为付费服务转售等。 详见 LICENSE