seo-social-cards
Audit and generate Open Graph and Twitter/X social-card tags for a page — check og:title/description/url/type, og:image presence/size/reachability, and twitter:card/title/description/image, then inject complete card tags inferred from the page. Module M8. Feeds the Search SEO score.
适合你,如果需要确保网页在社交平台上有正确的预览信息
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
~/.claude/skills/(项目级 .claude/skills/)~/.codex/skills/npx oh-my-skill add hainrixz/claude-seo-ai/seo-social-cardscurl -fsSL https://oh-my-skill.com/install.sh | bash -s -- hainrixz/claude-seo-ai/seo-social-cardsnpx oh-my-skill verify hainrixz/claude-seo-ai/seo-social-cards怎么用
技能原文 SKILL.md
seo-social-cards (M8)
Social cards control how a URL renders when shared on social, chat, and AI assistants — a CTR/sharing signal, not a ranking one (see Honesty). Open Graph metadata is the same <head>-level hygiene tier as the structured-data work in references/schema-tier1.md, so audit it alongside that module.
Audits
Working from the PageSnapshot (rendered_dom if present, else raw_html):
- OG content:
og:title,og:description,og:url,og:typepresent and non-empty;og:urlmatches the canonical;og:typesane for the page (e.g.articlevswebsite). - OG image:
og:imagepresent, ~1200x630 (1.91:1) and >=200x200, and reachable (HTTP 200, image content-type, absolute URL). - Twitter/X:
twitter:card(prefersummary_large_image);twitter:title,twitter:description,twitter:image. Twitter falls back to OG when these are absent — note when it is relying on OG. - Fallback behavior: when OG is absent entirely, record what crawlers would derive (
<title>, meta description, first content<img>) so the finding shows the actual degraded card, not a guess.
Fixes
- AUTO (
fixable: auto): inject a complete OG + Twitter card block derived from the page's<title>/<h1>, meta description, canonical URL, and first in-content image. Additive, deterministic, emitted as a diff forfix. - The tool cannot create an image asset. It wires
og:image/twitter:imageonce a real path exists; until then it leaves a clearly-markedTODOplaceholder (no invented URL or dimensions). Never fabricate title/description text — derive from on-page content or leave the user aTODO.
Verification
dom_assert: the required<meta property="og:*">/<meta name="twitter:*">tags exist and are non-empty.header_check:og:imagereturns 200 with an image content-type, and dimensions are ~1200x630.- When the image fetch or dimension probe is blocked (no network/egress), status is
needs_api, never a falsepass.
Findings
Emit findings per schema/finding.schema.json. Examples:
M8.og.missing_image— noog:image(statusfail, severity 2,fixable: auto, axissearch, confidenceestablished).M8.og.image_unreachable—og:imageset but returns non-200 / wrong type (statusfail, severity 2,fixable: proposed, axissearch, confidenceestablished).M8.twitter.no_card— notwitter:card, page falls back to OG only (statuswarn, severity 2,fixable: auto, axissearch, confidencedirectional).
Each finding: evidence.observed quotes the tag(s) (or their absence) on the page; verification.reproduce is a runnable dom_assert/header_check command; expected_impact is banded + confidence-tagged (no naked %).
Honesty
Social cards are a sharing / click-through signal with near-zero direct ranking impact — Google does not use OG tags as a ranking factor. They improve how shared links and AI-assistant previews render, not where the page ranks. Fix them for CTR and brand consistency; do not over-invest expecting SERP movement.