From be9e776b10022a2a7846782ef2bc2a627435df66 Mon Sep 17 00:00:00 2001
From: jiam <>
Date: Wed, 8 Jul 2026 02:05:21 +0800
Subject: [PATCH] Add AI clip quick scenarios
---
apps/web/src/workbench/WorkbenchShell.tsx | 183 ++++++++++++++++++++--
1 file changed, 172 insertions(+), 11 deletions(-)
diff --git a/apps/web/src/workbench/WorkbenchShell.tsx b/apps/web/src/workbench/WorkbenchShell.tsx
index 575cf83..5081c47 100644
--- a/apps/web/src/workbench/WorkbenchShell.tsx
+++ b/apps/web/src/workbench/WorkbenchShell.tsx
@@ -39,6 +39,7 @@ import {
Camera,
CheckCircle2,
ChevronRight,
+ Clapperboard,
CircleDashed,
ClipboardList,
Compass,
@@ -64,7 +65,9 @@ import {
Mic2,
Minus,
MoreHorizontal,
+ Music4,
Music2,
+ Newspaper,
Moon,
Plus,
Play,
@@ -91,6 +94,7 @@ import {
UserRound,
Video,
Volume2,
+ AudioWaveform,
Workflow,
X,
} from 'lucide-react';
@@ -11672,6 +11676,10 @@ function FunClipEditingPageContent({
| 'talking-head-clean'
| 'broll-brief'
| 'montage-mix'
+ | 'news-overview'
+ | 'explainer-remake'
+ | 'rhythm-cut'
+ | 'voice-remake'
| 'script-to-video'
| 'batch-factory';
type ClipOutputOptionId =
@@ -12603,6 +12611,150 @@ function FunClipEditingPageContent({
publishReadyEnabled: true,
},
},
+ {
+ id: 'news-overview',
+ group: '剪辑',
+ title: '新闻概览',
+ description: '把发布会、访谈或行业长视频整理成口语化概览短片。',
+ icon: ,
+ presetId: 'highlight',
+ planType: 'capability',
+ sceneId: 'ip-matrix',
+ polishId: 'founder',
+ prompt:
+ '把这段长视频做成一条新闻概览短片:先转写并提取人物、事件、关键术语和结论,再生成 250 字以内的口语化解说脚本、镜头顺序、字幕、封面标题和发布文案。事实和专有名词必须准确,不确定的内容标记为待确认。',
+ businessParams:
+ '场景:科技新闻/产品发布/行业资讯/活动复盘\n目标:一条概览短片 + 可校对事实清单\n要求:口语化、信息准确、不要编造',
+ output: '概览脚本 / 镜头顺序 / 字幕标题 / 发布文案',
+ tags: ['概览', '新闻', '事实校对'],
+ sourceMode: 'primary-with-references',
+ sourceHint: '选择 1 个主视频,可追加产品图、截图或品牌素材作为参考。',
+ acceptedSourceTypes: ['video', 'image', 'audio'],
+ minSources: 1,
+ maxSources: 12,
+ outputOptionIds: ['subtitle', 'title', 'publishCopy', 'context', 'timeline'],
+ options: {
+ clipCount: 1,
+ durationRange: '60-180',
+ intensity: 'standard',
+ platform: 'bilibili',
+ keepContext: true,
+ speakerEnabled: false,
+ subtitleEnabled: true,
+ batchEnabled: false,
+ crossSegmentEnabled: true,
+ titleSummaryEnabled: true,
+ publishReadyEnabled: true,
+ },
+ },
+ {
+ id: 'explainer-remake',
+ group: '重制',
+ title: '解说重制',
+ description: '把文案、课程或长视频改造成解说视频分镜。',
+ icon: ,
+ presetId: 'custom',
+ planType: 'capability',
+ sceneId: 'none',
+ polishId: 'none',
+ prompt:
+ '根据我的素材和目标生成解说视频方案:改写成自然口播脚本,拆分分镜,匹配主视频片段和参考图片/视频,补充需要 AI 图片或 AI 视频生成的 B-roll 提示词,并给出字幕、配音、封面和发布文案。',
+ businessParams:
+ '场景:产品解说/课程复盘/公众号转视频/知识短片\n素材:可使用主视频、图片、参考视频和脚本\n目标:先生成可编辑分镜和时间线',
+ output: '解说脚本 / 分镜表 / B-roll 提示词 / 时间线',
+ tags: ['解说', '分镜', 'B-roll'],
+ sourceMode: 'script-to-video',
+ sourceHint: '可只写文案,也可多选图片、视频和音频作为画面素材。',
+ acceptedSourceTypes: ['video', 'image', 'audio'],
+ minSources: 0,
+ maxSources: 30,
+ outputOptionIds: ['subtitle', 'title', 'publishCopy', 'timeline'],
+ options: {
+ clipCount: 1,
+ durationRange: '60-180',
+ intensity: 'standard',
+ platform: 'xiaohongshu',
+ keepContext: true,
+ speakerEnabled: false,
+ subtitleEnabled: true,
+ batchEnabled: false,
+ crossSegmentEnabled: true,
+ titleSummaryEnabled: true,
+ publishReadyEnabled: true,
+ },
+ },
+ {
+ id: 'rhythm-cut',
+ group: '剪辑',
+ title: '节奏卡点',
+ description: '多素材按音乐节奏、情绪点和镜头动作生成混剪方案。',
+ icon: ,
+ presetId: 'merge',
+ planType: 'capability',
+ sceneId: 'local-business',
+ polishId: 'commerce',
+ prompt:
+ '把这些视频、图片和 BGM 做成节奏卡点短片。先识别可用动作镜头、视觉强点、情绪转折和音乐节拍,再生成开场、铺垫、高潮、收束的镜头顺序;图片需要给出推拉摇移动效建议。',
+ businessParams:
+ '场景:活动回顾/产品氛围/门店探访/品牌宣传\n目标:30-60 秒节奏混剪\n要求:按 BGM 情绪和节拍组织镜头',
+ output: '卡点时间线 / 镜头顺序 / 字幕标题 / 发布文案',
+ tags: ['卡点', 'BGM', '混剪'],
+ sourceMode: 'multi-montage',
+ sourceHint: '多选图片、视频和 BGM;第一项会作为主素材。',
+ acceptedSourceTypes: ['video', 'image', 'audio'],
+ minSources: 2,
+ maxSources: 30,
+ outputOptionIds: ['title', 'publishCopy', 'timeline'],
+ options: {
+ clipCount: 1,
+ durationRange: '30-90',
+ intensity: 'aggressive',
+ platform: 'douyin',
+ keepContext: false,
+ speakerEnabled: false,
+ subtitleEnabled: false,
+ batchEnabled: false,
+ crossSegmentEnabled: true,
+ titleSummaryEnabled: true,
+ publishReadyEnabled: true,
+ },
+ },
+ {
+ id: 'voice-remake',
+ group: '重制',
+ title: '声音改编',
+ description: '先生成改词、配音和对齐方案,声音重制按模型中心解锁。',
+ icon: ,
+ presetId: 'custom',
+ planType: 'polish',
+ sceneId: 'none',
+ polishId: 'clean',
+ prompt:
+ '把这段视频做成声音改编方案:先转写原文,按目标语气改写口播文案,保持句长接近原表达,输出分段配音脚本、字幕、音画对齐点和需要使用的声音能力。当前先生成方案,真正换声或保声线重制需要在模型中心完成声音能力初始化后执行。',
+ businessParams:
+ '场景:用户自有素材的配音重制/数字人口播精修\n目标:改写文案、配音脚本、对齐点\n限制:不承诺直接换声,需模型中心声音能力',
+ output: '改词脚本 / 配音方案 / 对齐点 / 字幕',
+ tags: ['声音', '配音', '待解锁'],
+ sourceMode: 'primary-audio-video',
+ sourceHint: '选择 1 个自有口播视频或音频,先生成声音改编方案。',
+ acceptedSourceTypes: ['video', 'audio'],
+ minSources: 1,
+ maxSources: 1,
+ outputOptionIds: ['subtitle', 'title', 'context', 'timeline'],
+ options: {
+ clipCount: 1,
+ durationRange: '60-180',
+ intensity: 'conservative',
+ platform: 'douyin',
+ keepContext: true,
+ speakerEnabled: false,
+ subtitleEnabled: true,
+ batchEnabled: false,
+ crossSegmentEnabled: true,
+ titleSummaryEnabled: true,
+ publishReadyEnabled: false,
+ },
+ },
{
id: 'script-to-video',
group: '重制',
@@ -12792,6 +12944,10 @@ function FunClipEditingPageContent({
'commerce-live',
'broll-brief',
'montage-mix',
+ 'news-overview',
+ 'explainer-remake',
+ 'rhythm-cut',
+ 'voice-remake',
] as ClipQuickScenarioId[]
);
const visibleQuickScenarios = clipQuickScenarios.filter((item) =>
@@ -13019,7 +13175,7 @@ function FunClipEditingPageContent({
: `${selectedQuickScenario.title} 当前只需要 1 个主素材,多素材会在对应场景开放。`
: `${selectedQuickScenario.title} 只使用 1 个主视频,不会进入多选。`;
const assetPickerButtonText = allowsDirectMultiSelect
- ? '从资产中心多选素材'
+ ? '多选资产素材'
: selectedQuickScenario.acceptedSourceTypes.includes('video')
? '从资产中心选择主视频'
: '从资产中心选择素材';
@@ -13982,6 +14138,9 @@ function FunClipEditingPageContent({
setSubmittedTaskId('');
try {
const createdTask = await onCreateClipTask(title, selectedPreset.mode, {
+ quickScenarioId: selectedQuickScenario.id,
+ quickScenarioTitle: selectedQuickScenario.title,
+ quickScenarioGroup: selectedQuickScenario.group,
selectedPlan: {
type: selectedPlanType,
typeLabel: selectedPlan.typeLabel,
@@ -14740,19 +14899,12 @@ function FunClipEditingPageContent({
-
-
快捷场景
- 当前版本优先显示可闭环的剪辑和理解流程
+
+ 先选场景,系统会自动填好提示词和输出配置
+
{visibleQuickScenarios.map((item) => (
@@ -14782,6 +14934,15 @@ function FunClipEditingPageContent({
+
+