mcpField
S
seo-social-cards

seo-social-cards

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

关于 seo-social-cards

seo-social-cards 是一项 SEO 审计技能,用于检查 Open Graph 和 Twitter/X 元数据如何呈现分享链接预览。它可发现缺失或无法访问的卡片元素,并根据页面内容补充元数据;重点在分享展示和点击率,而非搜索排名。

主要功能

  1. 01检查必需的 Open Graph 字段
  2. 02检查社交卡片图像是否可访问
  3. 03检查 Twitter/X 卡片元数据
  4. 04说明爬虫的预览回退内容
  5. 05根据页面内容添加卡片标签

适用场景

  1. 01审计页面的分享链接预览
  2. 02查找缺失或无法访问的社交卡片图像
  3. 03检查 Twitter/X 元数据及 Open Graph 回退

安装

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

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

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

详细介绍

seo-social-cards (M8)

社交卡片决定 URL 在社交平台、聊天工具和 AI 助手中分享时的呈现方式——它是点击率/分享信号,而非排名信号(参见「诚实说明」)。Open Graph 元数据与 references/schema-tier1.md 中的结构化数据工作一样,属于 <head> 级别的基础维护,因此应与该模块一并审计。

输入

根据分派信封中指定的 PageSnapshot 操作:从 <run_dir>/pages/<slug>.json 中读取 parsed(metas[] 中的 og:*/twitter:*、canonicals[]、images[]);在 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. OG 内容:og:title、og:description、og:url、og:type 均存在且非空;og:url 与 canonical 一致;og:type 符合页面类型(例如,article 与 website)。
  2. OG 图片:存在 og:image,尺寸约为 1200x630(1.91:1)且不小于 200x200,并且可访问(HTTP 200、图片内容类型、绝对 URL)。
  3. Twitter/X:检查 twitter:card(优先使用 summary_large_image)、twitter:title、twitter:description、twitter:image。如果这些标签缺失,Twitter 会回退使用 OG——请注明其依赖 OG 的情况。
  4. 回退行为:如果 OG 完全缺失,记录爬虫会如何生成卡片(<title>、meta description、首张内容 <img>),确保发现反映实际降级卡片,而非猜测。

修复

  • AUTO(fixable: auto):根据页面的 <title>/<h1>、meta description、canonical URL 和首张正文图片,注入完整的 OG + Twitter 卡片代码块。此操作为增量式、确定性操作,并会为 fix 输出差异。
  • 工具无法创建图片资源。只有在存在真实路径时,才会写入 og:image/twitter:image;在此之前会保留清晰标记的 TODO 占位符(不得编造 URL 或尺寸)。绝不可捏造标题/描述文本——应根据页面内容提取,或留下 TODO 提示用户。

验证

  • dom_assert:必需的 <meta property="og:*">/<meta name="twitter:*"> 标签存在且非空。
  • header_check:og:image 返回 200,且内容类型为图片,尺寸约为 1200x630。
  • 如果图片抓取或尺寸探测受阻(无网络/外网访问受限),状态应为 needs_api,绝不可错误地标记为 pass。

发现

按照 schema/finding.schema.json 输出发现。示例:

  • M8.og.missing_image — 缺少 og:image(状态 fail,严重性 2,fixable: auto,轴 search,置信度 established)。
  • M8.og.image_unreachable — 已设置 og:image,但返回非 200 状态码/错误的内容类型(状态 fail,严重性 2,fixable: proposed,轴 search,置信度 established)。
  • M8.twitter.no_card — 缺少 twitter:card,页面仅回退使用 OG(状态 warn,严重性 2,fixable: auto,轴 search,置信度 directional)。 每项发现:evidence.observed 引用页面上的标签(或其缺失情况);verification.reproduce 是可运行的 dom_assert/header_check 命令;expected_impact 应按区间标注并带有置信度标签(不得只给出百分比)。

诚实说明

社交卡片是分享/点击率信号,对排名的直接影响几乎为零——Google 不会将 OG 标签用作排名因素。它们能改善分享链接和 AI 助手预览的呈现效果,但不会影响页面排名。修复它们是为了提升点击率和保持品牌一致性;不要过度投入并期待搜索结果页排名变化。

评论

支持 Markdown