diff --git a/.memory/worklog.json b/.memory/worklog.json index 49672a9..8fda864 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -2678,6 +2678,19 @@ "type": "session-heartbeat", "message": "Claude 会话活跃 · 最近命令:claude · 1 项未提交变更 · 最近提交:auto-save 2026-05-14 00:31 (~1)", "files_changed": 1 + }, + { + "ts": "2026-05-14T00:37:35+08:00", + "type": "commit", + "message": "auto-save 2026-05-14 00:37 (+1, ~2)", + "hash": "302b0ed", + "files_changed": 3 + }, + { + "ts": "2026-05-13T16:43:10Z", + "type": "session-heartbeat", + "message": "Claude 会话活跃 · 最近命令:claude · 3 项未提交变更 · 最近提交:auto-save 2026-05-14 00:37 (+1, ~2)", + "files_changed": 3 } ] } diff --git a/.playwright-mcp/page-2026-05-13T16-37-39-493Z.yml b/.playwright-mcp/page-2026-05-13T16-37-39-493Z.yml new file mode 100644 index 0000000..62aaa00 --- /dev/null +++ b/.playwright-mcp/page-2026-05-13T16-37-39-493Z.yml @@ -0,0 +1,17 @@ +- generic [active] [ref=e1]: + - main [ref=e3]: + - application [ref=e6]: + - img + - generic "Control Panel" [ref=e9]: + - button "Zoom In" [ref=e10] [cursor=pointer]: + - img [ref=e11] + - button "Zoom Out" [ref=e13] [cursor=pointer]: + - img [ref=e14] + - button "Fit View" [ref=e16] [cursor=pointer]: + - img [ref=e17] + - button "Toggle Interactivity" [ref=e19] [cursor=pointer]: + - img [ref=e20] + - img "Mini Map" [ref=e23] + - region "Notifications alt+T" + - button "Open Next.js Dev Tools" [ref=e30] [cursor=pointer]: + - img [ref=e31] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-13T16-37-41-576Z.yml b/.playwright-mcp/page-2026-05-13T16-37-41-576Z.yml new file mode 100644 index 0000000..102634a --- /dev/null +++ b/.playwright-mcp/page-2026-05-13T16-37-41-576Z.yml @@ -0,0 +1,430 @@ +- generic [active] [ref=e1]: + - generic [ref=e29] [cursor=pointer]: + - button "Open Next.js Dev Tools" [ref=e30]: + - img [ref=e31] + - generic [ref=e36]: + - button "Open issues overlay" [ref=e37]: + - generic [ref=e38]: + - generic [ref=e39]: "0" + - generic [ref=e40]: "1" + - generic [ref=e41]: Issue + - button "Collapse issues badge" [ref=e42]: + - img [ref=e43] + - main [ref=e46]: + - button "切到明亮主题" [ref=e48]: + - img [ref=e49] + - generic [ref=e55]: + - generic [ref=e58]: + - generic [ref=e59]: + - img [ref=e60] + - generic [ref=e65]: 分镜头编排 + - generic [ref=e66]: 0 分镜 · 0 元素 + - generic [ref=e67]: · 组织分镜画面 → 为生成视频做准备 + - button "展开编排" [disabled] [ref=e69]: + - img [ref=e70] + - text: 展开编排 + - application [ref=e73]: + - generic [ref=e75]: + - generic: + - generic: + - img: + - group "Edge from input to keyframe" [ref=e76] [cursor=pointer] + - img: + - group "Edge from input to asr" [ref=e79] [cursor=pointer] + - img: + - group "Edge from asr to translate" + - img: + - group "Edge from translate to rewrite" [ref=e82] [cursor=pointer] + - img: + - group "Edge from keyframe to storyboard" [ref=e85] [cursor=pointer] + - img: + - group "Edge from rewrite to storyboard" [ref=e88] [cursor=pointer] + - img: + - group "Edge from storyboard to videogen" [ref=e91] [cursor=pointer] + - img: + - group "Edge from videogen to compose" [ref=e94] [cursor=pointer] + - img: + - group "Edge from rewrite to compose" [ref=e97] [cursor=pointer] + - generic: + - group [ref=e100]: + - generic [ref=e101]: + - generic [ref=e102]: + - button "再上传一个视频" [ref=e103]: + - img [ref=e104] + - generic [ref=e105]: + - button "64.5s" [ref=e106]: + - generic [ref=e108]: 64.5s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 64.5s + - generic [ref=e109]: + - button "72.4s" [ref=e110]: + - generic [ref=e112]: 72.4s + - generic: + - generic: + - generic: + - generic: 576×1024 + - generic: 72.4s + - generic [ref=e113]: + - button "64.5s" [ref=e114]: + - generic [ref=e116]: 64.5s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 64.5s + - generic [ref=e117]: + - button "71.4s" [ref=e118]: + - generic [ref=e120]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e121]: + - button "72.4s" [ref=e122]: + - generic [ref=e124]: 72.4s + - generic: + - generic: + - generic: + - generic: 576×1024 + - generic: 72.4s + - generic [ref=e125]: + - button "71.4s" [ref=e126]: + - generic [ref=e128]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e129]: + - button "71.4s" [ref=e130]: + - generic [ref=e132]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e133]: + - button "71.4s" [ref=e134]: + - generic [ref=e136]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e137]: + - button "71.4s" [ref=e138]: + - generic [ref=e140]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e141]: + - button "71.4s" [ref=e142]: + - generic [ref=e144]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e145]: + - button "8.0s" [ref=e146]: + - generic [ref=e148]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - generic [ref=e149]: + - button "8.0s" [ref=e150]: + - generic [ref=e152]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - generic [ref=e153]: + - button "8.0s" [ref=e154]: + - generic [ref=e156]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - generic [ref=e157]: + - button "8.0s" [ref=e158]: + - generic [ref=e160]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - button "…" [ref=e162]: + - img [ref=e164] + - generic [ref=e166]: … + - button "…" [ref=e168]: + - img [ref=e170] + - generic [ref=e172]: … + - button "…" [ref=e174]: + - img [ref=e176] + - generic [ref=e178]: … + - generic [ref=e179]: + - generic [ref=e180]: + - img [ref=e182] + - generic [ref=e185]: 输入 · Input + - img [ref=e187] + - generic [ref=e191]: + - generic [ref=e192]: STEP 1 · 视频就绪 · 完成 + - textbox "再加一个 TK 链接" [ref=e193] + - generic [ref=e194]: + - button "+ 加链接" [disabled] [ref=e195] + - button "再传一个" [ref=e196]: + - img [ref=e197] + - text: 再传一个 + - generic [ref=e200]: + - generic [ref=e201]: 1080×1920 · 64.5s + - generic [ref=e202]: 🔗 链接 + - button "重新解析" [ref=e203] + - generic "拖动调整宽度" [ref=e205] + - generic "拖动调整大小(宽 × 高)" [ref=e206] + - group [ref=e207]: + - generic [ref=e208]: + - generic [ref=e209]: + - generic [ref=e210]: + - button "frame 9 1.7s" [ref=e211]: + - img "frame 9" [ref=e212] + - generic [ref=e213]: 1.7s + - button "📋" [ref=e214] + - button "删除该关键帧" [ref=e215]: + - img [ref=e216] + - generic: + - generic: + - generic: + - generic: 分镜 10 + - generic: 1.66s + - generic [ref=e219]: + - button "frame 0 ✨ 24.7s" [ref=e220]: + - img "frame 0" [ref=e221] + - generic "已清洗" [ref=e223]: ✨ + - generic [ref=e224]: 24.7s + - button "📋" [ref=e225] + - button "删除该关键帧" [ref=e226]: + - img [ref=e227] + - generic: + - generic: + - generic: + - generic: 分镜 1 + - generic: 24.73s + - generic [ref=e230]: + - button "frame 1 33.6s" [ref=e231]: + - img "frame 1" [ref=e232] + - generic [ref=e233]: 33.6s + - button "📋" [ref=e234] + - button "删除该关键帧" [ref=e235]: + - img [ref=e236] + - generic: + - generic: + - generic: + - generic: 分镜 2 + - generic: 33.61s + - generic [ref=e239]: + - button "frame 2 37.7s" [ref=e240]: + - img "frame 2" [ref=e241] + - generic [ref=e242]: 37.7s + - button "📋" [ref=e243] + - button "删除该关键帧" [ref=e244]: + - img [ref=e245] + - generic: + - generic: + - generic: + - generic: 分镜 3 + - generic: 37.70s + - generic [ref=e248]: + - button "frame 3 39.4s" [ref=e249]: + - img "frame 3" [ref=e250] + - generic [ref=e251]: 39.4s + - button "📋" [ref=e252] + - button "删除该关键帧" [ref=e253]: + - img [ref=e254] + - generic: + - generic: + - generic: + - generic: 分镜 4 + - generic: 39.42s + - generic [ref=e257]: + - button "frame 4 1 43.1s" [ref=e258]: + - img "frame 4" [ref=e259] + - generic "1 个元素已抠图" [ref=e261]: "1" + - generic [ref=e262]: 43.1s + - button "📋" [ref=e263] + - button "删除该关键帧" [ref=e264]: + - img [ref=e265] + - generic: + - generic: + - generic: + - generic: 分镜 5 + - generic: 43.13s + - generic [ref=e268]: + - button "frame 5 45.0s" [ref=e269]: + - img "frame 5" [ref=e270] + - generic [ref=e271]: 45.0s + - button "📋" [ref=e272] + - button "删除该关键帧" [ref=e273]: + - img [ref=e274] + - generic: + - generic: + - generic: + - generic: 分镜 6 + - generic: 45.05s + - generic [ref=e277]: + - button "frame 6 53.6s" [ref=e278]: + - img "frame 6" [ref=e279] + - generic [ref=e280]: 53.6s + - button "📋" [ref=e281] + - button "删除该关键帧" [ref=e282]: + - img [ref=e283] + - generic: + - generic: + - generic: + - generic: 分镜 7 + - generic: 53.60s + - generic [ref=e286]: + - button "frame 7 56.0s" [ref=e287]: + - img "frame 7" [ref=e288] + - generic [ref=e289]: 56.0s + - button "📋" [ref=e290] + - button "删除该关键帧" [ref=e291]: + - img [ref=e292] + - generic: + - generic: + - generic: + - generic: 分镜 8 + - generic: 55.96s + - generic [ref=e295]: + - button "frame 8 58.4s" [ref=e296]: + - img "frame 8" [ref=e297] + - generic [ref=e298]: 58.4s + - button "📋" [ref=e299] + - button "删除该关键帧" [ref=e300]: + - img [ref=e301] + - generic: + - generic: + - generic: + - generic: 分镜 9 + - generic: 58.39s + - generic [ref=e304]: + - generic [ref=e306]: + - img [ref=e308] + - generic [ref=e312]: 镜头拆解 · 元素提取 + - img [ref=e314] + - generic [ref=e318]: + - generic [ref=e319]: STEP 2 · 0/10 入编排 · 完成 + - generic [ref=e320]: + - text: 自动 10 张 · + - generic [ref=e321]: 1 已清洗 + - text: · + - generic [ref=e322]: 1/2 已抠图 + - text: 点缩略图 → 清洗水印 / 提取可借鉴元素 → 改造成 SKG 画面素材 + - generic "拖动调整宽度" [ref=e324] + - generic "拖动调整大小(宽 × 高)" [ref=e325] + - group [ref=e326]: + - generic [ref=e327]: + - generic [ref=e329]: + - img [ref=e331] + - generic [ref=e334]: 声音文案 · ASR + - generic [ref=e337]: + - generic [ref=e338]: STEP 3 · 可选文案轨 · 待运行 + - generic [ref=e339]: Gemini 2.5 · 英文带时间戳分段 + - generic "拖动调整宽度" [ref=e341] + - generic "拖动调整大小(宽 × 高)" [ref=e342] + - group [ref=e343]: + - generic [ref=e344]: + - generic [ref=e346]: + - img [ref=e348] + - generic [ref=e352]: 翻译理解 · Translate + - generic [ref=e355]: + - generic [ref=e356]: STEP 4 · EN → ZH · 待运行 + - generic [ref=e357]: 中文翻译 · 段落级 · 实时输出 + - generic "拖动调整宽度" [ref=e359] + - generic "拖动调整大小(宽 × 高)" [ref=e360] + - group [ref=e361]: + - generic [ref=e362]: + - generic [ref=e364]: + - button "透明骷髅" [ref=e365]: + - img "透明骷髅" [ref=e366] + - button "📋" [ref=e367] + - generic: + - generic: + - generic: + - generic: 分镜 5 + - generic: 43.13s + - generic [ref=e368]: + - generic [ref=e370]: + - img [ref=e372] + - generic [ref=e377]: 元素改造 · Storyboard + - img [ref=e379] + - generic [ref=e383]: + - generic [ref=e384]: STEP 6 · 参考元素 → SKG 画面 · 完成 + - generic [ref=e385]: + - text: 不是复刻原视频:先把参考图里的主体 / 场景 / 动作 / 道具拆出来,再替换成 SKG 产品画面。 + - generic [ref=e386]: 已有 1 个提取元素 · 0 个分镜进入编排 + - button "进入分镜编排" [disabled] [ref=e387] + - generic "拖动调整宽度" [ref=e389] + - generic "拖动调整大小(宽 × 高)" [ref=e390] + - group [ref=e391]: + - generic [ref=e392]: + - generic [ref=e394]: + - img [ref=e396] + - generic [ref=e400]: 产品文案 · Rewrite + - generic [ref=e403]: + - generic [ref=e404]: STEP 5 · 接 SKG 卖点 · 待运行 + - textbox "粘贴 SKG 产品信息 / 关键卖点(可作为视频脚本和镜头动作参考)" [disabled] [ref=e405] + - generic [ref=e406]: 下一冲刺接入 + - generic "拖动调整宽度" [ref=e408] + - generic "拖动调整大小(宽 × 高)" [ref=e409] + - group [ref=e410]: + - generic [ref=e412]: + - generic [ref=e414]: + - img [ref=e416] + - generic [ref=e418]: 生成视频 · Video Gen + - generic [ref=e421]: + - generic [ref=e422]: STEP 7 · 首帧 + 动作 prompt · 待运行 + - generic [ref=e423]: + - generic [ref=e424]: Seedance + - generic [ref=e425]: Kling + - generic [ref=e426]: Veo 3 + - generic "拖动调整宽度" [ref=e428] + - generic "拖动调整大小(宽 × 高)" [ref=e429] + - group [ref=e430]: + - generic [ref=e431]: + - generic [ref=e433]: + - img [ref=e435] + - generic [ref=e439]: 合成成品 · Compose + - generic [ref=e442]: + - generic [ref=e443]: STEP 8 · ffmpeg + 字幕 · 待运行 + - generic [ref=e444]: + - text: 视频片段 + 字幕 / TTS + - text: → 最终 mp4 输出 + - generic "拖动调整宽度" [ref=e445] + - generic "拖动调整大小(宽 × 高)" [ref=e446] + - img + - generic "Control Panel" [ref=e447]: + - button "Zoom In" [ref=e448] [cursor=pointer]: + - img [ref=e449] + - button "Zoom Out" [ref=e451] [cursor=pointer]: + - img [ref=e452] + - button "Fit View" [ref=e454] [cursor=pointer]: + - img [ref=e455] + - button "Toggle Interactivity" [ref=e457] [cursor=pointer]: + - img [ref=e458] + - img "Mini Map" [ref=e461] + - region "Notifications alt+T": + - list: + - listitem [ref=e471]: + - img [ref=e473] + - generic [ref=e476]: 📥 视频已就绪 — 请点 Input 节点里的「点这里开始解析」按钮 + - alert [ref=e477] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-13T16-38-07-160Z.yml b/.playwright-mcp/page-2026-05-13T16-38-07-160Z.yml new file mode 100644 index 0000000..62aaa00 --- /dev/null +++ b/.playwright-mcp/page-2026-05-13T16-38-07-160Z.yml @@ -0,0 +1,17 @@ +- generic [active] [ref=e1]: + - main [ref=e3]: + - application [ref=e6]: + - img + - generic "Control Panel" [ref=e9]: + - button "Zoom In" [ref=e10] [cursor=pointer]: + - img [ref=e11] + - button "Zoom Out" [ref=e13] [cursor=pointer]: + - img [ref=e14] + - button "Fit View" [ref=e16] [cursor=pointer]: + - img [ref=e17] + - button "Toggle Interactivity" [ref=e19] [cursor=pointer]: + - img [ref=e20] + - img "Mini Map" [ref=e23] + - region "Notifications alt+T" + - button "Open Next.js Dev Tools" [ref=e30] [cursor=pointer]: + - img [ref=e31] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-13T16-38-09-677Z.yml b/.playwright-mcp/page-2026-05-13T16-38-09-677Z.yml new file mode 100644 index 0000000..102634a --- /dev/null +++ b/.playwright-mcp/page-2026-05-13T16-38-09-677Z.yml @@ -0,0 +1,430 @@ +- generic [active] [ref=e1]: + - generic [ref=e29] [cursor=pointer]: + - button "Open Next.js Dev Tools" [ref=e30]: + - img [ref=e31] + - generic [ref=e36]: + - button "Open issues overlay" [ref=e37]: + - generic [ref=e38]: + - generic [ref=e39]: "0" + - generic [ref=e40]: "1" + - generic [ref=e41]: Issue + - button "Collapse issues badge" [ref=e42]: + - img [ref=e43] + - main [ref=e46]: + - button "切到明亮主题" [ref=e48]: + - img [ref=e49] + - generic [ref=e55]: + - generic [ref=e58]: + - generic [ref=e59]: + - img [ref=e60] + - generic [ref=e65]: 分镜头编排 + - generic [ref=e66]: 0 分镜 · 0 元素 + - generic [ref=e67]: · 组织分镜画面 → 为生成视频做准备 + - button "展开编排" [disabled] [ref=e69]: + - img [ref=e70] + - text: 展开编排 + - application [ref=e73]: + - generic [ref=e75]: + - generic: + - generic: + - img: + - group "Edge from input to keyframe" [ref=e76] [cursor=pointer] + - img: + - group "Edge from input to asr" [ref=e79] [cursor=pointer] + - img: + - group "Edge from asr to translate" + - img: + - group "Edge from translate to rewrite" [ref=e82] [cursor=pointer] + - img: + - group "Edge from keyframe to storyboard" [ref=e85] [cursor=pointer] + - img: + - group "Edge from rewrite to storyboard" [ref=e88] [cursor=pointer] + - img: + - group "Edge from storyboard to videogen" [ref=e91] [cursor=pointer] + - img: + - group "Edge from videogen to compose" [ref=e94] [cursor=pointer] + - img: + - group "Edge from rewrite to compose" [ref=e97] [cursor=pointer] + - generic: + - group [ref=e100]: + - generic [ref=e101]: + - generic [ref=e102]: + - button "再上传一个视频" [ref=e103]: + - img [ref=e104] + - generic [ref=e105]: + - button "64.5s" [ref=e106]: + - generic [ref=e108]: 64.5s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 64.5s + - generic [ref=e109]: + - button "72.4s" [ref=e110]: + - generic [ref=e112]: 72.4s + - generic: + - generic: + - generic: + - generic: 576×1024 + - generic: 72.4s + - generic [ref=e113]: + - button "64.5s" [ref=e114]: + - generic [ref=e116]: 64.5s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 64.5s + - generic [ref=e117]: + - button "71.4s" [ref=e118]: + - generic [ref=e120]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e121]: + - button "72.4s" [ref=e122]: + - generic [ref=e124]: 72.4s + - generic: + - generic: + - generic: + - generic: 576×1024 + - generic: 72.4s + - generic [ref=e125]: + - button "71.4s" [ref=e126]: + - generic [ref=e128]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e129]: + - button "71.4s" [ref=e130]: + - generic [ref=e132]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e133]: + - button "71.4s" [ref=e134]: + - generic [ref=e136]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e137]: + - button "71.4s" [ref=e138]: + - generic [ref=e140]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e141]: + - button "71.4s" [ref=e142]: + - generic [ref=e144]: 71.4s + - generic: + - generic: + - generic: + - generic: 1080×1920 + - generic: 71.4s + - generic [ref=e145]: + - button "8.0s" [ref=e146]: + - generic [ref=e148]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - generic [ref=e149]: + - button "8.0s" [ref=e150]: + - generic [ref=e152]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - generic [ref=e153]: + - button "8.0s" [ref=e154]: + - generic [ref=e156]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - generic [ref=e157]: + - button "8.0s" [ref=e158]: + - generic [ref=e160]: 8.0s + - generic: + - generic: + - generic: + - generic: 640×360 + - generic: 8.0s + - button "…" [ref=e162]: + - img [ref=e164] + - generic [ref=e166]: … + - button "…" [ref=e168]: + - img [ref=e170] + - generic [ref=e172]: … + - button "…" [ref=e174]: + - img [ref=e176] + - generic [ref=e178]: … + - generic [ref=e179]: + - generic [ref=e180]: + - img [ref=e182] + - generic [ref=e185]: 输入 · Input + - img [ref=e187] + - generic [ref=e191]: + - generic [ref=e192]: STEP 1 · 视频就绪 · 完成 + - textbox "再加一个 TK 链接" [ref=e193] + - generic [ref=e194]: + - button "+ 加链接" [disabled] [ref=e195] + - button "再传一个" [ref=e196]: + - img [ref=e197] + - text: 再传一个 + - generic [ref=e200]: + - generic [ref=e201]: 1080×1920 · 64.5s + - generic [ref=e202]: 🔗 链接 + - button "重新解析" [ref=e203] + - generic "拖动调整宽度" [ref=e205] + - generic "拖动调整大小(宽 × 高)" [ref=e206] + - group [ref=e207]: + - generic [ref=e208]: + - generic [ref=e209]: + - generic [ref=e210]: + - button "frame 9 1.7s" [ref=e211]: + - img "frame 9" [ref=e212] + - generic [ref=e213]: 1.7s + - button "📋" [ref=e214] + - button "删除该关键帧" [ref=e215]: + - img [ref=e216] + - generic: + - generic: + - generic: + - generic: 分镜 10 + - generic: 1.66s + - generic [ref=e219]: + - button "frame 0 ✨ 24.7s" [ref=e220]: + - img "frame 0" [ref=e221] + - generic "已清洗" [ref=e223]: ✨ + - generic [ref=e224]: 24.7s + - button "📋" [ref=e225] + - button "删除该关键帧" [ref=e226]: + - img [ref=e227] + - generic: + - generic: + - generic: + - generic: 分镜 1 + - generic: 24.73s + - generic [ref=e230]: + - button "frame 1 33.6s" [ref=e231]: + - img "frame 1" [ref=e232] + - generic [ref=e233]: 33.6s + - button "📋" [ref=e234] + - button "删除该关键帧" [ref=e235]: + - img [ref=e236] + - generic: + - generic: + - generic: + - generic: 分镜 2 + - generic: 33.61s + - generic [ref=e239]: + - button "frame 2 37.7s" [ref=e240]: + - img "frame 2" [ref=e241] + - generic [ref=e242]: 37.7s + - button "📋" [ref=e243] + - button "删除该关键帧" [ref=e244]: + - img [ref=e245] + - generic: + - generic: + - generic: + - generic: 分镜 3 + - generic: 37.70s + - generic [ref=e248]: + - button "frame 3 39.4s" [ref=e249]: + - img "frame 3" [ref=e250] + - generic [ref=e251]: 39.4s + - button "📋" [ref=e252] + - button "删除该关键帧" [ref=e253]: + - img [ref=e254] + - generic: + - generic: + - generic: + - generic: 分镜 4 + - generic: 39.42s + - generic [ref=e257]: + - button "frame 4 1 43.1s" [ref=e258]: + - img "frame 4" [ref=e259] + - generic "1 个元素已抠图" [ref=e261]: "1" + - generic [ref=e262]: 43.1s + - button "📋" [ref=e263] + - button "删除该关键帧" [ref=e264]: + - img [ref=e265] + - generic: + - generic: + - generic: + - generic: 分镜 5 + - generic: 43.13s + - generic [ref=e268]: + - button "frame 5 45.0s" [ref=e269]: + - img "frame 5" [ref=e270] + - generic [ref=e271]: 45.0s + - button "📋" [ref=e272] + - button "删除该关键帧" [ref=e273]: + - img [ref=e274] + - generic: + - generic: + - generic: + - generic: 分镜 6 + - generic: 45.05s + - generic [ref=e277]: + - button "frame 6 53.6s" [ref=e278]: + - img "frame 6" [ref=e279] + - generic [ref=e280]: 53.6s + - button "📋" [ref=e281] + - button "删除该关键帧" [ref=e282]: + - img [ref=e283] + - generic: + - generic: + - generic: + - generic: 分镜 7 + - generic: 53.60s + - generic [ref=e286]: + - button "frame 7 56.0s" [ref=e287]: + - img "frame 7" [ref=e288] + - generic [ref=e289]: 56.0s + - button "📋" [ref=e290] + - button "删除该关键帧" [ref=e291]: + - img [ref=e292] + - generic: + - generic: + - generic: + - generic: 分镜 8 + - generic: 55.96s + - generic [ref=e295]: + - button "frame 8 58.4s" [ref=e296]: + - img "frame 8" [ref=e297] + - generic [ref=e298]: 58.4s + - button "📋" [ref=e299] + - button "删除该关键帧" [ref=e300]: + - img [ref=e301] + - generic: + - generic: + - generic: + - generic: 分镜 9 + - generic: 58.39s + - generic [ref=e304]: + - generic [ref=e306]: + - img [ref=e308] + - generic [ref=e312]: 镜头拆解 · 元素提取 + - img [ref=e314] + - generic [ref=e318]: + - generic [ref=e319]: STEP 2 · 0/10 入编排 · 完成 + - generic [ref=e320]: + - text: 自动 10 张 · + - generic [ref=e321]: 1 已清洗 + - text: · + - generic [ref=e322]: 1/2 已抠图 + - text: 点缩略图 → 清洗水印 / 提取可借鉴元素 → 改造成 SKG 画面素材 + - generic "拖动调整宽度" [ref=e324] + - generic "拖动调整大小(宽 × 高)" [ref=e325] + - group [ref=e326]: + - generic [ref=e327]: + - generic [ref=e329]: + - img [ref=e331] + - generic [ref=e334]: 声音文案 · ASR + - generic [ref=e337]: + - generic [ref=e338]: STEP 3 · 可选文案轨 · 待运行 + - generic [ref=e339]: Gemini 2.5 · 英文带时间戳分段 + - generic "拖动调整宽度" [ref=e341] + - generic "拖动调整大小(宽 × 高)" [ref=e342] + - group [ref=e343]: + - generic [ref=e344]: + - generic [ref=e346]: + - img [ref=e348] + - generic [ref=e352]: 翻译理解 · Translate + - generic [ref=e355]: + - generic [ref=e356]: STEP 4 · EN → ZH · 待运行 + - generic [ref=e357]: 中文翻译 · 段落级 · 实时输出 + - generic "拖动调整宽度" [ref=e359] + - generic "拖动调整大小(宽 × 高)" [ref=e360] + - group [ref=e361]: + - generic [ref=e362]: + - generic [ref=e364]: + - button "透明骷髅" [ref=e365]: + - img "透明骷髅" [ref=e366] + - button "📋" [ref=e367] + - generic: + - generic: + - generic: + - generic: 分镜 5 + - generic: 43.13s + - generic [ref=e368]: + - generic [ref=e370]: + - img [ref=e372] + - generic [ref=e377]: 元素改造 · Storyboard + - img [ref=e379] + - generic [ref=e383]: + - generic [ref=e384]: STEP 6 · 参考元素 → SKG 画面 · 完成 + - generic [ref=e385]: + - text: 不是复刻原视频:先把参考图里的主体 / 场景 / 动作 / 道具拆出来,再替换成 SKG 产品画面。 + - generic [ref=e386]: 已有 1 个提取元素 · 0 个分镜进入编排 + - button "进入分镜编排" [disabled] [ref=e387] + - generic "拖动调整宽度" [ref=e389] + - generic "拖动调整大小(宽 × 高)" [ref=e390] + - group [ref=e391]: + - generic [ref=e392]: + - generic [ref=e394]: + - img [ref=e396] + - generic [ref=e400]: 产品文案 · Rewrite + - generic [ref=e403]: + - generic [ref=e404]: STEP 5 · 接 SKG 卖点 · 待运行 + - textbox "粘贴 SKG 产品信息 / 关键卖点(可作为视频脚本和镜头动作参考)" [disabled] [ref=e405] + - generic [ref=e406]: 下一冲刺接入 + - generic "拖动调整宽度" [ref=e408] + - generic "拖动调整大小(宽 × 高)" [ref=e409] + - group [ref=e410]: + - generic [ref=e412]: + - generic [ref=e414]: + - img [ref=e416] + - generic [ref=e418]: 生成视频 · Video Gen + - generic [ref=e421]: + - generic [ref=e422]: STEP 7 · 首帧 + 动作 prompt · 待运行 + - generic [ref=e423]: + - generic [ref=e424]: Seedance + - generic [ref=e425]: Kling + - generic [ref=e426]: Veo 3 + - generic "拖动调整宽度" [ref=e428] + - generic "拖动调整大小(宽 × 高)" [ref=e429] + - group [ref=e430]: + - generic [ref=e431]: + - generic [ref=e433]: + - img [ref=e435] + - generic [ref=e439]: 合成成品 · Compose + - generic [ref=e442]: + - generic [ref=e443]: STEP 8 · ffmpeg + 字幕 · 待运行 + - generic [ref=e444]: + - text: 视频片段 + 字幕 / TTS + - text: → 最终 mp4 输出 + - generic "拖动调整宽度" [ref=e445] + - generic "拖动调整大小(宽 × 高)" [ref=e446] + - img + - generic "Control Panel" [ref=e447]: + - button "Zoom In" [ref=e448] [cursor=pointer]: + - img [ref=e449] + - button "Zoom Out" [ref=e451] [cursor=pointer]: + - img [ref=e452] + - button "Fit View" [ref=e454] [cursor=pointer]: + - img [ref=e455] + - button "Toggle Interactivity" [ref=e457] [cursor=pointer]: + - img [ref=e458] + - img "Mini Map" [ref=e461] + - region "Notifications alt+T": + - list: + - listitem [ref=e471]: + - img [ref=e473] + - generic [ref=e476]: 📥 视频已就绪 — 请点 Input 节点里的「点这里开始解析」按钮 + - alert [ref=e477] \ No newline at end of file diff --git a/web/components/nodes/index.tsx b/web/components/nodes/index.tsx index 8697e6a..f9036ae 100644 --- a/web/components/nodes/index.tsx +++ b/web/components/nodes/index.tsx @@ -118,7 +118,7 @@ export function InputNode({ data, selected }: NodeProps<{ data: NodeData }> | an onClick={(e) => { e.stopPropagation(); fileRef.current?.click() }} title="再上传一个视频" className="shrink-0 rounded-md border border-dashed border-white/30 hover:border-white/50 bg-white/[0.04] hover:bg-white/[0.08] inline-flex items-center justify-center text-white/60 hover:text-white transition" - style={{ width: 36, height: 64 }} + style={{ width: 44, height: 80 }} > diff --git a/web/components/nodes/node-shell.tsx b/web/components/nodes/node-shell.tsx index 4364e1a..891897d 100644 --- a/web/components/nodes/node-shell.tsx +++ b/web/components/nodes/node-shell.tsx @@ -1,7 +1,7 @@ "use client" import { type ReactNode } from "react" import { Handle, Position } from "@xyflow/react" -import { CheckCircle2, Loader2, AlertCircle } from "lucide-react" +import { CheckCircle2, Loader2, AlertCircle, Pin } from "lucide-react" import { ResizeRight, ResizeBR } from "./resize-handle" export type NodeKind = "input" | "process" | "ai" | "output" @@ -17,6 +17,8 @@ interface Props { selected?: boolean hasTarget?: boolean hasSource?: boolean + pinned?: boolean // 钉下 → 锁定位置与尺寸,不可拖动、不显示 resize 把手 + onTogglePin?: () => void children?: ReactNode } @@ -44,11 +46,13 @@ export function NodeShell({ selected, hasTarget = true, hasSource = true, + pinned = false, + onTogglePin, children, }: Props) { return (
@@ -62,6 +66,21 @@ export function NodeShell({ status === "done" ? : status === "failed" ? : null} + {onTogglePin && ( + + )}
@@ -75,8 +94,8 @@ export function NodeShell({ {hasSource && } - - + {!pinned && } + {!pinned && } ) }