auto-save 2026-05-18 15:13 (~8)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# SKG TK 二创验证 — 当前状态(2026-05-18)
|
||||
|
||||
## 一句话
|
||||
当前产品方向已收窄为“信息流广告快速复刻”:TK 链接 / 上传视频后,先下载源视频,再并行跑音频文案路和视频视觉路;产品素材独立成池,自动识别视角并补缺角度;分镜工作台按逐句时间轴写新口播、人物/产品需求和首尾帧规划。当前暂停直接提交视频模型,先逐条生成并审核首帧 / 尾帧。
|
||||
当前产品方向已收窄为“信息流广告快速复刻”:TK 链接 / 上传视频后,先下载源视频,再并行跑音频文案路和视频视觉路;视频视觉路自动抽 6 张人物定向随机参考帧;产品素材独立成池,自动识别视角并补缺角度;分镜工作台按逐句时间轴写新口播、人物/产品需求和首尾帧规划。当前暂停直接提交视频模型,先逐条生成并审核首帧 / 尾帧。
|
||||
|
||||
## 路径 / 端口
|
||||
- 当前工作树:`/Users/kangwan/Projects/business/20260512-20260512-skg-tk-二创验证-backend/`
|
||||
@@ -34,7 +34,7 @@
|
||||
|---|---|---|---|
|
||||
| 1 | 输入 / 下载 | 已通 | TK 链接或上传视频创建 job,下载完成后进入分析队列。 |
|
||||
| 2 | 音频文案路 | 已通 | 拆 `audio.wav`,ASR、翻译、讲话人 / 节奏 / 背景音分析;结果默认折叠展示。 |
|
||||
| 3 | 视频视觉路 | 已通 | 自动或手动抽参考帧,当前工作区按 9:16 原视频播放秒数补帧。 |
|
||||
| 3 | 视频视觉路 | 已通 | 自动抽 6 张人物定向随机参考帧;当前工作区按 9:16 原视频播放秒数手动补帧。 |
|
||||
| 4 | 相似主体资产 | 已通 | 用关键帧和可选内置角色生成同一主体的 10 张白底视图。 |
|
||||
| 5 | 产品资产池 | 已通 | 上传 / 内置产品图统一入池,自动识别视角、结构点、用途、风险,缺角度可补图。 |
|
||||
| 6 | 分镜工作台 | 已通 | 按逐句时间轴编辑新口播、镜头类型、人物 / 产品开关、首帧 / 尾帧规划。 |
|
||||
@@ -88,6 +88,7 @@ POST /jobs/{id}/frames/{idx}/storyboard/video
|
||||
5. 语音只走 Azure OpenAI TTS;不要新增或依赖 MiniMax 配音配置。
|
||||
6. 当前主流程不直接批量提交视频;先走“分镜规划 → 首尾帧 → 人工审核”。
|
||||
7. 产品素材池默认是“同一产品”,不做不同产品身份判断;视角识别必须按佩戴者左 / 右、上 / 下、内 / 外侧描述。
|
||||
8. 自动抽帧默认是 `frames=6` + `target=random_subject` + `quality=accurate` + `mode=replace`;如果需要特定动作或表情,用“当前点抽帧”手动补。
|
||||
8. 后端长任务不要用 `--reload`。
|
||||
9. 关键帧 `index` 是稳定 ID,不等于数组下标;前端取帧用 `frames.find(x => x.index === idx)`。
|
||||
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "0b97d03",
|
||||
"message": "auto-save 2026-05-15 17:44 (~1)",
|
||||
"ts": "2026-05-15T17:45:02+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "eeeaebd",
|
||||
@@ -3257,6 +3250,13 @@
|
||||
"message": "fix: force azure openai tts voice path",
|
||||
"hash": "4d2a4a0",
|
||||
"files_changed": 4
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-18T15:08:05+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-18 15:07 (~5)",
|
||||
"hash": "ebac2e8",
|
||||
"files_changed": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
2
RULES.md
2
RULES.md
@@ -11,7 +11,7 @@
|
||||
- 详见 `CLAUDE.md` 立项决策段 + `.memory/plan.md` 七步管线拆解
|
||||
- 风格:`04-Dark-Gallery-Ambient`(路径:`~/Projects/research/20260305-网页风格库/04-Dark-Gallery-Ambient.md`)
|
||||
- 第一冲刺:步骤 1-4(下载 / 拆轨 / 关键帧 / ASR+翻译)
|
||||
- 当前产品方向(2026-05-18 再确认):先解决信息流广告快速复刻的第一步,不再沿用“开始后线性完成抽帧、分镜、元素生成、合成”的旧做法。主界面为“左侧素材输入列 + 右侧信息流复刻工作表”。用户粘贴 TK 链接或上传视频后点击“开始分析”,系统自动下载源视频;下载完成后并行启动两条路:音频文案路提取原音频文案/字幕,并分析讲话人、语速节奏、背景音乐/环境声/音效;视频视觉路自动抽取参考帧,供人工选择可用主体并生成相似主体白底视图。产品图上传后独立形成产品资产包,自动识别视角/结构/比例并补缺角度。分镜工作台按逐句时间轴规划新口播、镜头类型、首帧/尾帧、人物需求和产品出现方式;当前暂停直接调视频模型,先逐条用“相似主体视图 + 产品素材池 + 首尾帧文字规划”生成并审核首帧/尾帧,保存规划后再决定哪些分镜进入单条视频候选。
|
||||
- 当前产品方向(2026-05-18 再确认):先解决信息流广告快速复刻的第一步,不再沿用“开始后线性完成抽帧、分镜、元素生成、合成”的旧做法。主界面为“左侧素材输入列 + 右侧信息流复刻工作表”。用户粘贴 TK 链接或上传视频后点击“开始分析”,系统自动下载源视频;下载完成后并行启动两条路:音频文案路提取原音频文案/字幕,并分析讲话人、语速节奏、背景音乐/环境声/音效;视频视觉路自动抽取 6 张人物定向随机参考帧,供人工选择可用主体并生成相似主体白底视图。产品图上传后独立形成产品资产包,自动识别视角/结构/比例并补缺角度。分镜工作台按逐句时间轴规划新口播、镜头类型、首帧/尾帧、人物需求和产品出现方式;当前暂停直接调视频模型,先逐条用“相似主体视图 + 产品素材池 + 首尾帧文字规划”生成并审核首帧/尾帧,保存规划后再决定哪些分镜进入单条视频候选。
|
||||
|
||||
## 部署事实
|
||||
- 平台:VPS `76.13.31.179`(Ubuntu 24.04 / Docker Compose / Coolify Traefik)
|
||||
|
||||
@@ -77,7 +77,7 @@ VIDEO_DURATION_FIELD=seconds
|
||||
VIDEO_POLL_TIMEOUT_SECONDS=900
|
||||
|
||||
# 工作目录
|
||||
KEYFRAME_COUNT=12
|
||||
KEYFRAME_COUNT=6
|
||||
JOBS_DIR=./jobs
|
||||
|
||||
# CORS
|
||||
|
||||
@@ -1696,7 +1696,7 @@ def pipeline_download(job_id: str) -> None:
|
||||
def pipeline_analyze(
|
||||
job_id: str,
|
||||
frame_count: int = KEYFRAME_COUNT,
|
||||
target: FrameExtractTarget = "transparent_human",
|
||||
target: FrameExtractTarget = "random_subject",
|
||||
mode: FrameExtractMode = "replace",
|
||||
quality: FrameExtractQuality = "auto",
|
||||
) -> None:
|
||||
@@ -3145,7 +3145,7 @@ async def trigger_analyze(
|
||||
job_id: str,
|
||||
bg: BackgroundTasks,
|
||||
frames: int = KEYFRAME_COUNT,
|
||||
target: FrameExtractTarget = "transparent_human",
|
||||
target: FrameExtractTarget = "random_subject",
|
||||
mode: FrameExtractMode = "replace",
|
||||
quality: FrameExtractQuality = "auto",
|
||||
) -> Job:
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# Runtime
|
||||
JOBS_DIR=/data/jobs
|
||||
KEYFRAME_COUNT=12
|
||||
KEYFRAME_COUNT=6
|
||||
CORS_ORIGINS=https://marketing.skg.com
|
||||
API_PORT=4291
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -692,7 +692,7 @@ export async function triggerTranscribe(id: string): Promise<Job> {
|
||||
export async function analyzeJob(
|
||||
id: string,
|
||||
frames = 6,
|
||||
target: FrameExtractTarget = "balanced",
|
||||
target: FrameExtractTarget = "random_subject",
|
||||
mode: FrameExtractMode = "replace",
|
||||
quality: FrameExtractQuality = "auto",
|
||||
): Promise<Job> {
|
||||
|
||||
Reference in New Issue
Block a user