auto-save 2026-05-14 00:20 (+4, ~4)

This commit is contained in:
2026-05-14 00:20:30 +08:00
parent 6cd0713230
commit 540107d505
8 changed files with 989 additions and 13 deletions

View File

@@ -2638,6 +2638,13 @@
"type": "session-heartbeat", "type": "session-heartbeat",
"message": "Claude 会话活跃 · 最近命令claude · 3 项未提交变更 · 最近提交auto-save 2026-05-14 00:08 (+5, ~2)", "message": "Claude 会话活跃 · 最近命令claude · 3 项未提交变更 · 最近提交auto-save 2026-05-14 00:08 (+5, ~2)",
"files_changed": 3 "files_changed": 3
},
{
"ts": "2026-05-14T00:14:48+08:00",
"type": "commit",
"message": "auto-save 2026-05-14 00:14 (+10, ~3)",
"hash": "6cd0713",
"files_changed": 13
} }
] ]
} }

View File

@@ -0,0 +1,137 @@
- generic [active] [ref=e1]:
- main [ref=e3]:
- button "切到明亮主题" [ref=e5]:
- img [ref=e6]
- application [ref=e14]:
- generic [ref=e16]:
- generic:
- generic:
- img:
- group "Edge from input to keyframe" [ref=e17] [cursor=pointer]
- img:
- group "Edge from input to asr" [ref=e20] [cursor=pointer]
- img:
- group "Edge from asr to translate"
- img:
- group "Edge from translate to rewrite" [ref=e23] [cursor=pointer]
- img:
- group "Edge from keyframe to storyboard" [ref=e26] [cursor=pointer]
- img:
- group "Edge from rewrite to storyboard" [ref=e29] [cursor=pointer]
- img:
- group "Edge from storyboard to videogen" [ref=e32] [cursor=pointer]
- img:
- group "Edge from videogen to compose" [ref=e35] [cursor=pointer]
- img:
- group "Edge from rewrite to compose" [ref=e38] [cursor=pointer]
- generic:
- group [ref=e41]:
- generic [ref=e43]:
- generic [ref=e44]:
- img [ref=e46]
- generic [ref=e49]: 输入 · Input
- generic [ref=e52]:
- generic [ref=e53]: STEP 1 · 待运行
- textbox "粘贴 TikTok 链接" [ref=e54]
- generic [ref=e55]:
- button "提交链接" [disabled] [ref=e56]
- button "上传" [ref=e57]:
- img [ref=e58]
- text: 上传
- generic "拖动调整宽度" [ref=e62]
- group [ref=e63]:
- generic [ref=e65]:
- generic [ref=e67]:
- img [ref=e69]
- generic [ref=e73]: 镜头拆解 · 元素提取
- generic [ref=e76]:
- generic [ref=e77]: STEP 2 · 等待抽取 · 待运行
- generic [ref=e78]: 等待解析(默认 5 张)
- generic "拖动调整宽度" [ref=e80]
- group [ref=e81]:
- generic [ref=e82]:
- generic [ref=e84]:
- img [ref=e86]
- generic [ref=e89]: 声音文案 · ASR
- generic [ref=e92]:
- generic [ref=e93]: STEP 3 · 可选文案轨 · 待运行
- generic [ref=e94]: Gemini 2.5 · 英文带时间戳分段
- generic "拖动调整宽度" [ref=e96]
- group [ref=e97]:
- generic [ref=e98]:
- generic [ref=e100]:
- img [ref=e102]
- generic [ref=e106]: 翻译理解 · Translate
- generic [ref=e109]:
- generic [ref=e110]: STEP 4 · EN → ZH · 待运行
- generic [ref=e111]: 中文翻译 · 段落级 · 实时输出
- generic "拖动调整宽度" [ref=e113]
- group [ref=e114]:
- generic [ref=e116]:
- generic [ref=e118]:
- img [ref=e120]
- generic [ref=e125]: 元素改造 · Storyboard
- generic [ref=e128]:
- generic [ref=e129]: STEP 6 · 参考元素 → SKG 画面 · 待运行
- generic [ref=e130]:
- text: 不是复刻原视频:先把参考图里的主体 / 场景 / 动作 / 道具拆出来,再替换成 SKG 产品画面。
- generic [ref=e131]: 已有 0 个提取元素 · 0 个分镜进入编排
- button "进入分镜编排" [disabled] [ref=e132]
- generic "拖动调整宽度" [ref=e134]
- group [ref=e135]:
- generic [ref=e136]:
- generic [ref=e138]:
- img [ref=e140]
- generic [ref=e144]: 产品文案 · Rewrite
- generic [ref=e147]:
- generic [ref=e148]: STEP 5 · 接 SKG 卖点 · 待运行
- textbox "粘贴 SKG 产品信息 / 关键卖点(可作为视频脚本和镜头动作参考)" [disabled] [ref=e149]
- generic [ref=e150]: 下一冲刺接入
- generic "拖动调整宽度" [ref=e152]
- group [ref=e153]:
- generic [ref=e155]:
- generic [ref=e157]:
- img [ref=e159]
- generic [ref=e161]: 生成视频 · Video Gen
- generic [ref=e164]:
- generic [ref=e165]: STEP 7 · 首帧 + 动作 prompt · 待运行
- generic [ref=e166]:
- generic [ref=e167]: Seedance
- generic [ref=e168]: Kling
- generic [ref=e169]: Veo 3
- generic "拖动调整宽度" [ref=e171]
- group [ref=e172]:
- generic [ref=e173]:
- generic [ref=e175]:
- img [ref=e177]
- generic [ref=e181]: 合成成品 · Compose
- generic [ref=e184]:
- generic [ref=e185]: STEP 8 · ffmpeg + 字幕 · 待运行
- generic [ref=e186]:
- text: 视频片段 + 字幕 / TTS
- text: → 最终 mp4 输出
- generic "拖动调整宽度" [ref=e187]
- img
- generic "Control Panel" [ref=e188]:
- button "Zoom In" [ref=e189] [cursor=pointer]:
- img [ref=e190]
- button "Zoom Out" [ref=e192] [cursor=pointer]:
- img [ref=e193]
- button "Fit View" [ref=e195] [cursor=pointer]:
- img [ref=e196]
- button "Toggle Interactivity" [ref=e198] [cursor=pointer]:
- img [ref=e199]
- img "Mini Map" [ref=e202]
- region "Notifications alt+T"
- generic [ref=e216] [cursor=pointer]:
- button "Open Next.js Dev Tools" [ref=e217]:
- img [ref=e218]
- generic [ref=e223]:
- button "Open issues overlay" [ref=e224]:
- generic [ref=e225]:
- generic [ref=e226]: "0"
- generic [ref=e227]: "1"
- generic [ref=e228]: Issue
- button "Collapse issues badge" [ref=e229]:
- img [ref=e230]
- alert [ref=e232]

