From 1c7d8557c6136bda2792cfce53d873b59808e9b7 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Sat, 21 Mar 2026 00:31:59 +0100 Subject: [PATCH] fix: use predictable YouTube thumbnail URL as fallback for embed poster YouTube may block og:image extraction via BackspaceBot user-agent. Use img.youtube.com/vi/{ID}/hqdefault.jpg as a guaranteed thumbnail that doesn't require metadata fetching. If og:image is successfully fetched, it overwrites the fallback. --- packages/server/src/utils/embedResolver.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/server/src/utils/embedResolver.ts b/packages/server/src/utils/embedResolver.ts index f1d07746..ff096b92 100644 --- a/packages/server/src/utils/embedResolver.ts +++ b/packages/server/src/utils/embedResolver.ts @@ -78,6 +78,12 @@ export async function resolveEmbeds( // Track the effective embed type (may be overridden by Content-Type detection) let effectiveEmbedType = classification.embedType; + // For YouTube/Vimeo, use predictable thumbnail URLs as fallback + if (classification.provider === 'youtube' && classification.embedUrl) { + const ytId = classification.embedUrl.split('/').pop()?.split('?')[0]; + if (ytId) image = `https://img.youtube.com/vi/${ytId}/hqdefault.jpg`; + } + if (classification.embedType === 'image') { // Direct image URL — no fetch needed, use the URL as the image source image = url;