open-graph — Claude Code skill: what it does, how to install
Configures and audits Open Graph metadata for social preview cards. Useful when setting up tags in plain HTML or Next.js App Router.
npx skills add kostja94/marketing-skills --skill open-graph -a claude-codeWhat open-graph does
The skill implements the essential social metadata tags: og:title, og:description, og:image, and og:url. It aligns share copy with page content without forcing an exact match with SEO tags. Social feeds often need different phrasing.
It provides ready-to-use snippets for generic HTML and the Next.js App Router metadata object. Guidance covers image sizing around 1200×630, web formats, and image dimension tags. If you provide a relative image path instead of an absolute HTTPS URL, platforms like Facebook or LinkedIn will fail to render the preview image.
Scope is limited strictly to Open Graph writing rules. Full page metadata lifecycles belong to page-metadata, while X-specific tags require twitter-cards. Remember that client-only tag insertion risks rendering blank previews if platform crawlers inspect only raw server HTML.
What it helps with
- add required Open Graph tags to HTML or Next.js pages
- fix broken preview cards caused by relative image URLs
- configure additional properties such as og:type, og:site_name, and og:locale
- verify that og:url matches the declared canonical URL
Example prompts for the agent
- Audit the Open Graph tags on this page and add missing image dimensions
- Generate a Next.js App Router openGraph metadata object for a blog post
- Implement essential og: tags with absolute HTTPS image URLs
How to install open-graph
1Skills CLI (Vercel)
npx skills add kostja94/marketing-skills --skill open-graph -a claude-code2Manually: put the files in place
~/.claude/skills/open-graph/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/open-graph/
1Skills CLI (Vercel)
npx skills add kostja94/marketing-skills --skill open-graph -a codex2Manually: put the files in place
.agents/skills/open-graph/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add kostja94/marketing-skills --skill open-graph -a cursor2Manually: put the files in place
.cursor/skills/open-graph/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install kostja94/marketing-skills open-graph2Manually: put the files in place
.github/skills/open-graph/SKILL.md1Skills CLI (Vercel)
npx skills add kostja94/marketing-skills --skill open-graph -a gemini-cli2Platform CLI
gemini skills install https://github.com/kostja94/marketing-skills --path skills/seo/on-page/open-graphManually: put the files in place
.devin/skills/open-graph/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add kostja94/marketing-skills --skill open-graph -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about open-graph
How to install open-graph in Claude Code?
Run npx skills add kostja94/marketing-skills --skill open-graph -a claude-code.
What does the open-graph skill do?
It provides implementation rules and code snippets for Open Graph social preview cards across HTML and Next.js.
Should og:title match the SEO title tag exactly?
No, string equality is not required. Social copy can differ from search snippets as long as both accurately describe the same page content.
Source text
SKILL.md · MIT
---
name: open-graph
description: When the user wants to add, audit, implement, or optimize Open Graph metadata for social sharing, including og:title, og:description, og:image, og:url, Facebook previews, LinkedIn previews, or social share previews. For a full metadata lifecycle use page-metadata; for X-specific previews use twitter-cards.
metadata:
version: 2.0.0
---
# SEO On-Page: Open Graph
Owns Open Graph writing and implementation rules for social previews. **page-metadata** owns the full-page lifecycle and release verification.
**When invoking**: On **first use**, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On **subsequent use** or when the user asks to skip, go directly to the main output.
## Scope (Social Sharing)
- **Open Graph**: Facebook-originated protocol; controls preview card when links are shared on social platforms
## The 4 Essential Tags
Every shareable page requires these minimum tags:
```html
<meta property="og:title" content="Your Page Title">
<meta property="og:description" content="Your description">
<meta property="og:image" content="https://yourdomain.com/image.png">
<meta property="og:url" content="https://yourdomain.com/page">
```
| Tag | Guideline |
|-----|-----------|
| **og:title** | Concise and useful in a sharing context; same page identity as SEO title, not necessarily identical text |
| **og:description** | Accurate social summary; may differ from the meta description without changing the promise |
| **og:image** | Absolute HTTPS URL; representative of the page; include dimensions when known |
| **og:url** | Stable public page identity; normally the same URL declared canonical |
## Recommended Additional Tags
| Tag | Purpose |
|-----|---------|
| **og:type** | Content type: `website`, `article`, `video`, `product` |
| **og:site_name** | Website name; displayed separately from title |
| **og:image:width** / **og:image:height** | Image dimensions (1200×630px) |
| **og:image:alt** | Alt text for accessibility |
| **og:locale** | Language/territory (e.g., `en_US`); for multilingual sites |
## Image Best Practices
| Item | Guideline |
|------|-----------|
| **Size** | Use a high-resolution image and verify the target platforms' current requirements; 1200×630 is a common cross-platform starting point |
| **Format** | Use a platform-supported web image format and verify the deployed response |
| **URL** | Absolute URL with https://; no relative paths |
| **Unique** | One unique image per page when possible |
## Common Mistakes
- Using relative image URLs instead of absolute https://
- Images too small or wrong aspect ratio
- Empty or placeholder values
- Missing og:url (canonical)
- Reusing a generic logo or unrelated image when a representative page image is available
- Copying SEO title/description mechanically when the share context needs different wording
## Implementation
### Next.js (App Router)
```tsx
export const metadata = {
openGraph: {
title: '...',
description: '...',
url: 'https://example.com/page',
siteName: 'Example',
images: [{ url: 'https://example.com/og.jpg', width: 1200, height: 630, alt: '...' }],
locale: 'en_US',
type: 'website',
},
};
```
### HTML (generic)
```html
<meta property="og:title" content="Your Title">
<meta property="og:description" content="Your description">
<meta property="og:image" content="https://example.com/og.jpg">
<meta property="og:url" content="https://example.com/page">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Your Site">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Alt text">
```
## Testing
- **Facebook**: [Sharing Debugger](https://developers.facebook.com/tools/debug/)
- **LinkedIn**: [Post Inspector](https://www.linkedin.com/post-inspector/)
Preview services cache metadata. Test the deployed absolute URL and refresh the cache when supported. Also inspect the raw initial HTML; a client-only tag insertion may not be available to every scraper.
## Consistency boundary
Open Graph and SEO metadata may use different copy because search and social feeds are different contexts. They must still identify the same page, describe the same product or content, and avoid unsupported claims. Do not require string equality.
## Related Skills
- **social-share-generator**: Share buttons use OG tags for rich previews when users share; OG must be set for share buttons to show proper cards
- **article-page-generator**: Use og:type `article` for article/post pages; article-specific tags (published_time, author)
- **page-metadata**: Full lifecycle, source-of-truth implementation, and production validation
- **title-tag**, **meta-description**: Search copy; may differ while preserving page identity
- **twitter-cards**: Twitter uses OG as fallback; add Twitter-specific tags for best results
- **canonical-tag**: og:url should match canonical URL
- **og-image-generator**: Programmatic OG image generation — 6 visual styles (Terminal/CLI, Magazine Editorial, Swiss Minimal, Pixel Retro, Brutalist, Newspaper), Satori+resvg, Puppeteer, AI image generation tools, and Agent-Native content-aware workflow. This skill covers how to SET the image tag; og-image-generator covers how to CREATE the image.
© kostja94 · MIT · kostja94/marketing-skills