跳到主要内容
APS
全部文章

用开源 claude-seo 给新网站做 SEO 和 GEO:基础知识、拆解与实战

Google 搜 site:apsdeck.com,AI 回答直接引用了 APS Deck 的介绍和价格表

作者:刘老板(@leo_xiaolei)· 2026 年 11 月 6 日 · 上一篇:3 天,我和 Claude 一起上线了第一个出海产品

上一篇上线全记录里,SEO 那一节被问得最多。这篇专门讲清楚三件事:SEO 和 GEO 的基础知识、开源插件 claude-seo 是怎么工作的,以及我用它给 apsdeck.com 做了什么、效果怎样。

先看结果:上面这张图,是网站提交 Google Search Console 不到一天后,在 Google 搜 site:apsdeck.com 的样子。网站已经被收录,Google 的 AI 回答直接把产品介绍、功能和价格表列了出来,几乎就是网站首页常见问题的原话。

一分钟看完

  • SEO 是让搜索引擎能抓取、能读懂、愿意把你排在前面;GEO(Generative Engine Optimization,生成式引擎优化)是让 AI 搜索(Google 的 AI 概览和 AI 模式、ChatGPT、Perplexity、Claude)能读到、读得懂、愿意引用你。Google 自己的说法是:为生成式 AI 搜索做优化,本质上仍然是 SEO。

  • claude-seo 是给 Claude Code 用的免费开源插件(MIT 协议):26 个子技能、19 个子智能体、30 条命令,官方说一次全站体检 10–15 分钟,最多 17 个智能体同时跑,报告和数据都留在自己电脑上。

  • 它最大的好处是查完就能改:插件跑在代码仓库里,Claude Code 照着检查结果直接改代码、写测试。

  • 在 apsdeck.com 上它查出了 7 类问题:没有搜索标签、robots.txt 和 sitemap 被登录页挡住、三种语言共用一个地址、软 404、首页 256 KB、私密链接没标不收录、品牌名撞车。全部改完,并写了自动化测试。

  • 效果:提交 Google 不到一天就被收录,AI 回答直接引用;Bing 还在排队。

  • 国内开发者的坑:开着代理跑 claude-seo,会因为假 IP 全部失败;PageSpeed 的免费配额会被用光;dig 查不了 DNS。都有解法,见第六部分。


一、先把基础打牢:SEO 是什么

1. 搜索引擎的三步:抓取、编入索引、排名

步骤搜索引擎在做什么常见的坑
抓取(crawl)爬虫顺着链接和 sitemap 找到页面,先读 robots.txt 看允不允许抓robots.txt 写错;页面要登录才能看;被 CDN 防火墙拦掉;sitemap 打不开
编入索引(index)读页面内容,判断这页讲什么、是不是重复页、该用哪个地址不存在的页面返回 200(软 404);同一内容多个地址却没有 canonical;内容要执行 JavaScript 才出来;误加了 noindex
排名(rank)按和搜索词的相关性、内容质量、可信度、页面体验排序标题和描述没说清楚;内容单薄;没有作者和日期;页面慢

前两步做不好,第三步无从谈起。所谓技术 SEO,管的主要就是前两步。

2. 技术 SEO 的基本清单

  • robots.txt:告诉爬虫哪些地址能抓、哪些不能,最后一行写上 sitemap 的地址。

  • sitemap.xml:列出你想被收录的页面和更新时间。多语言网站还可以在里面写每种语言版本的对应关系。

  • HTTP 状态码:不存在的页面要返回真正的 404。把所有未知地址都跳到登录页或首页,搜索引擎会当成「软 404」,浪费抓取额度。

  • canonical:同一份内容有多个地址时(带参数、带不带 www),告诉搜索引擎以哪个为准。

  • hreflang:同一页面的不同语言版本互相标注,再加一个 x-default(没有匹配语言时用哪个)。

  • 服务端渲染:正文直接写在 HTML 里,不依赖浏览器执行 JavaScript 才出来。

  • 速度:Google 的 Core Web Vitals 看三个指标:LCP(最大内容出现的时间)、INP(点击后多久有反应)、CLS(页面会不会跳来跳去)。

  • 不该收录的页面:登录页、后台、私密分享链接,用页面里的 <meta name="robots" content="noindex"> 或响应头 X-Robots-Tag: noindex 挡掉。

