From deda966b53554975d20e5348af59ec0ea04c5cf3 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 15 Feb 2026 20:31:44 +0000 Subject: [PATCH] Use video thumbnail as og:image for posts with video embeds Since HLS streams can't use og:video, this uses the video's thumbnail image as the og:image instead, giving video posts a proper preview card. Handles both standalone video embeds and videos in recordWithMedia embeds. https://claude.ai/code/session_01QCXR2u2dVFUAqdKmnryrZX --- bskyweb/cmd/bskyweb/server.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/bskyweb/cmd/bskyweb/server.go b/bskyweb/cmd/bskyweb/server.go index 5b81396262..1f9c0ed649 100644 --- a/bskyweb/cmd/bskyweb/server.go +++ b/bskyweb/cmd/bskyweb/server.go @@ -574,7 +574,10 @@ func (srv *Server) WebPost(c echo.Context) error { if postView.Embed != nil && !isEmbedHidden { hasImages := postView.Embed.EmbedImages_View != nil - hasMedia := postView.Embed.EmbedRecordWithMedia_View != nil && postView.Embed.EmbedRecordWithMedia_View.Media != nil && postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View != nil + hasVideo := postView.Embed.EmbedVideo_View != nil + hasMedia := postView.Embed.EmbedRecordWithMedia_View != nil && postView.Embed.EmbedRecordWithMedia_View.Media != nil + hasMediaImages := hasMedia && postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View != nil + hasMediaVideo := hasMedia && postView.Embed.EmbedRecordWithMedia_View.Media.EmbedVideo_View != nil if hasImages { var thumbUrls []string @@ -582,12 +585,20 @@ func (srv *Server) WebPost(c echo.Context) error { thumbUrls = append(thumbUrls, postView.Embed.EmbedImages_View.Images[i].Thumb) } data["imgThumbUrls"] = thumbUrls - } else if hasMedia { + } else if hasVideo { + if postView.Embed.EmbedVideo_View.Thumbnail != nil { + data["imgThumbUrls"] = []string{*postView.Embed.EmbedVideo_View.Thumbnail} + } + } else if hasMediaImages { var thumbUrls []string for i := range postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View.Images { thumbUrls = append(thumbUrls, postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View.Images[i].Thumb) } data["imgThumbUrls"] = thumbUrls + } else if hasMediaVideo { + if postView.Embed.EmbedRecordWithMedia_View.Media.EmbedVideo_View.Thumbnail != nil { + data["imgThumbUrls"] = []string{*postView.Embed.EmbedRecordWithMedia_View.Media.EmbedVideo_View.Thumbnail} + } } }