Skill: jobzhao15/huo15-heygen (version 1.0.0)

--- name: heygen / 数字人视频生成 description: 使用 HeyGen 生成数字人视频。触发词：数字人、HeyGen、生成视频、avatar视频、数字人制作。 --- # HeyGen 数字人视频生成技能 ## ⚠️ 凭证安全说明 HeyGen API 凭证存储在 `~/.openclaw/agents/main/heygen_creds.json`，仅本地可访问，不会同步到云端。 --- ## 🚀 快速开始 ```python # 读取凭证（自动从本地配置读取） 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'] [REDACTED_SECRET]'api_key'] ``` --- ## 📡 HeyGen API 调用模板 ### 基础设置 ```python 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'] [REDACTED_SECRET]'api_key'] BASE_URL = 'https://api.heygen.com/v1' HEADERS = { 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' } ``` ### 创建视频（Text to Video） ```python 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}') ``` ### 查询视频状态 ```python 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 ``` ### 下载视频 ```python 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}') ``` --- ## 📋 常用功能 ### 1. 生成短问候视频 ```python def generate_greeting(name, message): """生成个性化问候视频""" script = f'你好{name}，{message}' result = create_avatar_video(script) return result['data']['video_id'] ``` ### 2. 批量生成视频（需要先生成再轮询） ```python 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 ``` ### 3. 等待视频完成（轮询） ```python 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` 如需更新凭证，直接编辑该文件： ```json { "avatar_id": "你的avatar_id", "api_key": "你的api_key" } ``` --- ## ⚠️ 注意事项 1. **凭证安全**：API Key 仅存储在本地，不会上传到云端 2. **视频生成时间**：通常需要30秒到几分钟 3. **API限制**：注意 HeyGen API 的调用频率限制 4. **费用**：HeyGen API 调用按量计费


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)