基于MCP协议构建AI驱动的SEO智能分析工作流
1. 项目概述:一个为SEO工作流注入AI智能的MCP服务器
如果你是一名SEO从业者、内容创作者,或者是一名开发者,每天还在重复着“打开Google Search Console(GSC)→ 复制关键词数据 → 粘贴到Excel → 手动分析趋势 → 再打开ChatGPT或Claude生成内容建议”这样繁琐的流程,那么canberkys/seo-echo-mcp这个项目,很可能就是你一直在寻找的“自动化瑞士军刀”。
简单来说,SEO Echo MCP Server是一个实现了Model Context Protocol (MCP)标准的服务器。它的核心使命,是让像Claude Desktop、Cursor这类支持MCP的AI助手,能够直接、安全地“连接”到你手中的SEO数据源(目前主要是Google Search Console),并在此基础上进行智能分析和内容创作。你可以把它理解为一个“翻译官”兼“数据管道”:它负责与GSC的API进行复杂的认证和通信,然后将获取到的搜索表现数据(如关键词、点击量、展示量、排名等),转换成AI助手能理解和操作的标准化格式。
这样一来,你的工作流就彻底改变了。你不再需要手动导出、整理数据。你只需要在Claude的聊天窗口里,用自然语言说:“帮我分析一下上个月流量下降最多的10个页面,并给每个页面写一段针对性的优化建议。” 或者,“找出那些展示量高但点击率低的‘机会关键词’,并为它们生成5个内容标题创意。” AI助手会通过这个MCP服务器,自动获取所需数据,并基于这些实时、准确的数据为你生成分析报告和创意内容。这不仅仅是节省时间,更是将数据分析与内容策略生成无缝衔接,实现了从“看到数据”到“基于数据行动”的质变。
这个项目由开发者canberkys创建并开源,它瞄准了一个非常具体的痛点:在AI原生应用浪潮下,如何让专业工具(SEO数据)与通用AI智能体(如Claude)深度结合,创造1+1>2的效能。接下来,我将为你深度拆解这个项目的设计思路、核心实现、实操部署以及我踩过的一些坑,希望能帮你快速上手,将AI驱动的SEO工作流变为现实。
2. 核心架构与MCP协议深度解析
在深入代码和配置之前,我们必须先理解其赖以运行的基石——Model Context Protocol (MCP)。不理解MCP,就无法真正用好这个项目。
2.1 MCP是什么?为什么它是关键
MCP是由Anthropic提出并推动的一个开放协议。你可以把它想象成AI世界的“USB标准”或“蓝牙协议”。在MCP诞生之前,每个AI应用(如Claude、未来的其他AI助手)如果想连接外部工具(如数据库、搜索引擎、API),都需要开发者为其定制开发专用的插件或集成,这导致了大量的重复劳动和生态碎片化。
MCP的目标就是标准化AI与外部工具(资源)之间的通信方式。它定义了一套简单的、基于JSON-RPC的协议。任何工具,只要按照MCP标准实现一个“服务器”(Server),就能被任何支持MCP的“客户端”(Client,如Claude Desktop)发现和使用。这套协议主要定义了三种核心资源交互模式:
- Tools(工具): 客户端可以调用的函数。例如,
query_search_console就是一个工具,AI可以“调用”它来执行一次GSC数据查询。 - Resources(资源): 客户端可以读取的静态或动态数据源。例如,一个配置好的“关键词列表”可以被定义为一个资源。
- Prompts(提示词模板): 预定义的、参数化的提示词片段,客户端可以获取并用于构建更复杂的请求。
SEO Echo MCP Server就是一个严格遵循MCP协议实现的服务器。它向Claude等客户端宣告:“我提供了query_search_console这个工具,你可以用它来查数据。” 当你在Claude里提出相关请求时,Claude(客户端)会按照MCP协议格式,向这个服务器发送一个JSON-RPC请求,服务器执行查询,并将结果以标准格式返回,Claude再将其解读并呈现给你。
这种架构的优势是巨大的:
- 解耦与标准化: SEO工具开发者只需关注如何实现MCP服务器,无需为每个AI客户端单独适配。
- 安全性: 认证信息(如Google API密钥)完全保存在本地或你信任的服务器上,AI客户端只能通过你授权的、定义明确的工具来访问数据,避免了将敏感信息直接暴露给AI服务商。
- 可组合性: 你可以在同一台机器上运行多个MCP服务器(例如,一个管SEO数据,一个管网站分析,一个管竞品数据库),Claude可以同时利用所有这些工具,能力得到极大扩展。
2.2 SEO Echo 的架构设计拆解
理解了MCP,我们再来看这个项目的具体设计。它的代码结构清晰,体现了很好的关注点分离原则:
seo-echo-mcp/ ├── src/ │ ├── server.ts # MCP服务器主文件,定义工具、资源、提示词 │ ├── google/ │ │ ├── auth.ts # Google OAuth 2.0 认证流程封装 │ │ └── searchconsole.ts # Google Search Console API 客户端封装 │ └── types.ts # 项目用到的TypeScript类型定义 ├── build/ # 编译后的JavaScript输出目录 ├── .env.example # 环境变量配置文件示例 ├── package.json └── tsconfig.json核心工作流程如下:
- 启动与注册: 当你运行
npm start时,服务器启动,并通过stdio(标准输入输出)与Claude Desktop建立连接。它向Claude发送一条initialize请求,宣告自己的身份和能力(即提供了哪些工具)。 - 工具调用: 你在Claude中输入请求,例如“查询过去7天的数据”。Claude判断需要调用
query_search_console工具,于是通过stdio向SEO Echo服务器发送一个tools/call请求,其中包含了查询参数(如日期范围、维度等)。 - 认证与执行: 服务器收到请求后,首先检查本地是否有有效的Google OAuth令牌。如果没有或已过期,它会引导你完成浏览器认证流程(通常只需首次设置)。然后,它使用这个令牌,调用封装好的
GoogleSearchConsoleClient,向Google的API发起真正的HTTPS请求。 - 数据转换与返回: Google API返回原始的、可能很冗长的JSON数据。服务器在这里做了一个关键工作:数据清洗与格式化。它会提取核心字段,将数据组织成更紧凑、更易于AI理解的格式(例如,将嵌套的对象展平,确保数字和字符串类型正确),然后通过MCP协议的
tools/call响应返回给Claude。 - 结果呈现: Claude接收到结构化数据后,并不是简单罗列,而是利用其强大的自然语言理解和生成能力,为你生成一份带有洞察的分析报告、图表建议或内容草稿。
这个设计巧妙地将复杂的API认证、数据获取和协议通信封装起来,最终向你(和AI)暴露出一个极其简单的自然语言接口。你不需要知道OAuth的code和refresh_token如何交换,也不需要解析GSC API响应里复杂的schema,你只需要“告诉”Claude你想要什么。
3. 从零开始的完整部署与配置指南
理论讲完,我们进入实战环节。以下是我在MacOS/Linux环境下从零部署的完整过程,Windows用户只需在终端部分稍作调整(如使用PowerShell)。
3.1 前期准备:获取Google API凭证
这是最关键也最容易出错的一步。你需要访问 Google Cloud Console 。
- 创建或选择项目: 在顶部的项目下拉菜单中,点击“新建项目”,给它起个名字,例如
seo-echo-mcp。 - 启用API: 进入项目后,在左侧菜单找到“API和服务” > “库”。在搜索框中输入“Google Search Console API”,找到后点击进入,并点击“启用”。
- 创建OAuth 2.0客户端ID:
- 进入“API和服务” > “凭据”。
- 点击“创建凭据” > “OAuth 客户端ID”。
- 应用类型选择“桌面应用”(Desktop application)。
- 给它起个名字,比如
SEO Echo Desktop Client。 - 点击“创建”。完成后,你会看到一个弹出窗口,包含了客户端ID和客户端密钥。立即下载JSON文件或妥善保存这两项信息。我们将其称为
client_id和client_secret。
重要提示: 由于你使用的是“桌面应用”类型,Google会警告你“此应用未经过验证”。在测试阶段,你需要添加测试用户。在OAuth同意屏幕中(“API和服务” > “OAuth同意屏幕”),将你自己的Google账号添加为“测试用户”。否则,在后续认证时会报错“未经身份验证的应用”。
3.2 本地环境搭建与配置
假设你已经安装了Node.js(版本18+)和npm。
# 1. 克隆项目代码 git clone https://github.com/canberkys/seo-echo-mcp.git cd seo-echo-mcp # 2. 安装依赖 npm install # 3. 复制环境变量模板并配置 cp .env.example .env现在,用你喜欢的文本编辑器打开.env文件。你需要填写以下内容:
# .env 文件内容 GOOGLE_CLIENT_ID=你的客户端ID GOOGLE_CLIENT_SECRET=你的客户端密钥 GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback # 通常保持此默认值即可 PORT=3000 # 本地服务器端口,用于接收OAuth回调GOOGLE_REDIRECT_URI是当你在浏览器中完成Google授权后,Google将跳转回的地址。本地的MCP服务器会在这个端口上启动一个临时的小型HTTP服务器来“捕获”授权码。请确保此URI与你在Google Cloud Console中创建OAuth客户端ID时添加的“已授权的重定向URI”完全一致(通常需要手动在Google控制台添加http://localhost:3000/oauth2callback)。
3.3 配置Claude Desktop以连接MCP服务器
这是让Claude认识我们本地服务器的关键一步。
找到Claude Desktop的配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
如果该文件不存在,就创建一个。如果存在,则在其中添加
mcpServers配置项。配置文件内容示例如下:
{ "mcpServers": { "seo-echo": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/YOUR/seo-echo-mcp/build/server.js" ], "env": { "GOOGLE_CLIENT_ID": "你的客户端ID", "GOOGLE_CLIENT_SECRET": "你的客户端密钥", "GOOGLE_REDIRECT_URI": "http://localhost:3000/oauth2callback", "PORT": "3000" } } } }请注意:
command: 这里指定为node,因为我们的服务器是一个Node.js脚本。args:必须使用server.js文件的绝对路径。你需要将/ABSOLUTE/PATH/TO/YOUR/seo-echo-mcp/build/server.js替换成你电脑上的真实路径。一个简单的方法是进入seo-echo-mcp目录,运行pwd命令获取绝对路径,然后加上/build/server.js。env: 这里的环境变量会传递给MCP服务器进程。你也可以选择将敏感信息放在这里,而不是.env文件。但更常见的做法是.env文件用于开发,而Claude配置用于生产环境。确保两处的值一致。
- 保存配置文件,并完全重启Claude Desktop。重启后,Claude会读取配置,并尝试启动我们指定的MCP服务器。
3.4 首次运行与OAuth授权
- 重启Claude后,打开一个新的对话。如果配置正确,你可能会在Claude的回复中看到它提到了可用的工具,或者你可以直接问:“你有什么工具可以用?”
- 当你第一次要求Claude查询Search Console数据时(例如,输入“帮我查一下网站昨天的搜索表现”),Claude会调用
query_search_console工具。 - 此时,本地的MCP服务器开始工作。由于是首次使用,它没有有效的访问令牌,因此会在你的终端(如果你从终端启动了服务器)或系统后台输出一个授权URL。
- 情况一:如果你在项目目录下运行了
npm start或npm run build然后node build/server.js,授权URL会直接打印在终端上。 - 情况二:如果服务器是由Claude Desktop在后台启动的,你可能需要查看系统日志或Claude的调试信息来找到这个URL。一个更可靠的方法是,在运行Claude的同时,在项目目录下打开另一个终端,运行
npm run dev(如果配置了开发脚本)或直接运行编译后的文件,这样授权流程的输出就会出现在这个终端里。
- 情况一:如果你在项目目录下运行了
- 复制终端里打印出的URL,粘贴到浏览器中打开。你会看到熟悉的Google账号登录和授权页面。选择你之前添加为测试用户的账号,并同意授权。
- 授权成功后,浏览器通常会跳转到一个
localhost:3000/oauth2callback?code=...的页面,并显示“授权成功,你可以关闭此窗口”之类的信息。这表示服务器已成功获取到授权码,并会在后台用它交换访问令牌和刷新令牌。 - 回到Claude的对话窗口,重新发送你的查询请求。这次,Claude应该能成功获取并返回数据了!
实操心得: 授权过程通常只需一次。服务器会将刷新令牌(
refresh_token)持久化存储(通常在一个本地文件如token.json中)。后续使用时,它会自动用刷新令牌获取新的访问令牌,无需你再手动授权。如果长时间未使用或令牌失效,可能需要重新授权。
4. 核心功能实操:与Claude协作进行SEO分析
配置成功,我们终于可以体验AI加持的SEO工作流了。以下是一些我常用的、能极大提升效率的对话场景。
4.1 基础数据查询与解读
一开始,你可以从简单的查询开始,让Claude熟悉你的网站数据。
- 你:“查询我的网站在过去30天的总点击量、展示量、平均点击率和平均排名。”
- Claude:(调用工具,获取数据后)“根据Google Search Console数据,过去30天你的网站共有 [具体数字] 次展示,[具体数字] 次点击,平均点击率(CTR)为 [百分比],平均排名为 [数字]。数据显示,你的内容获得了不错的曝光,但点击率有提升空间。平均排名在第二页左右,建议针对排名在11-20位的关键词进行内容优化。”
技巧: 你可以要求Claude以表格形式呈现数据,更直观。
- 你:“把上面这些核心指标用Markdown表格列出来,并加上简要的趋势分析(对比再前30天)。”
- Claude:(会再次调用工具获取更早时间段的数据进行对比,然后生成一个清晰的对比表格和分析结论)。
4.2 深度机会挖掘与内容策略生成
这才是发挥AI真正价值的地方。我们可以提出更复杂的、需要交叉分析的请求。
场景一:寻找“高展示、低点击”的机会页面
- 你:“分析过去90天的数据,找出展示量排名前50但点击率低于2%的页面。列出它们的主要查询关键词、当前排名,并为每个页面生成3条可能的内容优化或Meta描述修改建议。”
- Claude: 它会执行查询,过滤数据,然后输出一个包含页面URL、主要关键词、展示量、点击率、排名和具体优化建议的详细列表。建议可能包括:“针对关键词‘XXX’,当前排名第8位,建议在文章开头段落更自然地融入该关键词,并添加一个相关的H2子标题。”或者“Meta描述目前是‘…’,过于笼统,建议重写为包含‘XXX’和‘YYY’具体收益点的行动号召式描述。”
场景二:针对关键词集群的内容拓展
- 你:“给我列出过去一个月带来流量最多的前20个关键词。然后,以这些关键词为核心主题,为我规划5篇新的博客文章标题和大纲。要求新内容能与现有高流量页面形成内部链接。”
- Claude: 它会先获取关键词列表,然后基于这些关键词的语义关联性和搜索意图,生成内容规划。例如,如果核心关键词是“React性能优化”,它可能会建议新文章如“React组件重渲染的深度分析与7个优化技巧”、“使用React.memo和useMemo进行性能优化的实战指南”等,并指出每篇文章可以链接到现有的哪篇相关文章。
场景三:监控与预警
- 你:“每周一早上,帮我对比上周和上上周的数据,列出流量下降超过20%的所有页面,并分析可能的原因(如排名下降、关键词热度变化等)。”
- 你:“监控‘核心产品词X’的排名变化,如果它跌出前10名,立即提醒我。”
注意事项: 虽然Claude能进行出色的分析和内容生成,但它对“可能的原因”分析是基于数据模式和通用SEO知识,无法知晓你网站临时的技术改动、外部新闻事件等。它的分析应作为你的调查起点,而非最终结论。
4.3 使用预定义提示词(Prompts)提升效率
seo-echo-mcp项目预定义了一些Prompt模板,这是MCP协议的另一大妙用。你可以在Claude中直接调用这些模板,快速发起复杂查询。
- 你: 在Claude中输入“/”通常会触发提示词列表,你可能会看到像“analyze_top_pages”(分析顶部页面)这样的选项。或者,你可以直接描述:“使用‘分析流量下降’那个提示词模板。”
- Claude: 它会向MCP服务器请求名为“analyze_traffic_drop”的Prompt。这个Prompt可能预定义了查询逻辑(如比较两个时间段、计算变化率、过滤下降幅度大的页面)和输出格式。Claude获取到这个模板后,可能会向你询问一两个参数(如具体的时间范围),然后自动执行整套分析流程。
这相当于为你常用的复杂分析流程创建了“一键宏”,极大地标准化和加速了重复性工作。
5. 常见问题、故障排查与进阶技巧
在实际使用中,你肯定会遇到一些问题。以下是我总结的常见坑点及解决方案。
5.1 认证与授权失败
这是最高频的问题。
- 问题: Claude调用工具后无反应,或终端/日志显示“Invalid grant”、“redirect_uri mismatch”等错误。
- 排查步骤:
- 检查重定向URI: 确保
.env文件或Claude配置中的GOOGLE_REDIRECT_URI与Google Cloud Console中“OAuth 2.0客户端ID”配置页里“已授权的重定向URI”一字不差。http和https、末尾的/都要注意。 - 检查测试用户: 前往Google Cloud Console的“OAuth同意屏幕”,确认你正在使用的Google账号已被添加为“测试用户”。发布状态应为“测试中”。
- 清除旧令牌: 删除项目根目录下可能存在的
token.json或类似凭证缓存文件,然后重启Claude,触发完整的重新授权流程。 - 检查API启用状态: 确认“Google Search Console API”确已为你当前的项目启用。
- 检查重定向URI: 确保
5.2 Claude无法识别MCP服务器
- 问题: 重启Claude后,在对话中询问工具,Claude表示没有可用工具。
- 排查步骤:
- 检查配置文件路径和语法: 确认
claude_desktop_config.json文件在正确的位置,且JSON格式正确(无多余逗号,引号匹配)。可以使用在线JSON校验工具检查。 - 检查服务器路径: 确认
args中的路径是绝对路径,并且指向编译后的server.js文件(npm run build之后生成在build/目录下)。路径错误是最常见的原因。 - 查看Claude日志: Claude Desktop通常有日志输出位置(macOS可能在
~/Library/Logs/Claude/)。查看日志中是否有关于加载MCP服务器的错误信息,如“spawn node ENOENT”表示node命令未找到或路径错误。 - 手动测试服务器: 在终端中,切换到项目目录,直接运行
node build/server.js。如果服务器能正常启动并等待输入(MCP协议通过stdio通信),说明服务器本身是好的。然后按Ctrl+C停止,问题很可能出在Claude的配置上。
- 检查配置文件路径和语法: 确认
5.3 数据查询缓慢或无返回
- 问题: Claude调用工具后长时间“思考”,或返回超时错误。
- 排查步骤:
- 缩小查询范围: GSC API在查询大量数据(如一年、全站)时可能较慢。首次测试时,尝试将日期范围缩短到“过去7天”,并指定具体的网站属性(URL前缀)。
- 检查网站属性权限: 确保你在Google Search Console中已添加并验证了你要查询的网站属性(如
https://example.com/或sc-domain:example.com)。并且,你进行OAuth授权的Google账号对该属性有“所有者”或“完全用户”权限。 - 查看服务器日志: 如果服务器是手动在终端运行的,可以直接看到错误信息。如果是Claude后台启动,尝试在项目目录运行
npm run dev来启动一个带日志输出的前台进程,同时关闭Claude配置中的服务器,让Claude连接到你手动启动的这个实例,便于调试。
5.4 进阶技巧与自定义扩展
当你熟练使用基础功能后,可以考虑以下进阶玩法:
- 修改查询维度与指标: 项目源码中的
searchconsole.ts文件定义了默认的查询参数(如维度query,page, 指标clicks,impressions等)。你可以根据需求修改buildQueryParams函数,添加更多维度(如country,device)或指标(如position),然后重新npm run build。这样,你就能让Claude分析国家/地区流量分布或设备类型表现了。 - 数据持久化与历史对比: 当前项目是实时查询,不存储历史数据。你可以修改服务器代码,在查询数据后,将其存入本地SQLite数据库或文件中。然后,可以创建新的MCP工具(如
get_historical_trend),让Claude能进行更长期的历史趋势分析。 - 集成更多数据源: MCP服务器的美妙之处在于可扩展性。你可以借鉴
seo-echo-mcp的代码结构,为Google Analytics 4、Ahrefs API、SEMrush API等创建新的工具。最终,你的Claude将成为一个连接了所有营销数据中台的超级智能中枢。 - 优化提示词工程: 在向Claude提问时,越具体越好。与其问“分析我的数据”,不如问“以表格形式列出上周点击量增长最快的前10个页面,并附上每个页面的主要来源关键词和排名变化”。清晰的指令能得到更结构化、更有用的回复。
部署并熟练使用seo-echo-mcp,就像为你的SEO工作配备了一位不知疲倦、数据洞察力极强的初级分析师。它将你从繁琐的数据搬运和初步筛选中解放出来,让你能更专注于高层次的策略制定、创意内容和复杂问题解决。这个项目不仅是一个工具,更代表了一种未来工作流的范式:人类负责定义问题和判断方向,AI负责执行重复性任务和提供数据洞察。随着MCP生态的日益丰富,这种能力还会不断增强。现在,是时候动手搭建你的专属AI SEO助手了。
