Open Graph (OG) — это протокол метаданных, разработанный для того, чтобы управлять тем, как контент веб-страниц отображается при публикации в социальных сетях. Каждый тег OG описывает определённый аспект страницы: заголовок, описание, изображение и тип контента. В сочетании с MDX, который позволяет встраивать JSX в Markdown, Open Graph теги становятся мощным инструментом для динамического управления метаданными в документации, блогах и маркетинговых страницах.
Стандартный набор тегов включает:
og:title — заголовок страницы.og:description — краткое описание
контента.og:image — ссылка на изображение для
превью.og:url — канонический URL
страницы.og:type — тип контента
(website, article, video и
др.).og:locale — локализация страницы
(например, ru_RU).og:site_name — название сайта.Пример HTML-разметки:
<meta property="og:title" content="MDX и Open Graph">
<meta property="og:description" content="Использование MDX для управления Open Graph тегами">
<meta property="og:image" content="https://example.com/preview.png">
<meta property="og:url" content="https://example.com/mdx-og">
<meta property="og:type" content="article">
<meta property="og:locale" content="ru_RU">
<meta property="og:site_name" content="Документация по MDX">
MDX позволяет использовать React-компоненты прямо в Markdown. Это
открывает возможности динамической генерации OG тегов на основе пропсов
или контента документации. Для этого часто создают отдельный компонент
<SEO>.
Пример компонента:
import React from 'react';
import Head from 'next/head';
const SEO = ({ title, description, image, url }) => (
<Head>
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:image" content={image} />
<meta property="og:url" content={url} />
<meta property="og:type" content="article" />
<meta property="og:locale" content="ru_RU" />
</Head>
);
export default SEO;
Использование в MDX:
import SEO from './components/SEO'
<SEO
title="MDX и Open Graph"
description="Детальный разбор интеграции Open Graph тегов в MDX"
image="https://example.com/preview.png"
url="https://example.com/mdx-og"
/>
Для проектов на Next.js или Gatsby MDX теги можно генерировать на основе frontmatter в каждом документе:
---
title: "MDX и Open Graph"
description: "Подробное руководство по Open Graph тегам в MDX"
image: "/images/og-preview.png"
---
<SEO
title={frontmatter.title}
description={frontmatter.description}
image={frontmatter.image}
url={`https://example.com${router.asPath}`}
/>
Такой подход обеспечивает:
Twitter Cards, поддерживает Open Graph.Особое внимание стоит уделять размеру изображений: оптимальные размеры для Facebook и LinkedIn — минимум 1200×630 пикселей, для Twitter — 1200×675 пикселей. MDX позволяет динамически подставлять изображения, что упрощает подготовку к публикации.
<SEO> для всего проекта облегчает поддержку.<SEO> можно использовать с серверным рендерингом,
обеспечивая корректное отображение OG при первом запросе страницы.og:video для
видео-контента.og:locale:alternate.MDX и Open Graph теги совместно создают гибкую архитектуру для управления метаданными, позволяя комбинировать простоту Markdown с мощью React-компонентов и динамического контента.