SEO 监测

目录

SEO 落地 讲怎么把页面做对。这篇讲做完以后怎么看数据:页面有没有被抓、有没有被收录、排第几、有没有人点、点进来以后干了什么。

我们用三个工具,各看链路的一段:

Cloudflare          Search Console              GA4
─────────────       ─────────────────────       ──────────────────
爬虫来了没     →    收录了没 → 展示 → 点击   →   到站以后做了什么
页面快不快          排第几、哪些词                停留、转化、AI 来的流量

三个工具的数字永远对不上,这是正常的。它们计数的位置不一样:Cloudflare 在网络边缘数请求,Search Console 在 Google 的搜索结果里数展示和点击,GA4 在浏览器里跑 JS 数会话。对不上不要紧,要看的是每一段自己的趋势,以及段与段之间的比例有没有突然变。

后面先讲一次性的设置,再分工具讲看哪几个报表,然后是公式,最后是每天、每周、每月的节奏和周报模板。


一、先把漏斗画出来

阶段 问题 看哪 主要指标
抓取 Googlebot 来了没,拿到的是 200 吗 Cloudflare、GSC 抓取统计 抓取请求数、状态码分布、响应时间
收录 抓了以后收了没 GSC 网页索引、站点地图 已编入索引数、未编入索引的原因
展示 出现在搜索结果里没 GSC 效果报告 展示次数、平均排名
点击 出现以后有人点没 GSC 效果报告 点击次数、CTR
到站 点进来以后留下没 GA4 互动率、平均互动时长
转化 做了我们想让他做的事没 GA4 关键事件
AI AI 爬了多少、引用了多少、带来多少人 Cloudflare AI Crawl Control、GSC 生成式 AI 报告、GA4 AI 抓取数、AI 展示数、AI 来源会话

排查问题时从左往右看。点击掉了,先确认展示有没有掉;展示掉了,再看收录;收录掉了,再看抓取。哪一段先断,问题就在哪一段。


二、一次性设置

这些做一次就行,但没做的话,后面很多数据看不到。

1. Search Console

用网域资源(Domain property),不用网址前缀资源。网域资源把 http、https、www、子域全算进来,品牌词过滤和抓取统计也只在根级别的资源上有。

在「站点地图」里提交 sitemap-index.xml。

在 GA4 里关联 Search Console(GA4 → 管理 → 产品关联 → Search Console 关联),关联后大约两三天,GA4 里会多出「查询」和「Google 自然搜索流量」两个报表。

以后每次改版、上线新模块、改 robots.txt,都在效果报告的图上右键「添加注释」。GSC 从 2025 年 11 月开始支持自定义注释,每条最多 120 字,每个资源最多 200 条,500 天后自动删除,不能编辑。三个月后回头看曲线时,你会感谢当时记了这一笔。

2. GA4

排除内部流量:管理 → 数据流 → 配置代码设置 → 定义内部流量,把自己的 IP 加进去,再到数据过滤器里启用。

把关键事件标出来。GA4 不会自己知道什么算转化,事件触发了但没标成关键事件,报表里就看不到。我们标的是:点「进入 App」、点 GitHub 链接、订阅 RSS、注册。

建一个 AI 渠道。AI 助手带来的点击默认会落进「引荐(Referral)」,混在一起看不出来。管理 → 数据显示 → 渠道组 → 复制默认渠道组,新建一个叫「AI」的渠道,条件是「来源」匹配正则:

(?i)^(chatgpt\.com|chat\.openai\.com|perplexity\.ai|www\.perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|copilot\.com|grok\.com|chat\.deepseek\.com|meta\.ai|chat\.mistral\.ai)$

然后把这个渠道拖到「引荐」上面。GA4 按顺序匹配,排在引荐下面就永远轮不到它。自定义渠道组对历史数据也生效,建好马上就能看到过去的 AI 流量。

要知道这个数是偏少的。ChatGPT、Perplexity 的手机 App 点出来的链接经常不带来源,会被算成「直接」。

3. Cloudflare

打开 Web Analytics(真实用户测速,RUM)。它在浏览器里测 LCP、INP、CLS,不用 cookie,不需要同意弹窗。

打开 AI Crawl Control,看 AI 爬虫。

记住一件事:Cloudflare 首页那个「流量」面板统计的是边缘请求,里面有大量爬虫和机器人,不能当访客数用。有人实测过它的访客数是 GA4 的四五倍。要看真人,看 Web Analytics 或 GA4。


三、Search Console 看什么

1. 效果报告:四个数

效果 → 搜索结果。四个指标:

点击次数   用户从 Google 搜索结果点进你网站的次数
展示次数   你的网址出现在搜索结果里的次数
CTR       点击次数 ÷ 展示次数
平均排名   每次展示时你排在最上面那条结果的位置,按展示次数加权平均

平均排名是加权的,展示多的词权重大。所以它会被词的结构带偏:你新写了一批长尾文章,排在 30 名开外,展示涨了,平均排名反而会变差。平均排名变差不一定是坏事,要拆开看。

默认显示最近 3 个月,最多能看 16 个月。界面上每个维度最多导出 1000 行,要更多用 API(每次最多 25,000 行,可以翻页)或者 BigQuery 批量导出。数据一般晚两天左右。

2. 拆开品牌词和非品牌词

搜「造物局」「craftsail」点进来的人本来就知道你,这部分流量跟 SEO 做得好不好关系不大。SEO 真正带来的是非品牌词。两者混在一起,CTR 和排名都会被品牌词抬得很高。

GSC 从 2025 年 11 月开始有品牌词过滤,2026 年 3 月对所有符合条件的网站开放:新增过滤条件 → 查询 → 选「品牌」或「非品牌」。它用 AI 判断,能认出错别字和其他语言的写法。但它只在网域资源、查询量够的站上出现。

我们的站量还小,看不到这个选项,就用正则自己拆:新增过滤条件 → 查询 → 自定义(正则表达式):

(?i)craftsail|craft sail|造物局

选「不匹配」就是非品牌词。

3. 按网页看,特别是新文章

效果报告里切到「网页」标签,按网址过滤 /blog/,就能看到 Blog 的整体表现。每篇新文章发布后,过滤它的 URL,看第一次出现展示是哪天。这个数后面会用来算收录时长。

「查询」标签和「网页」标签配合看:点一个网页,再切到查询,就是这个网页排上了哪些词。一个页面往往排着几十个词,改标题之前先看一眼,别为了一个词把其他词丢了。

4. 网页索引和站点地图

索引 → 网页。看两条线:已编入索引、未编入索引。点「未编入索引」下面的原因,最常见的几个:

原因 意思 怎么办
已发现 - 尚未编入索引 知道这个 URL,还没来抓 新站常见,等;长期不动就加内链
已抓取 - 尚未编入索引 抓了,觉得不值得收 内容太薄或和别的页太像,改内容或合并
重复网页,用户未选定规范网页 有几个 URL 内容一样 检查 canonical
备用网页(有适当的规范标记) 你自己 canonical 到别处了 正常,不用管
已被 noindex 标记排除 你写了 noindex 确认是不是故意的
未找到 (404) 地址打不开 真删了就不用管;不该 404 的要修

站点地图报告里能看到每个 sitemap 提交了多少 URL。拿「已编入索引」对照提交数,就是索引率,公式见第六节。

单个 URL 用网址检查:顶部搜索框输入完整 URL,能看到上次抓取时间、Google 选定的 canonical、抓到的 HTML。「测试实际网址」可以看 Googlebot 现在能拿到什么。

5. 抓取统计

设置 → 抓取统计信息 → 打开报告。只有根级资源才有。

看三样:

总抓取请求数。它包括成功和失败的请求,不是越多越好。

平均响应时间。持续往上走,说明服务器扛不住了。请求数在降、响应时间在涨,通常就是 Google 因为你慢而主动减速。静态站放在 Cloudflare 上,这个数一般很低。

按用途细分:「发现」是第一次抓的新 URL,「刷新」是重抓老 URL。我们每天发 3 篇 Blog,发现类的比例应该稳定在一个水平上,突然掉下去,多半是新文章没进 sitemap,或者内链断了。

主机状态有三项:robots.txt 获取、DNS 解析、服务器连接。看过去 90 天有没有出问题,任意一项红了,Google 会减慢甚至暂停抓取。

几千页以内的站基本不用操心抓取预算,这个报告主要用来发现服务器和配置问题。

6. 生成式 AI 报告

效果 → 生成式 AI。2026 年 6 月先在英国上线,8 月 31 日对全球所有网站开放,数据从 2026 年 5 月 18 日开始,没有更早的。

它统计你的网址在 AI 概览(AI Overviews)和 AI 模式里出现的次数,可以按网页、国家、设备、日期看。

