用 OpenClaw 打造本地化 SEO 数据查询系统

作为一个管理着多个网站的独立开发者,我每周都要花大量时间登录 Google Search Console、Google Analytics 和 Bing Webmaster Tools,导出数据,复制粘贴到表格里,然后盯着数字发呆。

直到有一天,我突然意识到:我有一个本地运行的 AI Agent (OpenClaw),为什么不让它帮我干这些重复劳动?

于是我花了一个下午,搭建了一套完全本地化的 SEO 数据查询系统。现在,我只需要对 AI 说一句话,它就能自动帮我分析所有网站的 SEO 表现,并给出可执行的优化建议。

这篇文章记录了整个实现过程,以及我踩过的所有坑。

现在的工作流是什么样的?

早上起床,泡杯咖啡,然后随口问 AI:

“帮我看看 slitherlinks.com 最近一周的 SEO 表现”

30 秒后,AI 给我一份完整的分析报告:

📊 slitherlinks.com 近 7 天 SEO 数据分析

Google Search Console:
• 总点击: 892 次 (↑ 12% vs 上周)
• 总展示: 34,521 次 (↑ 8%)
• 平均 CTR: 2.6% (↑ 0.3%)
• 平均排名: 15.2 (↑ 2.1)

⚠️ 发现机会:
“slither link solver” 展示 3,200 次但点击率仅 1.2%
→ 建议优化 meta description,突出“免费在线求解器”

Google Analytics:
• 活跃用户: 1,234 (↑ 15%)
• 主要流量来源: Organic Search (68%), Direct (22%)
• 热门页面: /puzzle-generator (45% 流量)

Bing Webmaster:
• 爬取页面: 156 (无错误)
• Top 关键词: “slitherlink online” 排名第 3

💡 行动建议:
为 “slither link solver” 优化标题和描述
/puzzle-generator 页面表现优秀,考虑增加内链
Bing 排名稳定,可以考虑针对性优化

不用登录任何后台,不用导出 CSV,不用手动对比数据。AI 自动帮我完成了所有分析工作,甚至还能发现我自己可能忽略的优化机会。

这就是我想要的工作方式。

技术架构:极简主义

整个系统的设计哲学是:不需要云服务,不需要数据库,不需要复杂的中间层。

工作流程非常简单:

  1. AI Agent 收到我的请求
  2. 通过 exec 工具调用本地 Node.js 脚本
  3. 脚本直接调用 Google / Bing 的官方 API
  4. 返回纯文本结果给 AI
  5. AI 分析数据并给出建议

所有代码都放在本地 Mac mini 上,密钥文件也在本地,完全不依赖任何第三方服务。

文件结构:

~/.openclaw/workspace/
├── scripts/
│   ├── gsc-report.cjs         # Google Search Console 查询
│   ├── ga4-report.cjs         # Google Analytics 4 查询
│   └── bing-report.cjs        # Bing Webmaster 查询
└── credentials/
    ├── gcp-service-account.json # Google 服务账号密钥
    └── bing-webmaster-api-key.txt # Bing API Key

三个脚本文件,两个密钥文件,就这么简单。

配置过程:一步步来

整个配置过程大约需要 60 分钟,主要时间花在 Google Cloud Console 的各种授权上。我把它拆成了 6 个步骤,每个步骤都标注了预计时间:

步骤 1: Google Cloud 配置 (15 分钟)

创建 Service Account 并启用 API

步骤 2: GSC 授权 (10 分钟)

为每个站点添加权限

步骤 3: GA4 授权 (10 分钟)

配置 Property 访问权限

步骤 4: Bing 配置 (5 分钟)

生成并保存 API Key

步骤 5: 安装依赖 (5 分钟)

npm 安装必要的库

步骤 6: 脚本实现 (15 分钟)

创建三个查询脚本

总计: 约 60 分钟 | 难度: ⭐⭐⭐☆☆

下面我会详细讲解每一步,以及我踩过的坑。

💡 准备工作:创建所需文件夹

在开始之前,我们需要在电脑上创建存放配置和脚本的文件夹,因为里面涉及安全凭证。打开终端(Terminal)并复制运行以下命令:

mkdir -p ~/.openclaw/workspace/scripts
mkdir -p ~/.openclaw/workspace/credentials

注:~/.openclaw 是一个隐藏文件夹,它不会直接展示在桌面上,但你可以后续在此目录内存放所有 AI 相关的数据。

第一步:Google Cloud Console 配置 (15 分钟)

Google 的 API 访问需要通过 Service Account 来实现。这是一个“机器人账号”,专门用于程序化访问。

创建 Service Account

  1. 打开 Google Cloud Console (console.cloud.google.com)
  2. 创建新项目(我取名叫 openclaw-seo)
  3. 进入 IAM & Admin → Service Accounts
  4. 点击「Create Service Account」,名字随意(比如 openclaw-seo-reader)
  5. 角色可以不选,后续在各平台单独授权
  6. 创建好后,点击该 SA → Keys → Add Key → Create new key → JSON
  7. 下载 JSON 文件,保存到 ~/.openclaw/workspace/credentials/gcp-service-account.json

