diff --git a/apps/web/src/pages/scripts/ScriptLibrary.tsx b/apps/web/src/pages/scripts/ScriptLibrary.tsx index 54c942c0e..4dd7b440d 100644 --- a/apps/web/src/pages/scripts/ScriptLibrary.tsx +++ b/apps/web/src/pages/scripts/ScriptLibrary.tsx @@ -6,7 +6,7 @@ * 操作:编辑 / 删除 / 复制 / 使用(跳创作页预填) * - 新建/编辑弹窗:标题(原"名称")、正文(含 AI 改写)、分类、标签 * - #1893/#1894 AI 能力: - * - 顶部「🎬 从抖音提取」按钮 → 输入抖音链接 → ASR 提取文案 → 自动填充到新建弹窗 + * - 顶部「🎬 从抖音提取」按钮 → 粘贴分享文案/链接(后端自动提取URL) → ASR 提取文案 → 自动填充到新建弹窗 * - 正文下方「✨ AI 改写」按钮 → 点击直接执行(美化 loading spinner + "正在改写..."), * 成功自动替换正文并 toast「改写成功」1s 自动关闭;失败 toast 错误 * - 标题旁「✨ AI 生成标题」按钮 → 候选列表一键填入 @@ -272,20 +272,16 @@ const ScriptLibrary: React.FC = () => { setDouyinModalOpen(true) } - /** 执行抖音提取,成功后打开新建弹窗并预填 content */ + /** #1894:执行抖音提取。前端不再做 URL 前缀校验,直接把用户粘贴的原文(含分享文案+链接)交给后端 _extract_url_from_text 自动提取。后端 400 错误(未找到链接/非抖音域名等)直接透传给用户。 */ const handleDouyinExtract = async () => { - const url = douyinUrl.trim() - if (!url) { - message.warning("请粘贴抖音视频链接") - return - } - if (!/^https?:\/\//i.test(url)) { - message.warning("请输入以 http(s):// 开头的完整链接") + const raw = douyinUrl.trim() + if (!raw) { + message.warning("请粘贴抖音视频链接或分享文案") return } setDouyinLoading(true) try { - const res = await extractScriptFromDouyin({ url }) + const res = await extractScriptFromDouyin({ url: raw }) message.success(`提取成功${res.duration_seconds ? `(时长 ${res.duration_seconds}s)` : ""}`) setDouyinModalOpen(false) setDouyinUrl("") @@ -300,6 +296,7 @@ const ScriptLibrary: React.FC = () => { }) setModalOpen(true) } catch (err) { + // 后端 400(未找到有效链接/仅支持抖音域名等)直接透传错误信息 message.error(extractErrMsg(err, "抖音文案提取失败")) } finally { setDouyinLoading(false) @@ -637,11 +634,12 @@ const ScriptLibrary: React.FC = () => { destroyOnClose > - 粘贴抖音分享链接(支持 v.douyin.com 短链和 www.douyin.com/video/ 长链), AI - 将自动下载音频并识别文案。首次识别可能需要 5-15 秒。 + 粘贴抖音分享文案或链接即可,系统会自动从文本中识别链接(支持 v.douyin.com 短链、 + www.douyin.com/video/ 长链,以及 App「复制链接」带的分享文案)。AI + 将自动下载音频并识别文案, 首次识别可能需要 5-15 秒。 setDouyinUrl(e.target.value)} rows={2} @@ -651,7 +649,7 @@ const ScriptLibrary: React.FC = () => { {douyinLoading && ( - 正在下载视频并识别文案,可能需要数秒,请稍候… + 提取中,正在下载视频并识别文案,可能需要数秒,请稍候… )}