3. 页面上的 SEO

  • title 和 description:一句话说清是什么、给谁用,带上品牌名。搜索结果里显示的就是它们。

  • 标题层级:一个 H1,H2、H3 层级清楚;小标题尽量写成用户会问的问题。

  • 图片写 alt,站内页面互相链接。

  • 分享卡片:Open Graph 和 X 卡片,配一张 1200×630 的图,链接发到社交平台时才会展开成大图。

4. 结构化数据(JSON-LD)

用 schema.org 的词汇,把「这是一个什么软件、谁做的、多少钱」写成机器能读的 JSON,放在页面的 <script type="application/ld+json"> 里。常用的类型有 Organization(运营者)、WebSite(网站)、WebPage(页面)、SoftwareApplication(软件,带 Offer 价格)、BreadcrumbList(面包屑)、BlogPosting(文章)。

两条原则:

  • 只写页面上真有、能证明的东西:不编评分、评价和用户数。

  • FAQPage 不用再加了:按 claude-seo 引用的 Google 说明,2026 年 5 月 7 日起,所有网站的 FAQ 富媒体结果都不再展示,加了在搜索结果上也没有好处。问答直接写在页面正文里就行(这对 GEO 反而很有用,下面会讲)。


二、GEO:让 AI 搜索引用你

1. GEO 和 SEO 是什么关系

Google 在 Search Central 的官方说法是:从 Google 搜索的角度看,为生成式 AI 搜索做优化,就是为搜索体验做优化,因此仍然是 SEO。 claude-seo 的 GEO 检查也按这个思路来:遇到社区流行说法和 Google 的一手说法冲突时,以 Google 为准。

AI 搜索的内容从哪来:Google 的 AI 概览和 AI 模式用的是 Google 自己的索引;ChatGPT 搜索靠 OpenAI 的 OAI-SearchBot 抓取,也有一部分用到 Bing 的索引;Perplexity 和 Claude 各有自己的搜索爬虫。所以先做好 SEO,把 Google 和 Bing 都提交了,GEO 就成功了一大半。

2. AI 爬虫分两类,别一刀切

爬虫公司用途
OAI-SearchBotOpenAIChatGPT 搜索的来源,决定你能不能被 ChatGPT 搜索引用
ChatGPT-UserOpenAI用户在 ChatGPT 里让它打开某个网页时
GPTBotOpenAI只用于训练模型,不影响 ChatGPT 搜索
Claude-SearchBot、Claude-User、ClaudeBotAnthropic搜索、用户让 Claude 打开网页、训练
PerplexityBotPerplexityPerplexity 的搜索索引
Google-ExtendedGoogle不是一个爬虫,而是一个开关:决定内容能不能用于 Gemini 的训练,不影响 Google 搜索和 AI 概览

想被 AI 搜索引用,至少要放行搜索类的爬虫;训练类的放不放看你自己(我的公开页面都是产品介绍和政策,两类都放行了)。还有两点:

  • Cloudflare 有「拦截 AI 爬虫」的开关,开着的话 robots.txt 写什么都没用,上线后一定去后台看一眼。

  • 很多 AI 爬虫只读原始 HTML、不执行 JavaScript(claude-seo 举的例子是 GPTBot 和 PerplexityBot),所以服务端渲染是 GEO 的前提。

3. 什么样的内容容易被引用

claude-seo 的 GEO 评分分五个维度,正好是一份写作清单:

维度占比怎么做
可引用性25%每一节开头 40–60 字内先给结论;写具体数字、日期和出处;用「X 是……」这样的定义句;段落能单独拿出来读
结构可读性20%清楚的 H1、H2、H3;问题式小标题;短段落;对比用表格、步骤用列表;页面上有常见问题
多模态15%配图、图表、视频,并写清楚说明文字
权威与品牌20%写明作者和更新日期;引用一手资料;品牌在 Reddit、YouTube、维基百科等地方被提到
技术可访问性20%服务端渲染;robots.txt 放行 AI 爬虫

