解放双手:我是如何搭建本地 AI Agent 实现全自动 SEO 数据分析的

本篇文章欲回答的核心问题:作为一个管理多个网站的独立开发者,如何打破繁琐的手动数据导出流程,利用本地 AI Agent 搭建一套完全自动化的 SEO 数据分析系统?

作为一个管理着多个网站的独立开发者,我曾经每周都要陷入一种机械性的循环:登录 Google Search Console、Google Analytics 和 Bing Webmaster Tools,导出数据,复制粘贴到表格里,然后盯着枯燥的数字发呆。这种重复劳动不仅消耗时间,更消磨了对数据本身的敏感度。

直到有一天,我意识到:既然我有一个本地运行的 AI Agent (OpenClaw),为什么不让它帮我干这些重复劳动?于是,我花了一个下午,搭建了一套完全本地化的 SEO 数据查询系统。现在,我只需要对 AI 说一句话,它就能自动帮我分析所有网站的 SEO 表现,并给出可执行的优化建议。

图像

理想的工作流:从手动搬砖到智能对话

本段欲回答的核心问题:这套自动化系统在实际工作场景中是如何运作的,能带来什么样的效率提升?

现在的早晨工作流变得异常轻松。起床,泡杯咖啡,然后随口问 AI:“帮我看看最近一周的 SEO 表现”。仅仅 30 秒后,AI 就会给我一份完整的分析报告,涵盖了 Google Search Console、Google Analytics 和 Bing Webmaster 的核心数据。

例如,AI 会告诉我总点击次数上升了 12%,展示次数上升了 8%,并敏锐地发现某个关键词虽然展示量高达 3,200 次,但点击率仅为 1.2%。基于此,AI 会直接给出建议:“建议优化 meta description,突出‘免费在线求解器’”。

不用登录任何后台,不用导出 CSV,不用手动对比数据。AI 自动帮我完成了所有分析工作,甚至还能发现我自己可能忽略的优化机会。这就是我想要的工作方式:让工具服务于人,而不是人服务于工具。

图像

技术架构:极简主义的胜利

本段欲回答的核心问题:这套系统背后的技术架构是怎样的,为什么选择这种架构?

整个系统的设计哲学是极简主义:不需要云服务,不需要数据库,不需要复杂的中间层。对于独立开发者而言,维护成本越低,价值越高。

工作流程非常简单直接:

  1. AI Agent 收到我的自然语言请求。
  2. Agent 通过 exec 工具调用本地 Node.js 脚本。
  3. 脚本直接调用 Google 或 Bing 的官方 API。
  4. API 返回纯文本结果给 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

三个脚本文件,两个密钥文件,构成了整个系统的核心。

配置实战:从零搭建本地 SEO 自动化系统

本段欲回答的核心问题:具体的安装与配置步骤是什么,每个步骤有哪些关键细节和注意事项?

整个配置过程大约需要 60 分钟,主要时间花在 Google Cloud Console 的各种授权上。为了方便操作,我将其拆分为 6 个清晰的步骤。

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

Google 的 API 访问需要通过 Service Account(服务账号)来实现。这是一个“机器人账号”,专门用于程序化访问,而非人类用户登录。

图像
  1. 创建项目:打开 Google Cloud Console,创建新项目(例如命名为 openclaw-seo)。
  2. 创建服务账号:进入“IAM & Admin” -> “Service Accounts”,点击“Create Service Account”。名字随意,角色可以暂不选择,后续在各平台单独授权。
  3. 生成密钥:创建好后,点击该服务账号 -> “Keys” -> “Add Key” -> “Create new key” -> 选择“JSON”格式。下载 JSON 文件,并保存到 ~/.openclaw/workspace/credentials/gcp-service-account.json
  4. 启用 API:在 Google Cloud Console 的“APIs & Services” -> “Library”中搜索并启用“Google Search Console API”和“Google Analytics Data API”。这两个 API 必须启用,否则脚本运行时会报错。

