mcpField
S
seo-meta-onpage

seo-meta-onpage

github.com/hainrixz营销与增长79205 次安装4 天前更新
代码仓库

关于 seo-meta-onpage

用于 Claude 的 SEO 技能,依据页面快照检查标题、描述、视口、字符集、语言和 robots 指令等 head 元数据。它提出或执行有限修复,并将不确定文案和有意的索引设置留待人工审核。

主要功能

  1. 01审查标题和描述标签
  2. 02检查视口、字符集与语言
  3. 03检查 robots 元数据
  4. 04提出元数据草稿
  5. 05执行选定的基础修复
  6. 06依据快照验证标签

适用场景

  1. 01查找缺失或长度不合适的标题
  2. 02检查响应式视口和页面语言
  3. 03检查爬取页面间的重复元数据

安装

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

$npx skills add https://github.com/hainrixz/claude-seo-ai --skill seo-meta-onpage

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

详细介绍

seo-meta-onpage (M7)

Head 部分的卫生检查成本低、结果确定,而且是每个爬虫读取的第一项内容。参考 references/schema-tier1.md,了解与 head 并列的结构化数据层(由 M5 负责)。

输入

根据调度信封中指定的 PageSnapshot 开展工作:从 <run_dir>/pages/<slug>.json 读取 parsed(title、metas[]、robots_meta[]、canonicals[]、word_count)以及 headers(content-language、x-robots-tag);在 pages/<slug>.html 中使用 Grep 查找原文证据;站点产物位于 <run_dir>/site/{robots.json,sitemaps.json,discovery.json}。audit.mjs 已输出的确定性发现列于 <run_dir>/findings.deterministic.json — 不要重复输出这些 ID;只添加经模型判断的发现。如果直接通过 URL/路径调用且快照不存在,请先运行 node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs",并使用打印出的快照路径。

审计

基于 PageSnapshot 开展工作(当 render.used 不为 none 时使用 parsed_rendered,否则使用 parsed):

  1. 标题 — 必须恰好有一个 <title>。长度依据 scripts/lib/bands.mjs 中的共享区间判定(唯一来源;parse-html.mjs、页面检查和此技能都会读取它):30-60 个字符为 pass,推荐 50-60 个字符。在 50-60 个字符内,判定为 recommended;在 30-60 个字符内但不在该范围,判定为 pass;少于 30 个字符为 short,超过 60 个字符为 long — 两者都是 warn,绝不判为 fail。只有标题缺失或为空,或不同 URL 之间标题重复时,才判为 fail。不得全部使用大写;不得只是关键词列表。
  2. Meta description — 必须存在,长度依据相同的共享区间判定:70-160 个字符为 pass,推荐 150-160 个字符。超出 pass 区间时判为 warn,绝不判为 fail — Google 会自由改写描述。不得在全站重复;应描述当前页面,而不是套话。
  3. Viewport — 必须存在 <meta name="viewport" content="width=device-width, initial-scale=1">(缺失时判为 fail — 移动端渲染和索引依赖此项)。
  4. 字符集 — 必须存在 <meta charset="utf-8">,且位于 <head> 的前 1024 字节内。
  5. 语言 — 必须存在 <html lang="…">,且其值为有效的 BCP-47 标签。
  6. Robots meta — 检查 <meta name="robots"> 是否合理:如果页面本应参与排名,却意外设置了 noindex/nofollow,则标记。完整的可索引性/规范网址逻辑(包括 canonical 标签)由 seo-indexability (M2) 负责 — 此处只需注明是否存在 <link rel="canonical">,不要对其作出判定。

修复

  • AUTO — 添加缺失的 viewport、charset(utf-8)和 <html lang>(根据 Content-Language 标头或页面文本推断;如有歧义则留下 TODO)。这些都是确定性的、增量式且可验证的写入 → 提供差异以供 fix。
  • PROPOSED — 根据 <h1>、导语段落和主要主题生成/缩短 <title> 和 meta description:限制长度,兼顾关键词但不堆砌;仅当站点使用品牌后缀时才添加。两者都属于草稿,需要逐项接受(文案由人负责)。
  • ADVISORY — 绝不自动移除有意设置的 noindex;应将其列出,交由用户决定。
  • 绝不捏造标题、描述或 lang — 如果内容过少,无法推导出相应值,则留下明确标记的 TODO: 占位符,供用户填写。