其中「品牌被提到」值得单独说:claude-seo 引用的 Ahrefs 研究(7.5 万个品牌)认为,品牌被提及和 AI 可见度的相关性,是外链的 3 倍。新产品上线后,多去相关社区真诚地介绍一下自己,比买外链有用。

4. llms.txt 要不要做

llms.txt 是放在网站根目录的一页 Markdown 说明(llmstxt.org 的社区规范),设想是让大模型不用解析复杂网页就能读懂你的网站。

现状是:Google 的人明确说过搜索不使用它;claude-seo 的报告里只列出「有没有」,不给它算分。我还是做了,因为成本很低,而且内容是从首页常见问题和价格配置自动生成的,不会和页面说法对不上。但别指望它带来引用,真正起作用的还是上面那张表。


三、claude-seo 是什么,怎么装

claude-seo 是 AgriciDaniel 开发的 Claude Code 插件,MIT 协议,免费。我用的 v2.5.0:

  • 26 个子技能(22 个核心技能 + 1 个总调度 + 1 个框架 + 2 个扩展),19 个子智能体,30 条命令分 6 组;

  • 覆盖技术 SEO、Core Web Vitals、内容质量(E-E-A-T)、结构化数据、AI 搜索(GEO)、本地商家、电商、多语言;

  • 官方说一次全站体检 10–15 分钟,最多 17 个智能体同时跑;报告是 Markdown,也能导出 PDF 和 JSON,数据留在自己电脑上。

在 Claude Code 里两条命令装好(装在用户级,所有项目都能用):

/plugin marketplace add AgriciDaniel/claude-seo
/plugin install claude-seo@agricidaniel-claude-seo

第一次用先跑 /seo setup:它会建一个独立的 Python 环境,并装好检查页面用的 Chromium,不污染你的系统;/seo doctor 可以随时检查环境是否就绪,不改任何东西。

最常用的命令:

命令做什么
/seo audit <网址>全站体检:并行派出多个专家,汇总成健康分和行动清单
/seo page <网址>单页深度检查
/seo technical <网址>技术 SEO:抓取、索引、跳转、速度等 9 类
/seo schema <网址>检测、校验、生成结构化数据
/seo hreflang <网址>多语言的 hreflang 检查和生成
/seo geo <网址>AI 搜索(GEO)检查
/seo agentic <网址>AI 智能体能不能顺利访问:AI 爬虫、llms.txt、Markdown 版本
/seo sitemap <网址>分析或生成 sitemap
/seo content <网址>内容质量(E-E-A-T)
/seo google接 Google Search Console、PageSpeed、CrUX 等接口(需要 Google API 凭据)
/seo drift给网站拍快照,之后对比变化,发现改坏的地方

四、拆解 claude-seo:它是怎么干活的

1. 一个总调度,一群并行的专家

/seo audit https://example.com
  └─ seo(总调度):先判断网站类型(SaaS、本地商家、电商、媒体、代理机构)
      ├─ 并行派出:technical、content、schema、sitemap、performance、visual、geo
      ├─ 按条件加派:google(有 API 凭据)、local / maps(本地商家)、backlinks、
      │             cluster、sxo、drift(之前拍过快照)、ecommerce(电商)
      └─ 汇总 → 健康分 + 按优先级排好的行动清单

行动清单里每一条都写明依据是什么、依赖什么、怎么验证已经改好了,这一点比很多 SEO 工具的「报错列表」实用得多。单项命令(比如 /seo schema)不走全套,直接交给对应的子技能。

2. 三层分工:技能、智能体、脚本

  • 技能:每个领域一份操作说明(SKILL.md),主文件控制在 500 行以内,细节放在参考文档里需要时再读,省上下文。

  • 智能体:19 个专家,各自用合适的模型,比如内容和 GEO 用 Opus,技术检查用 Sonnet。

  • 脚本:一批 Python 脚本负责可复现的事实检查:解析页面标签、发现 sitemap、用各家 AI 爬虫的身份去访问、调 PageSpeed、校验 JSON-LD……模型负责判断和改代码,事实由脚本拿,结论不靠模型猜。

3. 两个我很喜欢的设计

  • 改完自动校验:插件带了一个 Hook,Claude Code 每次编辑或写入文件后,自动跑一遍 JSON-LD 校验,结构化数据写错当场就会发现。

  • 抓取有安全层:所有网络请求都经过固定 DNS 的地址检查,拒绝内网地址和本机代理,防止被诱导去访问内网(SSRF)。代价是它不检查本机地址,要等网站上线;在国内开着代理还会踩坑,见第六部分。

4. 扩展

可以接 DataForSEO、Ahrefs、SE Ranking、Profound、Bing Webmaster、Firecrawl、Unlighthouse、Matomo 等,拿关键词、外链、AI 引用份额这些数据,需要各自的账号或 API Key。不接扩展,核心检查照样能用。


五、实战:apsdeck.com 从「搜不到」到「被 AI 引用」

APS Deck 是我做的 AI 演示稿工具。在线版上线第一天,对用户是好的,对搜索引擎几乎是一片空白。

1. 查出了什么

查出的问题后果怎么改的
页面没有 description、canonical、分享卡片和结构化数据Google 自己猜摘要;链接发到 X 上没有大图每个公开页面补齐标题、描述、canonical、Open Graph 和 X 卡片;每种语言一张 1200×630 的分享图
robots.txt、sitemap.xml 被跳转到登录页爬虫拿不到抓取规则和页面清单两个地址对外开放;sitemap 只列五个公开页面
三种界面语言共用一个地址,按 Cookie 和浏览器语言显示爬虫没有 Cookie,只看得到简体中文每种语言一个地址(?lang=en、?lang=zh-Hans、?lang=zh-Hant),hreflang 互相标注,不带参数的作为 x-default
不存在的地址也跳转到登录页软 404只有工作区要登录,其他不存在的地址返回真正的 404
首页 HTML 256 KB:示例图片用 base64 写进页面,整个界面的文案也一起塞了进去首屏慢,爬虫要下载一堆用不上的内容图片改成单独的、能缓存的地址,文案只给页面用到的几组,降到 84 KB
分享链接、邀请链接没有标记不收录私人内容有被收录的风险响应头加 X-Robots-Tag: noindex
品牌名撞车:搜「APS AI presentation」全是另一个也叫 APS 的产品,搜「apsdeck」什么都没有用户找不到,AI 也容易认错标题、分享卡片、结构化数据统一写「APS Deck」,和域名对上,别名写 APS、apsdeck

2. 几个关键决定

  • 只公开 5 个页面:首页、价格、服务条款、隐私政策、退款政策。其余页面默认 noindex。

  • 每种语言一个地址:地址里的 ?lang= 优先于 Cookie,站内链接也带上它,爬虫顺着链接就能找到每种语言的版本。这里踩了个坑:项目里 /new?lang= 本来就有别的意思(新演示稿的内容语言),所以只让公开页面的 ?lang= 决定界面语言。

  • 结构化数据:Organization、WebSite、WebPage、SoftwareApplication(订阅和一次性时长包,共 4 个报价)、BreadcrumbList。不写 FAQPage,不编评分。

  • 答案直接写在页面上:首页加了 6 条常见问题(是什么、要不要自带模型、多少钱、能导出什么、支持哪些语言、数据放在哪),每条第一句就是结论。

  • 放行 AI 爬虫:robots.txt 单独列出 10 个 AI 爬虫;/llms.txt 从常见问题和价格配置自动生成。