关键细节:下载的 JSON 文件里有一个 client_email 字段,形如 openclaw-seo-reader@openclaw-seo.iam.gserviceaccount.com。请务必记住这个邮箱地址,后续在 GSC 和 GA4 授权时都要用到它。

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

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

  1. 打开 Google Search Console。
  2. 选择你的站点(注意:每个站点都要单独操作)。
  3. 左侧导航栏选择“设置” -> “用户和权限” -> “添加用户”。
  4. 输入刚才记录的 client_email
  5. 权限选择“受限”即可,因为脚本只需要读取数据。

反思与教训:如果你有 10 个站点,就要重复 10 次这个操作,目前没有全局批量授权的方法。虽然繁琐,但为了数据安全,这是必须的步骤。

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

GA4 的授权流程与 GSC 类似,但有一个巨大的坑需要避开。

  1. 打开 Google Analytics。
  2. 左下角点击“管理” -> 选择目标媒体资源。
  3. 在“媒体资源”栏中找到“媒体资源访问权限管理”。
  4. 点击右上角“+” -> “添加用户”,输入 client_email,角色选“查看者”。

重大避坑指南:GA4 的 Property ID(媒体资源 ID)和数据流 ID 是两个完全不同的东西!

  • Property ID:在“媒体资源” -> “媒体资源详情”里查看,是一串纯数字,例如 489888837
  • 数据流 ID:在“数据流”里查看,也是数字但格式不同。

脚本里需要使用的是 Property ID,格式为 properties/489888837。我第一次配置时误填了数据流 ID,导致调试了半天脚本报错。请务必确认此处填写的 ID 类型。

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

相比 Google 的复杂授权,Bing 的方式简单直接,不需要 Service Account,只需一个 API Key。

  1. 打开 Bing Webmaster Tools。
  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"
如果你的项目配置了 ES Module,Node.js 会把所有 .js 文件当作模块处理,导致使用 require 语法时出现 “require is not defined” 报错。

解决方案:将脚本文件命名为 .cjs (CommonJS) 后缀,而不是 .js。这样无论 package.json 如何配置,Node.js 都会强制使用 CommonJS 模式加载。这也是为什么我的脚本命名为 gsc-report.cjs 的原因。

第六步:脚本实现与核心逻辑 (15 分钟)

这是最核心的部分,我们需要编写三个查询脚本来连接数据源。

图像

GSC 脚本:gsc-report.cjs

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

核心逻辑如下:

  1. 使用 googleapis 库连接 Google Search Console API。
  2. 读取本地的 Service Account JSON 密钥进行认证。
  3. 配置站点列表。这里有一个极易踩的坑:资源名格式必须与 Search Console 一致

    • 域名资源:格式为 sc-domain:example.com
    • 网址前缀资源:格式为 https://example.com/(注意末尾斜杠)。
  4. 调用 searchanalytics.query 方法查询数据。

反思:如果格式不对,API 会返回 “403 User does not have sufficient permission” 错误。这个错误信息非常误导人,你会以为是权限没配好,实际上可能是资源名写错了。建议先调用 searchconsole.sites.list() 列出所有已授权站点,确认正确的格式。

GA4 脚本:ga4-report.cjs

这个脚本查询用户、会话、页面浏览、流量来源等数据。

核心逻辑:

  1. 使用 google.analyticsdata 连接 GA4 API。
  2. 配置 Property ID(再次提醒:纯数字)。
  3. 调用 properties.runReport 方法,设置日期范围和维度(如 sessionDefaultChannelGroup, country, pagePath)。

Bing 脚本:bing-report.cjs

Bing API 不需要 OAuth,直接使用 HTTPS 请求,代码最为简单。

核心逻辑:

  1. 使用 Node.js 原生 https 模块。
  2. 读取本地 API Key 文件。
  3. 调用 Bing Webmaster API 端点(如 GetRankAndTrafficStats, GetQueryStats)。

让 AI Agent 理解并执行任务

