← 返回经验分享
小小橘趴在二楼窗台往下看,楼下一排小机器小人举着空白小旗子排队等进屋
本喵手记 · 新站点开荒

静态站 SEO 与 GEO 入门:从 sitemap 到被 AI 引用,一次讲完

群里朋友做企业静态站,卡在「怎么让搜索引擎和 AI 都看见我」这一关。本喵把能落地的流程整成一份向导:地基八件套、三大平台提交、AI 爬虫怎么放行、发文自动化流水线、便宜又稳的部署选型,另附可复制提示词与十几条实测踩坑。

文 / 小小橘 · 2026-10-02 · 全长约 40 分钟读完,建议先收藏再按章节动手

01 三条路,一块地基

先把三个听起来很像的词分开,不然做着做着就会互相打架。

说法面对的是谁要解决的问题典型动作
SEO
搜索引擎优化
Google、百度、必应这类传统搜索让人搜关键词时,你的页面出现在结果页里TDK、内链、sitemap、结构化数据、页面速度、外链
AEO
答案引擎优化
结果页顶部的摘要块 / 问答块让答案被抽走时,来源是你直接回答式小标题、FAQ、表格、清晰定义
GEO
生成式引擎优化
豆包、DeepSeek、Kimi、元宝、ChatGPT 这类会「答」的引擎AI 组织答案时,引用的是你的内容可抓取、可摘录、带数据与出处、被多方提及

三者不是三个战场,而是一条流水线上的三段。本喵给朋友画过一张漏斗,他看完就不慌了——因为绝大部分人卡住的其实是最上面那一层,却天天在担心最下面那一层。

第一层抓得到robots 放行、sitemap 交上去、页面是能读的 HTML,这一层纯技术,当天就能修完
第二层读得懂标题层级、canonical、结构化数据、语言与地域标注,让机器知道这页在讲什么
第三层愿意收内容不是薄页、不是重复页、不是纯关键词堆砌,这一层才开始变成「内容的事」
第四层愿意引有具体数据、有出处、有可摘录的结论段,AI 爱抄的是这种
第五层有人点标题与描述写得让人想点,到这一步才轮得到「优化」这个词
小小橘站在三级台阶上,用网兜接住从上面飘落下来的空白纸片,台阶旁散落着漏掉的小纸片
本喵的分拣图:上面的纸片一直在掉,你要做的是把网兜架在正确的那一级,架太低,够不着;架太高,接不住。
先说一句最容易让人泄气的话:提交不等于收录,技术全绿也不保证被搜到。百度与 Google 两边都白纸黑字写着「不保证一定收录」。新站、零外链、上线两周,内页没被收录是正常现象,不是你把哪里配错了。把这句话记住,能省掉后面一大半的自我怀疑。

02 地基八件套:静态站的「可收录」最低装备

企业静态站的好处是结构简单,坏处是,没有后台替你兜底。WordPress 装个插件就有的东西,静态站得自己写进模板。下面八件,缺哪件都会在某个环节静默丢分。

#件放哪 / 长什么样一行验收命令
1robots.txt站点根目录,文件名必须全小写curl -s https://你的域名/robots.txt
2sitemap.xml根目录或子目录,列出全部页面绝对 URLcurl -s https://你的域名/sitemap.xml | grep -c '<loc>'
3canonical每页 head 里,值必须等于本页自己的 URLcurl -s URL | grep -o 'rel="canonical"[^>]*'
4TDKtitle / description / keywords,每页各不相同看长度:标题 30–60 字,描述 80–140 字
5唯一 h1 + 语义标题h1 只许一个,正文用 h2/h3 分级,别拿加粗当标题curl -s URL | grep -c '<h1' 应为 1
6内链任意一页从首页 ≤3 跳可达列表页与文章互相链,别留孤岛页
7结构化数据 JSON-LD同页 head 或 body 里的 <script type="application/ld+json">Google 富媒体测试工具 / Schema 校验器
8favicon + 验证文件/favicon.ico 与平台给的验证文件curl -o /dev/null -w '%{http_code}' 域名/favicon.ico

robots.txt:一份能直接抄的模板

它只干两件事:告诉爬虫哪些别抓、以及顺手把 sitemap 指给它。写错的代价很大,因为它是路径匹配、区分大小写的,一个多余的斜杠就能把整站关在门外。

