feat: support summary_large_image (#10862)

* feat: use summary_large_image

* chore: add video

* chore: ignore sensitive image on note
This commit is contained in:
Acid Chicken (硫酸鶏) 2023-05-20 10:35:23 +09:00 committed by GitHub
parent 81fd94e635
commit 915ed39715
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 22 additions and 2 deletions

View file

@ -25,7 +25,6 @@ html
meta(name='referrer' content='origin') meta(name='referrer' content='origin')
meta(name='theme-color' content= themeColor || '#86b300') meta(name='theme-color' content= themeColor || '#86b300')
meta(name='theme-color-orig' content= themeColor || '#86b300') meta(name='theme-color-orig' content= themeColor || '#86b300')
meta(property='twitter:card' content='summary')
meta(property='og:site_name' content= instanceName || 'Misskey') meta(property='og:site_name' content= instanceName || 'Misskey')
meta(name='viewport' content='width=device-width, initial-scale=1') meta(name='viewport' content='width=device-width, initial-scale=1')
link(rel='icon' href= icon || '/favicon.ico') link(rel='icon' href= icon || '/favicon.ico')
@ -59,6 +58,7 @@ html
meta(property='og:title' content= title || 'Misskey') meta(property='og:title' content= title || 'Misskey')
meta(property='og:description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨') meta(property='og:description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨')
meta(property='og:image' content= img) meta(property='og:image' content= img)
meta(property='twitter:card' content='summary')
style style
include ../style.css include ../style.css

View file

@ -16,3 +16,4 @@ block og
meta(property='og:description' content= channel.description) meta(property='og:description' content= channel.description)
meta(property='og:url' content= url) meta(property='og:url' content= url)
meta(property='og:image' content= channel.bannerUrl) meta(property='og:image' content= channel.bannerUrl)
meta(property='twitter:card' content='summary')

View file

@ -17,6 +17,7 @@ block og
meta(property='og:description' content= clip.description) meta(property='og:description' content= clip.description)
meta(property='og:url' content= url) meta(property='og:url' content= url)
meta(property='og:image' content= avatarUrl) meta(property='og:image' content= avatarUrl)
meta(property='twitter:card' content='summary')
block meta block meta
if profile.noCrawle if profile.noCrawle

View file

@ -17,6 +17,7 @@ block og
meta(property='og:description' content= flash.summary) meta(property='og:description' content= flash.summary)
meta(property='og:url' content= url) meta(property='og:url' content= url)
meta(property='og:image' content= avatarUrl) meta(property='og:image' content= avatarUrl)
meta(property='twitter:card' content='summary')
block meta block meta
if profile.noCrawle if profile.noCrawle

View file

@ -17,6 +17,7 @@ block og
meta(property='og:description' content= post.description) meta(property='og:description' content= post.description)
meta(property='og:url' content= url) meta(property='og:url' content= url)
meta(property='og:image' content= post.files[0].thumbnailUrl) meta(property='og:image' content= post.files[0].thumbnailUrl)
meta(property='twitter:card' content='summary_large_image')
block meta block meta
if user.host || profile.noCrawle if user.host || profile.noCrawle

View file

@ -5,6 +5,8 @@ block vars
- const title = user.name ? `${user.name} (@${user.username})` : `@${user.username}`; - const title = user.name ? `${user.name} (@${user.username})` : `@${user.username}`;
- const url = `${config.url}/notes/${note.id}`; - const url = `${config.url}/notes/${note.id}`;
- const isRenote = note.renote && note.text == null && note.fileIds.length == 0 && note.poll == null; - const isRenote = note.renote && note.text == null && note.fileIds.length == 0 && note.poll == null;
- const image = (note.files || []).find(file => file.type.startsWith('image/') && !file.type.isSensitive)
- const video = (note.files || []).find(file => file.type.startsWith('video/') && !file.type.isSensitive)
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
@ -17,8 +19,20 @@ block og
meta(property='og:title' content= title) meta(property='og:title' content= title)
meta(property='og:description' content= summary) meta(property='og:description' content= summary)
meta(property='og:url' content= url) meta(property='og:url' content= url)
if video
meta(property='og:video:url' content= video.url)
meta(property='og:video:secure_url' content= video.url)
meta(property='og:video:type' content= video.type)
// FIXME: add width and height
// FIXME: add embed player for Twitter
if image
meta(property='twitter:card' content='summary_large_image')
meta(property='og:image' content= image.url)
else
meta(property='twitter:card' content='summary')
meta(property='og:image' content= avatarUrl) meta(property='og:image' content= avatarUrl)
block meta block meta
if user.host || isRenote || profile.noCrawle if user.host || isRenote || profile.noCrawle
meta(name='robots' content='noindex') meta(name='robots' content='noindex')

View file

@ -17,6 +17,7 @@ block og
meta(property='og:description' content= page.summary) meta(property='og:description' content= page.summary)
meta(property='og:url' content= url) meta(property='og:url' content= url)
meta(property='og:image' content= page.eyeCatchingImage ? page.eyeCatchingImage.thumbnailUrl : avatarUrl) meta(property='og:image' content= page.eyeCatchingImage ? page.eyeCatchingImage.thumbnailUrl : avatarUrl)
meta(property='twitter:card' content= page.eyeCatchingImage ? 'summary_large_image' : 'summary')
block meta block meta
if profile.noCrawle if profile.noCrawle

View file

@ -16,6 +16,7 @@ block og
meta(property='og:description' content= profile.description) meta(property='og:description' content= profile.description)
meta(property='og:url' content= url) meta(property='og:url' content= url)
meta(property='og:image' content= avatarUrl) meta(property='og:image' content= avatarUrl)
meta(property='twitter:card' content='summary')
block meta block meta
if user.host || profile.noCrawle if user.host || profile.noCrawle