mcpField
B
browse-seo

browse-seo

github.com/ulpi-io营销与增长5111 次安装9 周前更新
代码仓库

关于 browse-seo

browse-seo 是一项技能,指导 AI Agent 使用 browse CLI 执行页面 SEO 审查。它检查元数据、结构化数据、性能、链接和移动端渲染,并汇总为按优先级排列的报告。

主要功能

  1. 01提取元数据和标题结构
  2. 02检查结构化数据与性能
  3. 03分析链接和移动端渲染
  4. 04通过 JavaScript 执行自定义检查
  5. 05评估问题并排列修复优先级

适用场景

  1. 01审查目标 URL 的页面 SEO
  2. 02查找元数据或 Schema 问题
  3. 03检查移动端渲染和页面性能
  4. 04确定技术 SEO 修复顺序

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ulpi-io/skills --skill browse-seo

安装后在 Claude Code 中输入/browse-seo确认已加载。

详细介绍

browse-seo:面向 AI Agent 的 SEO 审核

目标

使用 browse CLI 对目标 URL 执行完整的页面 SEO 审核。提取技术 SEO 信号并进行分析,然后生成包含发现和建议的报告。

步骤 0:考虑隐身设置(可选)

如果审核目标设有机器人检测(Cloudflare、竞争对手网站),请使用 camoufox:

browse --runtime camoufox --headed goto <url>

对于大多数公开页面,默认的 Chromium 运行时已足够。除非遇到拦截,否则跳过此步骤。

步骤 1:导航至目标 URL

browse goto <url>
browse wait --network-idle

确认页面已加载。记录所有重定向——重定向链会影响 SEO。如果页面返回 403 或出现验证挑战,请切换到 camoufox(步骤 0)。

步骤 2:提取元标签

browse meta

返回标题、描述、规范链接、OG 标签、Twitter Card、robots 和 viewport。检查:

  • 标题:存在、不超过 60 个字符,且包含目标关键词
  • 描述:存在,长度为 120–160 个字符,内容吸引人且独特
  • 规范链接:存在,URL 正确(尾部斜杠、www 与非 www)
  • Robots:没有意外的 noindex 或 nofollow
  • Viewport:针对移动设备设置为 width=device-width, initial-scale=1
  • OG 标签:og:title、og:description、og:image、og:url 均存在
  • Twitter Card:twitter:card、twitter:title、twitter:description 均存在

步骤 3:检查标题结构

browse headings

返回 H1-H6 层级及其数量。检查:

  • 恰好一个 H1:多个 H1 会削弱主题信号
  • H1 与主题匹配:应包含主要关键词
  • 层级嵌套合理:H2 位于 H1 下,H3 位于 H2 下——不能跳过层级
  • 关键词存在:目标关键词出现在 H1 和 H2 标签中

步骤 4:提取结构化数据

browse schema

从页面提取 JSON-LD、Microdata 和 RDFa。检查:

  • 是否存在:至少包含一种 schema 类型(Article、Product、Organization 等)
  • 必需属性:根据 Google 文档,每种类型都需要相应的必填字段
  • 有效的 JSON-LD:没有语法错误或格式错误的对象
  • @type 正确:与页面实际内容相符
  • 遗漏的机会:在内容适用时添加 FAQ、HowTo、Breadcrumb、Review

步骤 5:检查性能

browse perf

返回导航计时数据(DNS、TTFB、DOM 加载、完整加载)。检查:

  • TTFB:低于 200ms 为良好,超过 600ms 则存在问题
  • DOM Content Loaded:低于 1.5s 可接受
  • 完整加载:低于 3s 可提供良好的用户体验
  • DNS:正确预取时应接近零

使用 browse network 检查阻塞渲染的资源、大型资源和请求数量。

步骤 6:分析链接结构

browse links

返回所有带文本和 href 的锚元素。检查:

  • 内部链接:链接数量充足,便于抓取
  • 锚文本:描述清晰,不使用“点击这里”或裸 URL
  • 外部链接:出站链接恰当,并在需要时使用 nofollow
  • 失效链接:指向 404 或错误页面的链接

步骤 7:检查移动端渲染

browse responsive

捕获移动端(375px)、平板(768px)和桌面端(1440px)的屏幕截图。检查:

  • 移动端布局:无水平滚动,无需缩放即可阅读
  • 点击目标:触控区域至少为 48px
  • 内容一致性:移动端包含与桌面端相同的关键内容
  • 字体大小:基础字体至少为 16px

如有需要,可使用 browse screenshot 进行单次整页截图。

步骤 8:通过 JavaScript 执行自定义检查

运行内置命令未涵盖的定向检查:

# Image alt tags
browse js "const imgs=[...document.querySelectorAll('img')]; const missing=imgs.filter(i=>!i.alt&&!i.getAttribute('role')); JSON.stringify({total:imgs.length,missingAlt:missing.length,examples:missing.slice(0,5).map(i=>i.src.slice(-60))})"

# Duplicate meta tags
browse js "JSON.stringify({titles:document.querySelectorAll('title').length,descriptions:document.querySelectorAll('meta[name=description]').length,canonicals:document.querySelectorAll('link[rel=canonical]').length})"

# Hreflang tags
browse js "JSON.stringify([...document.querySelectorAll('link[rel=alternate][hreflang]')].map(t=>({lang:t.hreflang,href:t.href})))"

# Lazy images without dimensions
browse js "const lazy=[...document.querySelectorAll('img[loading=lazy]')]; const noDims=lazy.filter(i=>!i.width&&!i.height&&!i.getAttribute('width')); JSON.stringify({lazyImages:lazy.length,missingDimensions:noDims.length})"

检查 robots.txt 和 sitemap:

browse goto <origin>/robots.txt
browse text
browse goto <origin>/sitemap.xml
browse text

第 9 步:生成审计报告

收集第 2 至第 8 步的数据后,生成一份结构化报告:

  1. 摘要:用一段话概述通过、失败和警告的数量
  2. Meta 标签:标题、描述、规范链接、robots、OG、Twitter——分别评级
  3. 标题结构:H1 数量、嵌套问题、关键词是否出现
  4. 结构化数据:发现的 schema 类型、遗漏机会、验证问题
  5. 性能:TTFB、加载时间、阻塞资源
  6. 链接分析:内部与外部链接比例、失效链接、锚文本质量
  7. 移动端友好性:viewport 标签、响应式截图、点击目标问题
  8. 图片:alt 标签覆盖率、延迟加载、尺寸属性
  9. 建议:按优先级排列的修复项(关键、重要、可选)

将每个部分评为 PASS、WARNING 或 FAIL。根据影响对建议排序。

重要规则

  • 浏览器会在命令之间保持运行。Cookie、标签页和会话状态都会保留。
  • 执行 goto 后,始终先运行 wait --network-idle,再提取数据。
  • Agent 会解读所有结果。浏览操作会提取原始数据;分析由你负责。
  • 不要自动安装任何内容。
  • 将截图保存在 .browse/ 目录下。
  • 对于会屏蔽机器人的网站,请使用 --runtime camoufox --headed。

评论

支持 Markdown