# SKG TK 二创验证 — 初版 Plan

> ⚠️ 2026-05-13 已过时：实际进展见 `.memory/status.md`、关键决策见 `.memory/decisions.md`、SKG 网关能力见 `.memory/skg-gateway.md`

---


> intake 阶段 2026-05-12 输出，开发会话起点物。第一件事仍是跑 `/plan` 二次细化。

## 目标

跑通"TK 链接 → 带改写文案的成品视频"完整链路，验证 SKG AI 素材生产管线第二条思路的可行性。**不是产品化，是原型**——能跑、能看、能改一遍参数就够。

## 非目标（先不做）

- 不做用户系统 / 多人协作 / 权限
- 不做工单对接（验证完再谈合并主管线）
- 不做云端部署（本地 4290 端口跑）
- 不做批量 / 队列（单条手动触发）
- 不做产品信息库（产品信息每次手填或贴文本）

## 七步管线 — 原子任务拆解

### 步骤 1 — TK 视频下载
- [ ] 输入 TK 链接（TikTok 国际版，英文素材为主）
- [ ] `yt-dlp` 下载到本地临时目录，返回 mp4 路径 + 元数据
- [ ] 失败处理：限流 / 链接失效 / 私密视频，给明确报错
- 风险：TK 反爬可能要 cookie / 代理，本地验证阶段可先手动准备

### 步骤 2 — 视频/音频拆轨
- [ ] `ffmpeg` 拆音轨为 wav（16kHz 单声道，便于 ASR）
- [ ] 视频保留原 mp4，记录时长 / 帧率 / 分辨率
- [ ] 拆轨产物存 `temp/<jobId>/` 下，便于复用

### 步骤 3 — 关键帧抽取
- [ ] **自动**：均匀采样 + 场景切换检测（ffmpeg `select='gt(scene,0.4)'`），返回候选帧 ≥ 10
- [ ] **手动**：UI 时间轴拖动滑轨，预览缩略图，点击加入候选
- [ ] **去重 / 选满**：用户最多保留 10 张，已选满给提示
- [ ] 输出：10 张 jpg + 时间戳清单

### 步骤 4 — ASR + 实时翻译
- [ ] 音轨 → **Gemini** ASR（带时间戳分段）
- [ ] 英文原文逐段输出，旁边实时跑中文翻译流式输出
- [ ] UI：左右双栏（英 / 中），段落级时间戳可点击跳到对应视频时间

### 步骤 5 — 文案改写
- [ ] 输入区：**产品信息**（SKG 自家产品关键卖点，自由文本框）+ **改写指令**（保留原结构 / 重写 / 加 CTA 等几个 preset）
- [ ] **Gemini** 拿原英文转录 + 产品信息 → 输出改写后中文文案（或中英双版）
- [ ] 段落级 diff 视图：原文 vs 改写，可手动微调

### 步骤 6 — 关键帧 → 生图
- [ ] 关键帧勾选 1 张作为参考
- [ ] 生图入口二选一：**nano-banana-pro**（Gemini 3 Pro Image，默认）/ **GPT Image**
- [ ] prompt 自动从该帧的改写文案片段 + 产品信息合成，可手改
- [ ] 输出图片入画廊网格，可多次重生

### 步骤 7 — 生图 → 生视频 + 文案合成
- [ ] 单张图作为视频生成首帧 / 参考图
- [ ] **视频模型三选一**：Seedance / Kling / Veo3（API 抽象层，统一 prompt schema，key 配置文件切换）
- [ ] 生视频 prompt = 改写文案对应段落 + 镜头描述（preset：缓推 / 摇 / 静态）
- [ ] **文案合成**：生成的视频片段 + 改写文案做字幕 / 配音（TTS 用 Gemini？或先只做字幕）→ ffmpeg 合成最终 mp4

## 数据流 / 状态

每次跑一个 **Job**，状态机：
```
created → downloading → splitting → frames_extracted
       → transcribed → rewritten → image_generated
       → video_generated → composed → done | failed
```

状态 / 中间产物存 `jobs/<jobId>/state.json` + 文件落盘，刷新页面能恢复。

## 技术栈拍板

| 层 | 技术 | 备注 |
|---|---|---|
| 前端 | Next.js 16 + Tailwind 4 + shadcn/ui + Framer Motion | 风格库 04 同栈 |
| API | Next.js API routes（轻任务） + Python FastAPI（重任务：yt-dlp / ffmpeg / ASR） | 同机部署 |
| 任务编排 | 先同步阻塞 → 跑通后再上 BullMQ / Celery | 不预扩 |
| 模型接入 | Poe API 优先，OpenRouter 备用（按 `feedback_poe-api-priority.md`） | 单独 `lib/ai/` 抽象层 |
| 存储 | 本地文件系统 `jobs/<jobId>/` + SQLite 存元数据 | 验证阶段够用 |

## 关键风险 / 待澄清

1. **TK 下载合规** — 本地验证 OK，量产前需要法务点头
2. **Veo3 / Seedance / Kling 的 API 可用性** — Poe 上 Veo3 已知可调，另外两家要查
3. **生视频成本** — 单次 5-10 秒视频生成 $0.5-$2，验证阶段控量
4. **字幕烧录 vs 旁白配音** — 步骤 7 默认只做字幕，配音作为 P2

## 第一冲刺范围（MVP 最小可演）

只做 **步骤 1+2+3+4** 端到端：
- 输入 TK 链接 → 拿到视频 → 拆出 10 张关键帧 + 双语转录
- UI 用 04 风格起骨架（hero + 关键帧画廊 slider + 左右双语栏）
- **不做** 步骤 5/6/7，等 1-4 跑通再扩

## 开发会话第一句

```
按 CLAUDE.md + .memory/plan.md，先 /plan 二次细化第一冲刺范围（步骤 1-4），
然后 /ui-ux-pro-max --design-system 出 token，用 04 风格起 Next.js 骨架，端口 4290。
```
