skills/jimeng-digital-human/SKILL.md
即梦AI数字人视频生成全流程自动化。通过浏览器自动化操控 jimeng.jianying.com 数字人界面,完成角色上传、音色选择、台词填入、视频生成和下载。触发场景:用户需要生成数字人视频、即梦数字人、AI数字人口播视频、数字人视频制作。依赖 jimeng-login skill 处理登录。
npx skillsauth add aaaaqwq/agi-super-team jimeng-digital-humanInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
通过浏览器自动化(profile=openclaw)操控即梦数字人界面,完成从角色上传到视频生成、下载的全流程闭环。支持多镜头批量生成,输出按序命名的视频文件供 video-merge-send skill 合并。
browser start profile=openclawjimeng-login skill)browser navigate url=https://jimeng.jianying.com/ai-tool/home?type=digitalHuman&workspace=0
等待 2 秒页面加载,截图确认:
jimeng-login skill检查是否有默认角色配置:
读取 TOOLS.md 中的 jimeng-digital-human 配置段,检查是否已有默认角色图片路径。
有默认配置时: 询问用户"是否使用默认角色(田总形象)?"
无默认配置 / 用户发送新图片时:
角色 文本的 clickable 元素)// 找到角色上传的 file input
() => {
const inputs = document.querySelectorAll('input.file-input-OfqonL');
const imageInputs = [];
inputs.forEach((input, i) => {
if (input.accept && input.accept.includes('image')) {
const parent = input.closest('[class*="popover-open"]');
imageInputs.push({ index: i, hasPopoverParent: !!parent });
}
});
return imageInputs;
}
mkdir -p /tmp/openclaw/uploads
cp <用户图片路径> /tmp/openclaw/uploads/avatar.png
browser upload selector=".lv-popover-open input.file-input-OfqonL" paths=["/tmp/openclaw/uploads/avatar.png"]
TOOLS.md 的 jimeng-digital-human 配置段检查是否有默认音色配置: 读取 TOOLS.md 中的默认音色设置。
有默认配置时: 询问用户"是否使用默认音色(豪放男子)?"
选择音色操作:
开朗男大 或当前音色名的 clickable 元素)button "音色名 多情感"若音色不在当前页面: 用筛选条件(性别/年龄/语言/声音特点)或滚动查找。
音色参考列表见: references/voice-list.md
编辑区域包含两个部分:
操作步骤:
textbox,包含"角色说"和"动作描述"占位文本)注意: 编辑区是 contenteditable div(ProseMirror),不是标准 input。用 click + type 方式输入:
browser act kind=click ref=<textbox_ref>
browser act kind=type text="<台词内容>\n<动作描述>"
/ai-tool/generate?workspace=0),等待视频渲染完成(通常 1-3 分钟)视频生成完成后,通过以下流程下载到本地:
mkdir -p /tmp/openclaw/jimeng-videos
在点击下载按钮之前,先注入 JS 拦截器捕获视频直链:
() => {
window.__downloadUrls = [];
// 拦截 fetch 请求中的视频 URL
const origFetch = window.fetch;
window.fetch = async function(...args) {
const url = typeof args[0] === 'string' ? args[0] : args[0]?.url;
if (url && (url.includes('.mp4') || url.includes('video') || url.includes('dreamnia'))) {
window.__downloadUrls.push(url);
}
return origFetch.apply(this, args);
};
// 拦截动态创建的 <a> 标签(即梦下载机制)
const observer = new MutationObserver((mutations) => {
mutations.forEach(m => {
m.addedNodes.forEach(n => {
if (n.tagName === 'A' && n.href && n.download !== undefined) {
window.__downloadUrls.push(n.href);
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
return 'download interceptor ready';
}
在生成历史列表中,每个视频条目旁有一个预览/展开按钮(通常是缩略图左下的 button 元素)。
角色说 + 台词文本动作描述 + 描述文本9s、12s)button 元素(展开按钮)示例:
# 在 snapshot 中找到类似结构:
# generic → 角色说: "xxx台词" → 动作描述: "xxx" → "12s"
# 下方有 button [ref=eXXXX]
browser act kind=click ref=<button_ref>
详情 dialog 打开后:
button "下载" 元素(位于 dialog 右上角区域)browser act kind=click ref=<下载按钮_ref>
注意: 点击下载后会弹出会员推广弹窗("无品牌水印直出"),这是正常现象。按 Escape 关闭即可,不影响下载。非会员下载的视频会带即梦水印。
点击下载按钮后,等待 1-2 秒,然后读取拦截器捕获的 URL:
() => {
return {
downloadUrls: window.__downloadUrls || [],
count: (window.__downloadUrls || []).length
};
}
返回结果中通常有两个 URL:
https://v3-dreamnia.jimeng.com/ 开头)→ ✅ 用这个blob:https://jimeng.jianying.com/ 开头)→ ❌ 无法用 curl 下载用 curl 下载 CDN 直链:
curl -L -o "/tmp/openclaw/jimeng-videos/<序号>_<标识>.mp4" "<CDN直链URL>"
命名规范: <两位序号>_<镜头标识>.mp4
01_hook.mp4、02_pain.mp4、03_solution.mp4、04_cta.mp4ls -la /tmp/openclaw/jimeng-videos/
ffprobe -v quiet -print_format json -show_format /tmp/openclaw/jimeng-videos/<文件名>.mp4
确认文件大小合理(通常 5-15MB)且格式正确。
browser act kind=press key=Escape
或点击 dialog 的关闭按钮(×),回到生成列表页。
对于多镜头分镜脚本,有两种工作模式:
按分镜脚本顺序,对每个镜头重复 Step 4→5→6:
for 每个镜头 in 分镜脚本:
1. 导航到数字人页面(角色和音色已保持选中)
2. 清空编辑区,填入当前镜头的台词和动作描述
3. 点击生成,等待完成
4. 注入下载拦截器
5. 打开详情 → 点击下载 → curl 保存
6. 关闭详情,继续下一个镜头
每个镜头生成前,清空编辑区的方法:
browser act kind=click ref=<textbox_ref>
browser act kind=press key=Meta+a
browser act kind=press key=Backspace
然后输入新内容。
所有镜头视频下载完成后:
ls -la /tmp/openclaw/jimeng-videos/
# 确认文件数量与分镜数一致,文件大小合理
通知用户: 告知所有视频已下载到 /tmp/openclaw/jimeng-videos/
衔接 video-merge-send skill:
python3 skills/video-merge-send/scripts/merge_videos.py \
-d /tmp/openclaw/jimeng-videos/ \
-o /tmp/openclaw/jimeng-videos/final_merged.mp4 \
--transition fade \
--transition-duration 0.5
在 TOOLS.md 中维护默认配置:
### 即梦数字人 (jimeng-digital-human)
- **默认角色图片**: memory/tianzong-avatar.png
- **默认音色**: 豪放男子
- **生成模式**: 快速模式
- **下载目录**: /tmp/openclaw/jimeng-videos
首次使用后询问用户是否保存为默认,后续使用时优先提供默认选项。
| 要素 | 说明 |
|------|------|
| 浏览器 profile | openclaw |
| 数字人页面 URL | https://jimeng.jianying.com/ai-tool/home?type=digitalHuman&workspace=0 |
| 生成历史页面 URL | https://jimeng.jianying.com/ai-tool/generate?workspace=0 |
| 图片上传方式 | browser upload + /tmp/openclaw/uploads/ 中转目录 |
| 图片 input 选择器 | .lv-popover-open input.file-input-OfqonL 或 input[accept*="image"] |
| 音色面板触发 | 点击角色名标签(如"开朗男大") |
| 文本编辑器类型 | ProseMirror contenteditable(非标准 input) |
| 生成按钮状态 | 有内容后从 disabled 变为 enabled |
| 下载机制 | 点击下载按钮 → 触发 fetch 获取 CDN 直链 → 创建 <a> 标签下载 |
| 视频 CDN 域名 | v3-dreamnia.jimeng.com |
| 视频格式 | H.264 MP4,960x960,60fps |
| 下载存储目录 | /tmp/openclaw/jimeng-videos/ |
| 登录依赖 | jimeng-login skill |
即梦视频下载时会产生两种 URL:
| URL 类型 | 格式 | 可否 curl |
|---------|------|----------|
| CDN 直链 | https://v3-dreamnia.jimeng.com/... | ✅ 可以直接 curl -L -o 下载 |
| Blob URL | blob:https://jimeng.jianying.com/... | ❌ 仅浏览器内有效 |
始终使用 CDN 直链下载。 CDN URL 包含签名参数,有效期较短(通常几小时),需及时下载。
1. jimeng-storyboard skill → 生成分镜脚本
2. jimeng-digital-human skill → 逐镜头生成 + 下载视频
├── Step 1: 导航到数字人页面
├── Step 2: 选择/上传角色
├── Step 3: 选择音色
├── Step 4-6: 循环(填台词 → 生成 → 下载)× N个镜头
└── Step 8: 确认文件完整
3. video-merge-send skill → 合并视频 + 发送飞书
| 问题 | 解决方案 |
|------|---------|
| 角色上传后仍显示"+ 角色" | popover 可能已关闭,重新点击"角色"触发上传 |
| aria-ref 点击超时 | 即梦 SPA 重渲染频繁,重新 snapshot 获取新 ref,或用 JS evaluate |
| 音色列表找不到目标 | 滚动列表或用筛选条件缩小范围 |
| 生成按钮 disabled | 确保已填入角色说内容(动作描述可选) |
| 视频生成超时 | 通常 1-3 分钟,超过 5 分钟截图检查是否有错误提示 |
| 下载按钮弹出会员推广 | 正常现象,按 Escape 关闭,视频仍会下载(带水印) |
| 拦截器没捕获到 URL | 确保在点击下载按钮之前注入拦截器 JS |
| CDN URL 下载失败 | URL 可能已过期,重新点击下载按钮获取新 URL |
| blob URL 无法下载 | 这是浏览器内存地址,无法用 curl,使用 CDN 直链 |
| 多镜头生成顺序混乱 | 严格按分镜序号命名文件(01_xx.mp4, 02_xx.mp4...) |
| 下载目录已有旧文件 | 每次新任务前清空 /tmp/openclaw/jimeng-videos/ |
development
Technology-agnostic prompt generator that creates customizable AI prompts for scanning codebases and identifying high-quality code exemplars. Supports multiple programming languages (.NET, Java, JavaScript, TypeScript, React, Angular, Python) with configurable analysis depth, categorization methods, and documentation formats to establish coding standards and maintain consistency across development teams.
tools
Expert-level browser automation, debugging, and performance analysis using Chrome DevTools MCP. Use for interacting with web pages, capturing screenshots, analyzing network traffic, and profiling performance.
data-ai
Prompt for creating detailed feature implementation plans, following Epoch monorepo structure.
tools
Interactive prompt refinement workflow: interrogates scope, deliverables, constraints; copies final markdown to clipboard; never writes code. Requires the Joyride extension.