View File

@@ -0,0 +1,352 @@
- generic [active] [ref=e1]:
- main [ref=e3]:
- button "切到明亮主题" [ref=e5]:
- img [ref=e6]
- generic [ref=e12]:
- generic [ref=e235]:
- generic [ref=e236]:
- img [ref=e237]
- generic [ref=e242]: 分镜头编排
- generic [ref=e243]: 1 分镜 · 3 元素
- generic [ref=e244]: · 组织分镜画面 → 为生成视频做准备
- button "展开编排" [ref=e246]:
- img [ref=e247]
- text: 展开编排
- application [ref=e14]:
- generic [ref=e16]:
- generic:
- generic:
- img:
- group "Edge from input to keyframe" [ref=e17] [cursor=pointer]
- img:
- group "Edge from input to asr" [ref=e20] [cursor=pointer]
- img:
- group "Edge from asr to translate"
- img:
- group "Edge from translate to rewrite" [ref=e23] [cursor=pointer]
- img:
- group "Edge from keyframe to storyboard" [ref=e26] [cursor=pointer]
- img:
- group "Edge from rewrite to storyboard" [ref=e29] [cursor=pointer]
- img:
- group "Edge from storyboard to videogen" [ref=e32] [cursor=pointer]
- img:
- group "Edge from videogen to compose" [ref=e35] [cursor=pointer]
- img:
- group "Edge from rewrite to compose" [ref=e38] [cursor=pointer]
- generic:
- group [ref=e41]:
- generic [ref=e42]:
- generic [ref=e249]:
- button "再上传一个视频" [ref=e250]:
- img [ref=e251]
- button "72.4s" [ref=e252]:
- generic [ref=e254]: 72.4s
- button "64.5s" [ref=e255]:
- generic [ref=e257]: 64.5s
- button "71.4s" [ref=e258]:
- generic [ref=e260]: 71.4s
- button "72.4s" [ref=e261]:
- generic [ref=e263]: 72.4s
- button "64.5s" [ref=e264]:
- generic [ref=e266]: 64.5s
- button "71.4s" [ref=e267]:
- generic [ref=e269]: 71.4s
- button "71.4s" [ref=e270]:
- generic [ref=e272]: 71.4s
- button "71.4s" [ref=e273]:
- generic [ref=e275]: 71.4s
- button "71.4s" [ref=e276]:
- generic [ref=e278]: 71.4s
- button "71.4s" [ref=e279]:
- generic [ref=e281]: 71.4s
- button "8.0s" [ref=e282]:
- generic [ref=e284]: 8.0s
- button "8.0s" [ref=e285]:
- generic [ref=e287]: 8.0s
- button "8.0s" [ref=e288]:
- generic [ref=e290]: 8.0s
- button "8.0s" [ref=e291]:
- generic [ref=e293]: 8.0s
- button "…" [ref=e294]:
- img [ref=e296]
- generic [ref=e298]:
- button "…" [ref=e299]:
- img [ref=e301]
- generic [ref=e303]:
- button "…" [ref=e304]:
- img [ref=e306]
- generic [ref=e308]:
- generic [ref=e43]:
- generic [ref=e44]:
- img [ref=e46]
- generic [ref=e49]: 输入 · Input
- img [ref=e309]
- generic [ref=e52]:
- generic [ref=e53]: STEP 1 · 视频就绪 · 完成
- textbox "再加一个 TK 链接" [ref=e312]
- generic [ref=e55]:
- button "+ 加链接" [disabled] [ref=e313]
- button "再传一个" [ref=e314]:
- img [ref=e58]
- text: 再传一个
- generic [ref=e315]:
- generic [ref=e316]: 576×1024 · 72.4s
- generic [ref=e317]: 📎 上传
- button "重新解析" [ref=e318]
- generic "拖动调整宽度" [ref=e62]
- group [ref=e63]:
- generic [ref=e64]:
- generic [ref=e319]:
- generic [ref=e320]:
- button "frame 6 1.3s" [ref=e321]:
- img "frame 6" [ref=e322]
- generic [ref=e323]: 1.3s
- button "📋" [ref=e324]
- button "删除该关键帧" [ref=e325]:
- img [ref=e326]
- generic:
- generic:
- generic:
- generic: 分镜 7
- generic: 1.33s
- generic [ref=e329]:
- button "frame 5 3 7.4s" [ref=e330]:
- img "frame 5" [ref=e331]
- generic "3 个元素已抠图" [ref=e333]: "3"
- generic [ref=e334]: 7.4s
- button "📋" [ref=e335]
- button "删除该关键帧" [ref=e336]:
- img [ref=e337]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e340]:
- button "frame 0 11.7s" [ref=e341]:
- img "frame 0" [ref=e342]
- generic [ref=e343]: 11.7s
- button "📋" [ref=e344]
- button "删除该关键帧" [ref=e345]:
- img [ref=e346]
- generic:
- generic:
- generic:
- generic: 分镜 1
- generic: 11.68s
- generic [ref=e349]:
- button "frame 7 18.0s" [ref=e350]:
- img "frame 7" [ref=e351]
- generic [ref=e352]: 18.0s
- button "📋" [ref=e353]
- button "删除该关键帧" [ref=e354]:
- img [ref=e355]
- generic:
- generic:
- generic:
- generic: 分镜 8
- generic: 18.00s
- generic [ref=e358]:
- button "frame 1 23.4s" [ref=e359]:
- img "frame 1" [ref=e360]
- generic [ref=e361]: 23.4s
- button "📋" [ref=e362]
- button "删除该关键帧" [ref=e363]:
- img [ref=e364]
- generic:
- generic:
- generic:
- generic: 分镜 2
- generic: 23.37s
- generic [ref=e367]:
- button "frame 2 32.7s" [ref=e368]:
- img "frame 2" [ref=e369]
- generic [ref=e370]: 32.7s
- button "📋" [ref=e371]
- button "删除该关键帧" [ref=e372]:
- img [ref=e373]
- generic:
- generic:
- generic:
- generic: 分镜 3
- generic: 32.72s
- generic [ref=e376]:
- button "frame 3 49.1s" [ref=e377]:
- img "frame 3" [ref=e378]
- generic [ref=e379]: 49.1s
- button "📋" [ref=e380]
- button "删除该关键帧" [ref=e381]:
- img [ref=e382]
- generic:
- generic:
- generic:
- generic: 分镜 4
- generic: 49.08s
- generic [ref=e385]:
- button "frame 8 52.8s" [ref=e386]:
- img "frame 8" [ref=e387]
- generic [ref=e388]: 52.8s
- button "📋" [ref=e389]
- button "删除该关键帧" [ref=e390]:
- img [ref=e391]
- generic:
- generic:
- generic:
- generic: 分镜 9
- generic: 52.80s
- generic [ref=e394]:
- button "frame 9 55.5s" [ref=e395]:
- img "frame 9" [ref=e396]
- generic [ref=e397]: 55.5s
- button "📋" [ref=e398]
- button "删除该关键帧" [ref=e399]:
- img [ref=e400]
- generic:
- generic:
- generic:
- generic: 分镜 10
- generic: 55.50s
- generic [ref=e403]:
- button "frame 4 65.4s" [ref=e404]:
- img "frame 4" [ref=e405]
- generic [ref=e406]: 65.4s
- button "📋" [ref=e407]
- button "删除该关键帧" [ref=e408]:
- img [ref=e409]
- generic:
- generic:
- generic:
- generic: 分镜 5
- generic: 65.43s
- generic [ref=e65]:
- generic [ref=e67]:
- img [ref=e69]
- generic [ref=e73]: 镜头拆解 · 元素提取
- img [ref=e412]
- generic [ref=e76]:
- generic [ref=e77]: STEP 2 · 1/10 入编排 · 完成
- generic [ref=e78]:
- text: 自动 10 张 ·
- generic [ref=e415]: 0 已清洗
- text: ·
- generic [ref=e416]: 3/3 已抠图
- text: 点缩略图 → 清洗水印 / 提取可借鉴元素 → 改造成 SKG 画面素材
- generic "拖动调整宽度" [ref=e80]
- group [ref=e81]:
- generic [ref=e82]:
- generic [ref=e84]:
- img [ref=e86]
- generic [ref=e89]: 声音文案 · ASR
- generic [ref=e92]:
- generic [ref=e93]: STEP 3 · 可选文案轨 · 待运行
- generic [ref=e94]: Gemini 2.5 · 英文带时间戳分段
- generic "拖动调整宽度" [ref=e96]
- group [ref=e97]:
- generic [ref=e98]:
- generic [ref=e100]:
- img [ref=e102]
- generic [ref=e106]: 翻译理解 · Translate
- generic [ref=e109]:
- generic [ref=e110]: STEP 4 · EN → ZH · 待运行
- generic [ref=e111]: 中文翻译 · 段落级 · 实时输出
- generic "拖动调整宽度" [ref=e113]
- group [ref=e114]:
- generic [ref=e115]:
- generic [ref=e417]:
- generic [ref=e418]:
- button "病人骨骼" [ref=e419]:
- img "病人骨骼" [ref=e420]
- button "📋" [ref=e421]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e422]:
- button "医生骨骼" [ref=e423]:
- img "医生骨骼" [ref=e424]
- button "📋" [ref=e425]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e426]:
- button "检查台" [ref=e427]:
- img "检查台" [ref=e428]
- button "📋" [ref=e429]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e116]:
- generic [ref=e118]:
- img [ref=e120]
- generic [ref=e125]: 元素改造 · Storyboard
- img [ref=e430]
- generic [ref=e128]:
- generic [ref=e129]: STEP 6 · 参考元素 → SKG 画面 · 1 分镜 · 完成
- generic [ref=e130]:
- text: 不是复刻原视频:先把参考图里的主体 / 场景 / 动作 / 道具拆出来,再替换成 SKG 产品画面。
- generic [ref=e131]: 已有 3 个提取元素 · 1 个分镜进入编排
- button "进入分镜编排" [ref=e132]
- generic "拖动调整宽度" [ref=e134]
- group [ref=e135]:
- generic [ref=e136]:
- generic [ref=e138]:
- img [ref=e140]
- generic [ref=e144]: 产品文案 · Rewrite
- generic [ref=e147]:
- generic [ref=e148]: STEP 5 · 接 SKG 卖点 · 待运行
- textbox "粘贴 SKG 产品信息 / 关键卖点(可作为视频脚本和镜头动作参考)" [disabled] [ref=e149]
- generic [ref=e150]: 下一冲刺接入
- generic "拖动调整宽度" [ref=e152]
- group [ref=e153]:
- generic [ref=e155]:
- generic [ref=e157]:
- img [ref=e159]
- generic [ref=e161]: 生成视频 · Video Gen
- generic [ref=e164]:
- generic [ref=e165]: STEP 7 · 首帧 + 动作 prompt · 待运行
- generic [ref=e166]:
- generic [ref=e167]: Seedance
- generic [ref=e168]: Kling
- generic [ref=e169]: Veo 3
- generic "拖动调整宽度" [ref=e171]
- group [ref=e172]:
- generic [ref=e173]:
- generic [ref=e175]:
- img [ref=e177]
- generic [ref=e181]: 合成成品 · Compose
- generic [ref=e184]:
- generic [ref=e185]: STEP 8 · ffmpeg + 字幕 · 待运行
- generic [ref=e186]:
- text: 视频片段 + 字幕 / TTS
- text: → 最终 mp4 输出
- generic "拖动调整宽度" [ref=e187]
- img
- generic "Control Panel" [ref=e188]:
- button "Zoom In" [ref=e189] [cursor=pointer]:
- img [ref=e190]
- button "Zoom Out" [ref=e192] [cursor=pointer]:
- img [ref=e193]
- button "Fit View" [ref=e195] [cursor=pointer]:
- img [ref=e196]
- button "Toggle Interactivity" [ref=e198] [cursor=pointer]:
- img [ref=e199]
- img "Mini Map" [ref=e202]
- region "Notifications alt+T"
- generic [ref=e216] [cursor=pointer]:
- button "Open Next.js Dev Tools" [ref=e217]:
- img [ref=e218]
- generic [ref=e223]:
- button "Open issues overlay" [ref=e224]:
- generic [ref=e225]:
- generic [ref=e226]: "0"
- generic [ref=e227]: "1"
- generic [ref=e228]: Issue
- button "Collapse issues badge" [ref=e229]:
- img [ref=e230]
- alert [ref=e232]