验证

  • 方法 dom_assert:运行 node "${CLAUDE_PLUGIN_ROOT}/scripts/parse-html.mjs" --snapshot <pages/<slug>.json>(或使用 --url <u> / --file <path>)— 返回 title(值/长度/是否正常)、meta_description(值/长度/是否正常)、robots_meta、canonical 和 head_hygiene(viewport/charset/lang),据此直接对照快照断言各 head 元素是否存在及其长度是否符合要求。
  • 标题/描述重复检查需要完整的爬取结果集;只有单个页面可用时,跨 URL 断言应报告为 needs_api,绝不可错误地报告为 pass。

检查结果

检查结果符合 schema/finding.schema.json。严重性策略:5 仅用于网站/模板级别、会导致资格丧失的灾难性事实;4 重大 · 3 中等 · 2 轻微 · 1 外观 · 0 信息性——且只有处于启用类别中的 established 严重性为 5 的 fail,才能限制评分(references/scoring-model.md)。页面头部规范检查的严重性永远不会达到 5。示例:

  • M7.title.missing — 没有 <title>(fail,严重性 3,fixable: proposed,轴 search,置信度 established)。
  • M7.title.length_out_of_band — 标题有 78 个字符,超出 30-60 的通过范围,在搜索结果页中可能会被截断(warn,严重性 3,fixable: proposed,轴 search,置信度 directional)。请注明长度和据此得出判定的范围。
  • M7.description.length_out_of_band — 描述超出 70-160 的通过范围(warn,严重性 2,fixable: proposed,轴 search,置信度 directional)。
  • M7.viewport.missing — 没有响应式 viewport(fail,严重性 3,fixable: auto,轴 search,置信度 established)。
  • M7.title.duplicate_across_urls — 多个抽样 URL 使用了相同的 <title>(warn,严重性 3,fixable: proposed,轴 search,置信度 directional)。每个重复项簇生成一条检查结果,并注明共用标题和对应 URL。
  • M7.description.duplicate_across_urls — 多个抽样 URL 使用了相同的 meta description(warn,严重性 2,fixable: proposed,轴 search,置信度 directional)。 这两项重复检查会跨 URL 执行:如果本次运行中的内容页面少于两页,则仅报告一次 M7.title.duplicate_across_urls,状态为 needs_api(严重性 0,不计分),绝不会报告为通过。 平台条件 ID。 仅当 profile.json 中指定了平台(shopify、wordpress、nextjs、gatsby、jekyll、react-router)时,本模块还会触发 6 个 ID。它们列于 references/routing.md § Platform-conditional finding ids,并在 references/platforms/<id>.md §10 中说明。

每条检查结果:evidence.observed 会逐字引用页面头部内容(例如,精确的标题字符串及其长度);verification.reproduce 是上文所示可运行的 parse-html.mjs 命令;expected_impact 会标明影响范围和置信度(不会只给出一个百分比)。

诚实性

  • “meta keywords” 标签已失效——Google 会忽略它;不要添加或推荐该标签。
  • 标题/描述长度范围是搜索结果页显示效果的启发式标准(Google 按像素宽度而非字符数截断),并非排名因素——超出范围的值标为 warn,绝不标为 fail,影响最多只标为 directional。通过范围特意设得比建议范围更宽,因此不会把 35 个字符的标题报告为缺陷;两个范围都来自 scripts/lib/bands.mjs,确保脚本、报告和此技能的结果始终一致。
  • Google 经常根据页面内容重写显示的标题/描述;即使标签完美,也不保证最终会显示,因此绝不要承诺搜索结果页摘要能带来排名提升。

评论

支持 Markdown