JSON 文件里有一个 client_email 字段,长这样:

openclaw-seo-reader@your-project.iam.gserviceaccount.com

记住这个邮箱地址,后面 GSC 和 GA4 授权都要用到它。

启用 API

在 Google Cloud Console 的「APIs & Services → Library」中搜索并启用:

  • Google Search Console API
  • Google Analytics Data API

两个都要启用,否则脚本会报 “API has not been enabled” 错误。

第二步:Google Search Console 授权 (10 分钟)

这里有个容易混淆的地方:GSC 的权限不是在 Google Cloud 设置的,而是在 Search Console 网站本身。

  1. 打开 Google Search Console (search.google.com/search-console)
  2. 选择你的站点(每个站都要单独操作)
  3. 左侧「设置」→「用户和权限」→「添加用户」
  4. 输入刚才的 client_email
  5. 权限选择「受限」即可(只读,够用了)
⚠️ 踩坑提醒:每个站都要手动加一次,没有全局批量授权的方法。如果你有 10 个站点,就要重复 10 次这个操作。

第三步:Google Analytics 4 授权 (10 分钟)

GA4 的授权流程和 GSC 类似:

  1. 打开 Google Analytics (analytics.google.com)
  2. 左下角「管理」→ 选择目标媒体资源(Property)
  3. 「媒体资源」栏 →「媒体资源访问权限管理」
  4. 右上角「+」→「添加用户」
  5. 输入 client_email,角色选「查看者」
🚨 重要踩坑:GA4 的 Property ID 和数据流 ID 是两个不同的东西!
  • Property ID: 在「媒体资源」→「媒体资源详情」里看,是一串纯数字,比如 489888837
  • 数据流 ID: 在「数据流」里看,也是数字但不同

脚本里用的是 Property ID,格式为 properties/489888837,别填成数据流 ID! 我第一次配置的时候就搞混了,调试了半天才发现是 ID 填错了。

第四步:Bing Webmaster Tools 配置 (5 分钟)

Bing 的方式简单多了,不需要 Service Account,直接用 API Key:

  1. 打开 Bing Webmaster Tools (bing.com/webmasters)
  2. 右上角「设置」(齿轮图标)→「API access」
  3. 点击「Generate API Key」
  4. 复制 API Key,保存到 ~/.openclaw/workspace/credentials/bing-webmaster-api-key.txt

文件里直接放纯文本的 key,一行即可。

第五步:安装依赖 (5 分钟)

在脚本目录里初始化 npm 并安装依赖:

cd ~/.openclaw/workspace/scripts
npm install googleapis google-auth-library
🚨 重要踩坑: package.json 里不要加 “type”: “module”!

如果你的 package.json 有 "type": "module", Node.js 会把所有 .js 文件当作 ES Module 处理,导致 “require is not defined” 报错。

解决方案:把脚本文件命名为 .cjs 而不是 .js,这样无论 package.json 怎么配置,Node.js 都会用 CommonJS 模式加载。这就是为什么我的脚本叫 gsc-report.cjs 而不是 gsc-report.js

第六步:脚本实现 (15 分钟)

现在到了最核心的部分:写出可以运行的查询脚本。

🔨 GSC 脚本: gsc-report.cjs

这个脚本查询关键词排名、点击、展示、CTR 和 Top 页面。

完整代码示例(可直接复制):

使用你喜欢的文本编辑器(如 VS Code,或记事本),将下面的代码保存到 ~/.openclaw/workspace/scripts/gsc-report.cjs 文件中:

const { google } = require('googleapis');
const path = require('path');

// 指向你在第一步下载的秘钥文件
const KEY_PATH = path.join(__dirname, '../credentials/gcp-service-account.json');

async function getGscData(siteUrl) {
  const auth = new google.auth.GoogleAuth({
    keyFile: KEY_PATH,
    scopes: ['https://www.googleapis.com/auth/webmasters.readonly'],
  });
  const searchconsole = google.searchconsole({ version: 'v1', auth });
  
  const res = await searchconsole.searchanalytics.query({
    siteUrl: siteUrl,
    requestBody: {
      startDate: '2024-01-01', // 你可以修改为你需要的时间
      endDate: '2024-01-28',
      dimensions: ['query'],
      rowLimit: 5,
    },
  });
  
  console.log(`=== ${siteUrl} ===`);
  console.log(res.data.rows);
}

// 获取命令行传入的网站参数
const targetSite = process.argv[2] || 'sc-domain:example.com'; 
getGscData(targetSite).catch(console.error);

⚠️ 重要踩坑:GSC 资源名格式有两种,必须跟 Search Console 里一致!

  • 「域名资源」(Domain property): 格式为 sc-domain: example.com
  • 「网址前缀资源」(URL-prefix property): 格式为 https://example.com/ (注意末尾斜杠)

如果格式不对,API 会返回 “403 User does not have sufficient permission” 错误,实际上是资源名写错了。

运行测试:
# 打开终端,替换为真实域名测试运行:
node ~/.openclaw/workspace/scripts/gsc-report.cjs "sc-domain:yoursite.com"

