- {String(t.step).padStart(2, "0")}
- {t.icon}
- {t.title}
+
+ {String(t.step).padStart(2, "0")}
+ {t.icon}
+ {t.title}
-
+
-
+
)
}
return (
-
- {/* Tile Bar — DAG 拓扑布局:input/download/split → (关键帧路 / 转录路) → compose */}
-
-
-
-
- {/* 分叉:上下两路 */}
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {/* 分叉:上路 关键帧/生图/生视频 */}
+
- {/* 展开面板 — 从屏幕左侧滑出,竖向 sidebar drawer */}
+ {/* 展开面板 — 紧贴左侧 sidebar 右侧滑出,竖向单列 */}
{expanded.size > 0 && (
+
+ >
)}
- {/* ---- ImageGen ---- */}
+ {/* ---- ImageGen — Kanban ---- */}
{key === "imagegen" && (
-
+
+
+
+
+
+
+
+ >
)}
- {/* ---- Compose ---- */}
+ {/* ---- Compose — Kanban ---- */}
{key === "compose" && (
-
Pipeline
+ {/* 主线:input / download / split */}
+
+
+
+
+ {/* 分叉:下路 转录/翻译/改写 */}
+ 视频路
+
+
+
+
+
+ {/* 合流 */}
+ 音频路
+
{TILES.filter((t) => expanded.has(t.key)).map((t) => (
-
-
-
-
-
-
+
+ 产品信息
+ <>
+ 模型 & 状态
- 模型:gemini-2.5-pro
- 下一冲刺接入
- 按英文转录 + 产品信息 → 输出改写中文文案
+ 下一冲刺接入
+
-
-
+ <>
+
+
+
+
{data.selectedFrames.size === 0 ? (
-
+
) : (
-
+
+ ))
)}
-
+ >
)}
- {/* ---- VideoGen ---- */}
+ {/* ---- VideoGen — Kanban ---- */}
{key === "videogen" && (
-
-
-
-
- 推荐
- nano-banana-pro
- Gemini 3 Pro Image
-
-
- 备选
- gpt-image-2
- OpenAI
- Gemini 3 Pro Image · 走 SKG 网关 /v1/images/generations
+ OpenAI · SKG 网关待开通
+ 在「关键帧」里勾选后启动
+ 在「关键帧」节点勾选 1+ 张后,每张关键帧 → 1 张生成图
+
- {Array.from({ length: data.selectedFrames.size }).map((_, i) => (
-
- #{i + 1} 待生
-
- ))}
-
+ Array.from({ length: data.selectedFrames.size }).map((_, i) => (
+
+ 待生成
+
+
- {["Sora 2 · SKG", "Seedance · 外部", "Kling · 外部"].map((m) => (
-
-
- ))}
-
+ <>
+ {m}
- /v1/videos 待开通(IT)
+ 字节跳动 · 需独立 API key
+ 快手 · 需独立 API key
+ 每张生成图 → 1 段 5-10s 视频,按改写文案合成 prompt
+
-
- 成品视频 · 待合成
-
-
-
+
+ >
)}
)
- 视频片段 + 字幕 / TTS
+ <>
+
+
+
+
+ 待合成
- 本地 ffmpeg · 零 API
-
- 视频片段 + 字幕(改写中文)+ TTS 配音 → 最终 mp4
+ 完全本地 · 零 API 调用
+