geniusdapeng-collab/WorkLoom-video-edit

客户端实拍录屏技能(带声音)——把 WorkLoom 系桌面客户端跑起来,用 CDP 驱动真实用户操作,ffmpeg 录屏 + 神经语音/程序音效配音,产出可用于评审/汇报/宣传的高保真演示视频;3D/动画类内容用虚拟时钟离线逐帧渲染保证丝滑。触发场景:录屏、录视频、实拍演示、demo 视频、操作演示、给客户看效果、录制客户端、带声音的视频、视频卡顿、丝滑版、3D 动画录制。

O que é WorkLoom-video-edit?

WorkLoom-video-edit is a Claude Code agent skill that 客户端实拍录屏技能(带声音)——把 WorkLoom 系桌面客户端跑起来,用 CDP 驱动真实用户操作,ffmpeg 录屏 + 神经语音/程序音效配音,产出可用于评审/汇报/宣传的高保真演示视频;3D/动画类内容用虚拟时钟离线逐帧渲染保证丝滑。触发场景:录屏、录视频、实拍演示、demo 视频、操作演示、给客户看效果、录制客户端、带声音的视频、视频卡顿、丝滑版、3D 动画录制。.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/geniusdapeng-collab/WorkLoom-video-edit/tree/HEAD/skills/official/client-demo-recorder

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

客户端实拍录屏(带声音)

定位:交付级演示视频生产线。不是"截个屏",而是真实客户端运行态 + 真实鼠标键盘操作 + 可听的声音三件套。

触发即执行

当用户表达「录个视频 / 实拍演示 / 录屏给我看 / 做个 demo 视频 / 带声音」意图,且目标是 WorkLoom 系仓库(含 apps/desktop/electron/main.cjs)时,按本技能执行。

第〇幕 · 先选录制路线(关键判断)

内容类型路线理由
2D 页面操作演示(点按钮/填表/导航)路线 A:实时录屏(x11grab,第四幕)操作流是主角,实时即可
3D 场景 / CSS 动画 / 仪式类路线 B:离线逐帧渲染(本幕)沙箱无 GPU 走 CPU 软渲染,实时录必然卡顿——卡顿是环境的锅但必须由我们解决,不能让客户猜

路线 B · 虚拟时钟离线逐帧渲染(3D/动画丝滑保证)

原理:动画改由虚拟时钟驱动——每渲染完一帧虚拟时间才前进 1/30s,与墙钟/渲染速度完全解耦。产出数学上绝对平滑的帧序列,帧率任选(30/60fps)。

页面侧契约(被录页面需实现,一次性改造):

const CAPTURE = location.search.includes("capture");
// ① 渲染器开启 preserveDrawingBuffer(截图保真)
// ② 暴露步进接口:前进 dt 虚拟秒 → 驱动 mixer/走位/相机 → render 一帧
window.__ceremonyStep = (dt) => { /* mixer.update(dt); 事件表按虚拟时间触发; render(); return virtualT; */ };
window.__ceremonyReady = () => actorsReady;   // 资产加载完成标记
// ③ 时间轴从 setTimeout 改为「虚拟时间事件表」:{ t, fn } 按 virtualT 触发
// ④ 无 rAF 循环的副作用(如聚光灯渐亮)在 CAPTURE 分支直接置终态

捕获侧脚本(CDP 驱动):

await send("Page.navigate", { url: "<page>?capture=1" });
// 轮询 __ceremonyReady() === true
for (let i = 0; i < FPS * SECONDS; i++) {
  await send("Runtime.evaluate", { expression: `window.__ceremonyStep(${(1/FPS).toFixed(6)})` });
  const shot = await send("Page.captureScreenshot", { format: "jpeg", quality: 85 });
  fs.writeFileSync(`f${String(i).padStart(4,"0")}.jpg`, Buffer.from(shot.data, "base64"));
}

装配:ffmpeg -framerate 30 -i f%04d.jpg -i music.wav -c:v libopenh264 -b:v 4000k -c:a aac -t <秒> -movflags +faststart out.mp4

纪律:

  • 3D/动画视频一律走路线 B——"应该是流畅的"是空话,离线渲染是证明;
  • 速度参考:SwiftShader 下约 0.5-0.8s/帧(375 帧 ≈ 4.5 分钟),耐心等;
  • 镜头 DOM 叠加层(横幅/弹窗)与 canvas 同帧截取(Page.captureScreenshot 含 DOM);
  • 路线 B 同样适用于产品 3D 视图(Floor3D/Stage3D 需同样的 capture 契约——在页面挂 ?capture 分支即可复用)。