🔨 GA4 脚本: ga4-report.cjs

这个脚本查询用户、会话、页面浏览等(限于篇幅,这里不展开完整代码,用 google.analyticsdata 类比 GSC 实现即可)。

运行测试:
node ~/.openclaw/workspace/scripts/ga4-report.cjs slitherlinks 7

🔨 Bing 脚本: bing-report.cjs

Bing API 用 HTTPS 请求,不需要 OAuth,代码极其简单。

完整代码示例:
const https = require('https');
const fs = require('fs');

const key = fs.readFileSync('../credentials/bing-webmaster-api-key.txt', 'utf8').trim();
const siteUrl = process.argv[2] || 'https://yoursite.com';

https.get(`https://ssl.bing.com/webmaster/api.svc/json/GetRankAndTrafficStats?siteUrl=${siteUrl}&apikey=${key}`, (res) => {
  let data = '';
  res.on('data', chunk => data += chunk);
  res.on('end', () => console.log(JSON.parse(data)));
});

第七步:让 AI Agent 使用这些脚本

很多纯小白配置完脚本后,依然不知道 AI 是怎么调用的。事实上,我们需要通过创建一份 Skill (技能) 文件授权给 OpenClaw:

在我们系统的 ~/.openclaw/skills/ 目录下新建文件 seo-assistant.yaml,输入以下内容并保存:

name: "SEO 数据监控"
description: "调用本地 Node.js 脚本读取 Google Search Console 数据"
version: "1.0.0"
triggers: ["SEO表现", "分析网站流量"]

steps:
  - action: execute_command
    command: "node ~/.openclaw/workspace/scripts/gsc-report.cjs {{site_url}}"
  - action: respond
    message: "我已成功查询了您的后台日志,结合数据,分析建议如下:\n\n{{stdout}}"

完成并保存后,在终端运行 openclaw skills reload 让配置生效。

💬 最终实战对话测试:

你:通过新创建的 SEO 技能,帮我看看最近 “sc-domain:yoursite.com” 的 SEO 表现

OpenClaw: (接收到指令,自动调用 execute_command 去执行代码,等待返回日志)
“我已成功查询了您的后台,根据最新分析… 网站点击上升… 建议重点关注…”

进阶玩法:定时报告

如果你想让 AI 每天早上自动给你发送 SEO 报告,可以用 cron:

设置方法:

  1. 编辑 crontab: crontab -e
  2. 添加定时任务:
0 8 * * * node /Users/yourname/.openclaw/workspace/scripts/gsc-report.cjs >> /tmp/seo-report.log 2>&1

这样每天早上 8 点,脚本就会自动运行并生成报告。或者在 OpenClaw 的 HEARTBEAT.md 里加入 SEO 检查任务,让 Agent 定期主动查询。

安全注意事项

虽然这套系统完全本地化,但密钥管理还是要注意:

  • credentials/ 目录已在 .gitignore 中,绝对不要上传到 GitHub
  • Service Account 只申请了只读权限(readonly scope),即使密钥泄露也无法修改数据
  • Bing API Key 是纯文本文件,注意文件权限

推荐设置更严密的权限:

chmod 600 ~/.openclaw/workspace/credentials/bing-webmaster-api-key.txt
chmod 600 ~/.openclaw/workspace/credentials/gcp-service-account.json

我踩过的所有坑

配置过程中我遇到了不少问题,这里总结一下:

问题 1: require is not defined
原因: package.json 有 “type”: “module”
解决: 文件改名为 .cjs
问题 2: 403 insufficient permission
原因: GSC 资源名格式错误
解决: 用 sites.list() 确认正确格式
问题 3: sc-domain: vs https://
原因: 两种资源类型格式不同
解决: 域名资源用 sc-domain:, URL 前缀用完整 URL
问题 4: GA4 Property ID 填错
原因: 误填了数据流 ID
解决: 去「媒体资源详情」确认纯数字 Property ID
问题 5: API 返回 API not enabled
原因: 忘记在 GCP 启用 API
解决: 去 Library 搜索并启用对应 API
问题 6: 新站没数据
原因: SA 没加到该站的 GSC/GA4 权限
解决: 每个站都要单独授权
总结: 最让我头疼的是 GSC 资源名格式的问题。我花了一个小时调试,最后才发现是 sc-domain:https:// 的区别。

总结

整套流程下来大约需要 30-60 分钟,主要时间花在 Google Cloud Console 配置和各站点授权上。

但一旦配置完成,你就拥有了一个完全自动化的 SEO 数据分析系统:

  • [x] 不用登录任何后台
  • [x] 不用导出 CSV
  • [x] 不用手动对比数据
  • [x] AI 自动发现优化机会
  • [x] 所有数据都在本地处理

对我来说,这是一个巨大的效率提升。现在我每天早上只需要问 AI 一句话,就能了解所有网站的 SEO 表现,然后专注于真正重要的优化工作。

如果你也在管理多个网站,强烈推荐试试这套方案。

📚 相关资源:

未经允许不得转载:Scrape SEO » Let OpenClaw auto analyze SEO data