Open Graph для тех, кто не хочет думать

Никита Дубко, HR Tech @ Yandex

Open Graph для тех, кто не хочет думать

Никита Дубко, HR Tech @ Yandex

Кто я?

Веб-стандарты

Сделай мне красиво!

Create Your Own Automated Social Images With Resoc
Recycling Open Graph images for display on my web site
Respecting Users’ Motion Preferences

The
Open Graph
protocol

The Open Graph protocol
<head>
    <title>YAMAL.DEV!</title>

    <meta property="og:title"
          content="YAMAL.DEV!">
    <meta property="og:type"
          content="website">
    <meta property="og:url"
          content="https://yamal.dev/">
    <meta property="og:image"
          content="https://yamal.dev/og_image.jpg" />
</head>
        
<head>
    <title>YAMAL.DEV!</title>

    <meta property="og:title"
          content="YAMAL.DEV!">
    <meta property="og:type"
          content="website">
    <meta property="og:url"
          content="https://yamal.dev/">
    <meta property="og:image"
          content="https://yamal.dev/og_image.jpg" />
</head>
        

og:*

og:title

og:description

og:image

og:site_name

og:type

article

video.movie

Open Graph Types

og:image

<meta property="og:image"
      content="https://yamal.dev/ogp.jpg">
<meta property="og:image:secure_url"
      content="https://s.yamal.dev/ogp.jpg">
<meta property="og:image:type"
      content="image/jpeg">
<meta property="og:image:width"
      content="1200">
<meta property="og:image:height"
      content="630">
<meta property="og:image:alt"
      content="Happy people are smiling">

Массивы

<meta property="og:image"
      content="https://mefody.dev/og-s.jpg">
<meta property="og:image:width" content="300">
<meta property="og:image:height" content="300">

<meta property="og:image"
      content="https://mefody.dev/og-l.jpg">
<meta property="og:image:width" content="1000">
<meta property="og:image:height" content="1000">

og:locale

ru_RU, en_US

og:determiner

a, an, the, "", auto

Facebook

Руководство по публикации для веб-мастеров

fb:app_id

og:asset

3D asset URL

How to Specify 3D Assets for Link Sharing

> 200 x 200

Изображения в публикациях ссылок

< 8 МБ

HD: 1200 х 630

> 600 х 315

Twitter

Twitter Cards
<meta name="twitter:card"
      content="summary">

twitter:card

summary
summary_large_image
app
player

twitter:site

@dev_tip

twitter:creator

@dark_mefody

Cards Markup
Tag Reference

VK

Публикации ВКонтакте

og:title, mrc__share_title или twitter:title

vk:image

> 510 x 228

> 160 x 160

Pinterest

<meta name="pinterest-rich-pin"
      content="false">
Pinterest Developers

og:availability

instock, preorder, backorder,
out of stock, discontinued

Crawlers 🕷

Twitter

Twitterbot/1.0

Facebook

facebookexternalhit/1.1

Краулер Facebook

VK

Mozilla/5.0 (compatible; vkShare; +http://vk.com/dev/Share)

Telegram

TelegramBot (like TwitterBot)

robots.txt

User-agent: Twitterbot
Disallow:
monperrus/crawler-user-agents

Как проверить?

Twitter Card validator
Facebook: отладчик репостов
LinkedIn Post Inspector
@webpagebot
VK: pages.clearCache
metatags.io
OG Spy

Картинки кэшируются

По урлу

The Twitter web crawler re-indexes the Card tag information on your page roughly every seven days.

Прикручиваем og:image

A framework for building Open Graph images
Vercel
11ty/api-opengraph-image

Пишем велосипед
на электродвигателе

Puppeteer
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport({
    width: 1200,
    height: 630,
    deviceScaleFactor: 1,
});
await page.goto(url);
const screenshotBuffer = await page.screenshot({
    fullPage: false,
    type: 'png',
});
await page.close();

Live Coding 💻

Больше кода!

Be lazy!

mefody.dev/talks/lazy-og/yamal.html
@dark_mefody
n.a.dubko@gmail.com QR-код со ссылкой на доклад