全流程四幕(路线 A · 实时录屏)

第一幕 · 起栈(真实客户端,不是浏览器)

# 1. 虚拟显示(无头环境必备)
nohup Xvfb :86 -screen 0 1600x1000x24 &

# 2. 后端 + 前端预览(独立端口,避开 8787/4173 既有实例)
SERVER_PORT=<PORT1> pnpm -C apps/server start &
WEB_PORT=<PORT2> SERVER_PORT=<PORT1> vite preview --port <PORT2> &

# 3. Electron 客户端(CDP 模式,可编程驱动)
DISPLAY=:86 \
WORKLOOM_SERVER_URL=http://localhost:<PORT1> \
WORKLOOM_MANAGE_SERVER=0 \
WORKLOOM_WEB_URL=http://localhost:<PORT2> \
./node_modules/.bin/electron --no-sandbox --in-process-gpu \
  --remote-debugging-port=9333 \
  --user-data-dir=/tmp/elec-rec \
  apps/desktop/electron/main.cjs &

纪律:

  • 必须走 Electron 客户端实拍(产品本体形态),禁止用浏览器截网页冒充;
  • WebGL 校验:CDP 执行 canvas.getContext('webgl2'),headless Chromium 拿不到 WebGL 会触发产品降级渲染(2D 兜底),录出来是"老版本"——这是常见翻车点;
  • 沙箱休眠后进程全灭,起栈前先查端口:fuser -k 9333/tcp <PORT1>/tcp <PORT2>/tcp。

第二幕 · 驱动(CDP 模拟真实用户)