它只有展示次数,没有点击、没有 CTR、没有查询词。这些展示也同时算在普通效果报告里。展示少的站可能看不到这个报告。

它能回答的问题是:哪些页面被 AI 引用了。拿它和 GA4 里 AI 渠道的落地页对照,能看出哪些页面既被引用又带来了人。

7. 数据的坑

GSC 的数据不是没出过错。

2025 年 5 月 13 日到 2026 年 4 月 27 日,GSC 的展示次数因为日志错误被多算了,桌面端、图片搜索尤其明显。点击次数不受影响,但展示、CTR、平均排名在这段时间都不准,而且不会回补。所以这段时间的展示不要拿来做同比,同比用点击。

2026 年 5 月 7 日起 Google 不再展示 FAQ 富结果,FAQ 相关的展示会掉一截,这不是你的问题。

2026 年还有好几次 Discover 和生成式 AI 报告的短期日志错误。

看到数据突然断崖,先去 Google 的 Search Console 数据异常 页面对一下日期,再看图上有没有系统注释。点击稳、展示掉,多半是统计问题;点击和展示一起掉,才是真的掉了。


四、GA4 看什么

GSC 管点击之前,GA4 管点击之后。GA4 看不到搜索词,词要去 GSC 看。

1. 自然搜索流量

报告 → 获取 → 流量获取,主维度选「会话默认渠道组」,看「自然搜索(Organic Search)」这一行。加一个次级维度「会话来源/媒介」,能把 Google 和 Bing 分开。

2. 落地页

报告 → 互动 → 着陆页,加过滤条件「会话媒介」完全匹配 organic。这里看的是搜索进来的人落在哪些页、每个页留不留得住人。

关联了 GSC 以后,报告 → Search Console → Google 自然搜索流量,这张表把 GSC 的点击、展示、排名和 GA4 的互动、关键事件放在同一行,按落地页看最方便。这组报告默认可能没挂在左侧菜单里,要在「报告库」里把 Search Console 集合发布出来。

3. 互动率

GA4 把满足任意一个条件的会话算作「互动会话」:停留超过 10 秒、触发了关键事件、看了 2 个及以上页面。

互动率 = 互动会话数 ÷ 会话数

网上常见的说法是自然搜索的互动率在 55% 到 75% 之间算健康,低于 40% 说明页面和搜索意图对不上。这只是别人的经验值,不同类型的页面差别很大:一篇 Help 回答了问题、用户看完就走,停留不到 10 秒也可能是好事。所以我们主要拿自己的页面跟自己比,同一类页面里特别低的那几个,才值得去看。

流量高、互动低:标题承诺的和页面给的不一样,或者页面太慢。 互动还行、关键事件为零:内容有用,但页面上没给下一步。

4. 关键事件

报告 → 互动 → 关键事件,按会话默认渠道组拆。自然搜索的关键事件率公式见第六节。

不是所有自然流量都一样值钱。进了 Help 和产品页的人,比进了日报 Blog 的人更可能转化,按落地页分组看关键事件率,能看出来哪类页面在带人往下走。

5. AI 渠道

建好第二节那个 AI 渠道以后,在流量获取里就能看到单独一行。再用探索(Explore)建一张表:行是落地页,列是会话数、互动率、关键事件,过滤条件是渠道 = AI。它能告诉你 AI 在引用哪些页面。

据说 GA4 后来也加了内置的 AI 助手渠道,但覆盖的平台不全,Perplexity 就不在里面,历史数据也不回补,所以我们还是用自己建的。


五、Cloudflare 看什么

1. 先分清两种统计

边缘统计(Analytics & Logs → HTTP 流量) Web Analytics
在哪统计 Cloudflare 边缘,每个请求都算 浏览器里的 JS 信标
包含爬虫 包含 基本不含
「访问」的定义 来源不是本站的一次页面浏览 同左,没有 GA 那种会话
适合看 爬虫、状态码、带宽、缓存命中 真人访问量、Core Web Vitals

边缘统计里的访客数不要拿来汇报,它把机器人全算进去了。

2. 搜索引擎爬虫

安全性 → 分析,看机器人分析(Bot analysis)。请求被分成「自动化」「可能自动化」「可能是人」「已验证机器人」。Googlebot、Bingbot 属于已验证机器人里的搜索引擎类。免费套餐能看到的维度比较少,有 Bot Management 的套餐才能细看到每个检测 ID。

