geo-technical
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGEO Technical SEO Audit
GEO技术SEO审计
Purpose
审计目的
Technical SEO forms the foundation of both traditional search visibility and AI search citation. A technically broken site cannot be crawled, indexed, or cited by any platform. This skill audits 8 categories of technical health with specific attention to GEO requirements — most critically, server-side rendering (AI crawlers do not execute JavaScript) and AI crawler access (many sites inadvertently block AI crawlers in robots.txt).
技术SEO是传统搜索曝光和AI搜索引用的基础。存在技术问题的网站无法被任何平台抓取、索引或引用。本技能会审计8类技术健康指标,同时重点关注GEO场景的特定要求——其中最关键的是服务器端渲染(SSR)(AI爬虫不执行JavaScript)和AI爬虫访问权限(许多网站会在robots.txt中无意阻止AI爬虫)。
How to Use This Skill
如何使用本技能
- Collect the target URL (homepage + 2-3 key inner pages)
- Fetch each page using curl/WebFetch to get raw HTML and HTTP headers
- Run through each of the 8 audit categories below
- Score each category using the rubric
- Generate GEO-TECHNICAL-AUDIT.md with results
- 收集目标URL(首页+2-3个核心内页)
- 使用curl/WebFetch获取每个页面的原始HTML和HTTP头信息
- 按照以下8个审计类别逐一检查
- 根据评分标准为每个类别打分
- 生成包含审计结果的GEO-TECHNICAL-AUDIT.md文件
Category 1: Crawlability (15 points)
类别1:可抓取性(15分)
1.1 robots.txt Validity
1.1 robots.txt有效性
- Fetch
https://[domain]/robots.txt - Check for syntactic validity: proper ,
User-agent,AllowdirectivesDisallow - Check for common errors: missing User-agent, wildcards blocking important paths, Disallow: / blocking entire site
- Verify XML sitemap is referenced:
Sitemap: https://[domain]/sitemap.xml
- 获取文件
https://[domain]/robots.txt - 检查语法有效性:是否包含正确的、
User-agent、Allow指令Disallow - 排查常见错误:缺少User-agent、通配符阻止重要路径、Disallow: / 阻止整个站点
- 验证是否引用了XML站点地图:
Sitemap: https://[domain]/sitemap.xml
1.2 AI Crawler Access (CRITICAL for GEO)
1.2 AI爬虫访问权限(GEO场景关键)
Check robots.txt for directives targeting these AI crawlers:
| Crawler | User-Agent | Platform |
|---|---|---|
| GPTBot | GPTBot | ChatGPT / OpenAI |
| Google-Extended | Google-Extended | Gemini / Google AI training |
| Googlebot | Googlebot | Google Search + AI Overviews |
| Bingbot | bingbot | Bing Copilot + ChatGPT (via Bing) |
| PerplexityBot | PerplexityBot | Perplexity AI |
| ClaudeBot | ClaudeBot | Anthropic Claude |
| Amazonbot | Amazonbot | Alexa / Amazon AI |
| CCBot | CCBot | Common Crawl (used by many AI models) |
| FacebookBot | FacebookExternalHit | Meta AI |
| Bytespider | Bytespider | TikTok / ByteDance AI |
| Applebot-Extended | Applebot-Extended | Apple Intelligence |
Scoring for AI crawler access:
- All major AI crawlers allowed: 5 points
- Some blocked but Googlebot + Bingbot allowed: 3 points
- GPTBot or PerplexityBot blocked: 1 point (significant GEO impact)
- Googlebot blocked: 0 points (fatal)
Important nuance: Blocking Google-Extended does NOT block Googlebot. Google-Extended only controls AI training data usage, not search indexing. However, blocking Google-Extended may reduce presence in AI Overviews. Recommend allowing Google-Extended unless there is a specific data licensing concern.
检查robots.txt中针对以下AI爬虫的指令:
| 爬虫名称 | User-Agent标识 | 所属平台 |
|---|---|---|
| GPTBot | GPTBot | ChatGPT / OpenAI |
| Google-Extended | Google-Extended | Gemini / Google AI训练 |
| Googlebot | Googlebot | Google搜索 + AI概览 |
| Bingbot | bingbot | Bing Copilot + ChatGPT(通过Bing) |
| PerplexityBot | PerplexityBot | Perplexity AI |
| ClaudeBot | ClaudeBot | Anthropic Claude |
| Amazonbot | Amazonbot | Alexa / Amazon AI |
| CCBot | CCBot | Common Crawl(被众多AI模型使用) |
| FacebookBot | FacebookExternalHit | Meta AI |
| Bytespider | Bytespider | TikTok / 字节跳动AI |
| Applebot-Extended | Applebot-Extended | Apple Intelligence |
AI爬虫访问权限评分标准:
- 所有主流AI爬虫均被允许:5分
- 部分被阻止但Googlebot + Bingbot可访问:3分
- GPTBot或PerplexityBot被阻止:1分(对GEO场景影响显著)
- Googlebot被阻止:0分(致命问题)
重要说明:阻止Google-Extended不会阻止Googlebot。Google-Extended仅控制AI训练数据的使用,不影响搜索索引。不过,阻止Google-Extended可能会降低在AI概览中的曝光率。除非有特定的数据授权顾虑,否则建议允许Google-Extended访问。
1.3 XML Sitemaps
1.3 XML站点地图
- Fetch sitemap (check robots.txt for location, or try ,
/sitemap.xml)/sitemap_index.xml - Validate XML syntax
- Check for dates (should be present and accurate)
<lastmod> - Count URLs — compare to expected number of indexable pages
- Check for sitemap index if large site (50,000+ URLs per sitemap max)
- Verify all sitemap URLs return 200 status codes (sample check)
- 获取站点地图(可通过robots.txt查找位置,或尝试、
/sitemap.xml)/sitemap_index.xml - 验证XML语法
- 检查是否包含日期(应存在且准确)
<lastmod> - 统计URL数量——与预期可索引页面数量对比
- 若为大型站点(每个站点地图最多50000个URL),检查是否使用站点地图索引
- 验证所有站点地图URL返回200状态码(抽样检查)
1.4 Crawl Depth
1.4 抓取深度
- Homepage = depth 0. Check that all important pages are reachable within 3 clicks (depth 3)
- Pages at depth 4+ receive significantly less crawl budget and are less likely to be cited by AI
- Check internal linking: are key content pages linked from the homepage or main navigation?
- 首页=深度0。确保所有重要页面可在3次点击内(深度3)到达
- 深度4及以上的页面会获得更少的抓取预算,被AI引用的可能性更低
- 检查内部链接:核心内容页面是否从首页或主导航链接?
1.5 Noindex Management
1.5 Noindex管理
- Check for on pages that SHOULD be indexed
<meta name="robots" content="noindex"> - Check for HTTP headers
X-Robots-Tag: noindex - Common mistakes: noindex on paginated pages, category pages, or key landing pages
Category Scoring:
| Check | Points |
|---|---|
| robots.txt valid and complete | 3 |
| AI crawlers allowed | 5 |
| XML sitemap present and valid | 3 |
| Crawl depth within 3 clicks | 2 |
| No erroneous noindex directives | 2 |
- 检查应被索引的页面是否包含标签
<meta name="robots" content="noindex"> - 检查HTTP头中的指令
X-Robots-Tag: noindex - 常见错误:分页页面、分类页面或核心落地页被设置为noindex
类别评分:
| 检查项 | 分值 |
|---|---|
| robots.txt有效且完整 | 3 |
| AI爬虫被允许访问 | 5 |
| XML站点地图存在且有效 | 3 |
| 抓取深度控制在3次点击内 | 2 |
| 无错误的noindex指令 | 2 |
Category 2: Indexability (12 points)
类别2:可索引性(12分)
2.1 Canonical Tags
2.1 规范标签(Canonical Tags)
- Every indexable page must have a tag
<link rel="canonical" href="..."> - Canonical must point to itself (self-referencing) for the authoritative version
- Check for conflicting canonicals (canonical in HTML vs. HTTP header)
- Check for canonical chains (A canonicals to B, B canonicals to C — should be A to C)
- 每个可索引页面必须包含标签
<link rel="canonical" href="..."> - 规范标签应指向页面自身(自引用),以确定权威版本
- 检查是否存在冲突的规范标签(HTML中的标签与HTTP头中的标签不一致)
- 检查是否存在规范标签链(A指向B,B指向C——应直接设置为A指向C)
2.2 Duplicate Content
2.2 重复内容
- Check for www vs. non-www (both should resolve, one should redirect)
- Check for HTTP vs. HTTPS (HTTP should redirect to HTTPS)
- Check for trailing slash consistency (pick one pattern and redirect the other)
- Check for parameter-based duplicates (creating duplicate pages)
?sort=price
- 检查www与非www域名(两者应均可访问,其中一个需重定向到另一个)
- 检查HTTP与HTTPS(HTTP应重定向到HTTPS)
- 检查斜杠一致性(选择一种格式,将另一种重定向)
- 检查基于参数的重复内容(如生成重复页面)
?sort=price
2.3 Pagination
2.3 分页处理
- If paginated content exists, check for /
rel="next"(note: Google ignores these as of 2019, but Bing still uses them)rel="prev" - Preferred: use on paginated pages pointing to a view-all page or the first page
rel="canonical" - Ensure paginated pages are not noindexed if they contain unique content
- 若存在分页内容,检查是否使用/
rel="next"标签(注意:Google自2019年起不再使用这些标签,但Bing仍在使用)rel="prev" - 推荐方案:在分页页面上使用标签指向"查看全部"页面或第一页
rel="canonical" - 若分页页面包含独特内容,确保未被设置为noindex
2.4 Hreflang (international sites)
2.4 Hreflang标签(国际站点)
- Check for tags
<link rel="alternate" hreflang="xx"> - Validate: reciprocal hreflang (if page A points to page B, B must point back to A)
- Validate: x-default fallback exists
- Check for language/region code validity (ISO 639-1 / ISO 3166-1)
- 检查是否包含标签
<link rel="alternate" hreflang="xx"> - 验证:hreflang是否双向关联(若页面A指向页面B,页面B必须指向页面A)
- 验证:是否存在x-default fallback选项
- 检查语言/地区代码是否有效(符合ISO 639-1 / ISO 3166-1标准)
2.5 Index Bloat
2.5 索引膨胀
- Estimate number of indexed pages (check sitemap count, use estimate)
site:domain.com - Compare indexed pages to actual valuable content pages
- Flag if indexed pages significantly exceed content pages (index bloat from thin/duplicate/parameter pages)
Category Scoring:
| Check | Points |
|---|---|
| Canonical tags correct on all pages | 3 |
| No duplicate content issues | 3 |
| Pagination handled correctly | 2 |
| Hreflang correct (if applicable) | 2 |
| No index bloat | 2 |
- 估算已索引页面数量(检查站点地图数量,或使用估算)
site:domain.com - 将已索引页面数量与实际有价值的内容页面数量对比
- 若已索引页面数量显著超过内容页面数量,标记为索引膨胀(由低质量/重复/参数页面导致)
类别评分:
| 检查项 | 分值 |
|---|---|
| 所有页面的规范标签设置正确 | 3 |
| 无重复内容问题 | 3 |
| 分页处理正确 | 2 |
| Hreflang设置正确(若适用) | 2 |
| 无索引膨胀问题 | 2 |
Category 3: Security (10 points)
类别3:安全性(10分)
3.1 HTTPS Enforcement
3.1 HTTPS强制实施
- Site must load over HTTPS
- HTTP must redirect to HTTPS (301 redirect)
- No mixed content warnings (HTTP resources on HTTPS pages)
- SSL/TLS certificate must be valid and not expired
- 站点必须通过HTTPS加载
- HTTP必须重定向到HTTPS(301永久重定向)
- 无混合内容警告(HTTPS页面中加载HTTP资源)
- SSL/TLS证书必须有效且未过期
3.2 Security Headers
3.2 安全头信息
Check HTTP response headers for:
| Header | Required Value | Purpose |
|---|---|---|
| | Forces HTTPS |
| Appropriate policy | Prevents XSS |
| | Prevents MIME sniffing |
| | Prevents clickjacking |
| | Controls referrer data |
| Appropriate restrictions | Controls browser features |
Category Scoring:
| Check | Points |
|---|---|
| HTTPS enforced with valid cert | 4 |
| HSTS header present | 2 |
| X-Content-Type-Options | 1 |
| X-Frame-Options | 1 |
| Referrer-Policy | 1 |
| Content-Security-Policy | 1 |
检查HTTP响应头是否包含以下内容:
| 头信息 | 推荐值 | 作用 |
|---|---|---|
| | 强制使用HTTPS |
| 合适的策略 | 防止XSS攻击 |
| | 阻止MIME类型嗅探 |
| | 防止点击劫持 |
| | 控制引用数据 |
| 合适的限制策略 | 控制浏览器功能权限 |
类别评分:
| 检查项 | 分值 |
|---|---|
| 强制实施HTTPS且证书有效 | 4 |
| 存在HSTS头信息 | 2 |
| 存在X-Content-Type-Options头 | 1 |
| 存在X-Frame-Options头 | 1 |
| 存在Referrer-Policy头 | 1 |
| 存在Content-Security-Policy头 | 1 |
Category 4: URL Structure (8 points)
类别4:URL结构(8分)
4.1 Clean URLs
4.1 简洁可读的URL
- URLs should be human-readable: not
/blog/seo-guide/blog?id=12345 - No session IDs in URLs
- Lowercase only (no mixed case)
- Hyphens for word separation (not underscores)
- No special characters or encoded spaces
- URL应易于人类阅读:如而非
/blog/seo-guide/blog?id=12345 - URL中不应包含会话ID
- 仅使用小写字母(避免大小写混合)
- 使用连字符分隔单词(而非下划线)
- 无特殊字符或编码空格
4.2 Logical Hierarchy
4.2 逻辑层级
- URL path should reflect site architecture:
/category/subcategory/page - Flat where appropriate — avoid unnecessarily deep nesting
- Consistent pattern across the site
- URL路径应反映站点架构:如
/category/subcategory/page - 必要时采用扁平化结构——避免不必要的深层嵌套
- 全站保持一致的URL模式
4.3 Redirect Chains
4.3 重定向链
- Check for redirect chains (A redirects to B redirects to C)
- Maximum 1 hop recommended (A redirects to C directly)
- Check for redirect loops
- All redirects should be 301 (permanent), not 302 (temporary), unless intentionally temporary
- 检查是否存在重定向链(A重定向到B,B重定向到C)
- 建议最多1次跳转(A直接重定向到C)
- 检查是否存在重定向循环
- 除非是临时需求,否则所有重定向均应使用301(永久)重定向,而非302(临时)重定向
4.4 Parameter Handling
4.4 参数处理
- URL parameters should not create duplicate indexable pages
- Use canonical tags or Disallow for parameter variations
robots.txt - Configure parameter handling in Google Search Console and Bing Webmaster Tools
Category Scoring:
| Check | Points |
|---|---|
| Clean, readable URLs | 2 |
| Logical hierarchy | 2 |
| No redirect chains (max 1 hop) | 2 |
| Parameter handling configured | 2 |
- URL参数不应生成可索引的重复页面
- 使用规范标签或的Disallow指令处理参数变体
robots.txt - 在Google Search Console和Bing Webmaster Tools中配置参数处理规则
类别评分:
| 检查项 | 分值 |
|---|---|
| URL简洁可读 | 2 |
| URL逻辑层级清晰 | 2 |
| 无重定向链(最多1次跳转) | 2 |
| 参数处理配置完善 | 2 |
Category 5: Mobile Optimization (10 points)
类别5:移动端优化(10分)
Critical Context
关键背景
As of July 2024, Google crawls ALL sites exclusively with mobile Googlebot. There is no desktop crawling. If your site does not work on mobile, it does not work for Google. Period.
截至2024年7月,Google仅使用移动端Googlebot抓取所有站点,不再进行桌面端抓取。如果你的站点在移动端无法正常工作,那么对Google来说它就是不可用的,这是硬性要求。
5.1 Responsive Design
5.1 响应式设计
- Check for
<meta name="viewport" content="width=device-width, initial-scale=1"> - Content must not require horizontal scrolling on mobile
- No fixed-width layouts wider than viewport
- 检查是否包含标签
<meta name="viewport" content="width=device-width, initial-scale=1"> - 移动端内容无需横向滚动
- 无宽于视口的固定宽度布局
5.2 Tap Targets
5.2 点击目标
- Interactive elements (buttons, links) must be at least 48x48 CSS pixels
- Minimum 8px spacing between tap targets
- Check that navigation is usable on mobile
- 交互元素(按钮、链接)的尺寸至少为48x48 CSS像素
- 点击目标之间的最小间距为8px
- 检查移动端导航是否易用
5.3 Font Sizes
5.3 字体大小
- Base font size should be at least 16px
- No text requiring zoom to read
- Sufficient contrast ratio (WCAG AA: 4.5:1 for normal text, 3:1 for large text)
- 基础字体大小至少为16px
- 无需缩放即可阅读文本
- 足够的对比度(WCAG AA标准:普通文本4.5:1,大文本3:1)
5.4 Mobile Content Parity
5.4 移动端内容一致性
- All content visible on desktop must also be visible on mobile
- No hidden content behind "read more" toggles that Googlebot cannot expand (though Google has improved at expanding these as of 2025)
- Images and media must load on mobile
Category Scoring:
| Check | Points |
|---|---|
| Viewport meta tag correct | 3 |
| Responsive layout (no horizontal scroll) | 3 |
| Tap targets appropriately sized | 2 |
| Font sizes legible | 2 |
- 桌面端可见的所有内容在移动端也必须可见
- 无隐藏在"查看更多"切换按钮后的内容(Googlebot无法展开此类内容,不过截至2025年Google在这方面的能力已有所提升)
- 图片和媒体资源可在移动端正常加载
类别评分:
| 检查项 | 分值 |
|---|---|
| Viewport元标签设置正确 | 3 |
| 响应式布局(无横向滚动) | 3 |
| 点击目标尺寸合适 | 2 |
| 字体大小清晰可读 | 2 |
Category 6: Core Web Vitals (15 points)
类别6:核心Web指标(15分)
2026 Metrics and Thresholds
2026年指标及阈值
Core Web Vitals use the 75th percentile of real user data (field data) as the benchmark. Lab data is useful for debugging but field data determines the ranking signal.
| Metric | Good | Needs Improvement | Poor | Notes |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5s | 2.5s - 4.0s | > 4.0s | Measures loading — time until largest visible element renders |
| INP (Interaction to Next Paint) | < 200ms | 200ms - 500ms | > 500ms | Replaced FID in March 2024. Measures ALL interactions, not just first |
| CLS (Cumulative Layout Shift) | < 0.1 | 0.1 - 0.25 | > 0.25 | Measures visual stability — unexpected layout movements |
核心Web指标以真实用户数据(现场数据)的第75百分位数为基准。实验室数据可用于调试,但现场数据决定排名权重。
| 指标 | 优秀 | 需要改进 | 较差 | 说明 |
|---|---|---|---|---|
| LCP(最大内容绘制) | < 2.5秒 | 2.5秒 - 4.0秒 | > 4.0秒 | 衡量加载速度——最大可见元素渲染完成的时间 |
| INP(交互到下一次绘制) | < 200毫秒 | 200毫秒 - 500毫秒 | > 500毫秒 | 2024年3月替代FID。衡量所有交互,而非首次交互 |
| CLS(累积布局偏移) | < 0.1 | 0.1 - 0.25 | > 0.25 | 衡量视觉稳定性——意外的布局移动 |
How to Assess Without CrUX Data
无CrUX数据时的评估方法
When real user data is unavailable, estimate from page characteristics:
- LCP: Check largest above-fold element. Is it an image (check size/format)? Is it text (check web font loading)? Server response time (TTFB)?
- INP: Check for heavy JavaScript on page. Long tasks (>50ms) block interactivity. Check for third-party scripts.
- CLS: Check for images without explicit width/height. Check for dynamically inserted content above the fold. Check for web fonts causing layout shift (FOUT/FOIT).
当无法获取真实用户数据时,可通过页面特征估算:
- LCP:检查首屏最大元素。是图片(检查大小/格式)?还是文本(检查网页字体加载)?服务器响应时间(TTFB)?
- INP:检查页面是否包含大量JavaScript。长任务(>50毫秒)会阻塞交互性。检查第三方脚本。
- CLS:检查图片是否缺少明确的宽/高属性。检查首屏是否有动态插入的内容。检查网页字体是否导致布局偏移(FOUT/FOIT)。
Common LCP Fixes
常见LCP优化方案
- Optimize hero images: WebP/AVIF format, correct sizing, preload with
<link rel="preload"> - Reduce server response time (TTFB < 800ms)
- Eliminate render-blocking CSS/JS
- Preconnect to critical third-party origins
- 优化首屏图片:使用WebP/AVIF格式,设置正确尺寸,通过预加载
<link rel="preload"> - 缩短服务器响应时间(TTFB < 800毫秒)
- 消除阻塞渲染的CSS/JS
- 预连接到关键第三方源
Common INP Fixes
常见INP优化方案
- Break up long tasks (>50ms) into smaller chunks using or
requestIdleCallbackscheduler.yield() - Reduce third-party JavaScript
- Use for off-screen content
content-visibility: auto - Debounce/throttle event handlers
- 使用或
requestIdleCallback将长任务(>50毫秒)拆分为更小的任务块scheduler.yield() - 减少第三方JavaScript
- 对屏幕外内容使用
content-visibility: auto - 对事件处理函数进行防抖/节流
Common CLS Fixes
常见CLS优化方案
- Always include and
widthattributes on images and videosheight - Reserve space for ads and embeds with CSS or explicit dimensions
aspect-ratio - Use with size-adjusted fallback fonts
font-display: swap - Avoid inserting content above existing content after page load
Category Scoring:
| Check | Points |
|---|---|
| LCP < 2.5s | 5 |
| INP < 200ms | 5 |
| CLS < 0.1 | 5 |
- 始终为图片和视频添加和
width属性height - 使用CSS 或明确尺寸为广告和嵌入内容预留空间
aspect-ratio - 配合尺寸调整后的备用字体使用
font-display: swap - 避免页面加载后在现有内容上方插入新内容
类别评分:
| 检查项 | 分值 |
|---|---|
| LCP < 2.5秒 | 5 |
| INP < 200毫秒 | 5 |
| CLS < 0.1 | 5 |
Category 7: Server-Side Rendering (15 points) — CRITICAL FOR GEO
类别7:服务器端渲染(SSR)(15分)——GEO场景关键
Why SSR Is Mandatory for AI Visibility
为何SSR对AI曝光至关重要
AI crawlers (GPTBot, PerplexityBot, ClaudeBot, etc.) do NOT execute JavaScript. They fetch the raw HTML and parse it. If your content is rendered client-side by React, Vue, Angular, or any other JavaScript framework, AI crawlers see an empty page.
Even Googlebot, which does execute JavaScript, deprioritizes JS-rendered content due to the additional crawl budget required. Google processes JS rendering in a separate "rendering queue" that can delay indexing by days or weeks.
AI爬虫(GPTBot、PerplexityBot、ClaudeBot等)不执行JavaScript。它们仅获取原始HTML并进行解析。如果你的内容是通过React、Vue、Angular或其他JavaScript框架在客户端渲染的,AI爬虫看到的将是空白页面。
即使是会执行JavaScript的Googlebot,也会优先处理非JS渲染的内容,因为JS渲染需要额外的抓取预算。Google会在单独的"渲染队列"中处理JS渲染,这可能导致索引延迟数天甚至数周。
Detection Method
检测方法
- Fetch the page with curl (no JavaScript execution):
curl -s [URL] - Compare the raw HTML to the rendered DOM (via browser)
- If key content (headings, paragraphs, product info, article text) is MISSING from the curl output, the site relies on client-side rendering
- 使用curl获取页面(不执行JavaScript):
curl -s [URL] - 将原始HTML与浏览器渲染后的DOM进行对比
- 如果关键内容(标题、段落、产品信息、文章文本)在curl输出中缺失,则站点依赖客户端渲染
What to Check
检查要点
- Main content text: Is the article body / product description / page content in the raw HTML?
- Headings: Are H1, H2, H3 tags present in raw HTML?
- Navigation: Is the main navigation server-rendered?
- Structured data: Is JSON-LD in the raw HTML or injected by JavaScript?
- Meta tags: Are title, description, canonical, OG tags in the raw HTML?
- Internal links: Are navigation and content links in the raw HTML? (Critical for crawlability)
- 主要内容文本:文章正文/产品描述/页面内容是否存在于原始HTML中?
- 标题标签:H1、H2、H3标签是否存在于原始HTML中?
- 导航:主导航是否为服务器渲染?
- 结构化数据:JSON-LD是否存在于原始HTML中,还是由JavaScript注入?
- 元标签:标题、描述、规范标签、OG标签是否存在于原始HTML中?
- 内部链接:导航和内容链接是否存在于原始HTML中?(对可抓取性至关重要)
SSR Solutions to Recommend
推荐的SSR解决方案
| Framework | SSR Solution |
|---|---|
| React | Next.js (SSR/SSG), Remix, Gatsby (SSG) |
| Vue | Nuxt.js (SSR/SSG) |
| Angular | Angular Universal |
| Svelte | SvelteKit |
| Generic | Prerender.io (prerendering service), Rendertron |
| 框架 | SSR解决方案 |
|---|---|
| React | Next.js(SSR/SSG)、Remix、Gatsby(SSG) |
| Vue | Nuxt.js(SSR/SSG) |
| Angular | Angular Universal |
| Svelte | SvelteKit |
| 通用方案 | Prerender.io(预渲染服务)、Rendertron |
Scoring Detail
评分细节
- All key content server-rendered: 15 points
- Main content server-rendered but some elements JS-only: 10 points
- Critical content requires JS (product info, article text): 5 points
- Entire page is client-rendered (empty body in raw HTML): 0 points
Category Scoring:
| Check | Points |
|---|---|
| Main content in raw HTML | 8 |
| Meta tags + structured data in raw HTML | 4 |
| Internal links in raw HTML | 3 |
- 所有关键内容均为服务器渲染:15分
- 主要内容为服务器渲染,但部分元素仅支持JS渲染:10分
- 关键内容需要JS渲染(如产品信息、文章文本):5分
- 整个页面为客户端渲染(原始HTML中正文为空):0分
类别评分:
| 检查项 | 分值 |
|---|---|
| 主要内容存在于原始HTML中 | 8 |
| 元标签+结构化数据存在于原始HTML中 | 4 |
| 内部链接存在于原始HTML中 | 3 |
Category 8: Page Speed & Server Performance (15 points)
类别8:页面速度与服务器性能(15分)
8.1 Time to First Byte (TTFB)
8.1 首字节时间(TTFB)
- Target: < 800ms (ideally < 200ms)
- Measure with curl:
curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s\n' [URL] - If TTFB > 800ms: check server location, caching, database queries, CDN usage
- 目标:< 800毫秒(理想状态<200毫秒)
- 使用curl测量:
curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s\n' [URL] - 若TTFB > 800毫秒:检查服务器位置、缓存、数据库查询、CDN使用情况
8.2 Resource Optimization
8.2 资源优化
- Total page weight target: < 2MB (critical pages < 1MB)
- Check for uncompressed resources (gzip/brotli compression should be enabled)
- Check for unminified CSS and JavaScript
- Check for unused CSS/JS (can represent 50%+ of downloaded bytes on many sites)
- 页面总大小目标:< 2MB(核心页面<1MB)
- 检查是否存在未压缩的资源(应启用gzip/brotli压缩)
- 检查是否存在未压缩的CSS和JavaScript
- 检查是否存在未使用的CSS/JS(在许多站点中,这部分可能占下载字节的50%以上)
8.3 Image Optimization
8.3 图片优化
- Check image formats: WebP or AVIF preferred over JPEG/PNG
- Check for oversized images (images larger than display size)
- Check for lazy loading: images below fold should have
loading="lazy" - Check for explicit dimensions (width/height attributes prevent CLS)
- Above-fold images should NOT be lazy loaded (harms LCP)
- 检查图片格式:优先使用WebP或AVIF,而非JPEG/PNG
- 检查是否存在过大的图片(图片尺寸大于显示尺寸)
- 检查是否启用懒加载:首屏以下的图片应添加属性
loading="lazy" - 检查是否包含明确的宽/高属性(防止CLS)
- 首屏图片不应启用懒加载(会影响LCP)
8.4 Code Splitting and Lazy Loading
8.4 代码分割与懒加载
- JavaScript should be code-split so each page only loads what it needs
- Check for large JavaScript bundles (> 200KB compressed is a warning, > 500KB is critical)
- Third-party scripts should load asynchronously (or
async)defer - Check for render-blocking resources in
<head>
- JavaScript应进行代码分割,确保每个页面仅加载所需的代码
- 检查是否存在过大的JavaScript包(压缩后>200KB为警告,>500KB为严重问题)
- 第三方脚本应异步加载(使用或
async属性)defer - 检查中是否存在阻塞渲染的资源
<head>
8.5 Caching
8.5 缓存设置
- Check headers on static resources (images, CSS, JS)
Cache-Control - Static assets should have long cache times: (1 year) with content-hashed filenames
max-age=31536000 - HTML pages should have shorter cache or with validation (
no-cacheorETag)Last-Modified
- 检查静态资源(图片、CSS、JS)的头信息
Cache-Control - 静态资源应设置长缓存时间:(1年),并使用带内容哈希的文件名
max-age=31536000 - HTML页面应设置较短的缓存时间或,并配合验证机制(
no-cache或ETag)Last-Modified
8.6 CDN Usage
8.6 CDN使用
- Check if static resources are served from a CDN (different domain or CDN-specific headers)
- For global audience, CDN is critical for consistent performance
- Check for CDN-specific headers: (Cloudflare),
CF-Ray(AWS CloudFront),X-Cache(Fastly)X-Served-By
Category Scoring:
| Check | Points |
|---|---|
| TTFB < 800ms | 3 |
| Page weight < 2MB | 2 |
| Images optimized (format, size, lazy) | 3 |
| JS bundles reasonable (< 200KB compressed) | 2 |
| Compression enabled (gzip/brotli) | 2 |
| Cache headers on static resources | 2 |
| CDN in use | 1 |
- 检查静态资源是否通过CDN提供服务(不同域名或CDN专属头信息)
- 面向全球受众的站点,CDN对保持一致性能至关重要
- 检查CDN专属头信息:(Cloudflare)、
CF-Ray(AWS CloudFront)、X-Cache(Fastly)X-Served-By
类别评分:
| 检查项 | 分值 |
|---|---|
| TTFB < 800毫秒 | 3 |
| 页面大小 < 2MB | 2 |
| 图片优化到位(格式、尺寸、懒加载) | 3 |
| JS包大小合理(压缩后<200KB) | 2 |
| 启用压缩(gzip/brotli) | 2 |
| 静态资源缓存头设置正确 | 2 |
| 使用CDN | 1 |
IndexNow Protocol
IndexNow协议
What It Is
什么是IndexNow
IndexNow is an open protocol that allows websites to notify search engines instantly when content is created, updated, or deleted. Supported by Bing, Yandex, Seznam, and Naver. Google does NOT support IndexNow but monitors the protocol.
IndexNow是一种开放协议,允许网站在内容创建、更新或删除时立即通知搜索引擎。Bing、Yandex、Seznam和Naver均支持该协议。Google目前不支持IndexNow,但会对其进行监控。
Why It Matters for GEO
为何对GEO场景重要
ChatGPT uses Bing's index. Bing Copilot uses Bing's index. Faster Bing indexing means faster AI visibility on two major platforms.
ChatGPT使用Bing的索引,Bing Copilot也使用Bing的索引。更快的Bing索引意味着在两大平台上的AI曝光速度更快。
Implementation Check
实施检查
- Check for IndexNow key file: or similar
https://[domain]/.well-known/indexnow-key.txt - Check if CMS has IndexNow plugin (WordPress: IndexNow plugin; many modern CMS platforms support it natively)
- If not implemented, recommend adding it with instructions
- 检查是否存在IndexNow密钥文件:或类似路径
https://[domain]/.well-known/indexnow-key.txt - 检查CMS是否有IndexNow插件(WordPress:IndexNow插件;许多现代CMS平台原生支持)
- 若未实施,建议添加并提供相关指导
Overall Scoring
整体评分
| Category | Max Points | Weight |
|---|---|---|
| Crawlability | 15 | Core foundation |
| Indexability | 12 | Core foundation |
| Security | 10 | Trust signal |
| URL Structure | 8 | Crawl efficiency |
| Mobile Optimization | 10 | Google requirement |
| Core Web Vitals | 15 | Ranking signal |
| Server-Side Rendering | 15 | GEO critical |
| Page Speed & Server | 15 | Performance |
| Total | 100 |
| 类别 | 最高分 | 权重 |
|---|---|---|
| 可抓取性 | 15 | 核心基础 |
| 可索引性 | 12 | 核心基础 |
| 安全性 | 10 | 信任信号 |
| URL结构 | 8 | 抓取效率 |
| 移动端优化 | 10 | Google硬性要求 |
| 核心Web指标 | 15 | 排名信号 |
| 服务器端渲染 | 15 | GEO场景关键 |
| 页面速度与服务器性能 | 15 | 性能指标 |
| 总分 | 100 |
Score Interpretation
分数解读
- 90-100: Excellent — technically sound for both traditional SEO and GEO
- 70-89: Good — minor issues to address but fundamentally solid
- 50-69: Needs Work — significant technical debt impacting visibility
- 30-49: Poor — major issues blocking crawling, indexing, or AI visibility
- 0-29: Critical — fundamental technical failures requiring immediate attention
- 90-100分:优秀——技术层面完全适配传统SEO和GEO场景
- 70-89分:良好——存在小问题需修复,但整体基础扎实
- 50-69分:需要改进——存在显著技术债务,影响曝光
- 30-49分:较差——存在重大问题,阻碍抓取、索引或AI曝光
- 0-29分:严重——存在根本性技术故障,需立即修复
Output Format
输出格式
Generate GEO-TECHNICAL-AUDIT.md with:
markdown
undefined生成GEO-TECHNICAL-AUDIT.md文件,内容如下:
markdown
undefinedGEO Technical SEO Audit — [Domain]
GEO技术SEO审计 —— [域名]
Date: [Date]
日期: [审计日期]
Technical Score: XX/100
技术评分: XX/100
Score Breakdown
分数明细
| Category | Score | Status |
|---|---|---|
| Crawlability | XX/15 | Pass/Warn/Fail |
| Indexability | XX/12 | Pass/Warn/Fail |
| Security | XX/10 | Pass/Warn/Fail |
| URL Structure | XX/8 | Pass/Warn/Fail |
| Mobile Optimization | XX/10 | Pass/Warn/Fail |
| Core Web Vitals | XX/15 | Pass/Warn/Fail |
| Server-Side Rendering | XX/15 | Pass/Warn/Fail |
| Page Speed & Server | XX/15 | Pass/Warn/Fail |
Status: Pass = 80%+ of category points, Warn = 50-79%, Fail = <50%
| 类别 | 得分 | 状态 |
|---|---|---|
| 可抓取性 | XX/15 | 通过/警告/失败 |
| 可索引性 | XX/12 | 通过/警告/失败 |
| 安全性 | XX/10 | 通过/警告/失败 |
| URL结构 | XX/8 | 通过/警告/失败 |
| 移动端优化 | XX/10 | 通过/警告/失败 |
| 核心Web指标 | XX/15 | 通过/警告/失败 |
| 服务器端渲染 | XX/15 | 通过/警告/失败 |
| 页面速度与服务器性能 | XX/15 | 通过/警告/失败 |
状态说明:通过=获得类别80%及以上分数,警告=获得50%-79%分数,失败=获得不足50%分数
AI Crawler Access
AI爬虫访问权限
| Crawler | User-Agent | Status | Recommendation |
|---|---|---|---|
| GPTBot | GPTBot | Allowed/Blocked | [Action] |
| Googlebot | Googlebot | Allowed/Blocked | [Action] |
| [Continue for all AI crawlers] |
| 爬虫名称 | User-Agent标识 | 状态 | 建议 |
|---|---|---|---|
| GPTBot | GPTBot | 允许/阻止 | [操作建议] |
| Googlebot | Googlebot | 允许/阻止 | [操作建议] |
| [继续列出所有AI爬虫] |
Critical Issues (fix immediately)
严重问题(立即修复)
[List with specific page URLs and what is wrong]
[列出具体页面URL及问题描述]
Warnings (fix this month)
警告(本月内修复)
[List with details]
[列出详细问题]
Recommendations (optimize this quarter)
优化建议(本季度内完成)
[List with details]
[列出详细建议]
Detailed Findings
详细审计结果
[Per-category breakdown with evidence]
undefined[按类别细分,附证据]
undefined