Я мигрирую с phpBB на Discourse и обнаружил, что в реализации OpenGraph в Discourse отсутствуют некоторые важные теги, от которых зависит Facebook для корректного отображения изображений.
Проблема
При публикации тем Discourse в Facebook изображения не отображаются в превью ссылки. Однако при публикации постов phpBB с того же форума изображения отображаются корректно.
Используя Отладчик совместного использования Facebook, я выяснил, что:
phpBB включает:
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:image:width" content="1024">
<meta property="og:image:height" content="768">
<meta property="og:image:type" content="image/jpeg">
Discourse включает:
<meta property="og:image" content="https://example.com/uploads/.../image.JPG" />
Отладчик показывает изображение корректно и возвращает HTTP 200, но Facebook не отображает его в реальном превью совместного использования без метаданных о размерах и типе.
Почему это важно
Согласно спецификации протокола OpenGraph:
Тег
og:imageимеет несколько необязательных структурированных свойств, включаяog:image:width,og:image:heightиog:image:type.
Хотя эти свойства технически необязательны, краулер Facebook, похоже, требует или настоятельно предпочитает их для надежного отображения изображений. Это задокументировано в различных источниках и влияет на совместное использование в социальных сетях для всех сообществ Discourse.
Предлагаемое решение
Discourse должен автоматически добавлять эти три дополнительных мета-тега всякий раз, когда присутствует og:image:
og:image:width— фактическая ширина изображения в пикселяхog:image:height— фактическая высота изображения в пикселяхog:image:type— MIME-тип (image/jpeg, image/png и т. д.)
Поскольку Discourse уже обрабатывает и оптимизирует изображения, у него есть доступ к этой информации, и он может легко включить её в вывод OpenGraph.
Влияние
Это улучшит совместное использование в социальных сетях для всех сайтов Discourse, сделав общие ссылки более визуально привлекательными и увеличив вовлеченность при публикации контента Discourse в Facebook, LinkedIn и других платформах, использующих данные OpenGraph.