3. 怎么证明改对了

  • 自动化测试:单元测试加端到端测试,覆盖每个公开页面、每种语言的 canonical、hreflang、分享卡片和结构化数据,robots.txt、sitemap、llms.txt 的内容,不存在的地址返回 404,登录页和私密链接不被收录,首页 HTML 不超过 150 KB。以后谁改坏了,测试会直接报出来。

  • 上线后对线上复测(用 claude-seo 的脚本):sitemap 里 17 个页面全部 200,结构化数据 17/17 通过校验;用 GPTBot、OAI-SearchBot、ClaudeBot、Claude-SearchBot、PerplexityBot 等身份访问全部 200,拿到的内容和浏览器一样;llms.txt 符合 Lighthouse 的规则;不存在的地址是真正的 404。

4. 提交和结果

  • Google Search Console:添加「网域」资源,在 Cloudflare 加一条 TXT 记录验证,提交 sitemap.xml,再用「网址检查」对首页和价格页「请求编入索引」。

  • Bing Webmaster Tools:从 Search Console 一键导入,在 URL Submission 里一次提交 5 个地址。

结果就是开头那张图:提交后不到一天,Google 已经收录,标题是改过的「APS Deck · 面向讲师和创作者的 AI 演示稿编辑器」,AI 回答直接引用了网站的介绍、功能和价格表。Bing 还在排队,新域名一般要几天到两周。

详细步骤写在上一篇的「提交给搜索引擎」一节里。


六、踩过的坑(国内开发者尤其注意)

  1. 开着代理跑 claude-seo,检查结果全是失败。代理的 TUN 模式会把域名解析成 198.18.x.x 的假地址,claude-seo 的安全层把它当成内网直接拒绝;HTTP_PROXY 指向 127.0.0.1,也被拒。解法:用 DNS-over-HTTPS 查到真实地址,给插件的 Python 加一个启动时替换解析结果的小钩子,再去掉代理环境变量运行(连接本身仍然走代理的 TUN):

    # sitecustomize.py:放在一个目录里,运行插件时把这个目录加进 PYTHONPATH
    import os, socket
    ips = os.environ['REAL_IPS'].split(',')   # 用 DNS-over-HTTPS 查到的地址
    _orig = socket.getaddrinfo
    def _patched(host, port, *args, **kwargs):
        if host in ('apsdeck.com', 'www.apsdeck.com'):
            return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (ip, 443)) for ip in ips]
        return _orig(host, port, *args, **kwargs)
    socket.getaddrinfo = _patched

    真实地址这样查:curl -s -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=apsdeck.com&type=A'。

  2. PageSpeed Insights 报「rate limit exceeded」:不配 API Key 时大家共用一个免费配额,经常被用光。直接在浏览器里打开 pagespeed.web.dev 测,或者给插件配一个自己的 Google API Key。

  3. dig @1.1.1.1 超时:代理拦了直连 DNS。同样用上面的 DNS-over-HTTPS 查 TXT 记录(把 type=A 换成 type=TXT)。

  4. Bing 显示「Not discovered」:新域名的正常状态,提交就行。URL Inspection 页面下面的列表只是「查看过的记录」,不代表已经提交。

  5. 品牌名撞车:「APS」这种缩写在搜索引擎里有太多同名的东西。和域名一致的品牌写法(APS Deck)加别名,是最省事的办法。

  6. 切换语言后,页面变了、菜单还是旧语言:Next.js 的 router.replace 只重新渲染页面这一段,根布局里的 <html lang> 和语言菜单留在旧语言。地址里带语言参数的页面,改成整页打开新地址。


七、和传统 SEO 工具比,适合谁

claude-seoAhrefs、Semrush 这类 SaaS
价格插件免费,用你自己的 Claude Code 额度每月 $100 起
数据在哪自己电脑上对方的云端
能不能直接改代码能,Claude Code 照着报告改,还能写测试不能,只给报告
关键词、外链数据库要接付费扩展(DataForSEO 等)自带海量数据
AI 搜索(GEO)有专门的检查,跟着 Google 最新说法走各家进度不一

适合有代码仓库、用 Claude Code 的独立开发者和小团队:技术 SEO、结构化数据、多语言、GEO 这些「改代码就能解决」的问题,它的效率很高。不适合单独拿来做关键词研究和竞品外链分析,这部分还是需要 Ahrefs、Semrush 这类数据,或者接它的 DataForSEO 扩展。还有一点要清醒:它不会替你写出好内容,品牌被提到、外链这些,也得自己去争取。