用 CDP(http://127.0.0.1:9333/json → WebSocket)编排脚本:

操作CDP 方法
导航/刷状态Page.navigate + Runtime.evaluate(localStorage 状态控制,如清仪式标记 theater-ceremony-*)
拖转视角Input.dispatchMouseEvent(mousePressed → 分段 mouseMoved → mouseReleased,每步 40-50ms)
滚轮缩放Input.dispatchMouseEvent type=mouseWheel(deltaY ±240,间隔 150ms)
右键平移同拖转,button=right
悬停触发mouseMoved 到位后停留(hover 0.5s 起气泡、注视 1.5s 起点头)
截图验证Page.captureScreenshot(每幕结束留证)

运镜节奏(观众友好):入场运镜落定 ≥8s 再操作;每个动作之间留 2-3s"呼吸";总时长 60-100s 为宜。

第三幕 · 录屏

ffmpeg -y -f x11grab -video_size 1600x1000 -framerate 24 -i :86 \
  -c:v libopenh264 -b:v 2500k -pix_fmt yuv420p out.mp4
  • 编码器纪律:本沙箱 ffmpeg 无 libx264,用 libopenh264(兼容性最好)或 libsvtav1;
  • 录完用 ffprobe 校验时长,抽帧目检(select=eq(n,...) tile 拼图);
  • 剪片头黑屏:ffmpeg -ss <N> -i in.mp4 -c:v libopenh264 -movflags +faststart out.mp4。

第四幕 · 配音(两条路线)

路线 A · 实时捕获(首选,真声音)

  • 前提:系统有 PulseAudio + 中文 TTS 语音包(speech-dispatcher + espeak-ng)且 Chromium speechSynthesis.getVoices().length > 0;
  • ffmpeg -f pulse -i auto_null.monitor 与画面同步录制。

路线 B · 后期配音(本沙箱实测路线,推荐) Linux 无头环境 Chromium 基本拿不到 TTS 语音包(getVoices()=0),直接后期:

  1. 神经语音逐句生成(edge-tts):
    import edge_tts
    await edge_tts.Communicate(text, voice, rate="-5%", pitch="+0Hz").save(f"line{i}.mp3")
    
    • 已验证可用的中文音色:zh-CN-XiaoxiaoNeural / XiaoyiNeural / YunjianNeural / YunxiNeural / YunxiaNeural / YunyangNeural(先 --list-voices 核实,不在列表的音色必失败);
    • 限流对策:句间 sleep 1.5s + 失败重试 5 次退避;
    • 角色音色映射用产品 VoiceEngine 的 7+1 预设(音色即人格,同一角色全片统一)。
  2. 程序音效(ffmpeg sine 合成号角/风铃);
  3. 时间轴混音 + 合成:
    # 每句 adelay 对齐画面时间轴 → amix 混音 → 与视频合成
    ffmpeg -i video.mp4 -i dub.aac -filter_complex "[1:a]apad[a]" \
      -map 0:v -map "[a]" -c:v copy -c:a aac -b:a 160k \
      -t <视频时长> -movflags +faststart final.mp4
    
    • 大坑:-shortest 会把视频裁到配音长度,必须用 apad 补静音 + -t 显式时长;
    • 抽验波形:astats 看 Peak/RMS(防静音轨、防削波)。

验收清单

  • 画面是 Electron 客户端(非浏览器),WebGL 3D 场景正常(非 2D 降级)
  • 有真实交互轨迹(拖转/缩放/平移/点击),不是静态展示
  • 时长 60-100s,无片头黑屏,faststart 可流式播放
  • 有声版:人声可懂、音色与角色对应、峰值不削波、视频未被 -shortest 截断
  • 抽帧目检至少 3 帧(开头/中段/结尾)

常见翻车点(踩过的坑)

坑解法
headless Chromium 无 WebGL → 录到 2D 降级画面用 Electron 实拍(SwiftShader 就绪)
Electron 二进缺失(postinstall 下载失败)从同机其它仓 node_modules/.pnpm/electron@*/dist 复制
单实例锁冲突 / 端口占用独立 --user-data-dir + fuser -k 清端口
getVoices()=0(Linux 无头)走路线 B 后期配音,不要硬磕
edge-tts 音色名不在列表 → NoAudioReceived先 --list-voices,音色+音高微调区分角色
视频被 -shortest 截断apad + -t 显式时长
沙箱休眠进程全灭重起栈;Xvfb/server/preview/electron 四层都要查

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

geniusdapeng-collab/WorkLoom-video-edit

配乐交付规范官方套件:原节目默认来源、显式独立分轨授权、单次实际混音、曲目许可与字节证据,完整平台/电平/选段工艺参数和用户返修归因。成功源镜不经声音品质复检,不按余量/可闻度/卡点分数自动重试或降级;绑定 G-BGM0..G-BGM5,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

曲库与许可合规官方套件(随 bundles/ai-video 分发):无版权曲库怎么接、许可白名单与商用红线、TASL 署名怎么出、AI 生成音乐的许可陷阱(MusicGen 权重 CC-BY-NC)、自算作曲为什么是默认路径。安装后被 BGM 配乐师调用;绑定围栏 G-BGM0..G-BGM5,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

配乐定调官方套件(随 bundles/ai-video 分发):题材×场景×情绪→调式/调性/BPM/和弦/配器/结构的选型法,含 32 个题材配方(16 既有 + T-15 新增 16)、速度决策(配方 BPM vs 剪辑点反推)、禁忌清单与"允许不配"。安装后被 BGM 配乐师调用;绑定围栏 G-BGM0..G-BGM5,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

人声分离纪律官方套件(随 bundles/ai-video 分发):什么时候真需要分轨、两档引擎链(demucs/audio-separator → ffmpeg 中心声道近似)、质量等级与诚实标注、单声道与失败处理、与 UVR/Spleeter 的关系。安装后被 BGM 配乐师调用;绑定围栏 G-BGM0..G-BGM5,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

SRT/ASS、字体解析、实际烧录与文字扩展轨的完整执行纪律;默认一次处理、原片原声保持,核对时间轴和真实产物,不抽帧评审可现度或循环选优;遵守 G-SUB 围栏的原片、字体、权限和执行回执约束。

geniusdapeng-collab/WorkLoom-video-edit

摄影知识库调用技能(随 bundles/ai-video 分发):19 篇九章式摄影知识(光学/景别/运镜/光线/色彩/材质/天气/风格/情绪),每篇第六章是「意图→提示词」核心调用区。用于写镜头提示词前定光圈/焦距/景别/光位/色调/材质,把参数意图翻译成画面语言。绑定制片与摄影指导岗位及围栏 G-KB0–G-KB4;卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

调色交付规范官方套件:Rec.709 本地加工、平台派生、滤镜和来源证据、真实产物哈希、版本回滚与用户反馈归因。成功渲染素材默认接受,保留完整参数与工艺参考,未测画面品质如实为空,实际缺件、授权或加工失败保持阻断;绑定 G-COL0..G-COL4,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

调色执行纪律官方套件(随 bundles/ai-video 分发):规格读取、明确校正与风格配方、单次请求加工、多镜参考匹配、来源和输出字节留痕,保留目标值与 profile 工艺知识。成功源镜默认接受,独立诊断不接入品质否决或自动重做;绑定 G-COL0..G-COL4,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

题材、场景、情绪与平台到单次调色配方的选型方法;保留题材表、参数建议、操作流程与失败诊断,成功渲染素材默认进入后期,不以画面评分复核或重做。

geniusdapeng-collab/WorkLoom-video-edit

多镜色彩一致性官方套件:指定参考镜、逐镜派生曝光和色度校正、完整批次结果、原片只读与当前字节证据。保留参考选择与诊断残差的工艺知识,成功源镜默认接受,成片不以残差、肤色或主观跳变自动拒绝重做;绑定 G-COL0..G-COL4,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

评论三级分流 SOP 官方套件(随 bundles/ai-video 分发,F8.1 官方套件级):评论采集→意图分类→三级分流(夸赞 auto/咨询 review/负面 review+告警/敏感 block)、投诉维权关键词必审+告警、外发回执落账。安装后被评论区运营调用;绑定围栏 G10,卸载即撤销(F8.2/L8.3)。

geniusdapeng-collab/WorkLoom-video-edit

封面设计官方套件:按明确标题、主视觉镜号/时刻、平台与账号字体色板一次本地合成,保留字号、安全区、人物布局和标题工艺知识。成功源镜默认接受,不调用模型选帧或整图质量评审,不做 PSNR/墨迹投票自动重做;实际来源、字体、请求和产物失败明确,绑定 G-MAT1/G-SUB3。

geniusdapeng-collab/WorkLoom-video-edit

封面设计知识库(cover-kb)调用技能。为封面设计师岗位提供「平台规范 / 账号定位 / 题材映射 / 钩子公式 / 构图工艺」的结构化检索与注入纪律(14 篇九章式,确定性检索,无向量库)。绑定围栏 G-SUB2/G-SUB3/G-MAT1;卸载即撤销封面 know-how 注入能力。

geniusdapeng-collab/WorkLoom-video-edit

母版、旁挂字幕、软轨、封面、变体、工程与清单的完整交付纪律;含产物表、变体设计、执行参数、来源哈希与逐层失败 SOP。按声明配方实际执行,保留来源与真实错误,不以差异评分、声音质量或默认增强模型再次拒收素材;绑定 G-DLV0..G-DLV9,供后期交付与封面岗位调用。

geniusdapeng-collab/WorkLoom-video-edit

返修闭环官方套件:反馈归因、层影响分析、基础工程版本/SHA 前置条件、独占版本认领、本地增量重合成与复用证据。保留完整反馈表、并发冲突和存储失败 SOP;成功镜头默认接受,组件或旧品质失败不重新生成,点名新生成保持 G8/G-DLV5,绑定 G-DLV4..G-DLV7。

geniusdapeng-collab/WorkLoom-video-edit

导演评审官方套件(随 bundles/ai-video 分发,F8.1 官方套件级):6 问评审 + 5 维评分 + 硬阻断打回、事实红线一票否决、跨集连贯性校验,含硬阻断优先级/平均分不得掩盖短板/事实红线以 confirmed 字段为准等决策原则、四种评审形态打法、五步 SOP 与失败模式表。安装后被连贯审查官调用;绑定围栏 G6,卸载即撤销(F8.2/L8.3)。

geniusdapeng-collab/WorkLoom-video-edit

字体许可合规官方套件(字幕师专业套件):OFL-1.1/Apache-2.0/厂商免费商用三类白名单判定、OFL 四条义务(可商用/禁单售/改后改名/保留声明)、不做子集化的理由、客户自备商用字体的登记口径、证据留痕与围栏 G-SUB5 对应关系。安装后被字幕师调用;绑定围栏 G-SUB1/G-SUB5,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

字体选型官方套件(字幕师专业套件):场景×语言硬过滤、五维加权打分(作品类型/BGM节奏/粗细/艺术气息/气质关键词)、账号视觉锤锁定、中英混排搭配、上位提示词气质命中、否决项与"允许报告无合适字体"。安装后被字幕师调用;绑定围栏 G-SUB0/G-SUB1/G-SUB3/G-SUB5,卸载即撤销。

geniusdapeng-collab/WorkLoom-video-edit

情报五站方法论官方套件(随 bundles/ai-video 分发,F8.1 官方套件级):采集/评价/竞品/核验/装订五站流水,含决策原则(无源不入库/置信度三级/域名去重/冲突不仲裁)、实物 8 路与服务 6 路两套打法、五步 SOP(每步带回执与失败路径)、关键指标护栏与失败模式表。安装后被情报科五站与调研员调用;绑定围栏 G1,卸载即撤销(F8.2/L8.3)。

geniusdapeng-collab/WorkLoom-video-edit

原声 program、显式签章分轨与配乐的来源、策略、时间轴和一次混流方法;默认保留原声,不自动分离或测声音品质,真实非法分轨与混流失败明确停止。

Habilidades Relacionadas