View File

@@ -0,0 +1,137 @@
- generic [active] [ref=e1]:
- main [ref=e3]:
- button "切到明亮主题" [ref=e5]:
- img [ref=e6]
- application [ref=e14]:
- generic [ref=e16]:
- generic:
- generic:
- img:
- group "Edge from input to keyframe" [ref=e17] [cursor=pointer]
- img:
- group "Edge from input to asr" [ref=e20] [cursor=pointer]
- img:
- group "Edge from asr to translate"
- img:
- group "Edge from translate to rewrite" [ref=e23] [cursor=pointer]
- img:
- group "Edge from keyframe to storyboard" [ref=e26] [cursor=pointer]
- img:
- group "Edge from rewrite to storyboard" [ref=e29] [cursor=pointer]
- img:
- group "Edge from storyboard to videogen" [ref=e32] [cursor=pointer]
- img:
- group "Edge from videogen to compose" [ref=e35] [cursor=pointer]
- img:
- group "Edge from rewrite to compose" [ref=e38] [cursor=pointer]
- generic:
- group [ref=e41]:
- generic [ref=e43]:
- generic [ref=e44]:
- img [ref=e46]
- generic [ref=e49]: 输入 · Input
- generic [ref=e52]:
- generic [ref=e53]: STEP 1 · 待运行
- textbox "粘贴 TikTok 链接" [ref=e54]
- generic [ref=e55]:
- button "提交链接" [disabled] [ref=e56]
- button "上传" [ref=e57]:
- img [ref=e58]
- text: 上传
- generic "拖动调整宽度" [ref=e62]
- group [ref=e63]:
- generic [ref=e65]:
- generic [ref=e67]:
- img [ref=e69]
- generic [ref=e73]: 镜头拆解 · 元素提取
- generic [ref=e76]:
- generic [ref=e77]: STEP 2 · 等待抽取 · 待运行
- generic [ref=e78]: 等待解析(默认 5 张)
- generic "拖动调整宽度" [ref=e80]
- group [ref=e81]:
- generic [ref=e82]:
- generic [ref=e84]:
- img [ref=e86]
- generic [ref=e89]: 声音文案 · ASR
- generic [ref=e92]:
- generic [ref=e93]: STEP 3 · 可选文案轨 · 待运行
- generic [ref=e94]: Gemini 2.5 · 英文带时间戳分段
- generic "拖动调整宽度" [ref=e96]
- group [ref=e97]:
- generic [ref=e98]:
- generic [ref=e100]:
- img [ref=e102]
- generic [ref=e106]: 翻译理解 · Translate
- generic [ref=e109]:
- generic [ref=e110]: STEP 4 · EN → ZH · 待运行
- generic [ref=e111]: 中文翻译 · 段落级 · 实时输出
- generic "拖动调整宽度" [ref=e113]
- group [ref=e114]:
- generic [ref=e116]:
- generic [ref=e118]:
- img [ref=e120]
- generic [ref=e125]: 元素改造 · Storyboard
- generic [ref=e128]:
- generic [ref=e129]: STEP 6 · 参考元素 → SKG 画面 · 待运行
- generic [ref=e130]:
- text: 不是复刻原视频:先把参考图里的主体 / 场景 / 动作 / 道具拆出来,再替换成 SKG 产品画面。
- generic [ref=e131]: 已有 0 个提取元素 · 0 个分镜进入编排
- button "进入分镜编排" [disabled] [ref=e132]
- generic "拖动调整宽度" [ref=e134]
- group [ref=e135]:
- generic [ref=e136]:
- generic [ref=e138]:
- img [ref=e140]
- generic [ref=e144]: 产品文案 · Rewrite
- generic [ref=e147]:
- generic [ref=e148]: STEP 5 · 接 SKG 卖点 · 待运行
- textbox "粘贴 SKG 产品信息 / 关键卖点(可作为视频脚本和镜头动作参考)" [disabled] [ref=e149]
- generic [ref=e150]: 下一冲刺接入
- generic "拖动调整宽度" [ref=e152]
- group [ref=e153]:
- generic [ref=e155]:
- generic [ref=e157]:
- img [ref=e159]
- generic [ref=e161]: 生成视频 · Video Gen
- generic [ref=e164]:
- generic [ref=e165]: STEP 7 · 首帧 + 动作 prompt · 待运行
- generic [ref=e166]:
- generic [ref=e167]: Seedance
- generic [ref=e168]: Kling
- generic [ref=e169]: Veo 3
- generic "拖动调整宽度" [ref=e171]
- group [ref=e172]:
- generic [ref=e173]:
- generic [ref=e175]:
- img [ref=e177]
- generic [ref=e181]: 合成成品 · Compose
- generic [ref=e184]:
- generic [ref=e185]: STEP 8 · ffmpeg + 字幕 · 待运行
- generic [ref=e186]:
- text: 视频片段 + 字幕 / TTS
- text: → 最终 mp4 输出
- generic "拖动调整宽度" [ref=e187]
- img
- generic "Control Panel" [ref=e188]:
- button "Zoom In" [ref=e189] [cursor=pointer]:
- img [ref=e190]
- button "Zoom Out" [ref=e192] [cursor=pointer]:
- img [ref=e193]
- button "Fit View" [ref=e195] [cursor=pointer]:
- img [ref=e196]
- button "Toggle Interactivity" [ref=e198] [cursor=pointer]:
- img [ref=e199]
- img "Mini Map" [ref=e202]
- region "Notifications alt+T"
- generic [ref=e216] [cursor=pointer]:
- button "Open Next.js Dev Tools" [ref=e217]:
- img [ref=e218]
- generic [ref=e223]:
- button "Open issues overlay" [ref=e224]:
- generic [ref=e225]:
- generic [ref=e226]: "0"
- generic [ref=e227]: "1"
- generic [ref=e228]: Issue
- button "Collapse issues badge" [ref=e229]:
- img [ref=e230]
- alert [ref=e232]

