Install
openclaw skills install @adsturbo/adsturbo-digital-human让虚拟人把文案念出来:可选平台数字人形象、用照片+声音克隆专属形象,或直接给一张人像加一段音频做对口型。含 TTS 配音与形象管理。
openclaw skills install @adsturbo/adsturbo-digital-humanHave a virtual human avatar read a script aloud, producing a talking-head video.
Use it when the user says "digital human", "voiceover", "have XX say this", "make a digital human from my photo", "lip sync", "dub", or "clone a voice".
To generate footage out of thin air (with no one speaking) use adsturbo-video-generation; to swap out the person in an existing video use adsturbo-video-transform.
ADSTURBO_API_KEY (see below for how to get one)ADSTURBO_BASE_URL, default https://adsturbo.ai/klian/novartapiexport ADSTURBO_API_KEY=<your key>Every plan can call the API with an API key, and usage is billed in credits; if you run out, top up or upgrade at https://adsturbo.ai/pricing. 1080p+ video and 4K images need a subscription (credit packs alone don't count), and creating a custom digital human needs a Pro plan.
If the user has no key yet: when ADSTURBO_API_KEY is not set, or a script reports a missing key or a 401, do not keep retrying. First finish everything that doesn't need the API (clarify the brief, draft the script or prompt, settle aspect ratio, duration, model and other parameters, prepare the exact command), then tell the user they need an AdsTurbo API key and give them the three steps above; once they have it, run the prepared command. Without a key the scripts print "error": "api_key_required" and the steps on stdout. Keep the key in the environment variable and never echo it back in a reply.
This is the single fork point for picking a command:
Who does the user want speaking?
├─ Doesn't matter, pick a good-looking one → choose from the actors list → perform
├─ Use my/our own person, reused repeatedly → persona-create to register → perform
└─ Just this one image, one-off → lipsync
# Platform avatar
python3 scripts/digital_human.py actors --gender female --limit 10
python3 scripts/digital_human.py perform --actor-id act_123 --script "script content"
# Dedicated avatar (photo + optional voice cloning)
python3 scripts/digital_human.py persona-create --photo-url https://.../me.jpg --voice-audio-url https://.../voice.mp3
python3 scripts/digital_human.py perform --actor-id <returned actor_id> --script "script content"
# One-off lip sync
python3 scripts/digital_human.py lipsync --avatar-url https://.../face.jpg --audio-url https://.../voice.mp3
Full parameters in references/digital_human.md.
None of the --photo-url, --avatar-url, --audio-url parameters accept local file paths. When the user provides a local file, upload it first:
python3 scripts/upload.py image ./portrait.jpg
python3 scripts/upload.py audio ./voice.mp3
See references/upload.md for details.
perform / persona-create / lipsync are all asynchronous. The scripts poll automatically after submission until a result is ready, so under normal conditions you can just wait.
query --workspace-id <id> to keep waiting — do not resubmit. The task is still running, and resubmitting will double-charge.--no-waitpython3 scripts/work.py batch --workspace-ids ws_a ws_bSee references/work.md for details.
perform 2–5 minutes, persona-create 1–3 minutes, lipsync 2–5 minutesperform will fail before persona-create completes — check persona-status first in that caseThis skill only handles "making a digital human speak". The following are out of scope — don't promise them to the user:
| User wants | Use instead |
|---|---|
| Text-to-video / image-to-video | adsturbo-video-generation |
| Replicate an existing ad | adsturbo-ad-clone |
| Watermark removal / 4K / subtitles | adsturbo-video-enhance |
| Character swap / video translation / motion control | adsturbo-video-transform |
| Image generation / e-commerce images | adsturbo-image |
让一个虚拟人形象把文案念出来,产出口播视频。
用户说「数字人」「口播」「让 XX 说这段话」「用我的照片做个数字人」「对口型」「配音」「克隆声音」时用它。
要凭空生成画面(不涉及人说话)用 adsturbo-video-generation;要把已有视频里的人换掉用 adsturbo-video-transform。
ADSTURBO_API_KEY 里,获取方法见下ADSTURBO_BASE_URL,默认 https://adsturbo.ai/klian/novartapiexport ADSTURBO_API_KEY=<你的 Key>任何套餐都能用 API Key 调用,按用量扣积分;积分不够时到 https://adsturbo.ai/pricing 充值或升级。1080p 及以上视频、4K 图片需要订阅(只买积分包不算),创建自定义数字人需要 Pro 套餐。
用户还没有 Key 时:ADSTURBO_API_KEY 没设置、脚本报 Key 缺失或 401 时,不要反复重试。先把不需要调接口就能做的部分做完(理清需求,写好文案或提示词,定好画幅、时长、模型等参数,拼好要执行的完整命令),再告诉用户需要 AdsTurbo API Key,把上面三步发给他;拿到 Key 后直接执行准备好的命令。脚本缺 Key 时会在 stdout 输出 "error": "api_key_required" 和获取步骤。Key 只放在环境变量里,回复里不要回显。
这是选命令的唯一分岔点:
用户想让谁来说?
├─ 无所谓,挑个好看的 → actors 列表里选 → perform
├─ 用我/我们的人,要反复用 → persona-create 建号 → perform
└─ 就这张图,一次性 → lipsync
# 平台形象
python3 scripts/digital_human.py actors --gender female --limit 10
python3 scripts/digital_human.py perform --actor-id act_123 --script "文案内容"
# 专属形象(照片 + 可选声音克隆)
python3 scripts/digital_human.py persona-create --photo-url https://.../me.jpg --voice-audio-url https://.../voice.mp3
python3 scripts/digital_human.py perform --actor-id <返回的 actor_id> --script "文案内容"
# 一次性对口型
python3 scripts/digital_human.py lipsync --avatar-url https://.../face.jpg --audio-url https://.../voice.mp3
完整参数见 references/digital_human.md。
所有 --photo-url --avatar-url --audio-url 参数不接受本地文件路径。用户给本地文件时先上传:
python3 scripts/upload.py image ./portrait.jpg
python3 scripts/upload.py audio ./voice.mp3
perform / persona-create / lipsync 都是异步的,脚本默认提交后自动轮询到出结果,正常情况直接等即可。
query --workspace-id <id> 接着等,不要重新提交——任务还在跑,重交会重复扣费--no-waitpython3 scripts/work.py batch --workspace-ids ws_a ws_bperform 2–5 分钟,persona-create 1–3 分钟,lipsync 2–5 分钟persona-create 完成前 perform 会失败,这时先查 persona-status这个 skill 只做「让虚拟人说话」。以下不在范围内,不要向用户承诺:
| 用户想要 | 该用 |
|---|---|
| 文生视频 / 图生视频 | adsturbo-video-generation |
| 照着一条广告复刻 | adsturbo-ad-clone |
| 去水印 / 4K / 字幕 | adsturbo-video-enhance |
| 换角色 / 视频翻译 / 动作控制 | adsturbo-video-transform |
| 生成图片 / 电商图 | adsturbo-image |