本段欲回答的核心问题:脚本配置完成后,如何让 AI Agent 真正“懂”这些数据并提供价值?

配置完成后,AI Agent 就可以通过 exec 工具直接调用上述脚本。但这不仅仅是执行命令,更重要的是 AI 对数据的二次加工。

当我说:“帮我看看 slitherlinks 站点最近 7 天的 SEO 表现”时,AI 内部会执行以下操作:

  1. 调用 exec: node ~/.openclaw/workspace/scripts/gsc-report.cjs slitherlinks
  2. 调用 exec: node ~/.openclaw/workspace/scripts/ga4-report.cjs slitherlinks 7
  3. 拿到纯文本格式的数据后,AI 进行汇总分析。

AI 能够做的不仅仅是展示数据,它能够:

  • 对比变化:分析本周 vs 上周的数据波动。
  • 发现机会:找出点击率低但展示量大的关键词,这些是极具优化潜力的“低垂果实”。
  • 异常预警:发现流量断崖式下跌的页面并及时提醒。

通过这种“脚本 + AI 分析”的组合,原本冰冷的数字变成了可执行的建议。

踩坑实录:那些让我头疼的问题与解决方案

本段欲回答的核心问题:在实施过程中最可能遇到哪些技术阻碍,如何快速定位并解决?

在配置过程中,我遇到了不少问题。这些坑往往不是因为代码复杂,而是因为平台规则的不一致。

图像
  1. require is not defined

    • 原因package.json 设置了 "type": "module",导致 Node.js 解析模式冲突。
    • 解决:将文件后缀改为 .cjs,强制使用 CommonJS 模式。
  2. 403 insufficient permission (权限不足)

    • 原因:GSC 资源名格式错误,而非真的权限不足。
    • 解决:调用 API 列表接口确认资源名是 sc-domain: 格式还是 https:// 格式。
  3. GA4 Property ID 填错

    • 原因:混淆了“媒体资源 ID”和“数据流 ID”。
    • 解决:去 GA4 后台的“媒体资源详情”页面确认纯数字 ID。
  4. API not enabled

    • 原因:忘记在 GCP 后台启用对应的 API。
    • 解决:去 Library 搜索并启用 Google Search Console API 和 Google Analytics Data API。
  5. 新站没数据

    • 原因:新增的站点忘记给 Service Account 授权。
    • 解决:每个新站点都要手动在 GSC/GA4 后台添加 Service Account 邮箱。

个人反思:最让我头疼的是 GSC 资源名格式的问题。我花了一个小时调试,查阅了大量权限文档,最后才发现是 sc-domain:https:// 的区别。这让我意识到,在调试 API 时,优先确认参数格式往往比检查权限逻辑更高效。

安全与进阶:打造稳健的系统

虽然这套系统完全本地化,但安全意识不能松懈。

  • 密钥管理credentials/ 目录必须在 .gitignore 中,绝对禁止上传到 GitHub。
  • 最小权限原则:Service Account 只申请了只读权限,即使密钥泄露,攻击者也无法修改你的网站数据。
  • 文件权限:建议通过 chmod 600 命令限制密钥文件的访问权限,仅允许当前用户读写。

如果你想进一步解放双手,可以利用 cron 设置定时任务:

crontab -e
# 添加以下行,每天早上 8 点自动运行
0 8 * * * node /Users/yourname/.openclaw/workspace/scripts/gsc-report.cjs >> /tmp/seo-report.log 2>&1

配合 AI Agent 的主动询问功能,你甚至可以让它每天早上主动向你汇报昨天的流量异常。

总结

整套流程搭建大约需要 30-60 分钟。一旦配置完成,你就拥有了一个完全自动化的 SEO 数据分析系统。这不仅是一个效率工具,更是一种工作方式的转变:从数据的搬运工变成了数据的决策者。

对于独立开发者来说,时间是最宝贵的资源。与其在多个后台之间反复横跳,不如花一点时间搭建一套属于自己的自动化系统,让 AI 成为你的 SEO 分析师。