View File

@@ -0,0 +1,352 @@
- generic [active] [ref=e1]:
- main [ref=e3]:
- button "切到明亮主题" [ref=e5]:
- img [ref=e6]
- generic [ref=e12]:
- generic [ref=e235]:
- generic [ref=e236]:
- img [ref=e237]
- generic [ref=e242]: 分镜头编排
- generic [ref=e243]: 1 分镜 · 3 元素
- generic [ref=e244]: · 组织分镜画面 → 为生成视频做准备
- button "展开编排" [ref=e246]:
- img [ref=e247]
- text: 展开编排
- application [ref=e14]:
- generic [ref=e16]:
- generic:
- generic:
- img:
- group "Edge from input to keyframe" [ref=e17] [cursor=pointer]
- img:
- group "Edge from input to asr" [ref=e20] [cursor=pointer]
- img:
- group "Edge from asr to translate"
- img:
- group "Edge from translate to rewrite" [ref=e23] [cursor=pointer]
- img:
- group "Edge from keyframe to storyboard" [ref=e26] [cursor=pointer]
- img:
- group "Edge from rewrite to storyboard" [ref=e29] [cursor=pointer]
- img:
- group "Edge from storyboard to videogen" [ref=e32] [cursor=pointer]
- img:
- group "Edge from videogen to compose" [ref=e35] [cursor=pointer]
- img:
- group "Edge from rewrite to compose" [ref=e38] [cursor=pointer]
- generic:
- group [ref=e41]:
- generic [ref=e42]:
- generic [ref=e249]:
- button "再上传一个视频" [ref=e250]:
- img [ref=e251]
- button "72.4s" [ref=e252]:
- generic [ref=e254]: 72.4s
- button "64.5s" [ref=e255]:
- generic [ref=e257]: 64.5s
- button "71.4s" [ref=e258]:
- generic [ref=e260]: 71.4s
- button "72.4s" [ref=e261]:
- generic [ref=e263]: 72.4s
- button "64.5s" [ref=e264]:
- generic [ref=e266]: 64.5s
- button "71.4s" [ref=e267]:
- generic [ref=e269]: 71.4s
- button "71.4s" [ref=e270]:
- generic [ref=e272]: 71.4s
- button "71.4s" [ref=e273]:
- generic [ref=e275]: 71.4s
- button "71.4s" [ref=e276]:
- generic [ref=e278]: 71.4s
- button "71.4s" [ref=e279]:
- generic [ref=e281]: 71.4s
- button "8.0s" [ref=e282]:
- generic [ref=e284]: 8.0s
- button "8.0s" [ref=e285]:
- generic [ref=e287]: 8.0s
- button "8.0s" [ref=e288]:
- generic [ref=e290]: 8.0s
- button "8.0s" [ref=e291]:
- generic [ref=e293]: 8.0s
- button "…" [ref=e294]:
- img [ref=e296]
- generic [ref=e298]:
- button "…" [ref=e299]:
- img [ref=e301]
- generic [ref=e303]:
- button "…" [ref=e304]:
- img [ref=e306]
- generic [ref=e308]:
- generic [ref=e43]:
- generic [ref=e44]:
- img [ref=e46]
- generic [ref=e49]: 输入 · Input
- img [ref=e309]
- generic [ref=e52]:
- generic [ref=e53]: STEP 1 · 视频就绪 · 完成
- textbox "再加一个 TK 链接" [ref=e312]
- generic [ref=e55]:
- button "+ 加链接" [disabled] [ref=e313]
- button "再传一个" [ref=e314]:
- img [ref=e58]
- text: 再传一个
- generic [ref=e315]:
- generic [ref=e316]: 576×1024 · 72.4s
- generic [ref=e317]: 📎 上传
- button "重新解析" [ref=e318]
- generic "拖动调整宽度" [ref=e62]
- group [ref=e63]:
- generic [ref=e64]:
- generic [ref=e319]:
- generic [ref=e320]:
- button "frame 6 1.3s" [ref=e321]:
- img "frame 6" [ref=e322]
- generic [ref=e323]: 1.3s
- button "📋" [ref=e324]
- button "删除该关键帧" [ref=e325]:
- img [ref=e326]
- generic:
- generic:
- generic:
- generic: 分镜 7
- generic: 1.33s
- generic [ref=e329]:
- button "frame 5 3 7.4s" [ref=e330]:
- img "frame 5" [ref=e331]
- generic "3 个元素已抠图" [ref=e333]: "3"
- generic [ref=e334]: 7.4s
- button "📋" [ref=e335]
- button "删除该关键帧" [ref=e336]:
- img [ref=e337]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e340]:
- button "frame 0 11.7s" [ref=e341]:
- img "frame 0" [ref=e342]
- generic [ref=e343]: 11.7s
- button "📋" [ref=e344]
- button "删除该关键帧" [ref=e345]:
- img [ref=e346]
- generic:
- generic:
- generic:
- generic: 分镜 1
- generic: 11.68s
- generic [ref=e349]:
- button "frame 7 18.0s" [ref=e350]:
- img "frame 7" [ref=e351]
- generic [ref=e352]: 18.0s
- button "📋" [ref=e353]
- button "删除该关键帧" [ref=e354]:
- img [ref=e355]
- generic:
- generic:
- generic:
- generic: 分镜 8
- generic: 18.00s
- generic [ref=e358]:
- button "frame 1 23.4s" [ref=e359]:
- img "frame 1" [ref=e360]
- generic [ref=e361]: 23.4s
- button "📋" [ref=e362]
- button "删除该关键帧" [ref=e363]:
- img [ref=e364]
- generic:
- generic:
- generic:
- generic: 分镜 2
- generic: 23.37s
- generic [ref=e367]:
- button "frame 2 32.7s" [ref=e368]:
- img "frame 2" [ref=e369]
- generic [ref=e370]: 32.7s
- button "📋" [ref=e371]
- button "删除该关键帧" [ref=e372]:
- img [ref=e373]
- generic:
- generic:
- generic:
- generic: 分镜 3
- generic: 32.72s
- generic [ref=e376]:
- button "frame 3 49.1s" [ref=e377]:
- img "frame 3" [ref=e378]
- generic [ref=e379]: 49.1s
- button "📋" [ref=e380]
- button "删除该关键帧" [ref=e381]:
- img [ref=e382]
- generic:
- generic:
- generic:
- generic: 分镜 4
- generic: 49.08s
- generic [ref=e385]:
- button "frame 8 52.8s" [ref=e386]:
- img "frame 8" [ref=e387]
- generic [ref=e388]: 52.8s
- button "📋" [ref=e389]
- button "删除该关键帧" [ref=e390]:
- img [ref=e391]
- generic:
- generic:
- generic:
- generic: 分镜 9
- generic: 52.80s
- generic [ref=e394]:
- button "frame 9 55.5s" [ref=e395]:
- img "frame 9" [ref=e396]
- generic [ref=e397]: 55.5s
- button "📋" [ref=e398]
- button "删除该关键帧" [ref=e399]:
- img [ref=e400]
- generic:
- generic:
- generic:
- generic: 分镜 10
- generic: 55.50s
- generic [ref=e403]:
- button "frame 4 65.4s" [ref=e404]:
- img "frame 4" [ref=e405]
- generic [ref=e406]: 65.4s
- button "📋" [ref=e407]
- button "删除该关键帧" [ref=e408]:
- img [ref=e409]
- generic:
- generic:
- generic:
- generic: 分镜 5
- generic: 65.43s
- generic [ref=e65]:
- generic [ref=e67]:
- img [ref=e69]
- generic [ref=e73]: 镜头拆解 · 元素提取
- img [ref=e412]
- generic [ref=e76]:
- generic [ref=e77]: STEP 2 · 1/10 入编排 · 完成
- generic [ref=e78]:
- text: 自动 10 张 ·
- generic [ref=e415]: 0 已清洗
- text: ·
- generic [ref=e416]: 3/3 已抠图
- text: 点缩略图 → 清洗水印 / 提取可借鉴元素 → 改造成 SKG 画面素材
- generic "拖动调整宽度" [ref=e80]
- group [ref=e81]:
- generic [ref=e82]:
- generic [ref=e84]:
- img [ref=e86]
- generic [ref=e89]: 声音文案 · ASR
- generic [ref=e92]:
- generic [ref=e93]: STEP 3 · 可选文案轨 · 待运行
- generic [ref=e94]: Gemini 2.5 · 英文带时间戳分段
- generic "拖动调整宽度" [ref=e96]
- group [ref=e97]:
- generic [ref=e98]:
- generic [ref=e100]:
- img [ref=e102]
- generic [ref=e106]: 翻译理解 · Translate
- generic [ref=e109]:
- generic [ref=e110]: STEP 4 · EN → ZH · 待运行
- generic [ref=e111]: 中文翻译 · 段落级 · 实时输出
- generic "拖动调整宽度" [ref=e113]
- group [ref=e114]:
- generic [ref=e115]:
- generic [ref=e417]:
- generic [ref=e418]:
- button "病人骨骼" [ref=e419]:
- img "病人骨骼" [ref=e420]
- button "📋" [ref=e421]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e422]:
- button "医生骨骼" [ref=e423]:
- img "医生骨骼" [ref=e424]
- button "📋" [ref=e425]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e426]:
- button "检查台" [ref=e427]:
- img "检查台" [ref=e428]
- button "📋" [ref=e429]
- generic:
- generic:
- generic:
- generic: 分镜 6
- generic: 7.39s
- generic [ref=e116]:
- generic [ref=e118]:
- img [ref=e120]
- generic [ref=e125]: 元素改造 · Storyboard
- img [ref=e430]
- generic [ref=e128]:
- generic [ref=e129]: STEP 6 · 参考元素 → SKG 画面 · 1 分镜 · 完成
- generic [ref=e130]:
- text: 不是复刻原视频:先把参考图里的主体 / 场景 / 动作 / 道具拆出来,再替换成 SKG 产品画面。
- generic [ref=e131]: 已有 3 个提取元素 · 1 个分镜进入编排
- button "进入分镜编排" [ref=e132]
- generic "拖动调整宽度" [ref=e134]
- group [ref=e135]:
- generic [ref=e136]:
- generic [ref=e138]:
- img [ref=e140]
- generic [ref=e144]: 产品文案 · Rewrite
- generic [ref=e147]:
- generic [ref=e148]: STEP 5 · 接 SKG 卖点 · 待运行
- textbox "粘贴 SKG 产品信息 / 关键卖点(可作为视频脚本和镜头动作参考)" [disabled] [ref=e149]
- generic [ref=e150]: 下一冲刺接入
- generic "拖动调整宽度" [ref=e152]
- group [ref=e153]:
- generic [ref=e155]:
- generic [ref=e157]:
- img [ref=e159]
- generic [ref=e161]: 生成视频 · Video Gen
- generic [ref=e164]:
- generic [ref=e165]: STEP 7 · 首帧 + 动作 prompt · 待运行
- generic [ref=e166]:
- generic [ref=e167]: Seedance
- generic [ref=e168]: Kling
- generic [ref=e169]: Veo 3
- generic "拖动调整宽度" [ref=e171]
- group [ref=e172]:
- generic [ref=e173]:
- generic [ref=e175]:
- img [ref=e177]
- generic [ref=e181]: 合成成品 · Compose
- generic [ref=e184]:
- generic [ref=e185]: STEP 8 · ffmpeg + 字幕 · 待运行
- generic [ref=e186]:
- text: 视频片段 + 字幕 / TTS
- text: → 最终 mp4 输出
- generic "拖动调整宽度" [ref=e187]
- img
- generic "Control Panel" [ref=e188]:
- button "Zoom In" [ref=e189] [cursor=pointer]:
- img [ref=e190]
- button "Zoom Out" [ref=e192] [cursor=pointer]:
- img [ref=e193]
- button "Fit View" [ref=e195] [cursor=pointer]:
- img [ref=e196]
- button "Toggle Interactivity" [ref=e198] [cursor=pointer]:
- img [ref=e199]
- img "Mini Map" [ref=e202]
- region "Notifications alt+T"
- generic [ref=e216] [cursor=pointer]:
- button "Open Next.js Dev Tools" [ref=e217]:
- img [ref=e218]
- generic [ref=e223]:
- button "Open issues overlay" [ref=e224]:
- generic [ref=e225]:
- generic [ref=e226]: "0"
- generic [ref=e227]: "1"
- generic [ref=e228]: Issue
- button "Collapse issues badge" [ref=e229]:
- img [ref=e230]
- alert [ref=e232]