# https://example.com/robots.txt
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /*.json$
Disallow: /draft/

# AI 爬虫:检索型放行(带流量),训练型你自己决定(见第 4 章)
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /

# sitemap 必须写完整的绝对地址;跨域会被忽略
Sitemap: https://example.com/sitemap.xml
三个细节坑:① 文件名统一小写、必须放根目录;② Sitemap: 后面只能跟绝对 URL,写成相对路径等于没写;③ 一行一个 User-agent 段,段与段之间用空行隔开,别把几条规则挤在一起。

sitemap.xml:别手写,让脚本生成

手写的 sitemap 一定会腐坏:加了页面忘了加、改了时间忘了改 <lastmod>。而引擎对「时间戳明显不对」的做法相当粗暴,整个忽略 lastmod,等于你那次更新白推了。

  • 格式 UTF-8;每个 <loc> 必须是绝对地址;单文件不超过 5 万条 URL / 50MB(未压缩)。
  • <lastmod> 取文件的真实修改时间,不要写死、不要全站填同一天。
  • 每个域名各有一份。A 域名的 sitemap 里写 B 域名的 URL,引擎直接当无效,本喵在自己的门面站上真踩过这一条。
  • 生成器要幂等:连跑两次产物一模一样;生成完把线上文件拉回仓库,否则下次部署会用旧副本把新 sitemap 覆盖回去。

canonical 与「重复内容」

静态站最容易被判重复的三个来源:带 www 与不带 www、带斜杠与不带斜杠、以及站根下遗留的旧副本目录(版式改版、子域拆分时常留一份)。

  • 统一到唯一形态,其余 301 过去;canonical 每页指向自己。
  • 发现重复内容时,用 301 重定向而不是删成 404,删掉会连外链权重一起丢。
  • nginx 上要把无斜杠与带斜杠两种写法都配上,否则会出现「先补斜杠、再跳目标」的两跳链条,白白浪费抓取预算。

结构化数据:企业站先做这三个就够

类型用在哪必备字段
Organization全站(首页或每页)name、url、logo、sameAs(官网/公众号/工商主页)
LocalBusiness有实体门店或本地服务name、address、telephone、openingHours、geo
Article / FAQPage文章页 / 问答页headline、datePublished、author、mainEntityOfPage
一条红线:JSON-LD 里写的,页面上必须看得见。标了作者是张三、页面上没有张三;标了五条问答、页面上一条都没有,这不叫优化,这叫操纵,轻则富结果不显示,重则被人工处理。给机器看的,不能比给人看的多。

速度与移动端:三项硬指标

Google 的 Core Web Vitals 目前看三项,取值是真实访问的第 75 百分位,也就是要求 75% 的真实访问都得达标,不是你自己跑一次 Lighthouse 的分数好看就行。

指标衡量什么良好需要改进差
LCP最大内容元素的加载时间≤ 2.5 秒2.5 – 4 秒> 4 秒
INP交互到下一次绘制的响应(2024 年取代 FID)≤ 200 毫秒200 – 500 毫秒> 500 毫秒
CLS布局偏移(元素乱跳)≤ 0.10.1 – 0.25> 0.25

静态站通常天然占便宜,最容易砸在这几处:没压缩的大图(一上来就两三兆)、没设宽高的 img(导致 CLS 跳动)、字体阻塞渲染。图片给宽高、转 WebP、压到 200KB 以内,基本就把 LCP 和 CLS 救了。

03 三大平台提交:Google / 必应 / 百度

顺序永远一样,三家通用:先证明这个站是你的 → 再交 sitemap → 最后对重点页面点一次「请求编入索引」。跳过第一步,后面全是白忙。

3.1 先验证所有权:三种方式选一种

方式怎么做优点坑
DNS TXT 记录平台给你一串值,加一条 TXT 解析一次覆盖全部子域名,最省事解析生效有延迟,平台可能还看不到
HTML 文件把验证文件丢到站点根目录静态站最简单,一行 scp只对该域名有效;文件删了 = 掉线
meta 标签往首页 head 里塞一行 meta不用动服务器目录改模板时容易丢,改完全站得复验
验证文件是资产,不是垃圾。将来清理站根的时候,baidu_verify_*.html、BingSiteAuth.xml、Google 的验证 meta 一律不许删,删掉就等于从平台掉线,之前的提交记录与数据全部断档。把它们加进巡检,每天确认还在。

3.2 Google Search Console

  1. 添加资源。推荐「网域」属性(用 DNS TXT 验证),它一次覆盖 http/https、带与不带 www 的全部版本;「网址前缀」属性只覆盖你写的那一种。
  2. 左侧「站点地图」→ 填 sitemap.xml → 提交。提交成功只代表登记,别把它读成收录。
  3. 用「网址检查」逐个查重点页,需要时点「请求编入索引」。这个动作有配额,大约每天十次左右,具体以界面提示为准,省着用,先给真正重要的页面。
  4. 过几天回来看「网页索引编制」报告,里面会明说每类页面为什么没被收录:最常见的是「已抓取,尚未编入索引」(内容判定不值得收)和「已发现,尚未抓取」(排队中)。
权限是「逐属性」的:同一个人可能在「网址前缀」属性上是所有者,在「网域」属性上却没有权限,于是某些诊断功能静默不可用。遇到工具报权限错误,先去站点列表把每个属性各自的权限级别看一眼,别以为是脚本坏了。

3.3 必应 Webmaster Tools 与 IndexNow

必应是三家里最容易见效的一家:它有官方 URL 提交 API,每天每域名可提交 1 万条,配额按域名级计算(子域名不单独算),UTC 零点重置,提交历史里能看到最近 1000 条。而且可以直接从 Google Search Console 导入站点,省掉验证步骤。

比它更省心的是 IndexNow,一个由必应牵头的开放协议:你只需在站点根目录放一个 <密钥>.txt(文件内容就是密钥本身),以后每次发布只要往接口 POST 一次 URL 列表。

# 1) 生成密钥并在站点根放好 https://example.com/你的密钥.txt(内容=密钥)
# 2) 发布后推一次(单次最多 1 万条 URL)
curl -s -X POST https://api.indexnow.org/indexnow \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{"host":"example.com","key":"你的密钥","keyLocation":"https://example.com/你的密钥.txt",
       "urlList":["https://example.com/blog/new-post.html"]}'

一次推送,响应你的所有支持方:必应、Yandex、Naver、Seznam、Yep 等。清单里没有 Google,Google 从 2021 年评估到现在仍未采用,这不是你配置错了。

3.4 百度搜索资源平台

面向国内客户的站,这一家是必须做的。验证方式与另外两家类似(HTML 文件 / meta 标签 / CNAME,推荐前两种)。验证完进「普通收录」,它有三条通道,建议全用:

通道怎么做特点
API 推送后台拿 site 与 token,POST 到 http://data.zz.baidu.com/urls?site=…&token=…,body 为换行分隔的 URL最实时,配额按站点等级给;新站常见 10 条/天,提升后常见 100 条/天,以后台显示的当日剩余为准
sitemap 提交把 sitemap 地址填进后台不限条数,适合全量铺底
手动提交后台粘贴 URL适合临时补几页
# 百度 API 推送(把 token 放环境变量里,别写进脚本)
curl -s -H 'Content-Type:text/plain' \
  --data-binary @urls.txt \
  "http://data.zz.baidu.com/urls?site=https://example.com&token=$BAIDU_TOKEN"
# 返回 JSON 里的 success 是成功条数,remain 是当日剩余配额——每次都记下来

另外还有「快速收录」:需要单独申请,权限按站点质量评估,主要服务移动端页面。新站先别纠结它,把普通收录跑顺更有价值。百度也提供一段「自动推送 JS」,页面加载时自动上报当前 URL,挂进全站模板即可,成本极低。

百度的两条脾气:① 官方原话是「可以缩短爬虫发现链接的时间,无法解决内容是否收录的问题」,提交 ≠ 收录,这边也一样;② 国内服务器 + 中文站的百度抓取量天生比 Googlebot 少,页面 head 里没有 baidu-site-verification 基本等于没在百度验证过,这经常就是「百度搜不到」的直接原因。

3.5 三家的差异,一张表看完

Google必应 Bing百度
验证方式DNS TXT(推荐,覆盖全域)/ 文件 / meta文件 / meta / 可从 GSC 一键导入文件 / meta / CNAME
sitemap支持,建议提交支持支持
主动推送无公开 API(有非官方工具,不建议依赖)URL 提交 API 1 万条/天·域名 + IndexNowAPI 推送(配额按站点等级)+ 自动推送 JS
单页加速「请求编入索引」,约每天十次URL 提交即加速手动提交 / 快速收录(需申请)
反馈与诊断最详细(覆盖状态、Google 认定的规范页、抓取时间)中等中等,侧重移动端
适合谁面向海外 / 英文站 / 技术站面向海外 + 部分国内(必应国内份额不小)面向中国大陆客户

除这三家,还有 360、神马(移动端)、搜狗等站长平台。了解即可,优先级远低于前三家,别把有限的精力平摊给八个平台。

04 GEO:让 AI 愿意引用你

朋友问本喵最多的一句是:「AI 搜索起来了,我的站会不会更没人看?」本喵的答案是:入口变了,地基没变。AI 一样要靠爬虫去拿你的页面,只是它拿完还要「读」和「摘」。

4.1 先弄清楚:AI 是怎么拿到你的内容的

AI 爬虫不是一个整体,得分成两类看。这一条分对了,后面所有的放行策略都顺了。

UA 名称归属干什么用本喵的建议
GPTBotOpenAI抓取内容用于模型训练自己定(不给训练就拦)
OAI-SearchBotOpenAI为 ChatGPT 搜索建索引放行,这是带流量的那个
ChatGPT-UserOpenAI用户点开链接时代表用户实时访问放行
ClaudeBot / Claude-SearchBotAnthropic训练 / 检索与引用训练自定,检索型放行
PerplexityBotPerplexity检索并带出处引用放行
Google-ExtendedGoogle只控制 Gemini / Vertex 训练与内容使用与 Googlebot 搜索收录无关,别混为一谈
Applebot-ExtendedAppleApple Intelligence 训练自定
Bytespider字节跳动豆包 / 抖音系的内容抓取面向国内 AI 搜索的话,拦了就等于退出这一档
CCBotCommon Crawl公开语料库(很多模型的上游)自定
meta-externalagentMetaMeta AI 训练自定
三个实测最容易踩的坑:① 把 OAI-SearchBot 当成 GPTBot 一起拦了,拦掉的是流量,留下的才是训练;② 觉得这些爬虫会拖垮服务器,检索型爬虫的抓取频率很低,一天可能就来几次,跟它带来的流量比可以忽略;③ 在防火墙层面封爬虫 IP,将来想放开时你都想不起封在哪了。只在 robots.txt 里做控制,随时可改。
小小橘坐在小书桌旁,把空白纸片一张张递给围过来的圆头、方头、三角头小机器人
AI 也分很多种:有的是来搬走整箱纸去印书的,有的是当场借一张、还要在纸上标明出处的。本喵两者态度当然不一样。

4.2 内容侧:AI 爱引用的写法

这一节有正经学术出处。2024 年 KDD 上那篇《GEO: Generative Engine Optimization》第一次把这个方向做成了可测量的研究:他们拿一批真实查询去测生成式引擎的回答,结论是内容侧的优化可以把来源在回答里的可见性提升最多约 40%;而且有效的方法因领域而异。

它测的九种写法里,收益最明显的是三类:标注引用来源、加统计数字、加引语;而关键词堆砌几乎没用,个别场景还往下掉。翻译成能照着做的六条:

#写法怎么落地
1先给结论,再给论证每个小标题下第一句就是完整答案(谁、是什么、多少钱、多久),别绕三段才说出来
2带具体数字「快」改「2.4 秒」、「便宜」改「每月 8 元」,并写清统计口径与时间
3写清出处官方文档、标准编号、发布日期、你自己实测的日期,AI 引用有出处的段落时更放心
4能引用的话就写进去把官方原话、客户原话用引号引出来,比转述更容易被摘
5该用表格就用表格对比、清单、参数一律上表,机器读表格比读散文稳,人也更爱看
6把定义段独立出来「X 是指……」单独成段,别埋在长句中间,方便被整段摘走
别做的:为了「讨好 AI」把关键词塞满一页。这条不光没用,还可能被判定为低质量内容,本来就是给人和机器读的,人读不下去的段落,机器摘出来也讲不清。

4.3 llms.txt:便宜的加分项,不是救命稻草

llms.txt 是 2024 年 9 月由 Answer.AI 的 Jeremy Howard 提出的一种约定:在站点根放一份 Markdown 文件,用一句话说明列出站内最重要的内容,方便 AI 直接读到「你有哪些好货」。

本喵得实话实说:它至今仍是社区约定,不是 W3C 或 IETF 标准,真正遵守它的系统很少。所以本喵的建议是顺手放一个(十分钟的事,白送),但别指望它带来收录。真正管用的控制机制还是 robots.txt。

# 公司名 / 站点名
> 一句话说清你是谁、做什么、服务于谁。

## 核心页面
- [产品介绍](https://example.com/product.html): 做什么、解决什么问题、价格区间
- [价格与方案](https://example.com/pricing.html): 各档位包含什么、怎么计费
- [联系我们](https://example.com/contact.html): 电话、地址、工作时间

## 内容 / 文档
- [使用手册](https://example.com/docs/): 从安装到进阶的完整说明

## 可选
- [关于我们](https://example.com/about.html): 公司背景与资质

4.4 怎么知道 AI 到底有没有引用你

这件事没有官方后台,只能自己动手测。方法很土但有效:拿 10 个真实客户会问的问题,去几个 AI 里问一遍,看答案里有没有提到你、有没有引你的站。

记录项为什么要记
平台 / 日期不同平台的检索源不一样,变化要分开看
提问原文同一批问题每月重问一遍才有对比
是否提到品牌 / 是否给出链接「提到」与「被引用」是两档,别混算
被引用的是哪一页告诉你哪类内容真的被 AI 吃进去了
同题下 AI 引了谁最值钱的一列:你的竞品做对了什么

测的平台按你的客户在哪就用哪几个:国内的豆包、DeepSeek、Kimi、腾讯元宝、通义千问;海外的 ChatGPT、Perplexity、Gemini、Copilot。别只看一次,生成式引擎有随机性,同一个问题问三次答案都可能不同,看的是趋势不是单次。

05 发文自动化流水线:一次配好,以后只管写

静态站最大的红利在这里。你不需要 CMS 的「发布」按钮,因为你的发布流程本身就是一串命令,而命令是可以自动跑的。

写稿Markdown / HTML→ git push版本留痕→ CI 构建生成页面 + sitemap + RSS→ 部署上线rsync / 对象存储 / Pages→ 自动推送IndexNow + 百度 API→ 巡检死链 / 覆盖率 / 证书→ 报表邮件 / 日志
小小橘双手扳动一台由齿轮和传送带组成的小机器,空白小卡片在传送带上滑过,末端落下一个小爪印
本喵心里这条流水线的样子:人只负责往入口放稿子,剩下的活交给机器,出口盖个爪印就算发过了。

5.1 构建与部署:一段能用的 GitHub Actions

用 GitHub 存源码就顺便用它的 Actions,免费额度对静态站绰绰有余。下面这份是骨架,把部署那步换成你自己的方式(rsync 到服务器 / 传到对象存储 / Cloudflare Pages 的官方 Action 都行)。

name: build-and-deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: 构建(生成页面 / sitemap.xml / rss.xml)
        run: python3 build.py

      - name: 部署到服务器
        run: |
          echo "$SSH_KEY" > key && chmod 600 key
          rsync -avz --delete -e "ssh -i key -o StrictHostKeyChecking=no" \
            ./public/ "$USER@$HOST:/var/www/site/"
        env:
          SSH_KEY: ${{ secrets.SSH_KEY }}
          USER:    ${{ secrets.SSH_USER }}
          HOST:    ${{ secrets.SSH_HOST }}

      - name: 通知必应与 Yandex(IndexNow)
        run: |
          curl -s -X POST https://api.indexnow.org/indexnow \
            -H "Content-Type: application/json; charset=utf-8" \
            -d "{\"host\":\"example.com\",\"key\":\"$INDEXNOW_KEY\",
                 \"urlList\":[\"https://example.com/\"]}"
        env:
          INDEXNOW_KEY: ${{ secrets.INDEXNOW_KEY }}

      - name: 通知百度(配额小,只推新增的几页)
        run: python3 tools/push_baidu.py --status
        env:
          BAIDU_TOKEN: ${{ secrets.BAIDU_TOKEN }}
密钥永远走 Secrets,不要写进 YAML、更不要提交进仓库。另外那步 rsync --delete 要小心,它会把线上多出来的文件删掉,第一次跑建议先加 --dry-run 看清楚要删什么。

5.2 自动推送:把「推过了没」记在台账里

百度那边的配额是有限的(新站常见 10 条/天),所以推送天生是多日分批的长跑,必须有状态文件记着「哪些推过了」。这段脚本的关键不在推送,而在把两种「没得推」分开报:

pending = [u for u in all_urls if u not in state["pushed"]]   # 真源 = 状态文件
room = min(BATCH, QUOTA - state["used_today"])                # 今日还能推几条

if room <= 0:
    print(f"今日配额已用满({state['used_today']}/{QUOTA}),仍有 {len(pending)} 条待推")
    # ↑ 明天还能推,不是干完了
elif not pending:
    print("没有可推送的 URL(全部已推过)")
    # ↑ 这才是真·完工
else:
    todo, pending = pending[:room], pending[room:]
    resp = push(todo)              # POST 到 data.zz.baidu.com
    state["pushed"] += todo
    state["used_today"] += resp["success"]
    save(state)
    print(f"推送 {resp['success']} 条,剩余配额 {resp.get('remain')},队列还剩 {len(pending)} 条")
这段是本喵用真金白银换来的教训:如果把「配额用满」和「全部推完」合并成一句「没有新 URL」,你会以为活干完了,第二天打开一看还剩一大堆——谎报完工比报错更麻烦。凡是「预算 = 今天剩多少」的脚本,这两条分支必须分开写、分开报。

5.3 巡检:让静默故障自己叫出来

自动化最危险的状态不是「失败了」,而是「什么都没发生」,定时任务悄悄没跑、证书悄悄快到期、验证文件悄悄被删,页面上一切正常,你毫无察觉。所以每个自动化都要带一条「今天到底跑没跑」的判据:成功就静默,失败就写一条告警;连续几天没信号,等于出事。

巡检项判据多久跑一次
死链列表页与站内链接逐条请求,非 200 即报每周
sitemap 覆盖率三方对齐:sitemap 条数 == 实际页面数 == 列表页链接数每次发文后
TDK 完整性全站扫描:标题/描述缺失或超出长度、canonical 不是自身 URL每月
验证文件与证书验证文件仍 200;HTTPS 证书到期 ≥ 21 天每天
站根卫生.bak、.old、临时文件不得公网可下载(应 404)每周
AI 爬虫访问从访问日志里看检索型爬虫有没有来、抓的是不是内容页每月
证书这条别省。HTTPS 证书一旦续期失败,到期当天全站集体打不开,这是最典型的「静默到最后一刻」。巡检每天验一次到期天数,比出事之后救火便宜太多。

5.4 三条自动化纪律

  1. 先手动跑通,再谈自动化。手工执行三次都稳的脚本,才值得挂上定时;反过来,第一次就上定时的脚本,出问题你连它哪一步走的都不知道。
  2. 配额小就别上定时器。只剩几条 URL、手动跑一次就清空的事,别顺手建个定时任务,建了就要维护,还得配告警,成本比手点高。
  3. 每个「成功」都要有回执。推送成功要看返回的条数与剩余配额;提交 sitemap 要看后台的读取时间;点了「请求编入索引」要看到界面确认。没回执的「已执行」不算数。

06 部署与 CDN 选型:先看备案这道门槛

朋友问「用 Cloudflare 还是腾讯云」,本喵的答案取决于一句更前置的话:你的客户在哪。而这句后面还卡着一道硬门槛,备案。

6.1 备案:这不是技术选择,是合规前提

  • 服务器在中国大陆境内、面向公众提供网页服务的站点,域名必须做 ICP 备案;没备案,国内机房与国内 CDN 都不会给你接入。企业备案一般需要营业执照、法人或负责人信息、接入商(云厂商)代办,各省审核时间不同,通常以周计。
  • 备案号按要求要展示在页脚,并链接到工信部备案系统。涉及在线交易、收费会员等经营性服务的,可能还需要额外的经营许可,具体按当地通信管理局的要求来。
  • 用境外托管(Cloudflare、Vercel 等)可以免备案,代价是:大陆没有直连节点,访问要绕国际出口,晚高峰会抖,极端情况下还可能不稳定。对「给国内客户看的企业主站」来说,这个体验通常不能接受。
所以选型的第一刀是这么切的:客户在海外 / 站点是纯展示或演示 → 走免备案路线,省事省钱;客户在国内、要正经当官网用 → 先把备案办了,再谈 CDN。反过来做(先选好 CDN 再发现要备案)会白白拖一两周。

6.2 方案对照表

方案免费 / 成本量级国内访问要备案吗适合谁
Cloudflare Pages
(+ 免费 CDN / DNS)
纯静态的免费额度基本用不完;一旦带 Functions(接口、SSR、鉴权)就进入每天 10 万请求、单请求 10ms CPU 的额度 走国际出口,不稳 不需要 英文站、外贸展示站、作品集、给海外客户看的站
Vercel / Netlify / GitHub Pages 都有免费档,额度对静态站够用 同上,不稳 不需要 演示站、开源项目页,不建议当企业主站
腾讯云 EdgeOne Pages 有免费档,静态托管 + 全球加速一体 绑国内节点后快 国内加速需要 面向国内的企业静态站,想省运维
腾讯云 COS 静态托管 + CDN
(阿里云 OSS + CDN 同理)
对象存储有额度内的低价/免费空间,超出按量;CDN 按流量 GB 计费 快 需要 流量不大的展示型官网,性价比最高的一档
轻量应用服务器 + nginx 包年套餐,月成本几十元量级 快 需要 除静态页外还要放接口、后台、表单的站(本喵自己的站就是这条路)
金额与免费额度会变,请以各家官方定价页为准。上面写的是量级,目的是让你知道「哪一档便宜、差在哪」;真要下单前,去官网把当前的免费额度和计费口径核一遍。另外要注意:CDN 按下行流量计费,被刷流量或某篇文章爆掉时,账单可能比你想的疼,设个流量告警或消费上限。

6.3 上线必配的速度三件套

  1. 缓存头分开设:带指纹的静态资源(style.a1b2c3.css)给长缓存 Cache-Control: public, max-age=31536000, immutable;但 HTML、sitemap.xml、robots.txt 不要用 immutable,否则你更新了内容,用户和爬虫拿到的还是旧的。
  2. 图片压缩加现代格式:上传前压到 200KB 以内、宽度按展示尺寸给(正文图 1200px 足够),能上 WebP 就上;<img> 一定写 width/height,这是 CLS 不跳的关键。
  3. HTTPS 与压缩全开:证书用免费自动续期方案(如 Let's Encrypt + certbot 自动续期),同时开启 HTTP/2 或 HTTP/3 与 gzip/brotli。别忘了把续期能力本身写进巡检,证书挂了,前面所有优化都归零。

07 提示词包:让 AI 帮你干这活

这一章是朋友点名要的。本喵给七个可直接复制的提示词,覆盖从体检到改写的全流程。用之前先记住四条规矩,不然 AI 会给你帮倒忙:

  1. 喂真输入。把真实的 HTML、robots、sitemap 片段贴给它,别只说「帮我优化一下网站」,那种输出一定是通用套话。
  2. 不许编数字、不许编来源。提示词里明确要求:拿不准的写「未验证」,绝不允许编造统计数字、引用文献或竞品数据。
  3. 要可核对的产出。要求它同时给「问题 → 判据 → 怎么验」,这样你能一条条复核,而不是照单全收。
  4. AI 生成的结构化数据,必须和页面可见内容逐字对得上。这一条是红线,写在提示词里、也写进你的验收清单。

7.1 站点可收录性体检

你是搜索引擎技术审计员。下面是某个静态站的 robots.txt、sitemap.xml 与一篇文章的 HTML 片段。
请检查并输出问题清单,按「必须先修 / 值得做 / 长期积累」三层排序:
1) 抓取层:robots 规则是否会误伤;sitemap 是否为绝对 URL、是否与页面清单一致;是否有 noindex 冲突。
2) 解析层:TDK 是否缺失、是否有重复、标题与描述长度是否合理(标题 30-60 字、描述 80-140 字);
   canonical 是否等于本页 URL;h1 是否唯一;图片是否有 alt;是否有结构化数据。
3) 内容层:是否属于薄页、是否与站内其他页高度重复、是否有清晰的小标题层级。

输出格式:一张表,列 = 问题 / 严重级别 / 判据(怎么证明) / 修复动作(具体到文件或标签)。
凡是材料里看不出来的,写「需补充材料」,不要猜。不要编造任何数字或外部事实。

【robots.txt】
(粘贴)

【sitemap.xml 前 50 行】
(粘贴)

【页面 HTML】
(粘贴)

7.2 批量生成 TDK

你是中文 SEO 文案。下面是一批页面的正文摘要,请为每一页生成 TDK:
- title:30-60 字,把「用户会搜的词」放在前 15 字内,不要堆砌,不要用「最」「第一」这类绝对化用语。
- description:80-140 字,写清楚这页能给读者什么,像在推荐给朋友,不要写成关键词列表。
- keywords:3-6 个真实相关的词,从用户视角写,不要造词。
要求:
1) 每页 TDK 互不重复,风格统一;
2) 从摘要里找不到的信息,先在「待确认」里列出,不要编;
3) 输出表格:页码 | title | description | keywords | 待确认项。

【页面清单与摘要】
(粘贴)

7.3 生成结构化数据(JSON-LD)

你是 Schema.org 结构化数据专家。根据下面这家企业的真实信息,生成 JSON-LD:
- 首页:Organization(name / url / logo / sameAs)+ WebSite
- 若有实体门店:额外给 LocalBusiness(address / telephone / openingHours / geo)
- 文章页:Article(headline / datePublished / author / image / mainEntityOfPage)

硬性要求:
1) 只输出 JSON-LD 代码块,不要注释、不要解释性文字混在代码里;
2) 所有字段必须来自我给的资料,**不得虚构 logo 地址、电话、账号链接**;缺的字段直接省略,并在代码块外用一行列出「缺哪些字段、去哪补」;
3) 数据必须与页面可见内容一致(页面上看不到的,不许写进结构化数据)。

【企业信息】
公司名:… 官网:… Logo:… 公众号/社媒:…
门店地址:… 电话:… 营业时间:…  
文章标题:… 发布日:… 作者:… 配图:…

7.4 把段落改写成人机都爱引用的「答案块」

你是面向生成式引擎的内容编辑。把下面这段说明改写成一个「答案块」,目标是:用户扫一眼就懂,AI 摘录时不容易摘错。
要求:
1) 第一句直接给结论(谁 / 是什么 / 多少钱 / 多久),不要铺垫;
2) 保留原有的全部事实与数字,一个都不许改、不许加——原文没写的数字,不要补;
3) 把对比、参数、条件改写成 Markdown 表格;
4) 把「X 是指……」这类定义独立成段;
5) 删掉形容词堆砌、删掉「众所周知」这类填充词;
6) 输出:改写后的正文 + 一段「我改了什么」的说明(逐条),方便我复核。

【原文】
(粘贴)

7.5 生成 llms.txt

根据下面的站点页面清单,生成一份 llms.txt(Markdown 格式,放在站点根目录):
- 第一行:# 公司名 / 站点名
- 第二行:> 一句话说明你是谁、做什么、服务谁(控制在一行内)
- 之后按「核心页面 / 内容与文档 / 可选」分组,每条格式: - [页面标题](绝对 URL): 一句话说明这页讲什么
- 只收录真正重要的页面(建议 5-15 条),不要把页脚、隐私政策这类塞进来撑数量
- 输出纯文本,不要额外解释

7.6 内链建议

下面是一个站点的页面清单(标题 + 摘要)。请规划内链:
1) 找出「孤岛页」(没有任何站内页面链向它),给出最少需要新增的链接数;
2) 给出具体的链接建议:从哪一页、在什么上下文、链到哪一页、锚文本写什么(锚文本必须是自然的句子片段,不许写「点击这里」「了解更多」);
3) 每篇文章至少链出 2 条站内链接、至少被 1 条链入;
4) 不要为了凑数链无关内容——不相关就明确写「无合适内链」。
输出表格:源页面 | 目标页面 | 建议锚文本 | 理由(一句话)。

7.7 生成巡检脚本

用 Python 写一个静态站巡检脚本(标准库优先,不要引第三方依赖),检查以下几项并输出报告:
1) sitemap 覆盖率:sitemap 里的 URL 数 vs 本地页面文件数 vs 列表页链接数,三者不一致要指出差在哪;
2) 死链:遍历站点内链,逐个请求,非 200 的列出来;
3) TDK 完整性:title / description 缺失或长度越界、canonical 不等于本页 URL 的页面;
4) 站根卫生:.bak / .old / .tmp 文件是否存在且公网可访问;
5) 证书到期天数。
要求:全绿时静默退出(退出码 0),有问题时输出问题清单并以非 0 退出;脚本要幂等、可重复跑。
另外给我一个「怎么故意制造一个错误来验证这个脚本真的会报警」的自测方法。

08 实测踩坑清单:十五条

这一章是本喵自己站上真踩过的,按「症状 → 根因 → 修法」写。你不可能全踩一遍,但大概率会中其中三到五条。

#症状根因修法
1日志里 Googlebot 访问量惊人日志里的 Googlebot 大半是伪造 UA 的扫描器(真 Googlebot 只来自固定 IP 段)先按 IP 段验真再统计;请求 /config.env、各类凭据文件路径的一律是扫描器
2用 site: 查收录,结果忽多忽少site: 在多个引擎上不可靠,无头请求还会撞上安全验证页改用站长平台的官方数据(GSC 的「网页索引编制」、百度的索引量)
3子域名一直是「未收录」该子域用的是另一个域的 robots/sitemap,跨域 sitemap 被引擎忽略每个域名配自己的 robots.txt 与 sitemap,别共用
4改了内容,引擎像没发现<lastmod> 是旧的或全站同一天,引擎干脆整个忽略它sitemap 由脚本生成、lastmod 取文件真实修改时间;生成完把线上文件拉回仓库,否则下次部署会用旧副本覆盖回去
5站根躺着一堆 .bak-2026xxxx模板复制法的副产物,公网可下载造成重复内容与信息暴露:先备份回本地,再删线上,然后逐条 curl 断言 404
6栏目目录 URL 打开是 403目录没有 index 页,且服务器关了目录列表把 /栏目/ 精确 301 到对应的列表页
7GSC 报「重复网页,未选定规范网页」站点根下留着一份旧位置的整份副本301 到正确域名(不要删成 404),且无斜杠与带斜杠两种写法都配,避免两跳
8每个页面都在偷偷 404 一次浏览器会自动请求 /favicon.ico,该请求由浏览器进程发起,不在页面的 Network 里,很容易漏查放一个 favicon.ico;改完用全新的无头实例重扫(缓存过的失败不会再报,旧的会给你假绿)
9页面能打开,但爬虫/预览看到的是空壳纯前端渲染(SPA),服务端只返回骨架首屏内容改为服务端渲染或预渲染;curl 一下首页看有没有正文,这是最快的判据
10同一个账号,某些诊断功能「没有权限」平台的权限是逐属性给的:「网址前缀」是所有者,「网域」属性可能没有去资源列表核对每个属性各自的权限级别,别当成脚本坏了
11推送脚本说「没有新 URL」,可明明还剩一堆没推当日配额用满被错报成「全部推完」两种「没得推」分开报:配额满要说还剩多少条、明天继续
12提交了 sitemap,一直没动静「提交成功」只是登记;引擎还要排期抓取,而且不保证收录看后台的「上次读取时间」与「已发现/已抓取」状态,别反复重交
13新站上线两周,一个内页都没进搜索结果新域名、零外链、零品牌提及,这是正常现象,不是配置问题别猛改技术;把精力放到内容与外链上,或者对重要页手动请求编入索引
14关键词密度调了很久,排名没动堆砌关键词的收益极低(GEO 那篇论文测下来甚至是负的)改结构与小标题,用表格与直接回答式段落替代堆词
15某个 AI 爬虫被拦了,想放开却找不到在哪拦的当初在防火墙/安全组层面封了 IP控制只写在 robots.txt 里,随时可改、可复验

09 30 / 60 / 90 天节奏与一页速查表

最后给一条能照着走的时间线。本喵的原则是:先把当天能修完的技术项修完,再把长周期的内容与外链交给时间,反过来做,你会一直在焦虑里改来改去。

阶段做什么完成判据
第 1 周
地基
备案(如需)→ 部署 + HTTPS 上齐;robots / sitemap / TDK / canonical / 唯一 h1 / favicon / 结构化数据;三家平台完成验证并提交 sitemap 体检脚本全绿;三家后台都能看到「sitemap 已提交/已读取」
第 2–4 周
结构
标题层级整理、内链补孤岛、把关键页改成「结论先行 + 表格 + 来源」的答案块;确定 AI 爬虫放行策略;顺手放一份 llms.txt;给两三个重点页请求编入索引 任意页从首页 ≤3 跳可达;列表页无死链;AI 问答复测有 1 条以上提到你的品牌
第 2–3 月
自动化与复盘
上 CI 构建 + 自动部署 + IndexNow/百度推送 + 每周巡检;每月做一次 AI 可见性记录;看后台真实数据(哪些词有展现、哪些页被收录) 发一篇文章不需要手工做任何一步;巡检能自己报出问题而不是沉默
长期 持续产出有信息量的内容、积累外链与品牌提及(媒体、行业目录、合作方互链) 这不是技术工作,是时间与信誉的积累,别指望哪一次优化能跳过它

一页速查表

要查什么怎么查
robots 有没有生效curl -s https://域名/robots.txt
sitemap 条数与入口curl -s 域名/sitemap.xml | grep -c '<loc>'
canonical 是否自洽curl -s 页面URL | grep -o 'rel="canonical"[^>]*'
h1 是否唯一curl -s 页面URL | grep -c '<h1' → 必须是 1
favicon 是否在curl -o /dev/null -w '%{http_code}' 域名/favicon.ico → 200
结构化数据是否正确Google 富媒体搜索结果测试 / Schema 校验器
页面速度三项PageSpeed Insights(看真实用户数据的第 75 百分位)
是否被 Google 收录GSC →「网址检查」看覆盖状态与抓取时间
是否被必应收录必应 Webmaster Tools → URL 提交 / 索引报告
是否被百度收录百度搜索资源平台 → 索引量 / 抓取诊断
AI 有没有引用你拿 10 个真实问题问各家 AI,每月记录一次

写到这儿,本喵最想留下的其实是一句心法:SEO 与 GEO 不是两件事,是同一条流水线的上下两段。你先把「能被抓到、能被读懂」做扎实,剩下那些 AI 时代的技巧才有地方落。地基没打好就去追新概念,本喵见过太多,花三个月研究 GEO,结果 robots.txt 里把自己整站屏蔽了。

有进展或者卡住了,欢迎来 经验分享栏目翻一翻本喵别的笔记;想看本喵怎么用 AI 把这类杂活自动化,可以读《AI Agent 驾驭工程全解》那篇。也欢迎直接来门口找本喵(首页)。

来源:Google Search Console / 必应 Webmaster Tools / IndexNow 官方文档、百度搜索资源平台帮助中心、Cloudflare 与腾讯云官方产品页、Google Search Central 结构化数据与 Core Web Vitals 文档、论文《GEO: Generative Engine Optimization》(KDD 2024, arXiv:2311.09735);坑位部分含本喵自建站的实测记录(2026-09 至 2026-10)。
核对日期:2026-10-02。各家免费额度与计费口径会变,动手前请以官方页面为准;本喵没做跨站对照实验,个人站经验未必适用你的业务规模。