HeyGen API 凭证存储在 ~/.openclaw/agents/main/heygen_creds.json,仅本地可访问,不会同步到云端。
# 读取凭证(自动从本地配置读取)
import json
import os
creds_file = os.path.expanduser('~/.openclaw/agents/main/heygen_creds.json')
with open(creds_file, 'r') as f:
creds = json.load(f)
avatar_id = creds['avatar_id']
api_key = creds['api_key']
import requests
import json
import os
# 读取凭证
creds_file = os.path.expanduser('~/.openclaw/agents/main/heygen_creds.json')
with open(creds_file, 'r') as f:
creds = json.load(f)
AVATAR_ID = creds['avatar_id']
API_KEY = creds['api_key']
BASE_URL = 'https://api.heygen.com/v1'
HEADERS = {
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
def create_avatar_video(script, avatar_id=AVATAR_ID, voice_id=None):
"""
创建数字人视频
参数:
script: str - 视频脚本内容
avatar_id: str - Avatar ID(可选,默认使用配置的avatar)
voice_id: str - 声音ID(可选)
返回:
dict - 包含 video_id 用于查询进度
"""
url = f'{BASE_URL}/video/generate'
payload = {
'video': {
'character': {
'type': 'avatar',
'avatar_id': avatar_id,
'avatar_style': 'normal'
},
'script': {
'type': 'text',
'input': script
}
}
}
if voice_id:
payload['video']['script']['voice_id'] = voice_id
response = requests.post(url, headers=HEADERS, json=payload)
return response.json()
# 使用示例
result = create_avatar_video('你好,这是数字人测试视频')
video_id = result['data']['video_id']
print(f'视频生成中,ID: {video_id}')
def get_video_status(video_id):
"""查询视频生成状态"""
url = f'{BASE_URL}/video/status.get'
params = {'video_id': video_id}
response = requests.get(url, headers=HEADERS, params=params)
return response.json()
# 使用示例
status = get_video_status(video_id)
print(f"状态: {status['data']['status']}") # pending, processing, completed, failed
def get_video_url(video_id):
"""获取视频下载链接"""
status = get_video_status(video_id)
if status['data']['status'] == 'completed':
return status['data']['video_url']
return None
# 使用示例
video_url = get_video_url(video_id)
if video_url:
print(f'下载链接: {video_url}')
def generate_greeting(name, message):
"""生成个性化问候视频"""
script = f'你好{name},{message}'
result = create_avatar_video(script)
return result['data']['video_id']
def batch_generate(video_list):
"""批量生成视频,返回video_id列表"""
video_ids = []
for script in video_list:
result = create_avatar_video(script)
video_ids.append(result['data']['video_id'])
return video_ids
import time
def wait_for_video(video_id, timeout=300, interval=5):
"""等待视频生成完成"""
start = time.time()
while time.time() - start < timeout:
status = get_video_status(video_id)
state = status['data']['status']
if state == 'completed':
return status['data']['video_url']
elif state == 'failed':
return None
time.sleep(interval)
return None
| 场景 | 方法 |
|---|---|
| ------ | ------ |
| 生成营销短视频 | create_avatar_video() + wait_for_video() |
| 个性化问候 | generate_greeting(name, message) |
| 产品介绍视频 | 传入产品描述脚本 |
| 批量生成 | 先生成所有视频,再统一轮询状态 |
凭证文件位置:~/.openclaw/agents/main/heygen_creds.json
如需更新凭证,直接编辑该文件:
{
"avatar_id": "你的avatar_id",
"api_key": "你的api_key"
}
共 1 个版本