返回顶部
s

search-console-report搜索控制台报告

Generate comprehensive SEO analysis reports from Google Search Console data with PDF export. Use when the user wants to analyze search performance, get SEO insights, view traffic trends, top pages, top keywords, country/device distribution, or generate a professional PDF report for one or more websites using Google Search Console API. Requires a Google Cloud Service Account JSON key with Search Console read access.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.1.1
安全检测
已通过
133
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

search-console-report

Search Console SEO 报告生成器

从 Google Search Console 数据生成专业、图表丰富的 PDF 报告。涵盖流量趋势、热门页面、热门关键词、国家/设备分布、增长分析和可执行的 SEO 建议。

前置条件

在运行此技能之前,请验证以下要求:

1. 服务账号密钥文件

您需要一个具有 Search Console 属性访问权限的 Google Cloud 服务账号 JSON 密钥文件。文件格式如下:

json
{
type: service_account,
project_id: ...,
privatekeyid: ...,
private_key: -----BEGIN PRIVATE KEY-----\n...,
client_email: xxx@project.iam.gserviceaccount.com,
token_uri: https://oauth2.googleapis.com/token,
...
}

向用户询问其密钥文件的路径。常见位置:~/Downloads/*.json、项目目录。

如果用户还没有密钥文件,请引导他们完成以下步骤:

  1. 1. 在 Google Cloud Console 中创建服务账号(IAM 与管理 > 服务账号)
  2. 为其创建 JSON 密钥(密钥选项卡 > 添加密钥 > JSON)
  3. 将服务账号邮箱添加为 Search Console 中的用户(设置 > 用户和权限 > 添加用户,受限权限即可)
  4. 在项目的 API 库中启用Google Search Console API

2. Python 环境

脚本需要以下包:pyjwt、cryptography、requests、matplotlib、pandas、reportlab。

设置虚拟环境以避免系统冲突:

bash
python3 -m venv /tmp/sc-env
/tmp/sc-env/bin/pip install pyjwt cryptography requests matplotlib pandas reportlab

重要:始终使用 /tmp/sc-env/bin/python 运行脚本,而不是系统 Python。

超时警告:包安装和首次 matplotlib 导入可能较慢(60-120 秒)。对于这些操作,请将 bash 超时设置为 180000 毫秒。

3. PDF 中文字体(macOS)

PDF 使用 STHeiti 实现中日韩文字、拉丁字母和符号的正确渲染。按如下方式注册:

python
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

pdfmetrics.registerFont(TTFont(CNFont, /System/Library/Fonts/STHeiti Medium.ttc, subfontIndex=0))
pdfmetrics.registerFont(TTFont(CNFontLight, /System/Library/Fonts/STHeiti Light.ttc, subfontIndex=0))
pdfmetrics.registerFontFamily(CNFont, normal=CNFontLight, bold=CNFont)

关键字体规则:

  • - 不要使用 UnicodeCIDFont(STSong-Light)——它会导致英文字母间距过窄,并且 Unicode 符号如 •(U+2022)会渲染为乱码字符(例如煉)。
  • 始终使用通过 TTFont 注册的 TrueType 字体,以实现中日韩文字和拉丁字母的正确混合渲染。
  • 在非 macOS 系统上,找到可用的中日韩 TrueType 字体:fc-list :lang=zh file 或查找 Noto Sans CJK / WenQuanYi。

4. 图表 Matplotlib 字体(macOS)

关键:仅使用 STHeiti 无法覆盖韩文字形——韩文关键词或国家名称将显示为空心矩形(□)。请改用 Arial Unicode MS,它覆盖中日韩文字、韩文和大多数其他文字:

python
import matplotlib.font_manager as fm

matplotlib.rcParams[font.family] = sans-serif
matplotlib.rcParams[axes.unicode_minus] = False

unicodefont_path = /Library/Fonts/Arial Unicode.ttf
if not os.path.exists(unicodefont_path):
unicodefont_path = /System/Library/Fonts/STHeiti Medium.ttc # 备用
fm.fontManager.addfont(unicodefont_path)
ufname = fm.FontProperties(fname=unicodefontpath).get_name()
matplotlib.rcParams[font.sans-serif] = [_ufname, DejaVu Sans]

不要尝试通过 font.sans-serif 列表组合 STHeiti 和 AppleSDGothicNeo——matplotlib 每次渲染只使用一种字体,不进行逐字形回退,因此该列表仅在第一个字体中存在字形时才有帮助。

分步说明

第 1 步:收集用户输入

询问或确定:

  • - 密钥文件路径:服务账号 JSON 密钥文件的路径
  • 网站 URL:一个或多个 Search Console 属性 URL(格式:https://www.example.com/)
  • 日期范围:默认为最近 90 天。用户可请求自定义范围。
  • 输出路径:保存 PDF 和数据文件的位置。默认为项目目录。
  • 语言:报告可为中文(默认)或英文——与用户语言匹配。

第 2 步:通过 Google API 进行身份验证

使用基于 JWT 的服务账号身份验证。以下是确切的身份验证代码:

python
import json, time, jwt, requests

def getaccesstoken(key_file):
with open(key_file) as f:
creds = json.load(f)

now = int(time.time())
payload = {
iss: creds[client_email],
scope: https://www.googleapis.com/auth/webmasters.readonly,
aud: creds[token_uri],
iat: now,
exp: now + 3600,
}
signedjwt = jwt.encode(payload, creds[privatekey], algorithm=RS256)

resp = requests.post(creds[token_uri], data={
grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer,
assertion: signed_jwt,
})
resp.raiseforstatus()
return resp.json()[access_token]

错误处理:如果身份验证失败并返回 403,则可能未启用 API 或服务账号没有 Search Console 访问权限。告知用户需要检查哪一项。

第 3 步:从 Search Console API 获取数据

对每个网站使用 Search Analytics API 端点。基本查询函数:

python
import datetime

END_DATE = datetime.date.today() - datetime.timedelta(days=3) # 数据约有 3 天延迟
STARTDATE = ENDDATE - datetime.timedelta(days=89)

def querysc(token, siteurl, dimensions, start=None, end=None, row_limit=100):
查询 Search Console Search Analytics API。

参数:
token: OAuth2 访问令牌
site_url: 完整属性 URL,例如 https://www.example.com/
dimensions: 维度列表。有效值:
- date — 每日细分
- query — 搜索关键词
- page — 页面 URL
- country — ISO 3166-1 alpha-3 国家代码(小写)
- device — DESKTOP、MOBILE、TABLET
- searchAppearance — 富结果类型
可组合:[query, page] 用于关键词-页面矩阵
start: 开始日期(datetime.date)。默认为 START_DATE。
end: 结束日期(datetime.date)。默认为 END_DATE。
row_limit: 最大行数(最大 25000)。

返回:
行字典列表,键为:keys(列表)、clicks、impressions、ctr、position
注意:ctr 为小数(0.05 = 5%),显示时需乘以 100。

url = fhttps://www.googleapis.com/webmasters/v3/sites/{requests.utils.quote(site_url, safe=)}/searchAnalytics/query
body = {
startDate: (start or START_DATE).isoformat(),
endDate: (end or END_DATE).isoformat(),
dimensions: dimensions,
rowLimit: row_limit,
}
resp = requests.post(url, headers={Authorization: fBearer {token}}, json=body)
resp.raiseforstatus()
return resp.json().get(rows, [])

对于每个网站,获取以下所有数据(这是完整列表——不要跳过任何一项):

#查询维度row_limit目的
1每日流量趋势[date]25000图表的时间序列
2
热门页面 | [page] | 50 | 访问量最大的页面 |
| 3 | 热门查询 | [query] | 50 | 搜索最多的关键词 |
| 4 | 国家分布 | [country] | 30 | 地理细分 |
| 5 | 设备分布

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 search-console-report-1775979731 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 search-console-report-1775979731 技能

通过命令行安装

skillhub install search-console-report-1775979731

下载

⬇ 下载 search-console-report v1.1.1(免费)

文件大小: 14.01 KB | 发布时间: 2026-4-13 11:54

v1.1.1 最新 2026-4-13 11:54
Fix: Output PDF to project/reports/ subdirectory instead of project root; organize workspace output into reports/, data/, charts/, screenshots/, scripts/

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部