142 KiB
142 KiB
视频画布竞品对比记录
当前测试环境
- 本地服务: http://127.0.0.1:3003(3000 被旧进程占用;使用 127.0.0.1 避免旧 localhost Cookie 干扰)
- 本地测试画布:
/canvas/bc8dcef2-b2b4-4a00-8712-52888158b934?mode=video&workspaceType=video - 本地测试账号:
codex-video-test@example.com - 测试数据源: 服务器生产库复制到隔离 schema
codex_video_canvas_local - 已复制数据:
AiProvider34 条、AiModel23 条、SystemSettings60 条、SiteSettings1 条、存储/导航/教程/Agent preset 配置、测试用户 1 个 - 本地调整: 仅测试 schema 中开启
points_system_config.enabled,用于显示/验证积分余额 - 本地调试开关:
CANVAS_E2E_LOCAL=true时仅对 loopback 的/api/auth/session与/api/auth/validate-session跳过会话限流,避免本地高频浏览器验证触发登录失效 - 本地模型回退: 测试 schema 中 Moonshot
kimi-k2.5返回 401Invalid Authentication,已在隔离 schema 标记为auto_disabled;代码已修复自动代理模型选择,避免继续选中auto_disabled的默认模型,当前本地脚本生成实际走qwen3-vl-plus
已操作的竞品功能
- 初始视频画布布局: 暗色点阵无限画布、四个启动卡、底部工具栏、缩放/吸附/小地图等控制
- 底部主工具栏布局: 竞品在
1512 × 805视口下主入口为底部居中横排 32px 图标按钮,坐标依次为添加节点 x=616 y=753、打开工具箱 x=656、素材库 x=696、角色库 x=736、历史记录 x=776、快捷键 x=825、教程 x=865;历史记录与快捷键之间有额外约17px间隔,其余相邻间隔约8px - 故事脚本生成: 默认提示词、GVLM 3.1、消耗 6 点、脚本工作流创建、18 镜头表格
- 剧本三步工作流: 确认镜头、准备资产、合成提示词
- 剧本三步工作流入口: 从脚本节点点击
打开脚本节点 →后进入全屏深色工作流,顶部三步为确认镜头 / 准备资产 / 合成提示词,分别显示18个镜头已就绪、7/7 已生成、18/18 已合成,右上显示3/3 完成后可批量生视频和关闭按钮 - 确认镜头表格: Step 1 使用全屏表格,列顺序为
镜号 / 时长 / 画面描述 / 景别 / 光影氛围 / 对白·旁白 / 音效 / 运镜 / 最终提示词 / 操作;可见 18 镜,时长以5s/6s为主,内容通过@现代沈昭昭、@金銮殿、@沈昭昭、@侍卫长刀等资产引用串联剧情;底部左侧为添加镜头,右侧为→ 下一步:准备资产 - 最终提示词弹窗: 点击单行
查看提示词后打开居中弹窗第 1 镜:最终提示词,分为分镜提示词和视频运动提示词两块,状态均为绿色已生成;分镜提示词为中文长句并追加[视觉风格:盛唐·国风二次元],视频运动提示词按起始状态 / 动作过程 / 结束状态 / 音效组织,底部显示GVLM 3.1 Flash、消耗2、重新合成提示词 - 准备资产页: Step 2 为资产网格,顶部显示
全局风格 盛唐·国风二次元;分组为角色、场景、道具,资产卡包含现代沈昭昭 / 沈昭昭 / 皇帝、金銮殿 / 长安城白昼 / 长安城夜景、侍卫长刀,每组末尾有虚线新增卡;hover 卡片右上出现菜单和放大镜,菜单项为替换图片、AI 生角色、清除图片、红色删除 - 合成提示词页: Step 3 回到 18 镜表格并高亮最终提示词链路,底部主按钮为
一键合成全部提示词;本轮只确认入口、状态和表格呈现,未重复点击生成以避免再次扣点或改写竞品项目 - 一键准备资产: 角色/场景/道具模板、Lib Image、标准画质、2K、2:1、7 个资产、实际扣 126 点
- 一键合成提示词: GVLM 3.1 Flash、18 镜头、图像提示词和视频运动提示词拆分、实际扣 22 点
- 批量生成分镜: 创建 18 个图片生成器组、Lib Image、2K、自适应
- 批量生视频: Seedance 2.0 VIP、16:9、720P、5s、18 个视频生成器组、整组执行成本 2316 点
- 单个视频生成结果: 结果卡显示 1280x720、播放进度、剪辑/裁剪/高清/解析/字幕/音频分离等工具
- 视频结果卡 hover 控件: hover
分镜视频-#1后底部出现播放圆钮、时间0:00 / 0:05、进度条、右下帧截取圆钮;帧截取菜单为截取首帧、截取尾帧、截取当前帧 - 视频帧截取复查: 竞品菜单项可命中;本轮点击
截取首帧后节点数仍为 33、图片节点数仍为 7,未出现成功 toast,页面已有多条历史失败文案,推测当前素材/状态下帧截取未落新节点 - 视频结果工具条二级功能: 选中生成结果
分镜视频-#1后顶部工具条顺序为剪辑、裁剪、高清、解析、智能去字幕、音频分离 - 视频结果裁剪: 点击
裁剪后不打开 modal,而是在视频卡内出现裁剪框,裁剪框和视频卡下方内联编辑条均显示1024 x 576;底部条左侧按钮为退出裁剪,右侧圆形上箭头按钮为生成裁剪 - 视频裁剪生成: 点击
生成裁剪后页面提示正在裁剪视频,请稍候…,按钮进入生成中 37%等进度态;竞品前端成功路径文案为已创建裁剪视频节点并开始上传,对应行为是创建下游裁剪视频节点并上传裁剪后的 blob;本次实测页面最终未出现可见新节点且余额仍为531,疑似当前跟随/任务状态下裁剪任务未完成落点 - 视频结果高清: 点击
高清打开小型参数面板,包含Topazlabs、1080P、2K、4K、不补帧、1x,点击选项前不会直接生成 - 视频高清落节点: 复查画布当前状态时,
分镜视频-#1已连出一个高清(1080P)节点,节点 class 为react-flow__node-video,文本为配置参数生成高清视频;边为Edge from v-kfwaCZvhsJ to v-2BDan8Sb2j,说明高清不是 toast/浮层结果,而是下游视频工具节点 - 视频结果智能去字幕: 点击
智能去字幕后出现说明AI一键去除视频字幕,仅支持中英文字幕,下拉项为智能擦除、框选擦除;点击智能擦除后进入视频卡下方内联生成器,原工具条收起,含关闭去字幕生成器、标签智能擦除、消耗0、右侧图标生成按钮 - 视频智能擦除生成: 点击生成按钮后余额仍为
531,节点数从 30 增至 31,连线数从 45 增至 46;新增下游视频任务节点视频一键去字幕-分镜视频-#1,边为Edge from v-kfwaCZvhsJ to v-khP9pMw41s,节点文本先为生成中... 取消,约 12s 后为生成中 2%... 取消,约 42s 后为生成中 5%... 取消 - 视频智能擦除取消: 复制
分镜视频-#1_无声得到干净副本后触发智能擦除,余额仍为531,新增边M3662,-632 ... 4463,-1237指向视口外 pending 节点;沿边定位到视频一键去字幕-分镜视频-#1_无声 - 副本,节点文案为生成中... / 取消,随后进度到1%/2%/3%/7%/11%;点击节点内取消不直接删除,而是弹出确认框取消生成 / 正在生成中,即将完成!/ 停止将不退还已消耗算力。/ 取消 / 确定;点击确定后弹窗关闭,但至少 35s 内任务节点和连线仍保留、继续显示生成中 ... / 取消,无 toast、无失败态、无乐观删除 - 生成失败态排查: 当前竞品项目未找到真实失败任务样本;历史记录面板的
图片历史(8)、视频历史(10)、音频历史(6)中均未出现失败或重试;资产管理侧栏画布元素点击搜索节点后输入失败,搜索框 placeholder 为搜索节点,结果区显示当前画布没有相关搜索结果,同时侧栏底部仍显示共 96 节点;可见节点、React Flow 节点文本、localStorage/sessionStorage 中也未命中失败/重试/failed/error,本轮未获得竞品真实 failed 节点视觉 - 视频框选擦除入口: 点击
智能去字幕 -> 框选擦除后,竞品自动放大/聚焦当前视频卡,原顶部视频工具条收起,视频卡下方出现 49px 高悬浮操作条;操作条包含关闭去字幕生成器、标签框选擦除、帮助问号、框选区域、撤销、重做、重置、费用和右侧生成按钮;未框选时费用显示-,撤销/重做/重置和生成按钮为禁用态 - 视频框选擦除帮助: hover 问号显示 tooltip,文案为
使用方法 / 在画面上拖拽鼠标,框选要擦除的区域 / 支持框选多个区域,所有框内文字将被擦除 / 擦除作用于整段视频,不仅是当前帧 - 视频框选擦除选区: 在视频画面内拖拽后出现青色半透明矩形,样式为
rgba(7, 184, 221, 0.15)填充、rgb(6, 144, 174)边框、四角rgb(9, 202, 245)拖拽点;支持多个区域,本次实测两个区域同时存在 - 视频框选擦除编辑历史: 有区域后费用变为
0,生成按钮启用;撤销会移除最后一个区域并启用重做,重做恢复后再次禁用;重置清空所有区域,费用回到-,生成按钮禁用,同时撤销仍启用,说明重置也进入历史栈 - 视频框选擦除生成: 生成前余额为
531、节点数 9、边数 27;点击生成后余额仍为531,边数增至 28,新增边Edge from v-kfwaCZvhsJ to v-Ajx1SDnP6W;当前视口未渲染目标节点,疑似目标节点位于 React Flow 虚拟化视口外或生成后归入视频组,已确认至少创建了从源视频到新任务/结果节点的下游边;竞品前端 chunk 显示框选模式后端参数为model: volcano-subtitle-eraser、mode: Text、erase_ratio_location归一化区域数组 - 视频结果音频分离: 点击
音频分离后出现人声分离、音视频分离;hover人声分离后右侧二级菜单为仅保留人声、仅保留背景音;音视频分离的说明为分离内嵌音轨为独立音频节点 - 音视频分离落节点: 点击
音视频分离后节点数从 34 增至 36、音频节点数从 1 增至 2;先出现音频上传中(100%)...,约 3.5s 后落为新音频节点分镜视频-#1_音轨,时长显示00:00 / 00:05,并同时连出分镜视频-#1_无声视频节点 - 人声分离仅保留人声: 点击
人声分离 -> 仅保留人声后,源视频工具条按钮变为分离中,页面提示人声分离处理中,请稍候…,余额保持531;约 6.5s 后节点数从 11 增至 13、边数从 28 增至 30,新增音频节点分镜视频-#1_人声和视频节点分镜视频-#1_无声,两条边均从源视频分镜视频-#1连出 - 人声分离仅保留背景音: 在已执行过人声/音视频分离的
分镜视频-#1上点击该项后,同样出现分离中和人声分离处理中,请稍候…;约 20s 后节点数仍为 13、未出现分镜视频-#1_背景音,边数从 30 增至 32,疑似复用已有分离结果或需干净源视频复测 - 人声分离仅保留背景音(干净副本): 将可见视频结果
视频一键去字幕-分镜视频-#1复制为视频一键去字幕-分镜视频-#1 - 副本后,点击人声分离 -> 仅保留背景音,源视频工具条立即变为分离中,页面提示人声分离处理中,请稍候…,余额保持531;约 8s 后边数从 6 增至 8,向右平移画布后发现两个结果节点同坐标translate(5286px, -962px),先渲染 350x350 视频节点视频一键去字幕-分镜视频-#1 - 副本_无声,再渲染 350x148 音频节点视频一键去字幕-分镜视频-#1 - 副本_背景音 - 视频结果解析: 点击
分镜视频-#1的解析后余额从533变为531,按钮文案变为解析中,页面出现正在解析视频... - 视频解析落节点: 约 2.5s 后出现
解析完成,已创建视频故事节点;新增边e-Mjyng4PRdE,aria-label为Edge from v-kfwaCZvhsJ to b-YCox1NJ2cN,源节点为分镜视频-#1,目标节点为视频故事 - 视频故事节点: 节点 class 为
react-flow__node-video-story,标题视频故事,表头顺序为镜号 / 开始时间 / 结束时间 / 时长 / 画面描述 / 叙事内容 / 景别 / 摄影机角度 / 摄影机运动 / 焦距与景深 / 光线 / 背景音乐 / 人声/音效 / 图像生成提示词 / 视频运动提示词 / 关键帧 - 视频故事内容: 当前 5s 视频生成 1 行,时间
0 / 5 / 5;画面描述为深夜办公室加班女性,叙事内容强调职场压抑和文件压迫感,镜头为中景至近景 / 平视 / 缓慢推镜头 (Slow Zoom In) / 浅景深,图像和视频运动提示词使用英文 - 添加节点菜单: 文本、图片、视频、视频合成 Beta、导演台 NEW、音频、脚本子菜单、素材库子菜单、上传、从生成历史选择
- 添加资源入口:
上传打开文件选择器;从生成历史选择打开历史资产选择面板 - 上传入口文件选择器: 点击
添加节点 -> 上传可打开 file chooser,chooser 支持 multiple;使用无敏感测试图片/tmp/codex-video-canvas-upload.png执行setFiles时,Chrome 扩展返回Not allowed / fileChooser.setFiles failed,节点数保持 13,未出现测试文件名或新节点;按 Chrome 插件说明需在chrome://extensions为 Codex 扩展开启Allow access to file URLs后才能继续真实上传复测 - 图片节点: 图生图、图片高清、参考/标记/风格、Lib Image、标准画质、2K、1 张、18 点
- 视频节点: 首尾帧/首帧模式、参考/标记/特效/角色库/运镜、Seedance 2.0、文生视频、16:9/720P/5s/1 个
- 视频模型菜单: Seedance 2.0 VIP/Fast/Mini、Happy Horse 1.1/1.0、Kling O3/3.0/O1/2.6、Wan 2.7、动作迁移、MJ Video
- 视频参数菜单: Auto/16:9/4:3/1:1/3:4/9:16/21:9、480P/720P/1080P/4K、时长、音频开关、数量 1/2/4
- Prompt 辅助: 8 个运镜卡、特效库九宫格、角色库选择器
- 音频生视频预设: 自动创建音频/图片/视频节点组并连接
- 视频合成 Beta: 空态提示“空空如也,请连接视频节点后操作”
- 导演台 NEW: 3D 导演台全屏编辑器、导演/机位视角、场景树、属性、FOV、坐标、截图工具
- 素材库入口: 左侧小弹层,包含
风格库 新增风格节点 NEW和特效库 新增特效节点 NEW - 特效库广场: tabs 为
特效广场 / 我的收藏 / 最近使用,搜索框 placeholder搜索特效名称、作者,分类推荐 / 全部,卡片显示名称、商用、作者、使用数 - 风格库广场: tabs 为
风格广场 / 我的收藏 / 最近使用,搜索框 placeholder搜索风格名称、作者,分类包含推荐、Midjourney、摄影写真、电商营销、动漫游戏、风格插画、平面设计、建筑及室内设计、创意玩法、文创周边、小说推文,带仅看可商用checkbox - 历史记录面板: 标题
历史资产,顶部显示100%,tabs 为图片历史(8)、视频历史(1)、音频历史(0),排序按钮时间降序,操作入口批量操作 - 历史资产时间排序: 点击
时间降序不打开菜单,而是按钮文案立即切为时间升序;再次点击时间升序立即切回时间降序;本次竞品临时页历史面板以居中大浮层展示,内容框约x=76 y=80 w=1361 h=645、外层 z-index601 - 历史资产面板布局: 本轮临时页为居中大浮层,不是左侧抽屉;外层
pointer-events: none、内容框pointer-events: auto、背景rgb(38,38,38)、圆角16px;标题位于x=92 y=99,右上含100%缩放组和 28px 无文字关闭图标,点击关闭图标后历史资产消失;tabs 行位于y=159,右侧时间降序与批量操作均为86 × 32;素材区按144 × 144方形卡片横向网格排列,首行 x 约96/252/408/564/720/876...,卡片 hover 层含查看/使用/下载 - 历史资产缩放组: 顶部
100%左右两个无文字 28px 按钮为离散缩放控件;从100%点左侧按钮变为75%,首卡从144 × 144变为130 × 130,前三卡 x 为96/238/380;点右侧按钮依次回到100%、再到125%(卡片182 × 182,x 为96/290/484)、150%(卡片248 × 248,x 为96/356/616) - 历史资产项: 按日期分组,如
2026-07-09,每项有查看、使用、下载 - 历史资产批量操作: 点击
批量操作后顶部切换为已选择 0 项,操作按钮为删除、下载、使用、取消选择;未选中素材时前三项禁用、取消选择可用;视频历史(1)下日期组和素材项均出现 checkbox;选中 1 条素材后变为已选择 1 项,删除/下载/使用全部启用 - 历史资产批量布局: 大浮层批量模式下顶部操作区位于 tabs 行右侧,
已选择 0 项在x=1048 y=164 w=67 h=20,删除/下载/使用/取消选择分别为x=1123/1200/1277/1352 y=161,尺寸为69×28 / 69×28 / 50×28 / 68×28;日期组 checkbox 为x=96 y=209 16×16,素材 checkbox 在卡片左上,首行 x 为102/258/414/570/726/882/1038/1194、y=245 - 历史资产批量下载: 当前视频历史为
视频历史(5);批量模式选中 1 条视频素材后删除/下载/使用/取消选择均启用;点击下载后未触发浏览器 download 事件,四个按钮立即全部进入禁用态,至少 8s 内未恢复,页面无额外成功/失败 toast - 历史资产批量使用: 在临时竞品页打开
历史资产,进入批量模式并选中 1 条默认图片历史素材后点击顶部使用;面板关闭,页面出现 toast已应用到画布,画布新增并选中图片节点图片28,节点 class 为react-flow__node-image,可见参数区含Lib Image / 自适应 · 标准画质 · 2K · 1张 / 18 - 历史资产列表单项下载: 点击默认图片历史第一项列表内
下载后,6s 内未触发浏览器 download 事件;历史面板保留,未打开预览层,被点击的下载按钮保持文案下载但进入 disabled;同时弹出AI 生成内容水印管理规则modal,modal 外层 z-index801、内容框740 × 404、位置约x=386 y=201,含去 AI 水印和保存设置 - 历史资产水印规则弹窗关闭: 弹窗打开后页面没有可见关闭 X;按
Escape不关闭水印规则 modal,而是继续传到底层并关闭历史资产面板,modal 仍以 z-index801保留;点击弹窗外遮罩也不关闭 modal;未点击保存设置,避免修改竞品账号水印配置 - 历史资产水印规则开关:
去 AI 水印行为左侧 Mantine switch,inputrole="switch"、type="checkbox"、checked=false,轨道约38 × 20、位置约x=410 y=445、灰色rgba(255,255,255,0.25),圆点在左侧且为深色;点击轨道、文字、外层行和精确 input 均未改变 checked 状态,弹窗保持打开;正文滚动区约160px高,提示文案在 switch 下方,保存按钮位于x=972 y=537 - 历史资产单项查看: 点击默认图片历史素材的
查看后,不关闭历史面板、不选中画布节点,而是在其上打开全屏黑色预览层;遮罩为bg-black/80、z-index700,中心图片object-contain,底部显示1 / 8和下载,右侧有下一张箭头,右上角有关闭按钮 - 历史资产预览关闭: 预览打开后,点击黑色遮罩空白处、点击右上角关闭按钮、按
Escape都只关闭预览层;历史面板继续保留在底层,画布节点仍不选中 - 历史资产预览切换: 第一张只显示右侧下一张箭头,点击后计数从
1 / 8变为2 / 8,左右箭头同时出现并贴近视口边缘(左x=16、右x=1456);按ArrowRight继续到3 / 8,按ArrowLeft回到2 / 8 - 历史资产预览下载: 点击预览层底部
下载后,6s 内未触发浏览器 download 事件;预览层和历史面板都保留,底部按钮变为禁用态下载中...,约 13s 后仍保持 pending,按钮宽约 118px - 音频历史空态: 显示
暂无历史记录 - 快捷键面板: 非 modal 浮层,有关闭按钮
关闭快捷键面板 - 快捷键面板布局: 点击底部
快捷键后打开 z-index300的居中大浮层,外壳约x=180 y=300 w=1152 h=436、背景约#444/95、圆角16px;没有可见标题,右上 28px 关闭按钮位于x=1292 y=313;内容四列,列标题创作/缩放/移动画布/其他分别位于x=205/493/781/1069 y=325,列宽约239,行高28、行距12;按Escape和点击面板外均不关闭,只能点右上关闭按钮 - 快捷键分组:
- 创作:
成组 G、合并分镜组 Option+G、解组 Shift+G、连线 L、复制节点和连线 D、生成 Enter、新建节点 Tab、节点复制 Option+拖动节点 - 缩放:
放大、缩小、适应画布 0 - 移动画布:
Space、触控板、鼠标 - 其他:
整理画布 Option+Shift+F、撤销 Z、重做 Shift+Z、删除
- 创作:
- 教程菜单: 点击
教程后显示小菜单使用教程、联系客服、联系销售、关注公众号 - 教程菜单布局: 点击底部
教程后在图标上方弹出 z-index300小菜单,外壳约x=865 y=582 w=104 h=154、背景rgb(38,38,38)、圆角12px;四个纯文字按钮均为95 × 36,使用教程/联系客服/联系销售/关注公众号y 坐标分别为587/623/659/695;本轮自动化点击使用教程未捕获到新 tab,但历史手动/前轮记录显示该项会打开飞书LibTV使用指南 - 使用教程: 点击
使用教程会打开飞书LibTV使用指南标签页 - 资产管理入口: 闭合态左下按钮为带文字的
资产管理,1512 × 805视口下约x=22 y=759 w=94 h=28;打开后左下 dock 仍贴视口底部,面板内右上资产管理图标按钮位于x=200 y=101 w=32 h=32 - 资产管理面板布局: 打开后是 Mantine Drawer 式左侧全高侧栏,外壳
x=0 y=0 w=240 h=805、背景rgb(23,23,23)、圆角0、drawer inner z-index30;顶部工作区输入约x=12 y=56 w=78 h=20,项目按钮画布 1约x=99 y=52 w=68 h=28;tabs 行画布 / 资产位于x=8/60 y=102 w=44 h=30,active tab 背景rgba(255,255,255,0.15) - 资产管理画布 tab 控件: 标题区
x=0 y=142 h=52,行内画布元素在x=16 y=158,收起全部分组x=70 y=154 w=28 h=28,类型筛选x=148 y=154 w=54 h=28,搜索按钮x=204 y=154 w=28 h=28 - 资产管理宽度拖拽复测: Drawer 右侧有
role=separator、aria调整工作区面板宽度的 12px 热区,class 含workspace-panel-drawer-resize-handle、cursor 为col-resize;从默认 240px 沿x=233 -> 360拖拽后侧栏宽变360,separator 到x=347.5 w=12,关闭按钮/筛选/搜索分别到x=319.5/267.5/323.5,列表主定位按钮宽约335.5,更多/定位按钮到x=293.5/319.5,底部统计宽约359.5;左下 dock 随侧栏宽度移动到整理/小地图/隐藏连线/吸附/缩放 x=382/414/446/478/510,画布 viewport transform 不变。本轮从 360 回拖未稳定复现缩窄,不把最大/回缩边界作为已确认事实 - 资产管理收起全部分组复测: 点击
收起全部分组 x=70 y=154 w=28 h=28后按钮 aria 变为展开全部分组,但当前可见的普通节点行仍保留,列表可见定位行数量保持28;滚动内容总高度从约4130缩到2072,说明只收起分组内部内容,不会把非分组节点隐藏成空态,底部统计仍为共 98 节点 - 资产管理搜索: 点击
搜索节点后标题行原地切换为输入框,placeholder搜索节点,输入框约x=29 y=158 w=101 h=20,右侧按钮变为关闭搜索并保持x=204 y=154 w=28 h=28;输入镜头 1后列表即时过滤为镜头 1/10/11/... - 资产管理类型筛选:
全部、文本、图片、视频、视频合成、导演台、音频、脚本、脚本(旧版);下拉菜单role=menu,约x=148 y=186 w=180 h=333、背景rgb(23,23,23)、圆角12px、z-index410,每项171 × 32 - 资产管理音频类型筛选复测: 在类型菜单中点击
音频 x=152 y=410.5 w=171 h=32后,筛选按钮 aria/text 变为筛选类型:音频 / 音频,菜单关闭;列表只保留音频类主行,本轮可见分镜视频-#1_背景音、分镜视频-#1_人声、分镜视频-#1_音轨、视频一键去字幕-分镜视频-#1 - 副本_背景音、音频节点 10/13/5/4共 8 条,其中预设 - 音频生视频组内子项缩进到x=24;底部统计仍显示整张画布共 98 节点,不改为筛选结果数量,也无空态 - 资产管理内容: 按节点和分组列出当前画布,如
导演台 6、脚本生成器、剧本、分镜图 · 我在盛唐写天下、视频组 · 我在盛唐写天下、我在盛唐写天下资产组等;普通行外壳x=8 y=202 w=224 h=40,主定位按钮x=8 y=206 w=216 h=32,更多按钮x=174 y=210,定位图标x=200 y=210;底部统计区x=0 y=753 w=240 h=53,本轮竞品账号为共 76 节点 - 资产管理定位行为复测: 在资产 Drawer 打开且当前 viewport 为
matrix(0.1,0,0,0.1,269.1,107.6)时,点击列表行导演台 12 机位2-shot-01后不增删节点/边,目标节点立即选中,viewport 变为matrix(1,0,0,1,-6201,199.5);选中节点屏幕框为x=701 y=91.5 w=350 h=622,节点中心x=876 y=402.5,即对齐到左侧 240px Drawer 右侧主画布区域中心;本轮顶部黄色正在跟随条在点击前已由此前教程残留存在,点击取消ESC仍未清除,因此不作为本轮定位新增证据 - 资产管理更多操作: 单项
更多操作弹出菜单为重命名、复制,菜单约x=174 y=240 w=180 h=81、背景rgb(23,23,23)、圆角12px、z-index410,两项分别约x=178 y=249和x=178 y=285 - 资产管理复制行为复测: 本轮在竞品资产管理第一行
导演台 12点击更多操作 -> 复制,菜单项复制坐标约x=178 y=284.5 w=171 h=32;复制后.react-flow__node从94增至95,.react-flow__edge保持106,新节点立即选中,标题为导演台 12 - 副本,在列表中插入到原节点下一行y=248,画布世界坐标为原节点同x=6192、y=-108 -> 302(即height 350 + 60的纵向偏移),没有成功 toast - 资产管理资产 tab: 点击
资产后 active 背景移到资产 tab;内容区变为素材搜索/筛选而非画布大纲,搜索输入 placeholder请输入搜索内容,约x=8 y=154 w=192 h=30,搜索按钮x=172 y=158 w=22 h=22,筛选素材类型按钮x=204 y=155 w=28 h=28;当前显示暂无资产空态,空态容器约x=8 y=196 w=224 h=188 - 资产管理资产 tab 标签筛选: 点击
筛选素材类型后弹出标签筛选浮层,约x=204 y=193 w=322 h=189、背景rgb(33,33,33)、圆角12px、z-index410;标题标签,可选标签其它/人物/场景/物品/风格/音效,底部按钮清空/应用 - 视图跟随态: 通过资产管理/节点定位后顶部显示
正在跟随,按钮文案取消ESC,下方提示按 ESC 退出;复查 DOM 后未发现该状态生成临时连接路径,应与节点定位跟随相关,不能等同于连线模式 - 端点拖拽建连: 竞品节点使用 React Flow 透明 handle,DOM 为
.react-flow__handle、data-handleid="target/source"、data-handlepos="left/right"、connectablestart/connectableend;实测从分镜视频-#3source handle 拖到分镜视频-#9target handle 后,.react-flow__edge数量从 73 增至 74,新增边e-SYnsgmeqw7,没有弹出菜单或成功 toast - 连线选择/删除: 竞品点击新增边
e-SYnsgmeqw7后,该边 DOM class 变为react-flow__edge react-flow__edge-default nopan selected selectable,selected nodes 为空;按Delete后该边消失,.react-flow__edge数量从 74 回到 73,没有弹窗或 toast - 选中线中点剪刀删除: 另测临时边
e-al9CYM8T8M,创建后.react-flow__edge数量从 73 增至 74;点击选中后边 class 为react-flow__edge react-flow__edge-default nopan selected selectable,中点出现.scissors-enter深色圆形剪刀按钮;点击剪刀后边数从 74 回到 73,未出现弹窗或 toast - 连线重连/目标高亮复查: 选中线后 DOM 未发现
.edgeupdater或可拖拽重连手柄;静态 hover 目标 handle 仍只是普通.react-flow__handle ... connectionindicator,未发现稳定额外高亮 class - 端点拖拽目标瞬时高亮: 竞品从 source handle
x=1017.6 y=536.9拖到目标节点/handlex=759 y=536.9时,目标节点内容上方瞬时出现无类名黑色透明遮罩,采样为rgba(0,0,0,0.35),矩形约x=759 y=407.6 w=258.6 h=258.6;目标节点本身未新增valid/connectingclass、outline 或 shadow - 左下工具条闭合态: 竞品
1512 × 805视口下左下 dock 坐标为资产管理 x=22 y=759 w=94 h=28、整理画布,Option+Shift+F x=120、切换小地图 x=152、隐藏节点连线 x=184、网格吸附 x=216、缩放选项 x=248 w=42,缩放按钮文字为100%;默认不显示- / +独立缩放按钮 - 左下工具条资产面板打开态: 资产管理 Drawer 打开后,左下 dock 去掉
资产管理文字入口并整体右移240px,首个按钮整理画布位于x=262,随后切换小地图/隐藏节点连线/网格吸附/缩放选项分别位于x=294/326/358/390 - 小地图打开态复测: 点击
切换小地图后按钮背景变为rgba(255,255,255,0.15);弹出的.react-flow__panel.react-flow__minimap为原生 SVG 小地图,资产面板打开态坐标x=295 y=642 w=150 h=110,computed 样式为背景透明、无边框、圆角12px、无阴影、overflow: visible、cursor: auto;内部.react-flow__minimap-svg同为150 × 110,viewBox使用画布世界坐标,节点为.react-flow__minimap-node,遮罩为.react-flow__minimap-mask,fillrgba(255,255,255,0.04) - 小地图交互复测: 在小地图内部点击会立即改变
.react-flow__viewporttransform,本轮从matrix(0.743079,0,0,0.743079,-3842.91,487.096)跳到matrix(0.743079,0,0,0.743079,-2122.7,-2015.25);在小地图内拖拽继续平移到matrix(0.743079,0,0,0.743079,-6570.03,-4683.64),小地图保持打开 - 小地图关闭态: 再次点击
切换小地图后.react-flow__minimap从 DOM 消失,按钮恢复普通 hover 类,实测背景读数为rgba(255,255,255,0.1)(鼠标仍悬停时) - 隐藏节点连线复测: 资产面板打开态按钮
隐藏节点连线 x=326 y=759 w=28 h=28;点击后按钮 aria 变为显示节点连线,已有.react-flow__edge不从 DOM 移除,仍保留 1 个 edge group 和 5 条 path,主线stroke rgb(192,200,208) / 2px、流动高亮 path 仍可见;变化发生在节点连接端点,.react-flow__handle仍保留但多数 connectable handle 从opacity=1 / pointer-events=auto变为opacity=0 / pointer-events=none;再次点击恢复为隐藏节点连线,handle 恢复可交互,viewport 不变、无 toast
本地已验证
- 本地测试账号可登录,余额显示
200,000 - 本地视频画布可创建并加载 UUID 画布
- 本地服务器配置已生效,
/api/models和/api/video-canvas/config可正常返回 - 本地添加节点菜单可打开
- 本地添加节点菜单已补齐竞品结构:
脚本 NEW、脚本(旧版) Beta、素材库 NEW、风格库/特效库、从生成历史选择 - 本地添加节点菜单层级已修正: 画布内容层固定为低层级,添加面板可在其上命中;添加面板允许右侧子菜单溢出显示,避免
脚本/素材库子菜单被滚动容器裁掉 - 本地添加资源入口已修正:
素材库继续打开风格/特效库;从生成历史选择改为打开历史资产面板 - 本地主工具栏布局已对齐: 原先主入口为左侧竖排工具栏;现改为竞品式底部居中横排 32px 图标按钮,并使用 fixed 定位避免页面滚动状态改变坐标。Chrome 复测
1512 × 805视口下坐标为添加节点 x=616 y=753、打开工具箱 x=656、素材库 x=696、角色库 x=736、历史记录 x=776、快捷键 x=825、教程 x=865,与竞品一致;底部仍保留资产管理/缩放/吸附控制区 - 本地素材库入口已验证:
风格库 NEW 新增风格节点、特效库 NEW 新增特效节点 - 本地特效库/风格库广场已验证: tabs、搜索 placeholder、分类、商用标签、作者和使用数均按竞品结构呈现
- 本地角色库已验证: 展示
角色库、角色详情、角色标签、应用至画布、角色筛选、最近使用、横向角色卡片;点击应用至画布会新增甜妹/清新少女角色资源节点并选中 - 本地工具箱已验证: 展示
我的工具箱、分类周星驰经典名场面 / 电商展示 / 镜头运动 / 人物动画 / 全部、横向模板卡、卡片使用按钮、模板详情和模板工作流预览;点击【预设】左弧滑行的使用后关闭面板并新增参考图 -> 【预设】左弧滑行工具箱工作流 - 本地快捷键面板布局已对齐: 原先为左侧
300px小浮层;现改为竞品式居中四列大浮层,外壳x=180 y=300 w=1152 h=436、z-index300、圆角16px;无可见标题,右上关闭按钮x=1292 y=313;四列标题创作/缩放/移动画布/其他位于x=205/493/781/1068 y=325,主要行距和分组内容与竞品一致;Escape和点外面不关闭,只能点击关闭按钮 - 本地教程菜单布局已对齐: 原先为带标题和关闭按钮的
220px小面板;现改为竞品式图标上方小菜单,外壳x=865 y=582 w=104 h=154、背景rgb(38,38,38)、圆角12px、z-index300;四项按钮使用教程/联系客服/联系销售/关注公众号均为95 × 36,坐标 y 为587/623/659/695;使用教程继续打开指南页,其余保留待接入提示 - 本地故事脚本工作流已验证: 点击
故事脚本生成创建剧本和脚本生成器两个节点;选中脚本生成器后顶部浮动工具已改为竞品同款重新生成 / 批量生成分镜 / 批量生视频 - 本地脚本顶部工具栏已对齐: 竞品复测
1512 × 805视口下脚本选中浮层为x=411 y=60 w=393 h=41,按钮为重新生成 x=415 w=96、批量生成分镜 x=515 w=122、批量生视频 x=641 w=109;本地复测为浮层w=393 h=41,按钮w=96/122/109 h=32,文本不再带多余首字图标 - 本地故事脚本表格已对齐:
生成完整脚本后脚本生成器节点显示竞品式 9 列表格,列名为镜号 / 时长 / 画面描述 / 景别 / 光影氛围 / 对白·旁白 / 音效 / 运镜 / 最终提示词;Chrome DOM 复测确认列名全部存在,镜头编号01到18全部生成,节点状态为故事脚本已生成 - 本地脚本全屏三步工作流已对齐: 脚本生成器节点生成完成后出现
打开脚本节点 →,点击后打开 fixed 全屏深色工作流;Chrome 复测顶栏为脚本生成器 / 确认镜头 18个镜头已就绪 / 准备资产 7/7 已生成 / 合成提示词 18/18 已合成 / 3/3 完成后可批量生视频,外壳为1512 × 805,表格区域x=25 y=180 w=1464,行高固定60px - 本地脚本准备资产页已对齐: 点击
准备资产后显示全局风格 盛唐·国风二次元,并按角色 / 场景 / 道具分组展示 7 个资产现代沈昭昭 / 沈昭昭 / 皇帝 / 金銮殿 / 长安城白昼 / 长安城夜景 / 侍卫长刀;资产图实测w≈275 h=156,每组保留虚线新增卡和 hover 菜单结构 - 本地脚本提示词弹窗已对齐: 在
合成提示词页点击首行查看提示词后打开居中弹窗,Chrome 复测 modalx=376 y=109 w=760 h=587,含第 01 镜:最终提示词、分镜提示词 / 分镜图提示词·已生成、视频运动提示词 / 视频运动提示词·已生成、GVLM 3.1 Flash / 消耗 2 / 重新合成提示词 - 本地脚本批量分镜已对齐: 在干净画布按
故事脚本生成 -> 生成完整脚本 -> 批量生成分镜顺序复测,toast 为已批量生成 18 个分镜图片节点,画布生成分镜 01到分镜 18共 18 个图片生成器节点 - 本地脚本批量生视频已对齐前端编排: 先批量生成分镜后重新选中脚本节点点击
批量生视频,toast 为已创建 18 个视频生成器组,生成分镜视频-#1到分镜视频-#18共 18 个视频任务节点;所有节点显示720P · 5s,无720P · 6s漏出,任务参数写入Seedance 2.0 VIP / 16:9 / 720p / 5s、分镜图引用、图像提示词、视频运动提示词和原始镜头时长sourceShotDuration - 本地连线快捷键已验证: 按
L进入连线跟随态,顶部浮层对齐竞品正在跟随 / 取消ESC / 按 ESC 退出;选择起点和目标节点后会新增连线并退出跟随态 - 本地连线视觉预览已验证: 选择
剧本为起点后,画布 SVG 出现#a7afff虚线预览路径和末端光圈;移动鼠标时路径终点变化;按ESC后预览路径和光圈移除 - 本地透明端点单击已验证: 节点左右 handle 已改为透明 hot zone,带
data-handleid="target/source"、data-handlepos="left/right"、data-nodeid;单击脚本生成器右侧 source handle 后只显示顶部正在跟随 / 取消ESC / 按 ESC 退出,没有连接菜单,handle 文本为空 - 本地透明端点拖拽建连已验证: 从
脚本生成器source handle 拖到图片节点 3后静默新增连线,.edge-flow-segments path从 3 增至 6,未出现已连接toast、未出现连接菜单,预览线和光圈释放后清理为 0 - 本地端点拖拽目标瞬时高亮已对齐: 新增
lineConnectState.hoverNodeId并在CanvasNodeShell内渲染data-connection-target-overlay黑色透明遮罩;Chrome 复测从首帧节点 sourcex=890.1 y=421.1拖到视频节点 targetx=974.8 y=421.1时,目标节点出现bg-black/35、pointer-events-none遮罩,矩形x=974.8 y=255.5 w=431.2 h=331.1,顶部跟随提示和紫色预览线仍存在;松手后遮罩和预览线均清理为 0 - 本地连线选择/删除已验证: 每条线现在带
.react-flow__edge与data-id,透明粗 hit path 可点击;点击脚本生成器 -> 图片节点 3的测试线后 class 增加selected,selectedNodes为空;按Delete后 edge 数量从 2 回到 1,节点数量保持 3,没有弹窗或 toast - 本地选中线中点剪刀删除已验证: 点击测试线后
.react-flow__edgeclass 增加selected,中点显示.scissors-enter深色圆形剪刀按钮;按钮位于节点层之上且可命中,点击后 edge 数量从 2 回到 1,节点数量保持 3,剪刀按钮清理为 0 - 本地视频结果卡 hover 控件已验证: 通过
脚本 -> 视频参考生成分镜脚本创建视频参考资源节点,卡片内出现竞品式播放圆钮、0:00 / 0:05时间、进度条、右下截取视频帧圆钮和截取首帧/截取尾帧/截取当前帧菜单 - 本地视频帧截取已验证: 打开右下帧菜单后点击
截取首帧,节点数从 2 增至 3、edge 数从 1 增至 2,新增视频-首帧图片节点,显示1280 × 720,并保留与原视频节点的连线 - 本地视频结果工具条二级功能已验证: 选中带真实 mp4 地址的视频资源节点后,顶部工具条按竞品顺序显示
剪辑、裁剪、高清、解析、智能去字幕、音频分离;高清按钮已修正为只显示高清,不再露出额外HD文本 - 本地视频裁剪态已验证: 点击
裁剪后,视频卡上出现 80% 裁剪框和1024 x 576标签,视频卡下方出现退出裁剪、1024 x 576、生成裁剪的内联操作条,形态对齐竞品 - 本地视频裁剪生成已验证: 点击
生成裁剪后出现正在裁剪视频,请稍候…,按钮进入生成中 68%禁用态;随后新增下游视频_裁剪视频节点,标题旁显示1024 × 576,保留从原视频到裁剪结果的连线,并继续显示视频结果卡 hover/工具条能力 - 本地视频高清面板已验证: 点击
高清后出现Topazlabs、1080P、2K、4K、不补帧、1x - 本地视频高清落节点已验证: 点击视频工具条
高清 -> 1080P后新增下游高清(1080P)节点,文本为配置参数 / 生成高清视频,并保留从源视频到高清节点的连线;点击生成高清视频后节点进入生成中,约 2s 后变为生成结果 1920 × 1080,节点内显示视频预览和1080P - 本地智能去字幕已验证: 点击
智能去字幕后下拉项为智能擦除;点击后下方出现关闭去字幕生成器、标签智能擦除、消耗0、右侧生成擦除按钮 - 本地智能擦除生成已验证: 点击
生成擦除后新增下游视频一键去字幕-视频任务节点,显示生成中 4%... / 取消,并保留从源视频到任务节点的连线;本地模拟完成延迟已从约 3.6s 拉长到约 42s,以贴近竞品长 pending 节奏;完成后转为普通视频结果卡,标题旁显示1280 × 720,保留 hover 播放、帧截取和二级工具条 - 本地智能擦除取消已对齐: 修复
VIDEO_SUBTITLE_ERASEpending 节点取消按钮的 pointer 事件,点击取消后弹出确认框取消生成 / 正在生成中,即将完成!/ 停止将不退还已消耗算力。/ 取消 / 确定;点击确定后弹窗关闭,任务节点继续保持生成中 ... / 取消,不 toast、不立即删除、不转失败态,和本轮竞品实测一致 - 本地生成失败态已验证: 在本地
localhost:3003选中首帧图生视频的右侧视频目标节点后点击生成,因当前本地浏览器会话未登录,接口返回未登录并进入 failed;视频节点保留首帧模糊背景,中间黑色胶囊显示未登录 / 移除,同时出现 toast未登录;点击移除后失败视频节点和连线立即清理,只保留首帧节点。未接入首帧时则只 toast首帧图生视频需要先接入首帧图片,不会创建 failed 节点 - 本地框选擦除已实现:
智能去字幕下拉补齐说明AI一键去除视频字幕,仅支持中英文字幕和两项智能擦除/框选擦除;框选擦除进入视频卡区域编辑态,支持在视频画面拖拽多个青色半透明矩形,底部操作条含关闭、帮助、框选、撤销、重做、重置、费用和生成按钮 - 本地框选擦除参数已实现: 未框选时费用
-、生成按钮禁用;有区域后费用0、生成按钮启用;撤销/重做/重置按竞品历史栈语义工作;点击生成会创建下游VIDEO_SUBTITLE_ERASE任务节点,draft 写入model: volcano-subtitle-eraser、智能模式mode: Subtitle、框选模式mode: Text,并同时写入erase_ratio_location/eraseRatioLocation归一化区域数组 - 本地音频分离已验证: 点击
音频分离后下拉项为人声分离、音视频分离,人声分离hover 右侧子菜单为仅保留人声、仅保留背景音,音视频分离带说明分离内嵌音轨为独立音频节点 - 本地人声分离已对齐: 点击
人声分离 -> 仅保留人声后立即显示 toast人声分离处理中,请稍候…,源视频工具条按钮变为分离中,期间不新增节点;约 6.4s 后新增分镜视频-#1_人声音频节点和分镜视频-#1_无声视频节点,.react-flow__edge数为 2,两个节点均由源视频连出 - 本地背景音分离已对齐: 点击
人声分离 -> 仅保留背景音后按钮同样变为分离中,toast 使用竞品父级文案人声分离处理中,请稍候…;约 6.4s 后生成分镜视频-#1_无声350x350 视频节点和分镜视频-#1_背景音350x148 音频节点,两个结果同坐标落在源视频右侧,正文/DOM 顺序为_无声在前、_背景音在后,.react-flow__edge数为 2 - 本地视频解析已验证: 选中带真实 mp4 地址的视频节点后,点击
解析,按钮变为解析中,没有出现旧的浮动解析面板;后端返回后新增视频故事节点并选中,节点含竞品同款 16 列表头,镜号/开始时间/结束时间/时长/画面描述/叙事内容/景别/摄影机角度/摄影机运动/焦距与景深/光线/背景音乐/人声/音效/图像生成提示词/视频运动提示词/关键帧均可见 - 本地视频故事落节点已验证: 通过
定位选中可将生成的video-story节点居中,表格节点使用暗色卡片、横向滚动长提示词;本次本地 demo 视频返回 3 行镜头,首行时间为0 / 5 / 5,并保留从原视频节点到故事节点的画布连线 - 本地视频解析后端 schema 复测: 更新
/api/canvas/workflow/analyze后,新建第二个视频参考节点再点解析,按钮同样变解析中;返回新视频故事节点 1 行,字段包含非默认摄影机/光线内容,如全景、静态固定镜头 (Static Fixed Shot)、无限景深、极低照度,确认后端已按竞品 16 列 JSON 契约输出 - 本地视频首屏项目加载已修复: 本地
AUTH_URL/NEXTAUTH_URL调整为http://127.0.0.1:3003后,使用codex-video-test@example.com登录可直接打开测试视频画布;视频画布组件现在优先水合服务端initialProject,即使 Chrome 当前拦截直开/api/*,也不会再落到空画布 - 本地框选擦除浏览器复测已完成: 在 Chrome 中选中
分镜视频-#1后,顶部工具条显示剪辑/裁剪/高清/解析/智能去字幕/音频分离;智能去字幕下拉显示说明AI一键去除视频字幕,仅支持中英文字幕和智能擦除/框选擦除 - 本地框选擦除初始态已验证: 点击
框选擦除后,视频卡下方出现操作条,含关闭去字幕生成器、框选擦除、帮助问号、框选区域、撤销、重做、重置、费用和生成擦除;未框选时费用为-,撤销/重做/重置/生成禁用 - 本地框选擦除帮助已验证: hover 问号显示
使用方法 / 在画面上拖拽鼠标,框选要擦除的区域 / 支持框选多个区域,所有框内文字将被擦除 / 擦除作用于整段视频,不仅是当前帧,与竞品一致 - 本地框选擦除选区与历史已验证: 拖拽可创建青色半透明矩形,实测样式为半透明青色填充、
rgb(6, 144, 174)边框、rgb(9, 202, 245)四角点;支持多个区域;有区域后费用为0且生成启用;撤销移除最新区域并启用重做,重做恢复区域后禁用,重置清空区域、费用回-、生成禁用且撤销仍可用 - 本地框选擦除生成已验证: 重置后重新框选并点击
生成擦除,创建下游视频一键去字幕-分镜视频-#1节点,先显示生成中 6%... / 取消,并保留从源视频到任务节点的连线;约 5s 后切为普通视频结果卡,标题旁显示1280 × 720,保留播放、帧截取和二级工具条能力 - 本地添加节点二级菜单复测修正:
脚本/素材库hover 子菜单和主菜单之间的间隙已收窄,避免鼠标从主菜单移到子项时丢失 hover 导致子项无法点击 - 竞品添加节点菜单最终复测: 底部
添加节点按钮为x=616 y=753 w=32 h=32;主菜单为x=533 y=291 w=196 h=445,背景rgb(38,38,38),边框0.5px solid rgb(54,54,54),圆角16px,padding8px,gap4px;主行x=542 w=179 h=32,y 依次为添加节点 300、文本 336、图片 372、视频 408、视频合成 444、导演台 480、音频 516、脚本 552、素材库 588、添加资源 624、上传 660、从生成历史选择 696;Beta x=630 y=452 w=34 h=16,NEW x=617 y=488/596 w=36 h=16 - 本地添加节点菜单最终对齐: Chrome 复测本地主菜单同为
x=533 y=291 w=196 h=445,背景、边框、圆角、padding、gap、行坐标与竞品一致;文本起点x=572,Beta x=630 y=452 w=34 h=16,导演台 NEW x=617 y=488 w=36 h=16,素材库 NEW x=617 y=596 w=36 h=16,主菜单 DOM 文本为添加节点文本图片视频视频合成Beta导演台NEW音频脚本素材库NEW添加资源上传从生成历史选择 - 本地添加节点子菜单最终对齐:
脚本hover 时外层x=721 y=552 w=204 h=85、内层x=729 y=552 w=196 h=85,文本脚本NEW / 脚本(旧版)Beta;素材库hover 时外层x=721 y=588 w=204 h=85、内层x=729 y=588 w=196 h=85,文本风格库 / 特效库,不再带多余NEW徽标 - 本地故事脚本生成已验证: 后端
story-script模式已改为直接要求模型输出 18 镜头 JSON,schema 补齐duration、shotSize、lighting、dialogue、voiceAndSfx、cameraMovement、imagePrompt、motionPrompt等字段,并要求 motion prompt 采用起始状态 / 动作过程 / 结束状态 / 音效结构;本地CANVAS_E2E_LOCAL=true时对 loopback 提供确定性的 18 镜测试数据,Chrome 复测节点展示01到18 - 本地生成分镜已验证: 点击
生成分镜后创建 18 个分镜 01到分镜 18图片节点,当前画布共 20 节点 - 本地资产管理入口已对齐: 原先左下入口是
26 × 26小图标且随页面滚动偏移;现改为 fixed 视口定位的竞品式文字按钮,Chrome 复测1512 × 805下为资产管理 x=22 y=759 w=94 h=26,并保留 aria/title资产管理 - 本地资产管理面板布局已对齐: 原先是左下
340px浮层;现改为左侧全高 Drawer,外壳x=0 y=0 w=240 h=805、背景rgb(23,23,23)、圆角0、z-index30;顶部工作区输入x=12 y=56 w=78,画布 1按钮x=99 y=52 w=68,tabs画布/资产在x=8/60 y=102,面板内资产管理关闭按钮x=199 y=101 w=32 - 本地资产管理画布 tab 已对齐: 控制行
画布元素/收起全部分组/全部/搜索节点坐标分别为x=16/70/147/203 y=154,行列表起点x=8 y=202,主定位按钮x=8 y=206 w=216 h=32,更多按钮x=174 y=210,定位图标x=200 y=210,底部统计区x=0 y=752 w=239 h=53 - 本地资产管理定位最终对齐: 原先点击资产行只选中节点,viewport 保持
matrix(1,0,0,1,0,0),离屏副本仍在视口下方;现改为竞品式定位。Chrome 复测本地文本节点 1 - 副本行: 点击前副本世界位置left=756 top=813 w=350 h=350,点击后 viewport 为matrix(1,0,0,1,-55,-585),副本屏幕框x=701 y=228 w=350 h=350,中心x=876 y=403,正对齐资产 Drawer 右侧主画布中心,无 toast、不增删节点/边 - 本地资产管理收起全部分组最终对齐: 原先点击
收起全部分组会把所有普通节点隐藏,并显示分组已收起,与竞品普通节点仍保留不一致;现改为只切换按钮状态。Chrome 复测本地两条普通文本节点时,点击后按钮 aria 变展开全部分组,定位行数量保持4(两条主定位 + 两个定位图标),文本节点 1 / 文本节点 1 - 副本仍位于y=206/248,不出现分组已收起,底部仍为共 2 节点 - 本地资产管理搜索已对齐: 点击
搜索节点后标题行原地切换为输入框并聚焦,placeholder搜索节点,Chrome 复测输入框x=29 y=158 w=101 h=20、关闭按钮x=203 y=154 w=28 h=28;输入分镜后即时过滤并保留同款行布局 - 本地资产管理类型筛选已对齐: 菜单项为
全部/文本/图片/视频/视频合成/导演台/音频/脚本/脚本(旧版),Chrome 复测菜单x=147 y=186 w=180 h=333、背景rgb(23,23,23)、圆角12px、z-index410,item 坐标从x=152 y=195开始,接近竞品x=148 y=186 w=180 h=333 - 本地资产管理音频类型筛选最终对齐: 通过底部
添加节点 -> 音频创建音频节点 3后重新打开资产管理;选择类型菜单音频 x=152 y=411 w=170 h=32后,筛选按钮 aria/text 变为筛选类型:音频 / 音频,列表只剩音频节点 3,行坐标x=8 y=206 w=216 h=32,定位图标x=200 y=210;底部仍显示总节点数共 3 节点而不是筛选结果1,无空态,行为与竞品一致 - 本地资产管理更多操作已对齐: 单项菜单显示
重命名、复制,Chrome 复测菜单x=174 y=240 w=180 h=82、背景rgb(23,23,23)、圆角12px、z-index410,两项从x=179 y=249/285附近开始;复制行为已改为竞品式无 toast,标题追加- 副本,列表副本紧跟原节点下一行,本地复测文本节点 1 -> 文本节点 1 - 副本、底部共 1 节点 -> 共 2 节点,画布位置从left=756 top=403 size=350复制到left=756 top=813,即height + 60纵向偏移 - 本地资产管理资产 tab 已实现: 点击
资产后 active 背景切换到资产 tab,内容显示素材搜索输入请输入搜索内容,输入框x=8 y=154 w=191 h=30,搜索按钮x=173 y=158 w=22 h=22,筛选素材类型x=203 y=155 w=28 h=28,空态暂无资产容器x=8 y=196 w=223 h=188 - 本地资产管理资产 tab 标签筛选已对齐: 点击
筛选素材类型后弹出标签筛选浮层,Chrome 复测x=203 y=193 w=322 h=190、背景rgb(33,33,33)、圆角12px、z-index410;含标签、其它/人物/场景/物品/风格/音效、清空/应用 - 本地历史资产已验证: 基于画布图片/视频/音频节点聚合,列表含缩略图、类型状态、
查看、使用、下载;点击历史素材的使用后关闭面板并复制一份历史素材回画布,toast 已统一为竞品式已应用到画布 - 本地历史资产时间排序已对齐: 原先
时间降序是静态按钮;现改为竞品式即时两态切换,点击时间降序后变为时间升序,再次点击回到时间降序,素材数组按状态正序/倒序显示,不打开额外菜单 - 本地历史资产面板布局已对齐: 原先为左侧
420px小列表抽屉;现改为竞品式居中大浮层,外层 z-index601、内容框h=calc(100vh-160px)、w=min(90vw,1600px)、背景#262626、圆角16px;顶部保留标题、100%缩放组和无文字关闭按钮,tabs/排序/批量操作行改为32px高透明按钮,素材列表改为144 × 144方形卡片网格,卡片 hover 层仅显示查看/使用/下载;Chrome 复测本地视频历史(1)外壳为x=76 y=80 w=1361 h=645,日期x=96 y=207,首卡x=96 y=239 w=144 h=144,三按钮分别为x=107/149/191 y=297 - 本地历史资产缩放组已对齐: 原先顶部
- / +为 no-op;现改为竞品式离散档位75% / 100% / 125% / 150%。Chrome 复测本地从100%点左侧按钮变75%且前三卡为130 × 130、x96/238/380;连续点右侧按钮回到100%后到125%(182 × 182,x96/290/484)和150%(248 × 248,x96/356/616) - 本地历史资产默认图片历史已对齐: 原先默认
图片历史(8)只有计数、内容区为空;现真实图片少于 8 条时用本地示例图片补足 8 张,真实图片仍排在前面;Chrome 复测默认图片页cardCount=8,首行卡片 x 为96/252/408/564/720/876/1032/1188、均为144 × 144,暂无历史记录不再出现,前三个按钮坐标为查看 x=107、使用 x=149、下载 x=191 - 本地历史资产默认图片操作已验证: 默认补位图片点击
查看后打开 z-index700全屏预览层,底部显示1 / 8和下载,历史面板保留在底层;关闭预览后点击第一张使用,历史面板关闭并出现 toast已应用到画布,画布出现角色图资源及图片节点工具条 - 本地素材引用已验证: 先从
角色库应用甜妹/清新少女到画布,再从添加节点 -> 从生成历史选择打开历史资产,点击该角色素材的使用后关闭面板并复制回画布,toast 使用已应用到画布 - 本地历史资产批量操作已验证: 创建本地
首帧图生视频工作流后,视频历史(1)正常列出视频素材;点击批量操作后显示已选择 0 项,删除/下载/使用禁用、取消选择可用,日期组和素材项出现 checkbox;勾选素材后显示已选择 1 项,日期组和素材 checkbox 同步选中,删除/下载/使用全部启用;点击取消选择后回到普通列表并恢复时间降序/批量操作 - 本地历史资产批量布局已对齐: 大浮层网格化后复测
图片历史(8) -> 批量操作,顶部删除/下载/使用/取消选择坐标与竞品一致为x=1123/1200/1277/1352 y=161,尺寸为69×28 / 69×28 / 50×28 / 68×28;日期组 checkbox 为x=96 y=209 16×16,素材 checkbox 首行 x 为102/258/414/570/726/882/1038/1194、y=245;选中第一张后已选择 1 项出现,四个顶部按钮均启用 - 本地历史资产批量下载已对齐: 当前本地视频历史为
视频历史(3);选中 1 条视频素材后删除/下载/使用/取消选择全部启用;点击下载后不再逐个触发浏览器 download 事件,而是进入竞品式批量下载 pending 态,四个按钮立即全部禁用,8s 后仍保持禁用 - 本地历史资产批量使用已对齐:
视频历史(1)进入批量模式后,选中 1 条素材显示已选择 1 项且顶部删除/下载/使用/取消选择启用;点击使用后历史面板关闭,新增并选中一份历史素材节点,toast 为已应用到画布 - 竞品历史资产批量删除确认复测: 在
图片历史(8)进入批量模式并选中第一张后,顶部显示已选择 1 项,删除/下载/使用/取消选择全部启用;点击删除 x=1122.9 y=160.5 w=69 h=28后不会立即删除,而是打开居中确认弹窗。弹窗外壳x=584 y=335.4 w=344 h=134.1、背景rgb(38,38,38)、圆角12px、边框white/10,标题批量删除 x=601 y=352.4,正文确认批量删除 1 项 x=601 y=384.4,按钮取消 x=799 y=420.6 w=50 h=32、删除 x=861 y=420.6 w=50 h=32;为避免破坏竞品账号历史资产,本轮只点击取消,取消后弹窗关闭并保留批量模式和已选择 1 项 - 本地历史资产批量删除最终对齐: 原先本地点击批量
删除只弹 toast批量删除会从历史资产中移除记录,后端接口待接入。,没有确认弹窗;现补齐竞品式确认 modal。Chrome 复测本地图片历史(8) -> 批量操作 -> 选中第一张 -> 删除: 弹窗x=584 y=335.8 w=344 h=133.5,标题/正文/按钮为批量删除 / 确认批量删除 1 项 / 取消 / 删除,按钮坐标x=799/861 y=420.3 w=50 h=32;点击取消后保留已选择 1 项,再次确认删除后本地显示 toast删除成功,图片历史(8)变图片历史(7),顶部回到已选择 0 项且删除/下载/使用禁用 - 本地历史资产列表单项下载已对齐: 原先列表内
下载会触发浏览器 download 并显示已开始下载当前资产;现改为竞品式水印规则流程,点击后不触发浏览器 download,历史面板保留,被点击按钮 disabled 且文案仍为下载,弹出AI 生成内容水印管理规则modal,内容框为740 × 404,含去 AI 水印和保存设置 - 本地历史资产水印规则关闭已对齐: 原先水印 modal 挂在
HistoryAssetsPanel内,按Escape会随着历史面板一起卸载;现将 modal 状态提升到画布层,Chrome 复测视频历史(1) -> 下载 -> Escape后历史面板关闭但AI 生成内容水印管理规则仍保留,遮罩点击也不关闭 modal,和竞品一致 - 本地历史资产水印规则开关已对齐: 原先
去 AI 水印是右侧蓝色开启态静态开关,且被底部保存设置区域覆盖,点击右侧开关会误触保存并关闭弹窗;现改为竞品式左侧灰色关闭态 switch,inputrole="switch"、checked=false,正文滚动区固定160px,switch、提示文案和保存按钮分离;Chrome 复测点击 switch 和文字后状态仍为 false、弹窗保持打开 - 本地历史资产单项查看已对齐: Chrome 实测
历史记录 -> 视频历史(1) -> 查看后,历史面板保留在底层、不选中画布节点,打开1512 × 805全视口黑色预览层;底部显示1 / 1和下载,右上角关闭按钮位置贴近竞品,视频以object-contain方式居中展示并保留播放器 controls - 本地历史资产预览关闭已对齐: 遮罩空白点击、右上角
关闭预览、Escape均只关闭预览层并保留历史面板;本轮修复了Escape同时触发主画布全局关闭导致历史面板一起关闭的问题 - 本地历史资产预览切换已对齐: 为测试切换先用本地
使用复制出第二条视频历史素材;视频历史(2)打开预览后显示1 / 2,右箭头贴视口x=1456,点击后变为2 / 2且左箭头贴视口x=16;ArrowLeft可回到1 / 2,历史面板保留、画布节点不选中 - 本地历史资产预览下载已对齐: 原先预览层底部
下载会立即触发浏览器 download 事件;现改为竞品式 pending,点击后不触发浏览器 download,预览层和历史面板保留,按钮禁用并显示下载中...,pending 宽度固定为 118px - 本地上传复测状态:
上传按钮已触发 Chrome 文件选择器,但当前 Chrome 扩展未允许文件 URL 访问,setFiles返回Not allowed;需开启扩展文件访问后复测实际文件选择 - 本地上传入口复测补充: 本地
添加节点 -> 上传也可打开 file chooser,chooser 支持 multiple;用同一测试图片执行setFiles同样返回Not allowed / fileChooser.setFiles failed,节点数保持不变且无测试文件名,因此当前真实上传验证被 Chrome 扩展文件访问权限统一阻塞,不属于本地 UI 路径缺失 - 本地左下工具条已对齐: 原先左下 dock 为
资产管理 / 画布总览 / 定位选中 / 吸附 / - / 100% / +;现改为竞品式资产管理 / 整理画布,Option+Shift+F / 切换小地图 / 隐藏节点连线 / 网格吸附 / 缩放选项,Chrome 复测闭合态坐标为x=22/120/152/184/216/248,按钮尺寸资产管理 94×28、普通按钮28×28、缩放42×28 - 本地资产面板打开态 dock 已对齐:
assetManagerOpen时左下 dock 隐藏资产管理文字入口并translateX(240px),使按钮坐标对齐竞品打开态整理画布 x=262、切换小地图 x=294、隐藏节点连线 x=326、网格吸附 x=358、缩放选项 x=390 - 本地资产管理宽度拖拽已对齐: 原先只有 12px 透明热区但无
role=separator、无col-resize、拖拽无响应;现补齐workspace-panel-drawer-resize-handle、role=separator和 pointer 拖拽,默认宽 240px,宽度按指针 x 坐标更新并钳制在240..520。Chrome 复测x=234 -> 360后侧栏w=360、separatorx=347 w=12、关闭/筛选/搜索为x=319/267/323,dock 为x=382/414/446/478/510,与竞品 360px 态一致;再从x=353 -> 190回拖会钳制回w=240,dock 回到x=262/294/326/358/390 - 本地小地图最终对齐: 原先是
232px宽、带画布总览 / N 个节点标题的深色自绘弹窗;现改为竞品式透明 SVG 小地图,外壳.react-flow__panel.react-flow__minimap bottom right,150 × 110、圆角12px、背景透明、无边框、无阴影、overflow: visible、cursor: auto,无可见标题;资产面板打开态复测按钮x=294 y=759 w=28 h=28,小地图x=294 y=641 w=150 h=110,与竞品x=295 y=642仅 1px 取整差异 - 本地小地图交互已对齐: 小地图内部改为
.react-flow__minimap-svg、.react-flow__minimap-node和.react-flow__minimap-mask,mask fillrgba(255,255,255,0.04);点击后按钮进入bg-white/15选中态,再次点击关闭并移除.react-flow__minimap;本地复测点击x=370 y=700后世界 transform 从translate(144px,100px) scale(0.77)变为translate(-17px,51px) scale(0.77),拖拽345,685 -> 420,730后变为translate(-399px,-178px) scale(0.77),小地图保持打开 - 本地隐藏节点连线最终对齐: 原先
edgesHidden会把已有边和剪刀按钮整体过滤掉,与竞品“只隐藏连接端点、不隐藏已有边线”不一致;现改为已有边始终渲染,隐藏态只让[data-handleid][data-handlepos]端点opacity=0 / pointer-events=none / tabIndex=-1。Chrome 复测本地闭合态按钮x=184 y=759 w=28 h=28,先通过文本 source1106,578拖到音频 target1208,575创建 1 条 edge;点击隐藏后按钮 aria/title 变显示节点连线,edge 仍为 1 组 5 path 且主线/流动高亮可见,4 个 handle 全部不可见不可命中;再次点击恢复为隐藏节点连线,edge 保留,handle 恢复opacity=1 / pointer-events=auto - 本地项目加载遮罩已改为非阻塞: 本地未登录或接口失败时不再出现
z=120全屏遮罩阻挡工具条;改为顶部pointer-events-none小提示,便于继续测试画布功能。复测时 Chrome 当前会因未授权显示该提示,但左下工具条命中层已恢复为按钮本身 - 竞品缩放选项已实测: 资产面板打开态左下缩放按钮为
x=390 y=759 w=42 h=28、文本100%;点击后菜单为x=318 y=474 w=187 h=277,背景rgb(38,38,38)、边框0.5px solid rgb(54,54,54)、圆角12px、padding6px、z-index300;顶部输入框 aria缩放比例,菜单项依次为放大⌘+ / 缩小⌘- / 适合屏幕⌘0 / 缩放至50% / 缩放至100% / 缩放至800% - 竞品缩放行为已实测: 点击
缩放至50%/100%/800%后菜单保持打开,按钮和输入分别变为50/100/800,画布 transform scale 分别为0.5/1/8;放大从 100% 到 120%,缩小从 120% 回 100%;输入135未回车时只改输入框,按钮和画布保持 100%,回车后按钮变135%、scale1.35 - 本地缩放选项已对齐: 闭合态菜单为
x=176 y=473 w=187 h=278;资产面板打开态复测按钮坐标整理画布/小地图/隐藏连线/吸附/缩放为x=262/294/326/358/390,菜单为x=318 y=473 w=187 h=278,菜单项尺寸174 × 36、圆角8px,颜色、边框、padding、z-index 与竞品一致 - 本地缩放交互已验证: 菜单点击后保持打开;
缩放至50%后按钮50%、输入50、transformmatrix(0.5,...);缩放至800%后按钮宽44px、输入800、transformmatrix(8,...);放大/缩小使用 20% 步进;自定义输入135未回车不改变按钮和 transform,回车后按钮135%、transformmatrix(1.35,...);点画布外部关闭菜单 - 竞品整理画布已实测: 资产面板打开态按钮
整理画布,Option+Shift+F位于x=262 y=759 w=28 h=28;点击后 viewport 从matrix(1,0,0,1,-2236.5,-2546.5)变为matrix(0.1,0,0,0.1,64.8,192),缩放按钮变10%,可见节点从 DOM 0 个变为 33 个,说明该功能会把全画布整理/适配到视口,最小缩放为 10%;再按Option+Shift+F结果保持一致 - 竞品整理确认条已实测: 点击整理后出现
是否保留此次整理结果? / 还原 / 保留;闭合态截图下按钮坐标还原 x=98 y=706 w=50 h=32、保留 x=156 y=706 w=50 h=32,资产面板打开态按钮坐标x=240/298 y=706;还原移除确认条并恢复节点布局,但 viewport 保持整理后的 10% 视图 - 本地整理画布已对齐: 原先
整理画布只是定位/fit 选中节点;现改为保存原节点和原 viewport、生成整理预览、fit 全画布并弹出确认条。Chrome 复测 starter 工作流 2 节点: 点击后出现是否保留此次整理结果?,确认条闭合态x=50 y=662 w=168 h=88,按钮还原/保留为x=98/156 y=706 w=50 h=32;资产面板打开态确认条x=192 y=662 w=168 h=88,按钮x=240/298 y=706;点击还原后回到原matrix(0.77,0,0,0.77,144,100)和77% - 竞品网格吸附已实测: 按钮位于
x=358 y=759 w=28 h=28;点击前背景透明,点击后因 hover 读到rgba(255,255,255,0.1),aria/class 未变化、无确认弹窗、viewport 不变。当前仅能确认它是无文字即时开关/按钮,不暴露可读的 pressed 状态;本地保持同样的无文字按钮和拖拽网格吸附逻辑 - 竞品工具箱面板复测: 点击底部
打开工具箱后,面板为x=516 y=276 w=480 h=460,背景rgb(38,38,38),边框0.5px solid rgb(54,54,54),圆角12px;顶部按钮为我的工具箱 x=532.5 y=288.5 w=78 h=28、说明问号x=608.5 y=294.5 w=16 h=16、周星驰经典名场面 x=632.5 y=288.5 w=128 h=28、关闭按钮x=955.5 y=290.5 w=24 h=24;卡片为 3 列141px方图,首行x=532.5/685.5/838.5 y=345.5 h=178,二行y=535.5 h=161.5,三行y=709 h=161.5;hover 后使用按钮为50 × 24,首行坐标x=578/731/884 y=404 - 竞品工具箱使用复测: 直接点击隐藏态按钮不触发;真实用户路径为 hover 卡片后点击
使用。点击第一张【预设】左弧滑行后面板关闭、无 toast,视口变为translate(137.4px, 529px) scale(0.1);新增并选中一个分组 3 个节点group,屏幕坐标x=738.5 y=385 w=149.3 h=65.8,子节点为参考图 x=742.5 y=389 w=35 h=52.5、提示词 x=791 y=389.5 w=35 h=20、成品 x=848.8 y=394.3 w=35 h=52.5,并新增三条边参考图 -> 提示词、提示词 -> 成品、参考图 -> 成品 - 本地工具箱面板最终对齐: Chrome 复测本地
打开工具箱面板同为x=516 y=276 w=480 h=460,背景、边框、圆角、头部按钮坐标与竞品一致;卡片首行x=532.5/685.5/838.5 y=345.5 h=178,二行y=535.5 h=161.5,三行y=709 h=161.5,hover使用按钮首行x=578/731/884 y=404、二行y=594、三行y=767.5,DOM 文本顺序为我的工具箱 / 周星驰经典名场面 / 使用 / 【预设】左弧滑行 / 使用 / 【预设】电商手机弹出效果 / 使用 / 【预设】咖啡杯出场 ... - 本地工具箱使用最终对齐: 本地 hover 第一张模板后点击
使用,面板关闭且不 toast;画布 transform 为translate(137.4px, 529px) scale(0.1),新增 4 个 DOM 节点(group + 3 子节点)和 3 条.react-flow__edge;group分组 3 个节点坐标x=738.4 y=385 w=149.3 h=65.8,子节点参考图 x=742.4 y=389 w=35 h=52.5、提示词 x=790.9 y=389.5 w=35 h=20、成品 x=848.8 y=394.3 w=35 h=52.5,与竞品落点结构一致 - 竞品角色库面板复测: 点击底部
角色库后打开居中大模态,外壳x=68 y=60 w=1376 h=685、背景rgb(34,34,34)、圆角16px;头部角色库 x=85 y=76.6,右上关闭按钮;上方预览区x=85 y=117 w=1342 h=375,4 张预览图居中,坐标为角色立绘 x=230.5 y=173 w=191.3 h=255、脸部近景 x=429.7 y=173 w=191.3 h=255、表情参考 x=629 y=173 w=191.3 h=255、三视图 x=828.2 y=173 w=453.3 h=255;下方说明和应用至画布按钮位于y=444 - 竞品角色列表复测: 下方列表区
x=69 y=508 h=236;角色筛选 x=85 y=525 w=89 h=28、最近使用 x=1339 y=525 w=88 h=28;卡片从x=125 y=569 h=159开始横向滚动,缩略图约99 × 133,默认展示甜妹/清新少女、霸总/精英大佬、温柔熟男/理想男友、清冷千金/白切黑女主、古风男主、古风女主等 - 竞品角色筛选复测: 点击
角色筛选后弹出固定筛选菜单x=85 y=97 w=328 h=420、背景rgb(38,38,38)、圆角16px、z-index61;包含性别/年龄段/种族/时代/文化区域/体型/发色,每项为57 × 28胶囊按钮;点击时代 -> 古代后按钮变rgb(105,105,105),角色列表即时过滤为古风男主/古风女主 - 竞品最近使用复测:
最近使用是role=checkbox;点击后aria-checked=true,列表区显示空态无最近使用的角色,不关闭筛选菜单、不弹 toast;再次点击恢复筛选后的角色列表 - 竞品角色应用复测: 选中
古风男主点击应用至画布后模态关闭,出现已应用到画布成功提示并进入跟随定位;视口变为matrix(0.743079,0,0,0.743079,-3842.91,487.096);新增 4 个图片节点,无新增边,节点可见框为角色立绘 x=428.3 y=68 w=209.5 h=260.1、脸部近景 x=651.2 y=68 w=209.5 h=260.1、表情参考 x=874.1 y=68 w=209.5 h=260.1、三视图 x=428.3 y=371.2 w=652.4 h=367.8 - 本地角色库面板最终对齐: 本地
角色库模态复测为x=68 y=60 w=1376 h=685,上方预览区x=85 y=117 w=1342 h=375,下方列表区x=69 y=508 h=236;应用至画布 x=1302 y=444 w=109 h=32、角色筛选 x=85 y=526 w=87 h=28、最近使用 x=1339 y=526 w=88 h=28,与竞品坐标仅有 1-2px 差异 - 本地角色筛选和最近使用最终对齐: 本地筛选菜单同为
w=328 h=420固定浮层,点击古代后按钮背景变rgb(105,105,105),列表只剩古风男主/古风女主;勾选最近使用后aria-checked=true,显示无最近使用的角色,取消后恢复古代筛选列表 - 本地角色应用最终对齐: 本地选择
古代 -> 古风男主后点击应用至画布,模态关闭并显示已应用到画布toast;画布新增 4 个角色图片节点,父层 transform 对齐竞品落点,可见节点框为角色立绘 x=428.3 y=68 w=209.5 h=260.1、脸部近景 x=651.2 y=68 w=209.5 h=260.1、表情参考 x=874.2 y=68 w=209.5 h=260.1、三视图 x=428.3 y=371.2 w=652.4 h=367.8;本地使用项目 demo 角色图和三视图素材,避免直接复制竞品资源 - 竞品素材库入口复测: 点击底部
素材库 x=695.5 y=752.5 w=32 h=32后,在图标上方打开小弹层;外壳x=636 y=569.3 w=240 h=162.7、背景rgb(38,38,38)、边框0.5px solid rgb(54,54,54)、圆角12px、z-index20;标题素材库,两行入口均为223 × 52,风格库 x=644.5 y=615.5、特效库 x=644.5 y=671.5,正文包含新增风格节点/新增特效节点和NEW - 竞品风格库广场复测: 点击
风格库后打开居中大浮层,外壳x=100 y=79.5 w=1312 h=646、背景rgb(38,38,38)、边框0.5px solid rgb(54,54,54)、圆角12px;tabs风格广场/我的收藏/最近使用均为92 × 32,坐标x=121/217/313 y=96;关闭按钮x=1355.5 y=92 w=40 h=40;搜索输入 placeholder搜索风格名称、作者,inputx=442 y=101.9 w=279 h=20.1;分类行y=157,含推荐/Midjourney/摄影写真/电商营销/动漫游戏/风格插画/平面设计/建筑及室内设计/创意玩法/文创周边/小说推文,右侧仅看可商用checkbox 默认未勾选,全部 x=1341.5 y=157 w=54 h=28 - 竞品风格库列表和搜索复测: 默认风格卡为 6 列,单卡
x=116.5 y=197 w=203.2 h=318.1,首行复古马卡龙/新中式/岁月港风/新国韵/清风竹林/小岛微风;点击我的收藏后列表清空但不显示空态文案,最近使用列表清空并出现暂无素材;输入新中式不即时过滤,按Enter后才刷新为搜索结果,首行出现Qwen Image新中式宋式美学支持输入中文室内家居空间等后端结果;点击Midjourney仅切换按钮选中态,不清空已提交搜索词 - 竞品风格卡应用复测: 在风格搜索结果里点击第一张卡后市场关闭、无 toast、无新增边,新增
react-flow__node-material-style节点;当前竞品视口matrix(0.743079,0,0,0.743079,-3842.91,487.096)下,节点 transformmatrix(1,0,0,1,6068,389),可见框x=666.1 y=776.2 w=179.8 h=179.8,文本为素材-风格-新中式宋式美学支持输入中文室内家居空间 - 竞品特效库广场复测: 点击
特效库后同样打开x=100 y=79.5 w=1312 h=646大浮层;tabs特效广场/我的收藏/最近使用坐标仍为x=121/217/313 y=96;搜索 placeholder 为搜索特效名称、作者;分类只有左侧推荐 x=116.5 y=157 w=50 h=28和右侧全部 x=1341.5 y=157 w=54 h=28;特效卡为 6 列,单卡x=116.5 y=197 w=203.2 h=252.4,首行小蜜蜂运镜/穿云而入/飞跃地平线/逆转引力/地球缩放/环球缩放 - 竞品特效库交互复测:
我的收藏列表清空无空态文案,最近使用显示暂无素材;输入产品不即时过滤,按Enter后首卡变为产品扫光,后续含微距推镜/赛博化妆师/水下慢镜头;hover 第一张特效卡只出现两个 24px 图标,左上无文字图标x=129.5 y=210、右上收藏 x=282.7 y=210;直接点击特效卡会关闭市场,但节点数、边数不变,无 toast - 本地素材库入口最终对齐: 本地
素材库入口复测外壳为x=636 y=569 w=240 h=163、背景rgb(38,38,38)、边框0.5px solid rgb(54,54,54)、圆角12px、z-index20;两行入口均为223 × 52,风格库 x=644.5 y=615.5、特效库 x=644.5 y=671.5,已补齐新增风格节点/新增特效节点描述和NEW - 本地风格库广场最终对齐: 本地风格市场复测为
x=100 y=79.5 w=1312 h=646,tab、关闭按钮、搜索输入、分类行、仅看可商用默认未勾选、全部右侧按钮与竞品坐标一致;风格卡首行坐标x=116.5/331.7/546.8/762/977.2/1192.3 y=197 w=203.2 h=318,输入新中式后不即时过滤,按Enter后刷新为Qwen Image...搜索结果 - 本地风格卡应用最终对齐: 本地点击风格搜索结果第一张卡后市场关闭、无 toast、无新增边,新增 1 个
.react-flow__node-material-style风格节点;在本地 100% 视口下节点可见框为x=666 y=776 w=242 h=242,若使用竞品同款0.743079缩放则屏幕尺寸约为179.8 × 179.8;节点文本收敛为素材-风格-... - 本地特效库广场最终对齐: 本地特效市场复测外壳为
x=100 y=79.5 w=1312 h=646;tabs、搜索输入、推荐/全部坐标对齐;特效卡首行x=116.5/331.7/546.8/762/977.2/1192.3 y=197 w=203.2 h=251.2,接近竞品252.4;输入产品不即时过滤,Enter后首卡变为产品扫光 - 本地特效卡点击最终对齐: 本地在特效搜索结果第一张卡点击后市场关闭,无 toast,节点数保持不变、边数保持
0,已有风格节点仍为 1 个;与竞品本次实测“直接点击特效卡关闭但不落节点”一致 - 竞品快捷键
D/d复测: 快捷键面板标注复制节点和连线 D,但在当前画布实测并未触发复制;未选中/选中古风男主 角色立绘、尝试大写D和小写d后,节点数均保持11、边数保持10、无 toast、选中节点不变。本地同场景按D/d也保持 no-op,不额外实现复制 - 竞品键盘删除复测: 选中
古风男主 角色立绘后按Delete,节点数11 -> 10、边数保持10、选中态清空、无 toast;再选中古风男主 脸部近景后按Backspace,节点数10 -> 9、边数保持10、选中态清空、无 toast - 本地键盘删除最终对齐: 原先键盘
Backspace/Delete删除节点会弹节点已删除;现键盘删除走静默路径,保留右键菜单删除的提示。Chrome 复测选中甜妹/清新少女 表情参考后按Backspace,节点数2 -> 1、选中态清空、toast 为空,行为与竞品一致 - 竞品教程菜单点击复测: 点击
联系客服、联系销售、关注公众号后菜单保持打开,不新开标签、不弹 toast、不出现额外弹窗,仅对应菜单项 class 切为bg-canvas-controls-active;点击使用教程后新开https://resonate.feishu.cn/wiki/Loxfw6XHziYRk0kKzdjcFfp9nhb标签,原画布菜单仍保持打开,使用教程变 active,无 toast - 本地教程菜单点击最终对齐: 原先
联系客服/联系销售/关注公众号会弹待接入toast 且没有 active 态;现点击四项均只在菜单内切换 active,三项联系类无 toast/无新标签/无弹窗,使用教程新开同款飞书 URL 且原菜单保留 active 状态。Chrome 复测四项坐标仍为x=869 y=587/623/659/695 w=95 h=36 - 竞品添加文本节点复测: 在当前画布残留
正在跟随 / 取消ESC / 按 ESC 退出状态下,Escape、点击取消ESC和文本定位点击均未退出该跟随条,但不影响底部添加节点菜单;点击添加节点 -> 文本后,节点数9 -> 10、边数保持10、viewport 保持matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast,新增并选中react-flow__node-text,标题文本节点 2,文本为尝试: 自己编写内容 文生视频 图片反推提示词 文字生音乐,世界坐标translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1 - 本地添加文本节点最终对齐: 原先底部菜单创建文本会弹
已添加 文本节点 1toast、节点尺寸436 × 470且落到左上负坐标;现添加节点 -> 文本无 toast、无新增边、选中新节点、viewport 不变,节点为350 × 350,左上角按当前 viewport 中心落点。Chrome 复测空画布 100% 下新增文本节点 1屏幕框x=756 y=403 w=350 h=350,内部文案为尝试: 自己编写内容 文生视频 图片反推提示词 文字生音乐 - 竞品添加图片节点复测: 在同一画布上点击
添加节点 -> 图片后,节点数10 -> 11、边数保持10、viewport 保持matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast;新增并选中react-flow__node-image,世界坐标同当前文本节点为translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1,说明基础图片节点也是350 × 350;节点文本为图片节点 3 / 尝试: 图生图 图片高清 参考 标记 风格 / 可直接文字生图,或上传图片输入文字指令对图片进行编辑,如:将背景改为雪夜 / Lib Image 自适应 · 标准画质 · 2K · 1张 18 - 本地添加图片节点最终对齐: 原先底部菜单创建图片会生成
773 × 470横向节点,落点带图片偏移,且文案只含图生图 / HD 图片高清;现基础图片节点改为350 × 350,左上角按当前 viewport 中心落点,无 toast、无新增边、选中新节点,内部文案补齐图生图 图片高清 参考 标记 风格、说明文案和Lib Image 自适应 · 标准画质 · 2K · 1张 18参数行。Chrome 复测空画布 100% 下新增图片节点 1屏幕框x=756 y=403 w=350 h=350 - 竞品添加视频节点复测: 先点画布空白清掉图片节点参数层,再点击
添加节点 -> 视频;节点数11 -> 12、边数保持10、viewport 保持translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中react-flow__node-video,世界坐标仍是translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=462.2 h=260.1,反推基础尺寸约622 × 350;节点文本为视频节点 4 / 尝试: 首尾帧生成视频 首帧生成视频 / 参考 标记 特效 角色库 运镜 / 描述你想要生成的画面内容,@引用素材 / 2.0 文生视频 16:9 · 720P · 5s · 1个 · 高级设置 联网搜索 自动校验素材 - 本地添加视频节点最终对齐: 原先底部菜单创建视频会生成
773 × 470大节点,并按居中节点加偏移落到屏幕左侧;现基础视频节点改为622 × 350,和文本/图片一样按当前 viewport 中心左上角落点,无 toast、无新增边,视频卡片高度压到 350 内,选中后下方参数浮层改为660 × 191轻量面板。Chrome 复测空画布 100% 下新增视频节点 1屏幕框x=756 y=403 w=622 h=350,浮层文本为参考 标记 特效 角色库 运镜 描述你想要生成的画面内容,@引用素材 2.0 文生视频 16:9 · 720P · 5s · 1个 · 高级设置 联网搜索 自动校验素材 - 竞品视频节点高级设置复测: 选中
视频节点 4后,参数栏右侧依次为提示词优化、翻译提示词、无文字滑杆图标高级设置、费用135、白色生成按钮;普通1512 × 805视口下高级区默认折叠,DOM 中预渲染高级设置 / 联网搜索 / 自动校验素材但外层为grid-rows-[0fr]、高度 0。点击滑杆图标后高级区变grid-rows-[1fr],高度约116.5px,标题高级设置下有两行联网搜索和自动校验素材,两行右侧 Mantine switch 均默认checked=true,轨道38 × 20、白底黑色 14px 滑块;点击联网搜索后仅第一行变checked=false、轨道rgba(255,255,255,0.25)、滑块移到左侧,第二行保持开启 - 本地视频节点高级设置最终对齐: 原先本地把
高级设置 / 联网搜索 / 自动校验素材作为参数栏文字按钮直接排在同一行,且高阶会员下费用显示VIP;现改为竞品式三枚图标按钮和折叠高级区,2.0 / 文生视频 / 16:9 · 720P · 5s · 1个 · / 135位于同一参数栏,生成按钮空提示词时禁用并提示请输入提示词或添加参考素材。Chrome 复测将节点拖入视口后,点击滑杆图标,高级区grid-rows-[1fr]、高度117px,两枚[role="switch"]均为aria-checked=true;点击第一行后变aria-checked=false、bg-white/25、滑块左移,第二行仍为aria-checked=true - 竞品视频模型菜单复测: 选中
视频节点 4,将节点拖入视口后点击参数栏2.0;弹层为 Mantine popover,外框约x=614.5 y=215 w=369 h=409、role=dialog、背景约#2d2d2d/95、圆角16px,内部滚动区360 × 400、列表单项360 × 52、图标底座34 × 34、间距4px。完整顺序共 31 项:Seedance 2.0 VIP / Seedance 2.0 Fast VIP / Seedance 2.0 Mini / Happy Horse 1.1 / Happy Horse 1.0 / Kling O3 / Kling 3.0 Turbo / Kling 3.0 / Wan 2.7 / Kling O1 / Wan 2.6 / Hailuo 2.3 / Seedance1.5 Pro / Seedance 1.0 Pro / Seedance 1.0 Lite / Kling 2.6 / Hailuo 02 / Vidu Q2 / Vidu Q2 Pro / Vidu Q2 Turbo / Vidu Q3 Pro / OmniHuman 1.5 / Kling 2.5 / Kling 2.1 / Wan 2.2 / Wan 2.5 / Pixverse V5.5 / Pixverse V5 / Hailuo 2.3 Fast / Kling3.0 动作迁移 / MJ Video;第一项data-selected=true、背景rgba(255,255,255,0.15),末三项为cursor-not-allowed opacity-50禁用态。点击第二项后菜单关闭,参数按钮变2.0 Fast、宽约114.6px,文生视频与参数摘要右移,费用仍为135;再次打开可看到第二项高亮,点第一项恢复2.0 - 本地视频模型菜单最终对齐: 原先本地模型菜单只有 12 项,弹层
420 × 430、单项402 × 69,带序号和720P限时9折/限时4折标签,缺少Kling 3.0 Turbo/Wan 2.6/Hailuo/Vidu/OmniHuman/Pixverse等模型,且Kling3.0 动作迁移/MJ Video可点击;现改为竞品式369 × 410外框、360 × 400滚动区、360 × 52单项、31 项完整顺序,第一项data-selected=true、背景bg-white/[0.15],末三项 disabled 且cursor-not-allowed opacity-50。Chrome 复测空画布新增视频节点 1后拖入视口,点击2.0得到弹层x=750 y=216 w=369 h=410、首项x=755 y=221 w=360 h=52,切Seedance 2.0 Fast VIP后菜单关闭、按钮文本2.0 Fast、宽115px,再次选择首项恢复2.0、宽91px - 竞品视频参数弹层复测: 在
视频节点 4点击摘要16:9 · 720P · 5s · 1个 ·后,弹层左边与摘要按钮对齐、底边紧贴摘要顶部;本次外框x=824.5 y=179 w=341 h=445,背景约#2d2d2d/95、边框0.5px solid rgb(54,54,54)、圆角16px、内边距12px,内容宽316px。五组依次为比例 / 清晰度 / 视频时长 / 生成音频 / 生成数量,标签均为14px/20px rgb(145,145,145);比例按 5 列换行成Auto/16:9/4:3/1:1/3:4 + 9:16/21:9,单项56.8 × 62、间距8px,图标尺寸依次为12×9/16×9/12×9/12×12/9×12/9×16/16×7;清晰度480P/720P/1080P/4K单项73 × 32,音频开启/关闭单项154 × 32,数量1个/2个/4个单项100 × 32。选中态统一为rgba(255,255,255,0.1)、白色0.5px边框和rgb(247,247,247),未选中为透明背景、rgb(82,82,82)边框和rgb(145,145,145);时长滑杆根宽约244px、轨道236 × 4、白色滑块12 × 12,数值框48 × 20、min=4 max=15 step=1。实测依次切换1:1 -> 1080P -> 关闭音频 -> 2个,弹层均保持打开,摘要同步为1:1 · 1080P · 5s · 2个 ·;数字框填8时摘要仍为5s,按Enter后才变8s,随后已逐项恢复默认值并关闭弹层 - 本地视频参数弹层最终对齐: 原先本地弹层为
472 × 408、比例 7 项纯文字横排、标签12px、选中态白底黑字、无时长滑杆,数值框为80 × 36 min=1且输入时立即提交;现重做为341 × 445、12px内边距、五组8px纵向间距,并让弹层随模型按钮宽度动态左移/右移,始终与参数摘要左边对齐。Chrome 复测本地外框x=959 y=189 w=341 h=445、摘要x=959 y=634 w=204 h=32;比例、清晰度、音频、数量的每项尺寸、网格换行、图标尺寸、标签字号、边框、颜色和选中态均与竞品测量值一致。补齐4-15s滑杆和48 × 20数字框;实测同序点击1:1 -> 1080P -> 关闭 -> 2个后菜单保持打开、摘要同步,数字框填8前摘要保持5s、Enter后变8s,滑杆按Home实时变4s、ArrowRight变5s;最后逐项恢复16:9 / 720P / 开启 / 1个 / 5s - 竞品视频生成模式菜单复测: 无参考素材时点击参数栏
文生视频,打开外框x=709.5 y=395 w=197 h=229的 Mantine popover,左边与文生视频 x=709.5 y=624 w=106 h=32对齐、底边紧贴按钮顶部;外框背景约#2d2d2d/95、边框0.5px solid rgb(54,54,54)、圆角16px、模糊16px,内层196 × 228、padding=8px、gap=4px。标题视频生成模式高32px,顺序固定为文生视频 / 全能参考 / 图生视频 / 首尾帧 / 图片参考,每项180 × 32、图标16 × 16;当前项背景rgba(255,255,255,0.15)。无参考时仅文生视频可用,其余四项 disabled;点当前项关闭菜单,点禁用项菜单保持打开且模式不变 - 竞品视频模式素材联动复测: 点击节点尝试项
首帧生成视频后并非立即静态切换,稍后新增预设 - 首帧生成视频分组和一条首帧参考 -> 视频节点 4连线,节点总数从侧栏98 -> 100,提示词自动填入以当前图为首帧生成视频。,模式自动变全能参考,无 toast。已有 1 张参考时,文生视频disabled,而全能参考 / 图生视频 / 首尾帧 / 图片参考全部可用;切图生视频后菜单关闭,快捷动作变参考/标记/特效/运镜,隐藏角色库;切首尾帧后只保留参考/标记/角色库,缩略图左上标首帧;切图片参考或全能参考后恢复参考/标记/特效/角色库/运镜五项。各模式保留原提示词与16:9 · 720P · 5s · 1个,费用均回显135 - 本地视频生成模式菜单最终对齐: 原先本地点击模式按钮不会打开菜单,而是直接在
文生视频/全能参考间跳转;带参考素材时仍能切回竞品禁止的文生视频,也没有图生视频/首尾帧/图片参考入口。现新增竞品式197 × 229模式弹层;Chrome 有参考复测外框x=849 y=332 w=197 h=229、模式按钮x=849 y=561 w=106 h=32,5 项均为180 × 32、图标16 × 16、选中背景white/15,尺寸和相对锚定与竞品一致。无参考复测为文生视频enabled、其余四项 disabled;点击禁用项菜单不关闭。创建首帧参考后自动进入全能参考,文生视频disabled、其余四项 enabled;同序切换图生视频 -> 首尾帧 -> 图片参考 -> 全能参考,菜单关闭、按钮文本/图标和快捷动作均按竞品规则变化,首尾帧缩略图补齐首帧/尾帧角标,各模式费用均显示135 - 本地首帧快捷创建反馈最终对齐: 本地原有
首帧生成视频已能创建首帧图片资源、连线、填入以当前图为首帧生成视频。并切到全能参考,但会额外弹已按「首帧生成视频」创建关联节点;现只对首帧生成视频/首尾帧生成视频移除该本地独有 toast。Chrome 清空重建视频节点 1后复测首帧生成视频,参考节点和连线正常创建、模式自动变全能参考、提示词正确、toast 为空 - 竞品视频
参考画布选择复测: 点击快捷动作参考不打开上传/历史弹层,而是进入全画布选材态;顶部出现314 × 58工具栏,背景rgb(38,38,38)、边框rgb(54,54,54)、圆角16px、padding12px、gap16px,含32 × 32图标、从画布选择参考、返回节点 76 × 32、退出 50 × 32。返回节点只将 viewport 定位到目标节点且选择态继续;点击可用图片节点会新增图片源 -> 视频目标连线、工具栏不关闭,图片中央悬浮显示取消选择 72 × 28;再次点击会只断开该参考。退出关闭选择态但保留当前 viewport 和已选参考,全程无 toast - 竞品视频参考缩略图与移除复测: 连接 2 张图片后,参数浮层由无参考时
660 × 191扩为约660 × 254;快捷动作保持54/54/54/66/54 × 26,参考独占下一行,缩略图外框48 × 48、图片47 × 47、圆角12px、间距8px,左上以1/2编号,右上 hover 出现15 × 15删除按钮。删除任意一张只移除对应连线和缩略图,不删除源节点;删除最后一张后模式自动回到文生视频,首尾帧生成视频/首帧生成视频建议项恢复,提示词以当前图为首帧生成视频。保留 - 本地视频
参考画布选择最终对齐: 原先点击参考完全无响应;现补齐同款全画布选材状态、314 × 58顶部工具栏、返回节点/退出行为、图片节点点击增删source -> target连线和选中图片中央取消选择 72 × 28。Chrome 以真实坐标重建视频节点 1 -> 首帧后复测,画布根滚动保持0,工具栏为x=599 y=80 w=314 h=58;hover 首帧时取消按钮x=410 y=564.875 w=72 h=26.25、opacity1,点击后工具栏仍在、参考连线消失、模式回到文生视频、源节点和提示词均保留,退出后工具栏关闭,控制台 error 为 0 - 本地视频参考缩略图最终对齐: 原先参考图混在快捷动作行且只有
32 × 26,参数浮层高度固定,也没有移除入口;现移到独立换行区,缩略图改为48 × 48、图片47 × 47、圆角12px、间距8px,右上 hover 删除按钮为15 × 15,并按参考行数扩展浮层高度。Chrome 复测单参考浮层为660 × 254,五枚快捷动作宽度为54/54/54/66/54;缩略图删除和画布中央取消两条路径均只删除边,最后一条移除后按竞品规则回退模式并恢复建议项 - 视频参考状态机推断: 本步骤没有触发文件上传或生成请求,竞品行为可由画布图状态直接解释:选材等价于创建/删除
image source -> video target有向边,缩略图列表来自目标节点的入边;可用生成模式由图片入边数量派生,数量归零时强制回退text-to-video,但 prompt 独立保存。因此本地按同一图状态机实现,没有新增硬编码素材或伪造后端提示词 - 竞品视频
标记选择模式复测: 点击快捷动作标记不直接改写提示词,而是进入全画布元素选择模式;顶部工具栏为336 × 58、背景#262626、边框#363636、圆角16px,包含点击图片选择局部元素 / 返回节点 76 × 32 / 退出 50 × 32。非图片节点在此模式下不可点,点击图片局部后原位显示分析中...,首个真实结果约7-8s返回人物,第二个约20s返回人物面部;工具栏和选择模式在连续标记后均保持,无 toast - 竞品视频标记结果与层级复测: 每次结果同时落到源图片和目标提示词;源图显示
34px高徽章、指向点击点的竖线及 hover24 × 24删除按钮,目标提示词插入不可编辑.magic-chip,id 规则为源节点ID_序号。人物芯片带层级箭头,点击后出现120px宽菜单,可在人物 / 眼睛间切换并同步data-magic-index;人物面部无层级箭头。源徽章删除会联动删除对应芯片且不影响其他标记;将光标放到芯片后按Backspace也只删除该结构化标记。退出保留标记,返回节点保持选择态;本轮结束前已将竞品临时标记全部清理,提示词恢复为以当前图为首帧生成视频。 - 本地视频
标记最终对齐: 原先本地点击标记只会在 textarea 后拼接,添加人物与构图标记,产生。后多余逗号且没有选区语义;现改为同款全画布元素选择工具栏、图片局部点击、分析中状态、源图徽章/指示线/hover 删除、源徽章当前层级菜单、提示词不可编辑芯片、层级菜单、源端联动删除和 Backspace 删除。Chrome 使用真实图片实测返回汽车,层级为汽车 / 车头盖 / 前大灯 / 奔驰车标;切到车头盖后芯片和索引同步,删除后提示词精确恢复,退出无 toast。最终优化后的真实分析耗时约13.3s - 本地视频标记后端与配置: 复用现有
/api/pick-object和 Qwen3-VL 能力,新增video-canvas-mark模式及后台可编辑的element-mark功能配置,模型默认qwen3-vl-plus,提示词和启停状态均落在video_canvas_function_config,未写死在前端。视频标记模式由服务端拉取源图、用 Sharp 缩放到最长边500px并叠加点击十字,直接以内存 data URL 调用视觉模型,避免临时上传;原有通用物体选择路径保持不变 - 视频标记算法推断: 竞品返回的不是单一自由文本,而是由点击坐标约束的局部视觉识别结果,数据至少包含
sourceNodeId / sequence / clickX / clickY / labelOptions / selectedIndex;层级标签按“主体到局部”排序,提示词芯片只是结构化状态的编辑视图,生成时再把已选标签和对应参考图传给视频任务。本地据此保存结构化magicMarks,生成请求附带标记图片并在后端提示中加入当前选中标签,用户可见提示词保持干净 - 竞品添加视频合成 Beta 节点复测: 点击
添加节点 -> 视频合成 Beta后,节点数18 -> 19、边数保持10、viewport 保持matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast;新增并选中react-flow__node-video-clip,标题视频合成 11,世界坐标translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1,反推基础尺寸350 × 350;节点正文为空空如也,请连接视频节点后操作 - 本地添加视频合成 Beta 节点最终对齐: 原先底部菜单创建
视频合成会生成436 × 470节点,落点为x=618 y=421;现改为竞品同款350 × 350,按当前 viewport 中心左上角落点,无新增边、无 toast,正文为空空如也,请连接视频节点后操作。Chrome 复测空画布 100% 下新增视频合成 1,节点框x=756 y=403 w=350 h=350 - 竞品添加导演台 NEW 节点复测: 点击
添加节点 -> 导演台 NEW后,节点数19 -> 20、边数保持10、viewport 保持matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast;新增并选中react-flow__node-director-console-3d,标题导演台 12,世界坐标translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1,反推基础尺寸350 × 350;节点正文为在3D空间中搭建场景并进行多视角截图 / 打开导演台,按钮为 24px 高半透明小按钮 - 竞品导演台全屏复测: 点击
打开导演台后出现 fixed 全屏编辑器,外壳x=0 y=0 w=1512 h=805、z-index600、背景rgba(8,8,16,0.98);顶栏h=64 bg=rgb(33,33,33),导演视角/机位视角位于顶栏中部,帮助/关闭为右上 24px 按钮;左栏x=0 y=64 w=230 h=741,含场景 / 搜索场景对象 / 机位1 / 角色A;右栏x=1231 y=64 w=281 h=741,标题3D场景,含场景缩放 / 场景平移 XYZ / 场景旋转 XYZ / 全景背景 / 已连接全景图 / 请将图片节点连接到导演台左侧输入口 / 天空颜色 # / 全景球 / 水平旋转 / 球形半径 / 角色标签 / 网格吸附 / 地面 / 透明度 / 高度;主区右上有72 × 72小 canvas 和重置视角 x=1139 y=158 w=72 h=21,底部工具条含移动 (V) / 添加角色 / 全景图 / 添加机位 / 选择画幅比例 / 截图 / AI 识图导入 / 全屏 - 本地添加导演台 NEW 最终对齐: 原先本地创建导演台为
436 × 470大节点、按居中偏移落点,且打开后是旧版属性/摄像机截图侧栏;现菜单创建导演台 1为350 × 350,空画布 100% 复测节点框x=756 y=403 w=350 h=350,按钮x=893 y=560 w=76 h=24、半透明背景、无新增边/无 toast。打开后全屏外壳1512 × 805、顶栏64、左栏230 × 741、右栏281 × 741、右上小 canvas72 × 72、重置视角 x=1139 y=158 w=72 h=21,右侧文案和竞品3D场景参数结构一致 - 竞品导演台重置视角按钮复测: 在右侧停留
摄像机面板、选中机位1时点击主区右上重置视角 x=1139 y=158 w=72 h=21;按钮类为mt-1.5 w-full rounded-md bg-white/10 py-0.5 text-[11px] text-white/60 ... hover:bg-white/15 hover:text-white/85,点击后仅保留 hover 样式,不弹 toast、不改 URL、不切换右侧面板、不改变选中对象 - 本地导演台重置视角按钮最终对齐: 原先本地按钮为
top-24 text-[12px] text-white/72且点击会弹已重置导演视角。;现改为top-[94px] text-[11px] text-white/60 hover:text-white/85并移除 toast。Chrome 复测普通态按钮x=1139 y=158 w=72 h=21,点击后无 toast、URL 不变、右侧仍为摄像机;沉浸态复测按钮为x=1420 y=158 w=72 h=21 - 竞品导演台底栏全屏按钮复测: 在导演台编辑器内点击底部
全屏 x=892 y=740.5 w=36 h=36后,不进入浏览器原生 fullscreen,document.fullscreenElement=false、viewport 仍为1512 × 805;应用内进入沉浸态,左侧场景栏和右侧3D场景面板隐藏,顶栏仍为x=0 y=0 w=1512 h=64 bg=rgb(33,33,33),主区变为x=0 y=64 w=1512 h=741,重置视角移到x=1420 y=158 w=72 h=21;底部工具条仍为x=575.5 y=732 w=361 h=53,按钮文案/tooltip 变为退出全屏 x=892 y=740.5 w=36 h=36,全程无 toast - 本地导演台底栏全屏按钮最终对齐: 原先本地点击该按钮只弹
全屏待接入。toast,布局不变;现补齐应用内沉浸态切换。Chrome 复测点击全屏后document.fullscreenElement=false、无 toast,左/右侧栏隐藏,主区变为x=0 y=64 w=1512 h=741,重置视角 x=1420 y=158 w=72 h=21,底部按钮变为退出全屏;再次点击后恢复左栏x=0 y=64 w=230 h=741、主区x=230 y=64 w=1001 h=741、右栏x=1231 y=64 w=281 h=741,按钮恢复全屏 - 竞品导演台移动工具菜单复测: 点击底部
移动 (V) x=584 y=740.5 w=36 h=36后无 toast,打开变换模式菜单,主按钮变bg-white/[0.14] + ring-white/30active;菜单外壳x=575.5 y=614 w=132 h=118、背景rgba(31,31,31,0.72)、边框white/12,三项均为x=582.5 w=118 h=32,顺序和 y 坐标为移动 V y=621 / 旋转 R y=657 / 缩放 S y=693。点击旋转 R或缩放 S后菜单关闭,底栏第一个按钮同步变为旋转 (R)或缩放 (S);重开后对应项保留 active。菜单打开时按R/S/V会直接切换 active 且菜单保持打开,菜单关闭时按V只切内部模式、不主动打开菜单 - 本地导演台移动工具菜单最终对齐: 原先本地点击
移动 (V)会弹移动 (V)待接入。,没有可记忆模式;现补齐竞品式三项变换菜单、动态主按钮和快捷键。Chrome 复测本地菜单外壳x=575.5 y=614 w=132 h=118、三项坐标x=582.5 y=621/657/693 w=118 h=32,点击子项关闭且无 toast,重开后保留旋转/缩放/移动active;按S后底栏主按钮变为缩放 (S),点击可打开菜单并显示缩放 Sactive;菜单关闭后按V不打开菜单,重开显示移动 Vactive - 竞品导演台顶栏视角切换复测: 顶栏中部为
导演视角/机位视角分段控件,外壳x=675.7 y=11.5 w=174 h=40、背景rgb(20,20,20)、边框rgb(54,54,54)、圆角16px;两个按钮均为80 × 32,坐标导演视角 x=680.7 y=15.5、机位视角 x=764.7 y=15.5,active 为bg-white/10。在底部变换菜单打开时点击导演视角会关闭菜单、无 toast,并将主区角标切为导演视角,底栏 transform 主按钮仍保留之前选中的缩放 (S) - 本地导演台顶栏视角切换最终对齐: 原先本地顶栏只是透明
160 × 32分段,inactive 文案偏灰,且切换时不统一收起底部菜单;现改为竞品同款174 × 40黑色分段控件。Chrome 复测本地外壳x=675.7 y=11.5 w=174 h=40,按钮坐标x=680.7/764.7 y=15.5 w=80 h=32,切换机位视角后底部菜单关闭、无 toast,主区角标变为导演台 1 · 机位视角 · 16:9,transform 主按钮保持缩放 (S) - 竞品导演台帮助菜单复测: 右上
帮助 x=1432 y=19.5 w=24 h=24、关闭 x=1464 y=19.5 w=24 h=24;点击帮助不新开标签、不弹 toast,帮助按钮 active 为bg-white/10,下方菜单外壳x=1336 y=43.5 w=120 h=84,菜单体x=1336 y=49.5 w=120 h=78、背景rgba(31,31,31,0.94)、边框white/10、圆角12px,两项为快捷键 x=1341 y=54.5 w=110 h=32、使用教程 x=1341 y=90.5 w=110 h=32 - 竞品导演台快捷键与教程复测: 点击/hover
快捷键后菜单不关闭,条目 active,左侧快捷键面板外层x=925 y=54.5 w=416 h=234、面板x=925 y=54.5 w=408 h=234、背景#1f1f1f/95、圆角16px,内容为俯视视角 T / 重置视角 Q / 打组 G / 撤销 Z / 正面视角 Y / 网格吸附 X / 解组 ⇧ D / 删除。点击使用教程后不新开标签、不弹 toast,进入跟随教程层,顶部黄条x=669.1 y=0 w=173.7 h=34,按钮取消ESC x=766.1 y=9 w=63.7 h=16,并出现构图参考线高亮按钮;在关闭导演台后黄条仍残留在主画布,且本轮实测Escape和点击取消ESC都未将该残留条清掉 - 竞品导演台关闭按钮复测: 在教程跟随态点击右上
关闭后,导演台 fixed 编辑器关闭,右上帮助/关闭消失,回到主画布并显示节点按钮打开导演台 x=854.5 y=568.1 w=67.6 h=23.8;无 toast、不改 URL、不新增/删除主画布节点;教程黄条作为全局跟随态保留 - 本地导演台帮助/快捷键/教程/关闭最终对齐: 原先本地帮助只弹
导演台帮助文档待接入。toast;现补齐竞品式帮助菜单、快捷键二级面板、教程跟随层和关闭保留黄条行为。Chrome 复测帮助菜单为x=1336 y=49.5 w=120 h=78,两项x=1341 y=54.5/90.5 w=110 h=32;快捷键面板修正为x=925 y=54.5 w=408 h=234,内容与竞品一致;教程黄条为x=669 y=0 w=174 h=34、取消按钮x=766 y=9 w=64 h=16;教程态点击关闭后本地同样回主画布、隐藏帮助/关闭、保留黄条,Escape可清掉本地全局黄条 - 竞品导演台左侧场景树搜索复测: 搜索框
x=12 y=126 w=205 h=32、placeholder请输入搜索内容,上方场景 x=24 y=88;列表从x=12 y=178开始,每行205 × 32,对象顺序为道具1-7 / 机位1-4 / 角色A-C。输入角色后即时过滤为角色A/B/C,首行回到y=178,右侧仍停留在原面板;输入机位2后只剩机位2;输入不存在后列表无对象行,显示空态没有匹配的场景对象 x=12 y=178 w=205 h≈58.6,右侧仍停留在上一次选中对象 - 竞品导演台场景树点击联动复测: 在搜索词
角色下点击角色C x=12 y=242 w=205 h=32后,搜索词保留,右侧切到角色面板,属性tab active、姿势inactive,名称输入value=角色C x=1248 y=217 w=248 h=28;在搜索词机位2下点击唯一行后,右侧切到摄像机面板,属性active、摄像机截图inactive,名称输入value=机位2 x=1248 y=385 w=248 h=28,切换机位为 native selectx=1248 y=457 w=248 h=28,位置为0 / 2.2 / 10,注视坐标为0 / 1.2 / 0,FOV 为50.0 - 本地导演台左侧场景树搜索/点击最终对齐: 原先本地搜索框可输入但不会过滤,行文本包含
▣/♙字符,选中行直接用元素背景;现改为受控即时过滤、视觉图标不进入文本、无匹配空态和竞品式伪元素高亮。Chrome 复测本地搜索框x=12 y=126 w=205 h=32,行从y=178起,输入角色只剩角色A,输入不存在显示没有匹配的场景对象 x=12 y=178 w=205 h=58;过滤态点击角色A后搜索词保留且右侧切角色,名称输入value=角色A x=1248 y=217 w=248 h=28;过滤态点击机位1后右侧切摄像机,名称输入value=机位1 x=1248 y=384 w=248 h=28,位置/注视坐标/FOV 与竞品默认规则一致 - 竞品导演台选择画幅比例复测: 在导演台全屏内点击底部
选择画幅比例图标按钮,按钮本体x=760 y=740.5 w=36 h=36,上方出现比例菜单且不关闭工具条;菜单外壳x=638 y=550.5 w=280 h=182、背景rgba(31,31,31,0.72)、边框white/12、z-index1600,标题比例,网格x=651 y=583.5 w=254 h=136,4 列布局,选项顺序和坐标为Auto x=651、21:9 x=716.5、16:9 x=782、4:3 x=847.5、第二行1:1 x=651、3:4 x=716.5、9:16 x=782,单项57.5 × 64;点击9:16后菜单保持打开,9:16变白字和white/8背景,其余项保持white/55 - 本地导演台选择画幅比例最终对齐: 原先本地底部导演台工具条为文字按钮,整体
752.6 × 58,点击选择画幅比例会直接在角标中切换16:9/9:16且无菜单;现改为竞品式 8 个36 × 36图标按钮,工具条外壳x=575.5 y=732 w=361 h=53,比例按钮x=760 y=740.5 w=36 h=36。Chrome 复测点击比例按钮后菜单x=638 y=550.5 w=280 h=182、网格x=651 y=583.5 w=254 h=136、选项坐标/尺寸与竞品一致;点击9:16后菜单保持打开,9:16白字white/8,主区角标更新为导演台 1 · 导演视角 · 9:16 - 竞品导演台截图复测: 在画幅菜单打开态点击底部
截图 x=804 y=740.5 w=36 h=36后,比例菜单立即关闭,画布节点/连线数量保持不变;约 1.2s 内按钮和 toast 显示正在上传截图...,toast 位于顶部x=663.5 y=32 w=185.1 h=40.4,蓝色半透明背景。等待约 8s 后上传态消失,工具条按钮恢复截图,仍不向主画布新增节点/连线;导演台左侧场景树新增机位2,右侧从3D场景切为摄像机,显示属性 / 摄像机截图 / FOV 50° / 名称 / 切换机位 / 机位1 / 机位2 / 位置 / 注视目标 / 手动坐标 / 角色A / 注视坐标 / 视野角度 (FOV) / 相机截图 / 机位2-shot-01。右侧面板仍为x=1231 y=64 w=281 h=741,相机截图标题约x=1248 y=823,截图缩略图约80 × 80、起点约x=1248 y=858 - 本地导演台截图最终对齐: 原先本地
截图只弹截图待接入,不会改变导演台内部结构;现点击后关闭比例菜单,按钮进入正在上传截图...spinner/禁用态,节点/连线数量保持不变。Chrome 干净路径复测添加节点 -> 导演台 NEW -> 打开导演台 -> 打开画幅菜单 -> 截图: 上传中阶段ratioMenuOpen=false、nodes=0、edges=0、按钮aria/title=正在上传截图...;完成后左栏新增机位2,右栏x=1231 y=64 w=281 h=741切为摄像机,文案顺序与竞品一致,相机截图标题x=1248 y=823,截图卡片机位2-shot-01 x=1248 y=849 w=248 h=92,卡片内缩略图起点约y=857,工具条恢复截图 x=804 y=740.5 w=36 h=36 - 竞品导演台 AI 识图导入复测: 点击底部
AI 识图导入 x=848 y=740.5 w=36 h=36后,打开遮罩模态,外层bg-black/35 + backdrop blur,主体x=436 y=117 w=640 h=571、背景rgb(31,31,31)、圆角12px、边框white/10;标题AI 识图导入,tab 为本地上传 x=453 y=182、历史记录 x=529 y=182。默认上传区x=453 y=216 w=606 h=298,文案点击上传图片或拖拽本地图片至此上传 / 上传后画布将新建一个图片节点并自动替换当前图源;覆盖选项插入当前导演台 x=453 y=556 w=299 h=53默认选中,覆盖当前导演台 x=760 y=556 w=299 h=53;底部提示退出不会中断生成过程,全景图生成成功后,会自动加载到背景,按钮识图导入场景 x=957 y=642 w=102 h=32初始禁用 - 竞品导演台 AI 识图历史与完成态复测: 切到
历史记录后显示日期2026-07-09和 8 张图片历史,4 列两行,缩略图138 × 138,首行x=462/612/762/912 y=257,使用按钮x=512/662/812/962 y=312 w=38 h=28;点击第一张使用后不关闭弹层、不新增主画布节点/连线,上传区变为预览图x=454 y=217 w=604 h=296,文案更换图片,底部出现消耗6,按钮启用。点击识图导入场景后顶部额度20 -> 14,tab 禁用,按钮变识图中…,约 25s 后弹层自动关闭,主画布节点/连线仍为20/10,导演台内部左栏变为道具1-7 / 机位1 / 机位2 / 机位3 / 角色A / 角色B,右栏回到3D场景参数面板 - 本地导演台 AI 识图导入最终对齐: 原先本地
AI 识图导入只弹AI 识图导入待接入toast;现补齐竞品式640 × 571模态、上传/历史 tab、8 张历史图、使用后大预览、插入/覆盖选项、消耗6、识图中…pending 和完成导入。Chrome 干净路径复测添加节点 -> 导演台 NEW -> 打开导演台 -> AI 识图导入 -> 历史记录 -> 使用第一张 -> 识图导入场景: 预览x=454 y=217 w=604 h=296,按钮启用x=957 y=642 w=102 h=32;运行中按钮禁用并显示识图中…,tab 禁用,节点/边保持0/0;约 24s 后弹层关闭,左栏x=0 y=64 w=230 h=741显示道具1-7 / 机位1 / 机位2 / 机位3 / 角色A / 角色B,右栏x=1231 y=64 w=281 h=741回到3D场景,无主画布新增节点/连线 - 竞品导演台添加机位复测: 在 AI 识图导入后的导演台状态点击底部
添加机位 x=716 y=740.5 w=36 h=36,不会立即新增机位,而是在按钮上方打开选择机位视角预设菜单;菜单外壳x=614 y=415 w=240 h=318,背景rgba(31,31,31,0.72)、边框white/12、圆角12px,标题x=621 y=422 w=226 h=24,滚动区x=621 y=446 h=280。预设为 2 列110 × 72,顺序为当前视角 / 正面中景 / 正面特写 / 正面全景 / 侧面跟拍 / 侧面近景 / 背面中景 / 俯拍全景 / 45° 俯拍 / 低角度仰拍 / 低角度广角 / 过肩镜头 / 过肩镜头(右) / 鸟瞰 / 荷兰角 - 竞品导演台添加机位完成态复测: 点击
当前视角 x=621 y=446 w=110 h=72后菜单关闭,不新增主画布节点/连线;导演台左栏在机位3和角色A之间新增并选中机位4,行坐标x=12 y=498 w=205 h=32,角色行下移到角色A y=530 / 角色B y=562;右栏切到摄像机,名称输入和切换机位下拉均为机位4,下拉选项含机位1-4,位置为X 0 / Y 2.2 / Z 10,注视目标为手动坐标,注视坐标为X 0 / Y 1.2 / Z 0,FOV 为50.0 - 本地导演台添加机位最终对齐: 原先本地
添加机位只弹添加机位待接入。toast;现改为竞品式预设菜单,Chrome 复测菜单标题x=621 y=422 w=226 h=24、首屏按钮当前视角 x=621 y=446 w=110 h=72、正面中景 x=737 y=446 w=110 h=72,并补齐 15 个预设。选择当前视角后菜单关闭、主画布节点/边保持2/0,左栏从道具1-7 / 机位1-3 / 角色A/B变为道具1-7 / 机位1-4 / 角色A/B,机位4行x=12 y=498 w=197 h=32、文本x=52 y=508,右栏摄像机打开,名称输入value=机位4 x=1248 y=384 w=248 h=28,切换机位下拉value=机位4 x=1248 y=456 w=248 h=28,位置和注视坐标与竞品一致 - 竞品导演台切换机位下拉复测: 在右侧
摄像机面板中,下拉共有 2 个 select,首个为切换机位 x=1248 y=457 w=248 h=28;从机位2选择机位4后不弹专属 toast、不改 URL,名称输入同步为机位4 x=1248 y=385 w=248 h=28,下拉选中机位4,位置仍为0 / 2.2 / 10、注视目标仍为手动坐标、注视坐标0 / 1.2 / 0、FOV50.0;左侧机位4 x=12 y=498 w=205 h=32变选中,选中行 class 为after:top-1/2 after:h-6 after:-translate-y-1/2 after:rounded after:bg-white/8 - 本地导演台切换机位下拉最终对齐: 原先本地右侧下拉联动已能改名称/选中值,但左侧场景树选中态是整行
after:inset-0 bg-white/10 rounded-lg;现改为竞品式 24px 中间高亮条。Chrome 复测本地先清空场景搜索、添加机位2后,右侧切换机位 x=1248 y=456 w=248 h=28从机位2切回机位1再切到机位2,名称输入和下拉值同步、位置/注视/FOV 保持默认、无新增主画布节点/边、无切换 toast;左侧高亮在机位1/机位2间移动,active class 为after:top-1/2 after:h-6 after:-translate-y-1/2 after:rounded after:bg-white/8 hover:after:bg-white/8 - 竞品导演台 FOV 控件复测: 在右侧
摄像机面板中,预览框x=1248 y=185 w=240 h=135、左上标签FOV 50° x=1261 y=198 h=13;视野角度 (FOV)标题x=1248 y=735.5,隐藏 range 点击层x=1248 y=766 w=170 h=20 min=15 max=90 step=1 value=50,数值输入x=1426 y=762 w=70 h=28 value=50.0。输入64.0后 range value 同步64、数值框保持64.0、预览标签同步FOV 64°,不改 URL - 本地导演台 FOV 控件最终对齐: 原先本地摄像机预览框为
248 × 134、FOV 标签行高偏高,range 为原生x=1248 y=774 w=180 h=6 min=20 max=100,数值框x=1440 y=761 w=56 h=32;现改为竞品式240 × 135预览、leading-none text-white/55标签、自绘轨道 + 透明 range 点击层,FOV 范围限制为15-90。Chrome 复测本地range x=1248 y=766 w=170 h=20 min=15 max=90 step=1、数值框x=1426 y=762 w=70 h=28;输入64.0后 range value 为64,数值框为64.0,预览同步FOV 64° - 竞品导演台摄像机预览按钮复测: 右侧摄像机预览框右下按钮
x=1451 y=283 w=24 h=24,title 为切换到机位视角,class 为absolute bottom-3 right-3 flex size-6 ... rounded-lg bg-white/10 text-white/85 hover:bg-white/16。点击后不改 URL、不切右侧面板、不弹专属 toast,顶部机位视角 x=764.7 y=15.5 w=80 h=32变 active,导演视角变 inactive - 本地导演台摄像机预览按钮最终对齐: 原先本地按钮位于
x=1455 y=287、无 title、点击只保留 hover 样式且不切视角;现改为bottom-3 right-3、title切换到机位视角并接入setViewMode("camera")。Chrome 复测本地按钮x=1451 y=283 w=24 h=24,点击后顶部机位视角active、右侧仍为摄像机、URL 不变、无新增 toast,主区角标同步为导演台 1 · 机位视角 · 16:9 - 竞品导演台摄像机截图 tab 复测: 在右侧
摄像机面板点击摄像机截图 x=1306 y=128 w=89 h=28后,URL 不变,属性tab 变 inactivehover:bg-white/6 text-white/45 hover:text-white/75,摄像机截图变 activebg-white/10 text-neutral-50,属性表单消失且visibleInputs=0。内容区从x=1232 y=169 w=280 h=636开始,画廊外壳x=1232 y=169 w=280 h=563,分组机位2截图 x=1248 y=181 w=248 h=28,三列网格x=1248 y=213 w=248 h=102 grid-cols=80px 80px 80px gap=4,卡片机位2-截图01 x=1248 y=213 w=80 h=102,标题x=1248 y=297 w=80 h=18;底部 footerx=1232 y=732 w=280 h=73,按钮全部清空 x=1248 y=749 w=120 h=40、发送到画布 x=1376 y=749 w=120 h=40 - 本地导演台摄像机截图 tab 最终对齐: 原先本地
摄像机截图是静态按钮,点击后仍停留在属性表单、输入框仍为 10、无底部 footer;现新增摄像机检查器 tab 状态,点击后切到独立画廊页,属性表单消失且visibleInputs=0,tab 激活态、画廊外壳、分组标题、三列网格和 footer 坐标与竞品一致。Chrome 复测无截图时显示机位1截图+ footer;再用底部截图中心点x=822 y=759触发上传,按钮进入正在上传截图...禁用态,完成后生成机位2-shot-01,切入截图 tab 后显示机位2截图、卡片x=1248 y=213 w=80 h=102、标题机位2-截图01 x=1248 y=297 w=80 h=18;全部清空已接入清空本地截图列表,发送到画布的落节点/连线行为需下一轮单独实测竞品后再接入 - 竞品导演台截图发送到画布复测: 在右侧
摄像机截图tab 中点击发送到画布 x=1376 y=749 w=120 h=40后,导演台弹层不关闭、右侧仍停留截图页、URL 不变、按钮不进入 pending、无可见 toast;主画布底层节点数21 -> 22、边数10 -> 11。新增节点为react-flow__node-image,文本导演台 12 机位2-shot-01,屏幕框x=1107.5 y=406.8 w=260.1 h=462.2,反推世界尺寸350 × 622、世界坐标x=6662 y=-108;原导演台节点世界坐标为x=6192 y=-108,所以发送算法是以导演台为 anchor 右移470,并新增一条导演台 -> 截图图片节点的边,导演台节点保持 selected - 本地导演台截图发送到画布最终对齐: 原先本地
发送到画布是空按钮;现父画布向导演台弹层传入发送回调,按竞品规则为每个当前机位截图创建350 × 622图片资源节点,标题为${导演台标题} ${原始截图名},位置为director.x + 470 * index、director.y,并新增director -> snapshot image连线,同时保持导演台弹层打开且无 toast。Chrome 空画布复测添加节点 -> 导演台 NEW -> 打开导演台 -> 截图 -> 摄像机截图 -> 发送到画布: 发送后弹层仍开、右侧仍为截图页、边数0 -> 1、页面底层新增导演台 1 机位2-shot-01;节点 DOM 为x=1226 y=403 w=350 h=622,原导演台为x=756 y=403 w=350 h=350,刚好右移470 - 竞品导演台截图全部清空复测: 在右侧
摄像机截图tab 中首次点击全部清空 x=1248 y=749 w=120 h=40不会立刻删除,而是在按钮上方弹出确认浮层,浮层x=1248 y=640.7 w=120 h=100.3,文案确认清空所有截图?,按钮取消 x=1260 y=701 w=44 h=28、红色确认 x=1312 y=701 w=44 h=28;浮层打开时截图卡仍存在,发送到画布仍可用。点击确认后浮层关闭,截图卡消失,内容区显示居中空态暂无摄像机截图 x=1240 y=181 w=264 h=535;底部全部清空和发送到画布保留但 disabled,URL 不变,主画布已发送的导演台 12 机位2-shot-01节点和11条边不被删除 - 本地导演台截图全部清空最终对齐: 原先本地点击
全部清空会直接清空,清空后仍显示空分组标题机位2截图且两个 footer 按钮仍启用;现补齐竞品式确认浮层、空态和 disabled 规则。Chrome 复测本地摄像机截图空态显示暂无摄像机截图,两个按钮 disabled;重新用底部截图生成机位2-截图01后,点击全部清空出现同款确认浮层x=1248 y=642 w=120 h=99,取消/确认按钮均为44 × 28,确认前卡片保留;点击确认后显示暂无摄像机截图,两个按钮 disabled,页面底层已发送到画布的导演台 1 机位2-shot-01和1条边保留 - 竞品导演台添加角色复测: 在
道具1-7 / 机位1-4 / 角色A/B且右侧为摄像机的状态点击底部添加角色 x=628 y=740.5 w=36 h=36,不会立即新增角色,而是在按钮上方打开角色菜单;菜单外壳x=619.5 y=312 w=148 h=420、背景rgba(31,31,31,0.72)、边框white/12、圆角12px,按钮x=624.5 w=138 h=32,顺序和 y 坐标为本地上传 317 / 男性素体 362 / 女性素体 398 / 宽厚素体 434 / 健壮素体 470 / 纤细素体 506 / 少年素体 542 / 儿童素体 578 / 二头身 614 / 群众 (3x3) 650 / 几何模型 695,本地上传与群众 (3x3)后有分隔线,群众 (3x3)和几何模型带右箭头 - 竞品导演台添加角色完成态复测: 点击
男性素体后菜单关闭、不弹 toast、不新增主画布节点/连线;导演台左栏在角色B后新增并选中角色C,行坐标x=12 y=594 w=205 h=32、文本x=52 y=604;主场景中模型变为绿色,标签变角色C并显示变换轴;右栏标题切为角色,tab 为属性 / 姿势,属性面板字段为名称=角色C、位置0/0/0、旋转0/0/0、缩放1.03/1.03/1.03、统一缩放1.0、颜色#34C759。反推命名规则为按现有角色A/B/...取下一个大写字母 - 本地导演台添加角色最终对齐: 原先本地
添加角色只弹添加角色待接入。toast;现补齐竞品式角色菜单和新增角色流程。Chrome 复测完整路径导演台 NEW -> AI 识图导入 -> 添加机位 当前视角 -> 添加角色 -> 男性素体: 本地菜单外壳x=619.5 y=312 w=148 h=420、按钮x=624.5 w=138,各项 y 坐标317/362/398/434/470/506/542/578/614/650/695与竞品一致;选择男性素体后菜单关闭、无 toast、主画布节点/边保持1/0,左栏新增选中角色C x=12 y=594 w=205 h=32、文本x=52 y=604,右栏切为角色,名称输入value=角色C x=1248 y=217 w=248 h=28,位置/旋转均为0,缩放为1.03,统一缩放1.0,颜色#34C759 - 竞品导演台全景图菜单复测: 在导演台底部点击
全景图 x=672 y=740.5 w=36 h=36后不弹 toast、不新增主画布节点/连线,而是在按钮上方打开 3 项菜单;菜单外壳x=616 y=618.5 w=148 h=114、背景rgba(31,31,31,0.72)、圆角12px、z-index300,按钮均为x=621 w=138 h=32,顺序和 y 坐标为本地上传 623.5 / 历史记录 659.5 / AI生成 695.5 - 竞品导演台全景图历史记录与 AI生成复测: 点击全景图菜单
历史记录后菜单关闭,打开既有历史资产大弹窗而非选择图片,外壳x=75.6 y=80 w=1360.8 h=645、背景rgb(38,38,38)、圆角16px,包含历史资产 / 100% / 图片历史(8) / 视频历史(10) / 音频历史(6) / 时间降序 / 批量操作 / 2026-07-09 / 查看 / 使用 / 下载;点击AI生成后打开640 × 448小弹窗,外壳x=436 y=178.5 w=640 h=448、遮罩black/35,标题AI生成,上传区x=453 y=241.5 w=606 h=320,底部文案退出不会中断生成,可在历史记录中查看结果,消耗0,生成按钮x=1031 y=579.5 w=28 h=28 - 本地导演台全景图最终对齐: 原先本地
全景图只弹全景图待接入。toast;现改为竞品式三项菜单,Chrome 复测菜单外壳x=616 y=618.5 w=148 h=114,按钮本地上传/历史记录/AI生成坐标x=621 y=623.5/659.5/695.5 w=138 h=32,无旧 toast。点击历史记录后本地打开历史资产面板x=75.6 y=80 w=1360.8 h=645,含三类历史 tab、排序、批量操作和查看/使用/下载;点击AI生成后本地弹窗x=436 y=178.5 w=640 h=448,上传区x=453 y=241.5 w=606 h=320,footerx=437 y=577.5 w=638 h=48,生成按钮x=1031 y=579.5 w=28 h=28 - 竞品添加音频节点复测: 先点空白清掉视频节点选中态,再点击
添加节点 -> 音频;节点数12 -> 13、边数保持10、viewport 保持translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中react-flow__node-audio,世界坐标仍是translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1,说明基础音频节点也是350 × 350;节点正文为音频节点 5 / 尝试: 音频生视频 - 竞品音频节点语音面板复测: 选中音频节点后,节点下方出现
660 × 189浮层,外壳x=558.3 y=678.8;可见内容依次为<#> 停顿、() 语气词、输入区 placeholder输入要合成的文本、底部参数Minimax-speech-2.8-hd / 少女音色 / 0/50000 / 1;面板内还包含折叠/裁切的高级项文本基础调节 / 一键重置 / 语速 / 声调 / 音量 / 音色效果调节 / 音高 / 强度 / 音色调节 / 音效 / 无 / 空旷回音 / 礼堂广播 / 电话失真 / 电音 - 本地添加音频节点最终对齐: 原先底部菜单创建音频会生成
436 × 470节点,并按普通模块偏移落到屏幕右上x=1243 y=-89;现基础音频节点改为350 × 350,和文本/图片/视频一样按当前 viewport 中心左上角落点,无 toast、无新增边,音频卡片高度压到 350 内。Chrome 复测空画布 100% 下新增音频节点 1屏幕框x=756 y=403 w=350 h=350,正文为尝试: 音频生视频,选中后出现660 × 189语音合成浮层,文本为<#> 停顿 () 语气词 输入要合成的文本 Minimax-speech-2.8-hd 少女音色 0/50000 1 基础调节 一键重置 语速 声调 音量 音色效果调节 音高 强度 音色调节 音效 无 空旷回音 礼堂广播 电话失真 电音 - 竞品上传入口权限复测: 在当前竞品画布打开
添加节点 -> 上传后 file choosermultiple=true;使用无敏感测试图/tmp/codex-video-canvas-upload.png调用setFiles仍返回Not allowed / fileChooser.setFiles failed,节点数保持93、边数保持106、图片节点保持33、选中文本节点 2不变、添加菜单不关闭且无 toast。按 Chrome 插件文档,继续真实上传落节点前需在chrome://extensions -> Codex -> Details开启Allow access to file URLs - 竞品音频语音面板深测: 在添加菜单中再次点击
音频,节点数93 -> 94、音频节点数6 -> 7、边数保持106,新增并选中音频节点 13;因竞品当前 viewport 为10%,节点屏幕框为x=756.3 y=402.8 w=35 h=35,语音面板外壳x=443.8 y=439.4 w=660 h=189。面板右上有28 × 28展开按钮,底栏为Minimax-speech-2.8-hd x=452.3 w=200.7、少女音色 x=756.9 w=110、翻译图标x=874.9 w=32、设置图标x=918.9 w=32、0/50000、闪电费用1、白色圆形生成按钮x=1063.3 w=32。点击设置图标后面板高度变565.2,设置按钮 active,展开基础调节 / 一键重置 / 语速 / 声调 / 音量三条滑杆和音色效果调节 / 音高 / 强度 / 音色调节 / 音效;点击右上展开后打开black/50遮罩和居中800 × 600modalx=356 y=102.5,modal 保留同一套参数控件 - 竞品音频模型菜单深测: 在音频展开 modal 的设置态点击
Minimax-speech-2.8-hd,打开局部模型下拉x=364.5 y=317.8 w=369 h=341,背景约#333/95、z-index700;选项顺序为Seed Audio 1.0(多模态音频生成,支持人声、音效、音乐一体化创作)、Minimax-speech-2.8-hd(当前选中,文字转语音,多元的情绪渲染)、Minimax-speech-2.8-turbo(文字转语音,快速生成自然的音频效果)、Eleven V3(文字转语音,提供高质量、可定制的语音)、Eleven Music V3(智能音乐生成,高质量音乐生成)、Mureka V8(智能音乐生成,兼具多元风格) - 竞品音色选择弹窗深测: 点击底栏
少女音色后打开高层音色选择modal,外壳x=356 y=94.7 w=800 h=615.6,覆盖在音频 modal 上;顶部为标题和关闭按钮,tab 为音色库 / 我的音色 / 收藏音色,右侧包含克隆新音色、搜索框 placeholder搜索音色库和筛选。列表行高约64px,前几项为青涩青年音色 / 精英青年音色 / 霸道青年音色 / 青年大学生音色 / 少女音色 / 御姐音色 / 成熟女性音色 / 甜美女性音色,副信息为中文(普通话)与性别,少女音色显示已选,其它显示选择,行尾有收藏星标和...;分页 footer 为1 2 3 4 5 ... 17 › 20条/页 跳至 页 共327条 - 本地音频语音面板二次对齐: 原先本地只在
660 × 189浮层中显示模型/音色/计数,右上没有展开按钮,底栏缺少翻译/设置/闪电/生成图标,高级参数只是h-0 overflow-hidden隐藏文本;现补齐竞品式右上展开、底栏图标和设置展开。Chrome 复测本地空画布添加节点 -> 音频后节点350 × 350落于x=756 y=403,100% 视口下浮层按节点底部出现在x=601 y=765 w=660 h=189;点击右上展开打开居中800 × 600modalx=356 y=102.5,点击设置图标后 modal 顶部编辑区压为222px,底部显示基础调节/一键重置/语速/声调/音量/音色效果调节/音高/强度/音色调节/音效/无/空旷回音/礼堂广播/电话失真/电音,坐标和层级与竞品展开态一致 - 本地音频模型/音色菜单最终对齐: 原先本地没有模型下拉和音色库弹窗;现模型按钮补齐同款 6 项菜单、说明文案、当前选中态和
369 × 342外壳,音色按钮补齐800 × 616的音色选择modal、三 tab、克隆/搜索/筛选、音色列表、已选态和分页 footer。Chrome 复测本地展开态中点击模型按钮可见Seed Audio 1.0 / Minimax-speech-2.8-hd / Minimax-speech-2.8-turbo / Eleven V3 / Eleven Music V3 / Mureka V8,点击少女音色后弹窗外壳x=356 y=94.5 w=800 h=616,内容包含音色库 / 我的音色 / 收藏音色 / 克隆新音色 / 搜索音色库 / 筛选 / 青涩青年音色 / 少女音色 / 已选 / 20条/页 / 共 327 条 - 竞品添加脚本菜单复测: 点击
添加节点 -> 脚本主行不会落节点,节点数保持13、边数保持10、无 toast;主行保持高亮并展开右侧二级菜单,子菜单外壳x=720.5 y=551.5 w=204 h=85,内部x=728.5 y=551.5 w=196 h=85,两行分别是脚本 NEW x=737 y=560 w=179 h=32、脚本(旧版) Beta x=737 y=596 w=179 h=32 - 竞品添加脚本 NEW 节点复测: 点击二级菜单
脚本 NEW后,节点数13 -> 14、边数保持10、viewport 保持translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中react-flow__node-script-v2,世界坐标仍是translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1,说明现代脚本节点也是350 × 350;节点标题为脚本生成器,正文为尝试: 剧本生成分镜脚本 角色生成分镜脚本 自己编写分镜脚本 - 本地添加脚本 NEW 节点最终对齐: 原先点击脚本主行会直接创建旧版
脚本 1,尺寸438 × 470,落点x=1093 y=421,按钮为剧本生成分镜脚本 / 视频参考生成分镜脚本 / 角色生成分镜脚本;现脚本主行只展开同款二级菜单,不新增节点、不弹 toast;点击脚本 NEW后新增350 × 350的脚本生成器,按 viewport 中心左上角落点,无新增边、无 toast,正文改为尝试: 剧本生成分镜脚本 角色生成分镜脚本 自己编写分镜脚本。Chrome 复测空画布 100% 下节点框x=756 y=403 w=350 h=350 - 竞品添加脚本(旧版)节点复测: 在已新增
脚本 NEW后继续点击二级菜单脚本(旧版) Beta,节点数14 -> 15、边数保持10、viewport 保持translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中react-flow__node-script,世界坐标同样是translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1,说明旧版脚本节点也是350 × 350;标题同为脚本生成器,正文为尝试: 剧本生成分镜脚本 视频参考生成分镜脚本 角色生成分镜脚本 - 本地添加脚本(旧版)节点最终对齐: 原先点击旧版入口会生成
438 × 470的脚本 1,落点x=1093 y=421,且按钮组被 NEW 节点逻辑误渲染为剧本生成分镜脚本 / 角色生成分镜脚本 / 自己编写分镜脚本;现旧版入口生成350 × 350的脚本生成器,按 viewport 中心左上角落点,无新增边、无 toast,正文为尝试: 剧本生成分镜脚本 视频参考生成分镜脚本 角色生成分镜脚本。Chrome 复测空画布 100% 下节点框x=756 y=403 w=350 h=350 - 竞品添加资源-从生成历史选择复测: 点击
添加节点 -> 从生成历史选择后不落节点、不弹 toast,节点数保持15、边数保持10,打开选择图片模态框,外壳x=75.6 y=80 w=1360.8 h=645;一级 tab 为LibTV / Lib生成器 / WebUI / ComfyUI / AI应用,右侧计数已选 0/10 张;二级 tab 为图片 / 视频 / 音频;图片卡为 6 列,首卡选中后左上出现蓝色勾,右下出现删除/预览图标,计数变1/10,点击确定后模态框关闭、节点数15 -> 16、边数保持10、viewport 不变、无 toast;新增react-flow__node-image,标题图片节点 8,世界坐标translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=260.1 - 本地添加资源-从生成历史选择最终对齐: 原先该入口打开
历史资产管理面板,显示图片历史/视频历史/音频历史和查看/使用/下载,单项使用会弹已应用到画布toast;现添加入口改为竞品同款选择图片多选模态框,外壳x=75.6 y=80 w=1360.8 h=645,一级/二级 tab、已选 0/10 张、6 列卡片、选中蓝勾、右下图标、底部分页和确定行为对齐。Chrome 复测空画布选第一张后计数1/10,点击确定静默生成350 × 350的图片节点 1,节点框x=756 y=403 w=350 h=350,无新增边、无 toast - 竞品添加资源-历史选择视频 tab 复测: 在同一模态点击
视频后标题变选择视频,计数仍为已选 0/10 张;视频卡共 10 张,6 列布局,首行x=100.6/320.7/540.9/761/981.1/1201.3 y=242 w=211.1 h=276,次行前 4 张y=527;首卡选中后计数已选 1/10 张,点击确定后模态关闭,节点数16 -> 17、边数保持10、viewport 不变、无 toast、无选中态;新增react-flow__node-video,标题视频节点 9,世界坐标translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=462.2 h=260.1,反推资源视频节点622 × 350 - 本地添加资源-历史选择视频 tab 最终对齐: 原先视频 tab 只有 1 张默认视频且计数写作
已选 0/10 个;现默认历史视频补齐为 10 张,计数统一为张,布局为首行 6 张、次行 4 张。Chrome 复测本地空画布为选择视频 / 已选 0/10 张,卡片坐标x=99.6/319.7/539.9/760/980.1/1200.3 y=240、次行y=524;首卡确认后静默生成622 × 350的视频节点 1,节点框x=756 y=403 w=622 h=350,无新增边、无 toast - 竞品添加资源-历史选择音频 tab 复测: 在同一模态点击
音频后标题变选择音频,计数仍为已选 0/10 张;音频卡共 6 张,均为灰色底居中音符图标,无标题文字,首行坐标x=100.6/320.7/540.9/761/981.1/1201.3 y=242 w=211.1 h=276;首卡选中后计数已选 1/10 张,点击确定后模态关闭,节点数17 -> 18、边数保持10、viewport 不变、无 toast、无选中态;新增react-flow__node-audio,标题音频节点 10,世界坐标translate(6192px,-108px),屏幕框约x=758.2 y=406.8 w=260.1 h=110,反推历史音频资源节点约350 × 148 - 本地添加资源-历史选择音频 tab 最终对齐: 原先本地无默认音频历史素材,无法按竞品路径落音频资源节点;现默认音频历史补齐为 6 张灰色音符卡,计数统一为
张。Chrome 复测本地空画布为选择音频 / 已选 0/10 张,卡片坐标x=99.6/319.7/539.9/760/980.1/1200.3 y=240 w=212.1 h=276;首卡确认后静默生成350 × 148的音频节点 1,节点框x=756 y=403 w=350 h=148,无新增边、无 toast、无选中态
当前差距
- 工具箱小面板、模板 hover 和
使用落点主流程已像素级对齐;剩余差距是模板封面仍复用本地演示素材,缺少竞品真实模板市场封面、收藏/最近使用和后端模板库统计 - 角色库主流程、筛选菜单、最近使用空态和应用 4 节点落点已对齐;剩余差距是本地仍使用 demo 角色素材,缺少竞品同量级真实角色资产库、真实最近使用记录和后端资产元数据
- 素材库入口、风格库/特效库大浮层、搜索回车刷新、tab 空态、风格卡落节点和特效卡直接关闭行为已按本轮竞品实测对齐;剩余差距是本地仍使用演示缩略图和静态 mock 市场数据,缺少竞品真实素材市场封面、收藏状态、最近使用记录、搜索后端和风格/特效素材元数据
- 历史记录主交互、单项查看全屏预览、列表单项下载水印规则、批量选择态、批量下载 pending 态和批量使用已具备,但数据源仍是当前画布图片/视频/音频节点聚合;竞品历史记录来自账号生成资产,后续需接入真实生成资产表、跨画布历史、下载文件命名、批量下载打包完成态和批量删除后端接口
- 生成失败态: 本轮竞品当前项目和历史资产中没有真实失败任务样本,不能确认竞品 failed 节点是否使用
移除、重试或其他操作;本地已验证接口失败时的 failed 节点、toast 和移除行为,后续拿到竞品真实失败样本后再做像素级对齐 - 竞品已覆盖但本地仍需继续细测: 资源上传入口和 file chooser 行为已确认,但真实上传落节点被 Chrome 扩展
Allow access to file URLs权限阻塞,需开启后继续;人声分离 -> 仅保留人声/背景音已对齐菜单层级、处理中状态、toast、双节点落点、节点顺序和连线;智能擦除已对齐成本、落节点、连线、pending 文案、取消确认和本地完成态;框选擦除已完成浏览器端到端前端复测并对齐选区、历史、费用、生成 pending/完成态和参数写入逻辑;真实volcano-subtitle-eraser后端任务仍需接入;裁剪已对齐前端裁剪态、进度态和落节点结果,但真实 FFmpeg/云存储上传服务仍需接入;高清已对齐节点式创建和本地生成态,但真实后端高清服务仍需接入;本轮未发现竞品选中线重连手柄,暂不将重连作为已确认竞品能力 - 故事脚本数量、字段、节点内表格、选中工具栏、全屏三步工作流、资产准备页、单镜
查看提示词弹窗、批量分镜和批量生视频前端任务编排已按竞品当前项目对齐;剩余差距是真实模型生成质量、真实资产生成/覆盖逻辑、资产图片后端落库、真实 Seedance 视频任务提交/轮询/扣费和视频结果持久化