Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add kostja94/marketing-skills --skill open-graph -a claude-code
Open on GitHub

What 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-code

2Manually: put the files in place

~/.claude/skills/open-graph/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/open-graph/

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

Similar skills

Everything for SEO and GEO →

From the same set125

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor