独立站上线前的 AI SEO 技术自查,不是多装一个插件,而是确认公开页面能被发现、抓取、索引和理解:
robots.txt不误挡,sitemap 只放规范 URL,状态码稳定,canonical 和noindex不打架,内链能把产品、FAQ、案例和 RFQ 路径串起来。
这篇只讲上线前验收。
不承诺“做完就会被 ChatGPT、Gemini、Perplexity 引用”,也不把 AI 搜索写成玄学。
更现实的目标是:减少上线时最常见的技术准入事故,让公开营销内容至少具备被搜索系统和 AI 搜索相关 crawler 读取的基础条件。
先把验收对象列出来
不要一上来扫全站。外贸独立站上线前,先抽一组“买家和搜索系统都应该能看到”的核心 URL。
https://www.example.com/
https://www.example.com/products/
https://www.example.com/products/industrial-valve/
https://www.example.com/faq/
https://www.example.com/case-studies/water-treatment-project/
https://www.example.com/about/
https://www.example.com/factory/
https://www.example.com/request-a-quote/
https://www.example.com/en/products/industrial-valve/
https://www.example.com/de/products/industrial-valve/
建议保存成一个文件:
cat > urls.txt <<'EOF'
https://www.example.com/
https://www.example.com/products/
https://www.example.com/products/industrial-valve/
https://www.example.com/faq/
https://www.example.com/case-studies/water-treatment-project/
https://www.example.com/about/
https://www.example.com/factory/
https://www.example.com/request-a-quote/
https://www.example.com/en/products/industrial-valve/
https://www.example.com/de/products/industrial-valve/
EOF
这组 URL 不求多,求代表性。首页、产品体系、案例、FAQ、供应商介绍、RFQ 说明页、多语言页面都要有。
| 页面类型 | 上线前要确认什么 |
|---|---|
| 首页 | 能说明公司是谁、卖什么、服务哪些市场 |
| 产品分类页 | 能进入产品体系,不是空列表或筛选页 |
| 产品详情页 | 有参数、用途、认证、MOQ、交期、下载资料入口 |
| FAQ 页 | 买家常见问题有可读答案 |
| 案例页 | 项目背景、产品应用、交付范围清楚 |
| About / Factory | 公司实体、工厂能力、资质信息可见 |
| RFQ 说明页 | 询盘流程公开,提交接口另行保护 |
| 多语言页 | URL、canonical、hreflang、正文语言一致 |
第一项:查线上 robots.txt
先看线上真实文件,不要只看 SEO 插件后台预览。
SITE="https://www.example.com"
curl -sSIL "$SITE/robots.txt"
curl -fsSL "$SITE/robots.txt" | sed -n '1,200p'
再筛重点行:
SITE="https://www.example.com"
curl -fsSL "$SITE/robots.txt" |
grep -Ein \
'user-agent|allow|disallow|sitemap|googlebot|bingbot|oai-searchbot|gptbot|chatgpt-user|perplexitybot|claudebot|claude-searchbot'
上线前重点看四类问题:
| 检查点 | 正常状态 | 风险信号 |
|---|---|---|
| 文件状态 | /robots.txt 返回 200 或可被正常读取 |
403、5xx、跳转到首页、返回空白 |
| 公开目录 | 产品、FAQ、案例、About 不被误挡 | Disallow: /products/、Disallow: /wp-content/uploads/ 过宽 |
| sitemap 声明 | 指向正确 sitemap 地址 | 指向测试域、旧域名、http 版本 |
| 平台爬虫规则 | 规则和业务目标一致 | 把搜索、训练、用户触发访问混成一类 |
robots.txt 主要控制抓取,不是保密手段。Google 文档也提醒过,被 robots 阻止的 URL 仍可能因为其他页面链接而出现在搜索结果中,只是搜索引擎无法抓取页面内容来理解它。
所以这类内容不能只靠 robots.txt:
/private-quotes/
/customer-drawings/
/contracts/
/wp-admin/
/account/
/upload/
这些路径需要登录、权限、服务器访问控制或 WAF 保护,而不是“写个 Disallow 就安全了”。
第二项:查 sitemap 是否只放规范公开 URL
sitemap 的价值不是“保证收录”,而是帮助搜索系统发现你希望它处理的规范 URL。上线前要查可访问、可解析、URL 是否干净。
SITEMAP="https://www.example.com/sitemap.xml"
curl -sSIL "$SITEMAP"
curl -fsSL "$SITEMAP" | sed -n '1,80p'
如果是 sitemap index,也要继续打开里面的子 sitemap:
SITEMAP="https://www.example.com/sitemap.xml"
curl -fsSL "$SITEMAP" |
grep -Eo 'https?://[^<]+\.xml' |
sed -n '1,50p'
可以用一个简单脚本抽前 100 个 loc:
SITEMAP="https://www.example.com/sitemap.xml"
SITEMAP="$SITEMAP" python3 - <<'PY'
import os
import urllib.request
import xml.etree.ElementTree as ET
data = urllib.request.urlopen(os.environ["SITEMAP"], timeout=20).read()
root = ET.fromstring(data)
def local_name(tag):
return tag.rsplit("}", 1)[-1]
locs = [
el.text.strip()
for el in root.iter()
if local_name(el.tag) == "loc" and el.text
]
print("loc_count", len(locs))
for url in locs[:100]:
print(url)
PY
重点排查:
| sitemap 里出现的 URL | 判断 |
|---|---|
| 正式产品页、分类页、案例页、FAQ 页 | 应该保留 |
| 测试域名、临时域名、 staging URL | 应该删除 |
thank-you、后台、购物车、账户页 |
通常不该放 |
| 参数筛选页、站内搜索页 | 谨慎,通常不放 |
noindex 页面 |
不该放进希望索引的 sitemap |
404、5xx、长跳转链 URL |
先修状态码 |
Google 的 sitemap 文档说得很克制:sitemap 是提示,不保证抓取或索引。外贸站不要把“已提交 sitemap”当成验收完成。
第三项:批量查状态码、跳转和内容类型
核心页面最终应该稳定返回真实内容。
不是所有非 200 都错,老 URL 合理 301 很正常;但公开产品页最终返回 403、404、429、5xx、挑战页或空 HTML,就要查。
URLS="urls.txt"
sed '/^[[:space:]]*$/d;/^[[:space:]]*#/d' "$URLS" |
while IFS= read -r url; do
curl -o /dev/null -sS -L \
-w "%{http_code}\t%{num_redirects}\t%{content_type}\t%{url_effective}\t$url\n" \
"$url"
done
输出可以这样看:
| 字段 | 含义 | 上线前判断 |
|---|---|---|
http_code |
最终状态码 | 公开核心页应为 200 |
num_redirects |
跳转次数 | 通常越短越好,避免多段链路 |
content_type |
内容类型 | HTML 页面应返回 text/html |
url_effective |
最终 URL | 应与 canonical 和站内链接一致 |
尤其要查这些情况:
| 风险信号 | 可能问题 |
|---|---|
| 产品页最终跳首页 | 软 404 或错误重定向 |
| 多语言页跳回默认语言 | 地区或语言规则误伤 |
返回 403 / 429 |
WAF、限速、安全插件拦截 |
返回 5xx |
源站或代理层不稳定 |
content_type 不是 HTML |
模板、CDN 或服务器配置错误 |
第四项:查 canonical、robots meta 和 X-Robots-Tag
外贸站上线前经常出现三种冲突:
- 公开产品页被误加
noindex。 - canonical 指向旧域名、测试域或跳转页。
- HTTP Header 里还有遗留的
X-Robots-Tag: noindex。
先查页面 HTML:
PAGE="https://www.example.com/products/industrial-valve/"
curl -fsSL "$PAGE" |
tr '>' '>\n' |
grep -Ein 'name=.robots.|rel=.canonical.|application/ld\+json'
再查响应头:
PAGE="https://www.example.com/products/industrial-valve/"
curl -sSIL -L "$PAGE" |
grep -Ei '^(HTTP/|location:|content-type:|x-robots-tag:)'
公开产品页通常不应该出现:
<meta name="robots" content="noindex,nofollow">
不希望进入搜索结果的页面,可以用 noindex,但要让 crawler 能访问到这个指令:
<meta name="robots" content="noindex,follow">
非 HTML 资源可以通过 HTTP Header 控制索引:
X-Robots-Tag: noindex
这里的边界要分清:noindex 是索引控制,不是权限保护。报价单、客户图纸、合同附件不能因为加了 noindex 就当成安全。
canonical 也不要写成强制命令。Google 文档里把 canonical 当成规范化信号之一,站内链接、sitemap、重定向和 rel=canonical 应该尽量一致。
第五项:查内链是不是 crawler 能读到
Google 对可抓取链接的要求很朴素:链接要能通过 HTML 里的 <a href> 被发现,锚文本要有上下文。外贸站常见问题是导航全靠 JS、产品卡片只绑定点击事件,或者 FAQ / 案例没有回链到产品。
抽样看页面里的链接:
PAGE="https://www.example.com/"
curl -fsSL "$PAGE" |
tr '<' '\n' |
grep -Ei '^a[[:space:]][^>]*href=' |
sed -n '1,120p'
上线前至少确认这几条路径通:
| 路径 | 为什么重要 |
|---|---|
| 首页 -> 产品分类 | crawler 能进入产品体系 |
| 产品分类 -> 产品详情 | 核心转化页可发现 |
| 产品详情 -> FAQ | 买家问题和产品语义能串起来 |
| 产品详情 -> 案例 | 产品和应用场景能互相解释 |
| 案例 -> 相关产品 | 案例不是孤岛 |
| About / Factory -> 资质或产品 | 公司能力和产品供应关系清楚 |
| RFQ 说明页 -> 产品页 | 询盘路径和产品路径互相支撑 |
不要为了“内链优化”乱堆链接。验收标准是:重要页面有清晰路径,不是每段文字都塞一个锚文本。
第六项:确认 crawler 拿到的是正文
状态码为 200 还不够。还要确认返回的 HTML 里有正文,而不是空壳、加载动画、挑战页或只有脚本。
PAGE="https://www.example.com/products/industrial-valve/"
curl -fsSL "$PAGE" |
sed -n '1,160p'
再筛几个买家会关心的词:
PAGE="https://www.example.com/products/industrial-valve/"
curl -fsSL "$PAGE" |
grep -Ein 'model|material|specification|application|certification|moq|lead time|warranty|datasheet|rfq'
如果产品参数、认证、应用场景、MOQ、交期只在图片里,正文完全没有文字版,搜索系统和 AI 摘要系统能拿到的语义就会变少。不是说图片没有价值,而是外贸 B2B 产品页不能只靠图片承载关键信息。
第七项:轻量检查结构化数据
这篇不展开 Schema 专项,只做上线前验收。
结构化数据应该和页面可见内容一致,不能用 JSON-LD 塞页面上没有的资质、评价、价格和库存。
PAGE="https://www.example.com/products/industrial-valve/"
curl -fsSL "$PAGE" |
tr '<' '\n' |
grep -Ein 'application/ld\+json|Product|Organization|BreadcrumbList|FAQPage'
上线前先看这三件事:
| 检查点 | 风险 |
|---|---|
| 是否存在 JSON-LD | 没有不等于错误,但要知道现状 |
| 类型是否匹配页面 | 产品页不要只输出 Article,FAQ 页不要乱塞 Product |
| 字段是否可见可核验 | 不要写页面没有展示的认证、评分、价格 |
如果当前站点还没有系统化 Schema,先别硬补一大套。先保证公开页面可访问、正文清楚、URL 规范,后续再单独做结构化数据。
第八项:把 AI crawler 边界写进验收表
外贸站做 AI SEO,容易把所有 bot 混成一类。上线前验收只需要做一件事:确认你对不同 crawler 的策略和业务目标一致。
| 平台/系统 | 上线前要避免的混淆 |
|---|---|
| OpenAI | OAI-SearchBot、GPTBot、ChatGPT-User 用途不同,不要写同一条规则后就认为覆盖所有场景 |
| Perplexity | PerplexityBot 和 Perplexity-User 要分开看 |
| Anthropic | ClaudeBot、Claude-SearchBot、Claude-User 要分开看 |
| Google Search / AI features | 先回到 Google Search 的抓取、索引和摘要控制体系 |
| Bing / Copilot | 先确认 Bing 能发现并索引公开页面 |
一条保守的上线验收口径是:
公开营销内容:
允许被主要搜索爬虫发现和抓取。
训练用途:
按公司内容资产策略单独决策,不和搜索引用混写。
用户触发访问:
按平台文档识别,不把它和批量抓取混为一谈。
敏感内容:
用权限控制,不靠 robots 或 noindex。
上线前总验收表
| 项目 | 通过标准 | 风险信号 |
|---|---|---|
| URL 样本 | 核心页面已列入 urls.txt |
只查首页 |
robots.txt |
线上可读,未误挡公开目录 | Disallow: /、测试域规则残留 |
| sitemap | 可访问、可解析、只放规范公开 URL | noindex、404、跳转、测试 URL 混入 |
| 状态码 | 核心页最终 200,旧 URL 合理 301 |
403、429、5xx、跳首页 |
| 内容类型 | HTML 页面返回 text/html |
返回 JSON、下载流、空页面 |
| canonical | 指向当前规范 URL | 指向旧域、测试域、跳转页 |
noindex |
只用于明确不希望索引的页面 | 产品页、分类页误加 |
X-Robots-Tag |
非 HTML 资源策略清楚 | 全站误加 noindex |
| 内链 | 首页、分类、产品、FAQ、案例、RFQ 有路径 | 重要页孤岛 |
| 正文可读 | 关键采购信息在 HTML 文本中可见 | 只在图片、PDF 或 JS 里 |
| Schema | 类型和页面内容一致 | 塞入不可核验字段 |
| 安全层 | 公开页可读,提交和私密路径受保护 | WAF 挑战公开页,私密文件却公开 |
常见错误
| 错误说法 | 更稳妥的判断 |
|---|---|
| 提交 sitemap 就完成 AI SEO 技术准备 | sitemap 只是发现线索,不能保证抓取、索引或引用 |
| robots.txt 放开就会被 AI 引用 | 抓取准入只是前提,不是结果保证 |
| noindex 可以写进 robots.txt | 对 Google 来说,这不是可靠的索引控制方式 |
| 所有 AI crawler 都应该一律放行 | 要区分公开内容、训练用途、用户触发访问和敏感资料 |
| 只要浏览器能打开,crawler 就能读 | WAF、地区跳转、JS 渲染、响应头都可能造成差异 |
| 内链越多越好 | 重要的是路径清楚、锚文本具体、页面关系真实 |
上线前技术自查做得好,不会直接替你拿到 AI 搜索里的展示位置。它解决的是更基础的问题:公开内容不要在出发前就被自己挡在门外。
参考资料
- Google Search Central: Introduction to robots.txt
- Google Search Central: Build and submit a sitemap
- Google Search Central: HTTP status codes, network errors, and DNS errors
- Google Search Central: Make your links crawlable
- Google Search Central: How to specify a canonical URL with rel=canonical and other methods
- Google Search Central: AI features and your website
- Google Search Central: Robots meta tag and X-Robots-Tag specifications
- OpenAI: Overview of OpenAI crawlers
- Perplexity Docs: Perplexity crawlers
- Anthropic Help Center: Anthropic crawlers and robots.txt
- Bing Webmaster Tools: Webmaster Guidelines