常见问题

claude-seo 是什么?免费吗?

claude-seo 是给 Claude Code 用的开源 SEO 和 GEO 插件,MIT 协议,插件本身免费,运行时消耗你自己的 Claude Code 额度。v2.5.0 有 26 个子技能、19 个子智能体和 30 条命令,覆盖技术 SEO、内容质量、结构化数据、AI 搜索、本地商家和电商。

怎么安装 claude-seo?

在 Claude Code 里运行 /plugin marketplace add AgriciDaniel/claude-seo 和 /plugin install claude-seo@agricidaniel-claude-seo,再运行 /seo setup 准备好独立的 Python 环境和 Chromium,然后用 /seo audit <网址> 检查网站。

GEO 和 SEO 有什么区别?

SEO 让搜索引擎能抓取、能理解、愿意排名;GEO 让 AI 搜索能读到、能理解、愿意引用。Google 的官方说法是为生成式 AI 搜索做优化仍然是 SEO;GEO 多出来的主要是:放行 AI 搜索爬虫、服务端渲染、把答案写成能单独引用的段落、写明作者日期和出处。

llms.txt 要不要做?

可以做,但别指望它。Google 表示搜索不使用 llms.txt,claude-seo 也不给它算分。它的成本很低,最好从现有页面内容自动生成,避免和页面说法不一致。

还要不要加 FAQPage 结构化数据?

不用。按 claude-seo 引用的 Google 说明,2026 年 5 月 7 日起所有网站的 FAQ 富媒体结果都不再展示。把问答直接写在页面正文里,对用户和 AI 搜索更有用。

新网站多久能被 Google 收录?

提交 Search Console、对首页「请求编入索引」的话可以很快:apsdeck.com 不到一天就被收录,Google 的 AI 回答也开始引用。不提交就只能等 Google 自己发现,可能要几天到几周;Bing 一般更慢。

为什么 claude-seo 检查我的网站全部失败?

先看两种情况:一是检查的是本机或内网地址,claude-seo 出于安全不检查,要等网站上线;二是在国内开着代理的 TUN 模式,域名被解析成 198.18.x.x 的假地址被当成内网拒绝,用 DNS-over-HTTPS 查到真实地址、去掉代理环境变量再跑。

怎么让 ChatGPT 搜索引用我的网站?

robots.txt 放行 OAI-SearchBot;把网站提交给 Bing Webmaster Tools(ChatGPT 的搜索有一部分用到 Bing 的索引);页面服务端渲染;把关键事实写成第一句就是结论的段落和常见问题。


写在最后

如果你也在用 Claude Code 做产品,强烈推荐装上 claude-seo:它把一个 SEO 顾问的检查清单变成了可以直接执行、直接改代码的工作流,我这次从体检、改代码、写测试到提交搜索引擎的每一步,都是和 Claude Code 在对话里一起完成的。觉得好用的话,去 GitHub 给作者点个 Star。

最后,再推荐一下我的产品 APS Deck:把讲稿、笔记或文章变成一套能逐页修改的演示稿。AI 先问你几个关于听众和目的的问题,列出大纲,再一页页做成 HTML 演示稿;可以在网页里放映、生成分享链接,或者导出 PDF 和可编辑的 PPTX。模型用你自己的 API Key,或者直接连 ChatGPT、GitHub Copilot 订阅。

  • 新注册免费试用 14 天,不用绑卡;

  • 上线优惠:年付订阅首年 5 折,只要 $20。在设置页订阅年付时,收银台输入优惠码 3GXZS7NE,2026 年 11 月 30 日前有效,限前 500 份。扣掉手续费每月只剩一块五美元左右,基本就是成本价,想请大家先用起来、多提意见。(订阅只能用银行卡、Apple Pay 或 Google Pay;想用微信付,可以买一次性时长包。)

👉 体验地址:https://apsdeck.com

全部文章