From f87d82fe15fbe3998d4fb453394769bb235e4243 Mon Sep 17 00:00:00 2001 From: clawdbot Date: Wed, 28 Jan 2026 06:31:49 +0800 Subject: [PATCH] fix(sdk): prefer iframe for embed-page urls in goView import --- packages/sdk/src/core/goview/convert.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/core/goview/convert.ts b/packages/sdk/src/core/goview/convert.ts index e78f8a4..11831c0 100644 --- a/packages/sdk/src/core/goview/convert.ts +++ b/packages/sdk/src/core/goview/convert.ts @@ -483,6 +483,19 @@ export function convertGoViewProjectToScreen(input: GoViewProjectLike | GoViewSt const optionSaysVideo = looksLikeVideoOption(option); const optionSaysIframe = looksLikeIframeOption(option); + // Some goView/fork widgets mislabel embedded platforms (YouTube/Vimeo/etc) as "Video" + // even though they are best represented as an iframe (a web page, not a media stream). + const urlLike = pickUrlLike(option); + const urlLooksLikeEmbedPage = + !!urlLike && + /(youtube\.com|youtu\.be|vimeo\.com|bilibili\.com|youku\.com|iqiyi\.com|tencent|douyin\.com|kuaishou\.com)/i.test( + urlLike, + ) && + // Keep actual media URLs as video. + !/\.(mp4|m3u8|flv|webm|mov|m4v|ogv)(\?|#|$)/i.test(urlLike) && + !/^data:video\//i.test(urlLike) && + !/^(rtsp|rtmp):\/\//i.test(urlLike); + // Prefer evidence from the option payload over the widget key. // Many forks mislabel widget keys (e.g. "Text*" / "Image*"), but the option payload // clearly indicates iframe/video/image. @@ -490,7 +503,9 @@ export function convertGoViewProjectToScreen(input: GoViewProjectLike | GoViewSt optionSaysIframe ? 'iframe' : optionSaysVideo - ? 'video' + ? urlLooksLikeEmbedPage + ? 'iframe' + : 'video' : optionSaysImage ? 'image' : isIframe(c)