图像

实用摘要 / 操作清单

准备工作

  • [ ] 确认本地环境已安装 Node.js。
  • [ ] 准备一个 Google 账号和一个 Bing Webmaster 账号。
  • [ ] 创建本地工作目录 ~/.openclaw/workspace/

关键配置步骤

  1. Google Cloud:创建 Service Account,下载 JSON 密钥,启用 GSC 和 GA Data API。
  2. GSC 授权:将 Service Account 邮箱添加到每个站点的用户权限中(权限:受限)。
  3. GA4 授权:将 Service Account 邮箱添加到媒体资源权限中(权限:查看者),记录 Property ID。
  4. Bing 配置:生成 API Key 并保存为文本文件。
  5. 依赖安装npm install googleapis google-auth-library
  6. 脚本编写:注意使用 .cjs 后缀,注意 GSC 资源名格式。

核心避坑点

  • 文件后缀:务必使用 .cjs 避免 require 报错。
  • 资源格式:区分 sc-domain:https:// 两种 GSC 资源格式。
  • ID 区分:GA4 使用的是媒体资源 ID,非数据流 ID。

一页速览

核心价值:通过本地 AI Agent + Node.js 脚本,实现多平台 SEO 数据的自动化查询与分析,无需手动登录后台。

技术架构

  • 输入:自然语言指令(如“查看最近一周表现”)。
  • 处理:AI Agent -> exec 工具 -> Node.js 脚本 -> 官方 API。
  • 输出:纯文本数据 -> AI 分析 -> 可执行建议。

关键难点

  • Google Service Account 的创建与跨平台授权。
  • GSC 资源名格式的正确匹配。
  • GA4 Property ID 的正确识别。

适用场景:管理多个网站的独立开发者、需要频繁监控 SEO 数据的运营人员、追求数据隐私与本地化部署的技术爱好者。


常见问答 (FAQ)

Q1:这套系统必须要在 Mac 上运行吗?
A:不是。文章以 Mac mini 为例,但本质上依赖于 Node.js 环境,因此可以在 Windows、Linux 或任何支持 Node.js 的设备上运行。

Q2:为什么要使用 Service Account 而不是直接用我的 Google 账号密码?
A:Service Account 是专为程序化访问设计的,安全性更高。它支持细粒度的权限控制(如只读),且避免了在代码中暴露个人账号密码,同时也支持长期稳定的自动运行。

Q3:如果我有 50 个网站,需要手动授权 50 次吗?
A:是的。目前 Google 的权限体系是基于资源维度的,Service Account 必须被显式添加到每个站点或媒体资源的访问列表中,暂不支持一键全局授权。

Q4:脚本为什么要命名为 .cjs 后缀?
A:这是为了兼容 Node.js 的模块系统。如果你的项目配置了 ES Module ("type": "module"),标准的 .js 文件无法使用 require 语法。.cjs 后缀强制 Node.js 使用 CommonJS 模式,避免了模块解析冲突。

Q5:GSC 脚本报错 403 权限不足,但我确认已经授权了,怎么办?
A:这通常不是权限问题,而是资源名格式问题。请检查代码中的站点 URL 格式:域名资源需使用 sc-domain:example.com,网址前缀资源需使用 https://example.com/(含末尾斜杠)。格式不匹配会直接返回 403 错误。

Q6:AI Agent 如何知道什么时候调用哪个脚本?
A:这取决于 AI Agent 的工具配置。在 OpenClaw 中,通过定义 exec 工具,AI 能够理解“查询 SEO 数据”这一意图,并根据参数(如站点名、时间范围)自动拼凑出正确的命令行指令。

Q7:这套方案的费用如何?
A:完全免费。Google Search Console API、Google Analytics Data API 和 Bing Webmaster API 均提供免费额度,对于个人站点的数据查询量来说绰绰有余。唯一的成本是本地电脑的耗电量。