Не работает Open Graph изображение в Next.js
Большинство ошибок превью в Next.js связаны с Metadata API: отсутствующий metadataBase, объект openGraph, заменяющий родительский, или размер файла изображения, превышающий лимит.
Последнее обновление
Быстрое решение
Задайте metadataBase в корневом макете, чтобы относительные пути к изображениям стали абсолютными URL-адресами.
Повторите весь объект openGraph на любой странице, которая его переопределяет.
Размер opengraph-image должен быть менее 8 МБ, а twitter-image — менее 5 МБ.
Проверьте развернутый URL-адрес с помощью инструмента проверки метатегов, а не на localhost.
Почему превью Next.js отсутствует или отображается некорректно
Относительные пути к изображениям без
metadataBase. Относительный URL в поле метаданных на основе URL без metadataBase вызывает ошибку сборки, и платформы в любом случае не могут загружать относительные пути.Страница переопределяет
openGraphи теряет изображение. Метаданные из макетов и страниц объединяются поверхностно (shallow merge), поэтому объект openGraph страницы полностью заменяет openGraph макета, включая изображение.Файл изображения слишком велик. Размер
opengraph-imageдолжен быть менее 8 МБ, аtwitter-image— менее 5 МБ, иначе сборка завершится с ошибкой.Вы тестировали на localhost или на защищенном превью-деплое. Платформы выполняют запросы со своих собственных серверов и не могут получить к нему доступ.
Платформа закешировала более ранний деплой. Обновите кеш после исправления.
Как это исправить
В
app/layout.tsxзадайтеmetadataBase: new URL('https://your-domain.com').Когда страница задает
openGraph, укажитеimagesзаново или добавьте родительские изображения через spread-оператор изgenerateMetadata.Или добавьте файл
opengraph-image.pngв сегмент маршрута. Next.js автоматически добавит og:image, его тип, ширину и высоту.Для сгенерированных изображений используйте
ImageResponseизnext/ogс параметромsize = { width: 1200, height: 630 }.Выполните деплой, затем проверьте публичный URL с помощью инструмента проверки метатегов.
Теги, которые должен выводить Next.js
og:title,og:description,og:urlog:imageсog:image:width,og:image:heightиog:image:typeog:image:altизopengraph-image.alt.txttwitter:cardиtwitter:image(абсолютный URL)
Вы можете написать их вручную с помощью генератора метатегов и сравнить их с вашей сборкой.
Правила для размеров изображений
opengraph-image: .jpg, .jpeg, .png или .gif, не более 8 МБ
twitter-image: те же типы, не более 5 МБ
1200 x 630 px — размер, который Next.js использует в своих примерах
Потоковая передача метаданных и краулеры
Более новые версии Next.js могут передавать метаданные из generateMetadata в body в потоковом режиме. Для ботов с ограниченной поддержкой HTML, таких как facebookexternalhit, Next.js по-прежнему блокирует рендеринг и помещает теги в head. Он определяет таких ботов по User-Agent. Вы можете переопределить этот список с помощью параметра htmlLimitedBots в next.config.
Как принудительно обновить превью
Next.js не может очистить кеш сторонней платформы. После деплоя обновите кеш на каждой платформе: Post Inspector для LinkedIn, Sharing Debugger для Facebook, новая строка запроса для X, Slack и Discord. В инструменте обновления собраны все эти ссылки.
Источники
Частые вопросы
Почему в моем проекте Next.js og:image использует относительный URL?
Параметр metadataBase не задан. Укажите его в корневом макете (root layout), чтобы Next.js преобразовывал относительные пути в абсолютные URL-адреса.
Почему на моей странице пропадает og:image из макета?
Next.js выполняет поверхностное слияние (shallow merge) метаданных. Если страница определяет openGraph, этот объект полностью заменяет openGraph из макета (layout), поэтому изображения нужно добавить на страницу заново.
Каков максимальный размер файла для opengraph-image в Next.js?
8 МБ для opengraph-image и 5 МБ для twitter-image. Файлы большего размера вызовут ошибку сборки.
Проверьте свою страницу, затем обновите предпросмотр
Вставьте свой URL в бесплатный инструмент проверки, чтобы увидеть, какие именно теги считывает каждое приложение. Как только теги будут настроены правильно, воспользуйтесь инструментом обновления, чтобы очистить старый предпросмотр.
Похожие руководства
Карточка X (Twitter) не отображается или не обновляется
X формирует карточку на основе тегов twitter:, а при их отсутствии переходит к тегам og:. Валидатора, обновляющего кэш, больше нет, поэтому решение — использовать корректные теги вместе с новым URL.
Превью для соцсетей во Framer не обновляется
Framer позволяет настроить общее превью для соцсетей на весь сайт, переопределить его для отдельных страниц и задать изображения для каждого элемента CMS. Если новое изображение уже опубликовано, но все еще отображается старое, причина в кэше платформы.
Не работает изображение Open Graph в Webflow
В Webflow разметка Open Graph настраивается отдельно для каждой страницы, а не глобально. Для шаблонных страниц CMS требуется поле «Изображение», и все изображения в этой коллекции должны быть одного размера.