其他
需要拉取和分析 Google Search Console…
通过 Google Search Console API 查询点击、展示、CTR、平均排名、URL 收录和 sitemap 状态,并识别 SEO 优化机会。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 57/100 ×0.15
适用场景
需要拉取和分析 Google Searc特定
解决思路
- 配置 Google OAuth 凭据:设置 `GOOGLE_CLIENT_ID`、`GOOGLE_CLIENT_SECRET`,并获取带 `https://www.googleapis.com/auth/webmasters.readonly` scope 的有效 OAuth access token。
- 将凭据放入 `.env`、`.env.local` 或 `~/.claude/.env.global`。
- 获取授权 URL:让用户在浏览器访问 `https://accounts.google.com/o/oauth2/v2/auth?client_id=${GOOGLE_CLIENT_ID}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/webmasters.readonly&response_type=code&access_type=offline`。
- 用授权码换 token:`POST https://oauth2.googleapis.com/token`,参数 `code={AUTH_CODE}`、`client_id=${GOOGLE_CLIENT_ID}`、`client_secret=${GOOGLE_CLIENT_SECRET}`、`redirect_uri=urn:ietf:wg:oauth:2.0:oob`、`grant_type=authorization_code`。
- 刷新过期 token:`POST https://oauth2.googleapis.com/token`,参数 `refresh_token={REFRESH_TOKEN}`、`client_id=${GOOGLE_CLIENT_ID}`、`client_secret=${GOOGLE_CLIENT_SECRET}`、`grant_type=refresh_token`。
- 列出可用站点:`GET https://www.googleapis.com/webmasters/v3/sites`,Header 使用 `Authorization: Bearer ${GSC_ACCESS_TOKEN}`,解析返回的 `siteEntry`,输出 `siteUrl` 与 `permissionLevel`。
- 识别站点 URL 格式:URL 前缀用 `https://example.com/`,域名属性用 `sc-domain:example.com`。
- 核心搜索表现报告接口:`POST https://www.googleapis.com/webmasters/v3/sites/{siteUrl}/searchAnalytics/query`。
- 调用搜索表现接口时 `{siteUrl}` 必须 URL 编码,例如 `https%3A%2F%2Fexample.com%2F` 或 `sc-domain%3Aexample.com`。
- 查 Top Queries:请求体设置 `startDate`、`endDate`、`dimensions` 为 `query`、`rowLimit` 为 `50`、`startRow` 为 `0`。
- 查 Top Pages:请求体设置 `startDate`、`endDate`、`dimensions` 为 `page`、`rowLimit` 为 `50`。
- 查 Query + Page 组合:请求体设置 `dimensions` 为 `query` 和 `page`、`rowLimit` 为 `100`。
- 在 Query + Page 组合查询中可用 `dimensionFilterGroups` 过滤,例如 `dimension` 为 `page`、`operator` 为 `contains`、`expression` 为 `/blog/`。
- 可用维度 `query`:搜索查询。
- 可用维度 `page`:URL。
- 可用维度 `country`:国家代码(ISO 3166-1 alpha-3)。
- 可用维度 `device`:`DESKTOP`、`MOBILE`、`TABLET`。
- 可用维度 `date`:单个日期。
- 可用维度 `searchAppearance`:富媒体结果类型。
- 解析搜索表现响应:读取 `rows[]`,每行包含 `keys`、`clicks`、`impressions`、`ctr`、`position`,将 `ctr` 乘以 100 显示为百分比。
- 按日期看搜索表现:请求体设置 `dimensions` 为 `date`、`rowLimit` 为 `1000`、`startDate`、`endDate`。
- 跟踪特定 query 随时间变化:在按日期请求中加入 `dimensionFilterGroups`,过滤 `dimension` 为 `query`、`operator` 为 `equals`、`expression` 为 `your target keyword`。
- 检查 URL 收录:`POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect`。
- URL Inspection 请求体设置 `inspectionUrl` 为待检查 URL,`siteUrl` 为 `sc-domain:example.com`。
- 读取 URL Inspection 响应字段:`inspectionResult.indexStatusResult.coverageState`,例如 `Submitted and indexed`、`Crawled - currently not indexed`。
- 读取 URL Inspection 响应字段:`inspectionResult.indexStatusResult.robotsTxtState`,例如 `ALLOWED` 或 `DISALLOWED`。
- 读取 URL Inspection 响应字段:`inspectionResult.indexStatusResult.indexingState`,例如 `INDEXING_ALLOWED` 或 `INDEXING_NOT_ALLOWED`。
- 读取 URL Inspection 响应字段:`inspectionResult.indexStatusResult.lastCrawlTime`,即 Googlebot 最后抓取时间。
- 读取 URL Inspection 响应字段:`inspectionResult.indexStatusResult.crawledAs`,例如 `DESKTOP` 或 `MOBILE`。
- 读取 URL Inspection 响应字段:`inspectionResult.mobileUsabilityResult.verdict`,例如 `PASS`、`FAIL` 或 `VERDICT_UNSPECIFIED`。
- 列出 Sitemaps:`GET https://www.googleapis.com/webmasters/v3/sites/sc-domain%3Aexample.com/sitemaps`,Header 使用 `Authorization: Bearer ${GSC_ACCESS_TOKEN}`。
- 解析 sitemap 列表:读取 `sitemap[]`,输出 `path`、`type`、`lastSubmitted`,以及 `contents[0].submitted` 和 `contents[0].indexed`。
- 提交 Sitemap:`PUT https://www.googleapis.com/webmasters/v3/sites/sc-domain%3Aexample.com/sitemaps/https%3A%2F%2Fexample.com%2Fsitemap.xml`,Header 使用 `Authorization: Bearer ${GSC_ACCESS_TOKEN}`。
- 找低垂果实:拉取 `dimensions` 为 `query` 和 `page`、`rowLimit` 为 `1000` 的数据,过滤 `impressions > 100`、`ctr < 0.03`、`position < 20`,这些 query 适合优化 title 和 description。
- 找 Striking Distance:过滤 `position` 在 5 到 20 之间且 `impressions > 50` 的 query,按 `impressions` 降序取前 30,适合内容优化冲 top 5。
- 检测关键词蚕食:拉取 query+page 数据,按 `query` 分组;若同一 query 有多个 page 且总 `impressions > 100`,输出这些 page 的 `page`、`position`、`impressions`、`clicks`。
- 完整 GSC 审计第 1 步:计算最近 90 天 vs 前 90 天的总 clicks、impressions、平均 CTR、平均 position。
- 完整审计第 2 步:按 clicks 列出 Top 30 Queries,并带 CTR 和 position。
- 完整审计第 3 步:按 clicks 列出 Top 20 Pages,并带 CTR 和 position。
- 完整审计第 4 步:按设备拆分 Desktop vs Mobile 表现。
- 完整审计第 5 步:找 High impressions + Low CTR 的低垂果实机会。
- 完整审计第 6 步:找 Position 5-20 的 Striking Distance 关键词。
- 完整审计第 7 步:找同一 query 多个竞争页面的 Cannibalization。
- 完整审计第 8 步:抽查重要 URL 的 Index Coverage。
- 完整审计第 9 步:验证 Sitemaps 已提交且已收录。
- 审计报告格式:按域名和日期范围输出 Summary 表,包含 Clicks、Impressions、Avg CTR、Avg Position 的 Current、Previous、Change。
- 报告继续输出 Top Queries 表:Query、Clicks、Impressions、CTR、Position。
- 报告优化机会:Title/Description Optimization(High Impressions, Low CTR),列出 query、impressions、CTR、position、page 和建议。
- 报告内容优化:Content Optimization(Striking Distance),列出 query、position、impressions,并建议把 query 加入 H2、扩展 topic 段落。
- 报告蚕食修复:Cannibalization Fixes,列出 query 出现在 n 个页面,建议 consolidate 到 best_url,对 other_urls 做 redirect 或 noindex。
- 注意限流:Search Analytics API 为 1,200 queries per minute;URL Inspection API 为 2,000 inspections per day per property;搜索数据通常延迟 2-3 天。
- 处理 403:无该 property 权限,去 GSC 验证所有权。
- 处理 400:日期范围无效,日期必须在最近 16 个月内。
- 处理 Empty rows:没有匹配过滤器的数据,扩大日期范围或移除过滤器。
适用边界 · 注意事项
- 没有 Google Search Console 属性权限或无法完成 OAuth 授权时,不要使用。
- 需要近实时搜索数据时不要使用,Search 数据通常延迟 2-3 天。
- 查询日期超出最近 16 个月时不要使用,会返回 400。