我们看两件事:

一是 Googlebot 有没有被误伤。WAF 规则、质询、限速如果挡到了 Googlebot,GSC 那边就会看到抓取失败。写规则时用 cf.client.bot 或 cf.verified_bot_category 把搜索引擎放行。注意 cf.client.bot 会放行所有已验证机器人,包括 AI 爬虫和 SEO 工具。

二是 Googlebot 拿到的状态码。按主机和路径过滤,看 5xx 有没有、4xx 在不在涨。这些数可以和 GSC 抓取统计里的「按响应划分」对照着看。GSC 那边有延迟,Cloudflare 这边几乎是实时的。

3. AI 爬虫

AI Crawl Control 里有三个标签:

概览:请求量、状态码、热门路径,爬虫按运营方分组(OpenAI、Microsoft、Google、ByteDance、Anthropic、Meta 等)。

爬虫:每个爬虫的运营方、带宽、请求数,以及允许还是阻止。

指标:请求随时间的变化、状态码分布、最常被抓的路径。引荐数据(哪些 AI 平台带来了访问、落在哪些路径)只有付费套餐有。

可以按日期、爬虫、运营方、主机名、路径过滤,能导出 CSV。

Googlebot 不在这里,它归机器人管理那边统计。

Cloudflare 2025 年年中公布过一组数:Google 大约每抓 14 个 HTML 页面带来 1 个访客,有的 AI 公司是 1,700 比 1,最高的一家是 73,000 比 1。放行哪些 AI 爬虫是个取舍,我们默认全放,靠第六节的「抓取回报比」看值不值。

4. Core Web Vitals

Web Analytics → Core Web Vitals。看 LCP、INP、CLS 的 P75,每个指标按 Google 的阈值分成良好、需要改进、较差三档。

每个图下面有调试视图,列出拖后腿最严重的 5 个页面元素。可以按 URL、浏览器、国家过滤,海外用户多的站按国家看特别有用。

CLS 只有 Chromium 内核的浏览器能测,Safari 和 Firefox 的用户不算在里面。

PageSpeed Insights 是实验室数据加 Chrome 用户体验报告(CrUX)的 28 天滚动数据,Cloudflare 这里是你自己站点的实时真实用户数据。改了东西想马上看效果,看 Cloudflare。


六、公式

先约定几个记号:

C   点击次数(GSC)
I   展示次数(GSC)
P   平均排名(GSC)
q   一个查询词
p   一篇文章 / 一个页面

1. CTR 要用合计算,不要平均

CTR = ΣC ÷ ΣI

几十个词的 CTR 直接取平均,展示只有 3 次的词和展示 3 万次的词权重一样,结果没法看。任何时候算一组词或一组页面的 CTR,都是先把点击和展示分别加起来,再相除。

2. 自己的 CTR 曲线

网上那些「第 1 名 CTR 27%、第 5 名 6%、第 10 名 2%」的数字,是别人很多站的平均,放到你的站上不一定对。有 AI 概览的查询,第 1 名的 CTR 已经低得多了:Ahrefs 2026 年 2 月的分析里,这类词第 1 名的 CTR 从 2023 年底的 7.3% 降到了 2025 年底的 1.6%。所以用自己的数据算:

CTR_exp(k) = ΣC(q) ÷ ΣI(q)    其中 q 满足:非品牌词,且 round(P(q)) 落在第 k 档

取最近 3 个月,只用非品牌词,品牌词会把前几名的 CTR 抬得离谱。量小的站按单个排名分档样本不够,就分成四档:

第 1 档:排名 1–3
第 2 档:排名 4–6
第 3 档:排名 7–10
第 4 档:排名 11–20

20 名以后展示太少,算出来没有意义。这条曲线每月重算一次,只拿来比较,不拿来预测。

3. CTR 差距

CTR_gap(q) = CTR(q) ÷ CTR_exp(P(q) 所在档) − 1

排在第一页、差距低于 −30% 的词,说明排名够了,但搜索结果里那条摘要没人想点。改 title 和 description,不用改正文。

4. 机会点击

「临门一脚」的词:排在 4 到 15 名之间,再往上挪几名,点击会翻几倍。

Opp(q) = I(q) × (CTR_exp(第 1 档) − CTR(q))      条件:4 ≤ P(q) ≤ 15,非品牌词

按 Opp 从大到小排,就是下个月的工作清单。再按排名把清单分成两类:

P ≤ 10   且 CTR_gap < −30%   →  改标题、改摘要
P 11–15                       →  补内容、加内链,把排名往上推

举个例子:一个词排第 12,每月展示 3,000 次,CTR 1.2%,每月 36 次点击。推到第 4 名,按 7% 的 CTR 算,每月 210 次点击。

动手之前先看这个页面还排着哪些别的词,看最近 3 个月里这个词是不是在几个页面之间来回跳(关键词互相抢),平均排名还可能是不同国家的排名平均出来的,按国家拆开看一眼。

5. 索引率

索引率 = 已编入索引的 URL 数 ÷ sitemap 里提交的 URL 数

Help 和营销页应该接近 100%,低了就去看「未编入索引」的原因。Blog 按月看,日报类的文章不一定每篇都被收,但索引率持续往下走,说明 Google 觉得这批文章不够好。

6. 收录时长和新文覆盖率

我们每天发 3 篇,最关心的是新文章多快能被搜到。

T_index(p)   = GSC 里 p 第一次出现展示的日期 − p 的发布日期
新文覆盖率_7 = 发布 7 天内出现过展示的新文章数 ÷ 这段时间发布的新文章数

每周取当周所有新文章 T_index 的中位数。这个数在缩短,说明 Google 回访变勤了,Blog 的 feed 流和 sitemap 在起作用。变长了,先查新文章有没有进 sitemap、/blog/ 第一页上有没有它。

GSC 数据晚两天,所以按周看,不按天看。

7. 抓取发现占比

发现占比 = 抓取统计里「发现」类请求数 ÷ 总抓取请求数

来自 GSC 抓取统计的「按用途」。持续发新内容的站,这个比例应该稳定。突然掉下去,说明 Googlebot 找不到新 URL 了。

8. Googlebot 错误率

Googlebot 5xx 率 = 返回 5xx 的 Googlebot 请求 ÷ Googlebot 请求总数
Googlebot 4xx 率 = 返回 4xx 的 Googlebot 请求 ÷ Googlebot 请求总数

来自 Cloudflare。5xx 应该接近 0,出现就要当天查。4xx 看趋势,删过页面有一些 404 是正常的,突然涨起来通常是改了 URL 没做跳转,或者有内链写错了。

9. 点击到会话比

点击到会话比 = GA4 中 google / organic 的会话数 ÷ GSC 网页搜索的点击次数

这两个数不会相等。GA4 会漏掉拦截了脚本、没同意 cookie 的用户,一次点击也可能产生多个会话。但比例应该稳定在一个区间里。某天突然掉一大截,多半是 GA4 的代码掉了、同意弹窗改了,而不是 SEO 出了问题。

10. 非品牌点击占比

非品牌占比 = 非品牌词点击 ÷ 总点击

这是衡量 SEO 本身有没有在长的主要指标。总点击涨了,但非品牌占比没涨,说明涨的是品牌知名度,不是搜索排名。

11. 自然搜索关键事件率

关键事件率 = 自然搜索会话里触发的关键事件数 ÷ 自然搜索会话数

按落地页类型分组算(首页、Help、Blog、定价),比算一个全站总数有用。

12. 抓取回报比

抓取回报比(运营方) = 该运营方爬虫的请求数 ÷ 该运营方平台带来的会话数

爬虫请求数来自 Cloudflare AI Crawl Control,会话数来自 GA4 的 AI 渠道(或者 Cloudflare 付费套餐的引荐数据)。Google 那边用 Googlebot 请求数除以自然搜索会话。这个比值越小,说明对方抓你的内容,回报给你的访问越多。某个爬虫抓了很多、什么都没带来,就可以考虑在 AI Crawl Control 里把它关掉。

13. 周环比和告警线

Δ = (本周值 − 上周值) ÷ 上周值

日数据要和上周同一天比,不要和前一天比,周末和工作日的流量差很多。

我们用的告警线:自然搜索会话日环比(对比上周同一天)超过 ±20%,看一眼;点击周环比低于 −20%,要查原因。

14. 下滑页面

页面变化(p) = p 最近 28 天的点击 ÷ p 前 28 天的点击 − 1

每月把低于 −30% 的页面拉出来,结合展示和排名看是哪种情况:

展示 排名 点击 多半是
稳 稳 掉 搜索结果页变了(多了 AI 概览、精选摘要),或者别人的标题更吸引人
掉 掉 掉 排名掉了:内容过时、别人写得更好、算法更新
掉 稳 掉 搜这个词的人少了,季节性或者热度过了
涨 变差 涨 新排上了一批长尾词,正常
掉 — 稳 可能是 GSC 统计问题,先查数据异常页

七、节奏

每天(5 分钟)

  • Cloudflare:Googlebot 有没有 5xx,WAF 有没有误伤搜索引擎
  • GA4:自然搜索会话和上周同一天比,有没有超过 ±20%
  • 前天发的文章,在 GSC 网址检查里看一眼有没有被抓

每周(30 分钟)

  • 填周报(模板在下一节)
  • GSC 非品牌词:点击、展示、CTR,和上周比
  • 本周新文章的收录时长中位数、7 天覆盖率
  • 机会点击清单前 20 个词,挑 3 个动手
  • GSC 网页索引报告里有没有新冒出来的错误

每月(1–2 小时)

  • 重算自己的 CTR 曲线
  • 下滑页面清单,按上面那张表分类处理
  • 索引率,「未编入索引」各原因的数量变化
  • 抓取统计:响应时间、发现占比、主机状态
  • Core Web Vitals P75,按国家看最差的几个
  • AI:生成式 AI 报告里被引用最多的页面、AI 渠道的会话和落地页、各 AI 爬虫的抓取回报比
  • 对一遍 GSC 数据异常页面,把本月的改动补成注释

八、周报模板

每周一份,放在一张表里往下追加。

指标 公式 / 来源 本周 上周 变化 告警线
非品牌点击 GSC,正则排除品牌词 周环比 < −20%
非品牌展示 GSC
非品牌 CTR ΣC ÷ ΣI
非品牌占比 非品牌点击 ÷ 总点击 连续 4 周下降
自然搜索会话 GA4,渠道 = 自然搜索 周环比 < −20%
点击到会话比 GA4 google/organic 会话 ÷ GSC 点击 偏离近 4 周均值 20% 以上
自然搜索互动率 GA4
自然搜索关键事件率 GA4
新文章数 发布记录
收录时长中位数 第一次展示日期 − 发布日期 超过 7 天
新文 7 天覆盖率 7 天内有展示的新文 ÷ 新文 低于 50%
索引率 已编入索引 ÷ sitemap 提交数 Help 低于 95%
Googlebot 5xx 率 Cloudflare 大于 0
LCP P75 Cloudflare Web Analytics 超过 2.5s
AI 展示 GSC 生成式 AI 报告
AI 来源会话 GA4 AI 渠道
本周改动 同步写进 GSC 注释

告警线是我们自己定的,跑一两个月后按自己站点的波动范围调。


九、数据多了以后

界面够用就先用界面。等到词和页面多到界面看不过来,再把数据导出来算。

GSC 可以开 BigQuery 批量导出(设置 → 批量数据导出),每天自动写一份,没有 1000 行的限制,也没有 16 个月的限制,从开通那天起往后保留。GA4 也可以免费导出到 BigQuery。

在 BigQuery 里算第六节的 CTR 曲线,大概是这样:

-- 用 GSC 批量导出的 searchdata_site_impression 表
-- sum_top_position 从 0 开始计数,平均排名 = sum_top_position / impressions + 1
WITH q AS (
  SELECT
    query,
    SUM(clicks) AS clicks,
    SUM(impressions) AS impressions,
    SUM(sum_top_position) / SUM(impressions) + 1 AS position
  FROM `project.searchconsole.searchdata_site_impression`
  WHERE data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
    AND NOT is_anonymized_query
    AND NOT REGEXP_CONTAINS(LOWER(query), r'craftsail|craft sail|造物局')
  GROUP BY query
)
SELECT
  CASE
    WHEN position <= 3 THEN '1: 1-3'
    WHEN position <= 6 THEN '2: 4-6'
    WHEN position <= 10 THEN '3: 7-10'
    WHEN position <= 20 THEN '4: 11-20'
  END AS bucket,
  SUM(clicks) / SUM(impressions) AS ctr_exp,
  SUM(impressions) AS impressions
FROM q
WHERE position <= 20
GROUP BY bucket
ORDER BY bucket;

参考资料

Google

Search Console 数据问题

CTR 曲线与机会词

GA4

Cloudflare

试试「AI」「GitHub」或「发布」
找到下一个行动的起点Tab 切换 · Enter 打开