View File

@@ -323,7 +323,6 @@
border: none !important; border: none !important;
padding: 0 !important; padding: 0 !important;
border-radius: 0 !important; border-radius: 0 !important;
width: auto !important;
font-size: inherit !important; font-size: inherit !important;
color: inherit !important; color: inherit !important;
text-align: left !important; text-align: left !important;

View File

@@ -104,16 +104,12 @@ export function InputNode({ data, selected }: NodeProps<{ data: NodeData }> | an
return ( return (
<div className="relative" style={{ width: "100%" }}> <div className="relative" style={{ width: "100%" }}>
{/* 多视频缩略图浮条 — 「+」在最左job 按时间倒序(最新靠左高亮),统一高度 64宽度按视频原比例一行横滚 */} {/* 多视频缩略图浮条 — 「+」在最左job 按时间倒序(最新靠左高亮),统一高度 64宽度按视频原比例一行横滚
浮条宽度 = 节点宽度(节点拖宽后浮条同步变宽,可见更多缩略图,少滚动)。 */}
{!videoExpanded && d.jobs.length > 0 && ( {!videoExpanded && d.jobs.length > 0 && (
<div <div
className="absolute flex items-end gap-1.5 overflow-x-auto pb-1.5" className="absolute left-0 right-0 flex items-end gap-1.5 overflow-x-auto pb-1.5"
style={{ style={{ bottom: "calc(100% + 12px)" }}
bottom: "calc(100% + 12px)",
left: "50%",
transform: "translateX(-50%)",
width: "min(720px, 88vw)",
}}
> >
{/* + 再上传一个(放在最前面) */} {/* + 再上传一个(放在最前面) */}
<button <button

View File

@@ -7,13 +7,11 @@ export function ResizeRight({ minWidth = 240, maxWidth = 1200 }: { minWidth?: nu
const { setNodes, getZoom } = useReactFlow() const { setNodes, getZoom } = useReactFlow()
const onPointerDown = (e: PointerEvent<HTMLDivElement>) => { const onPointerDown = (e: PointerEvent<HTMLDivElement>) => {
console.log("[ResizeRight] pointerDown", e.clientX, e.clientY)
e.preventDefault() e.preventDefault()
e.stopPropagation() e.stopPropagation()
const target = e.currentTarget const target = e.currentTarget
const nodeEl = target.closest(".react-flow__node") as HTMLElement | null const nodeEl = target.closest(".react-flow__node") as HTMLElement | null
const nodeId = nodeEl?.getAttribute("data-id") const nodeId = nodeEl?.getAttribute("data-id")
console.log("[ResizeRight] nodeId", nodeId)
if (!nodeId || !nodeEl) return if (!nodeId || !nodeEl) return
target.setPointerCapture(e.pointerId) target.setPointerCapture(e.pointerId)
@@ -24,11 +22,9 @@ export function ResizeRight({ minWidth = 240, maxWidth = 1200 }: { minWidth?: nu
const onMove = (ev: globalThis.PointerEvent) => { const onMove = (ev: globalThis.PointerEvent) => {
const dx = (ev.clientX - startX) / zoom const dx = (ev.clientX - startX) / zoom
const next = Math.max(minWidth, Math.min(maxWidth, startWidth + dx)) const next = Math.max(minWidth, Math.min(maxWidth, startWidth + dx))
console.log("[ResizeRight] move", dx, next)
setNodes((nodes) => nodes.map((n) => (n.id === nodeId ? { ...n, width: next, style: { ...n.style, width: next } } : n))) setNodes((nodes) => nodes.map((n) => (n.id === nodeId ? { ...n, width: next, style: { ...n.style, width: next } } : n)))
} }
const onUp = () => { const onUp = () => {
console.log("[ResizeRight] up")
window.removeEventListener("pointermove", onMove) window.removeEventListener("pointermove", onMove)
window.removeEventListener("pointerup", onUp) window.removeEventListener("pointerup", onUp)
try { target.releasePointerCapture(e.pointerId) } catch {} try { target.releasePointerCapture(e.pointerId) } catch {}