# @memberjunction/ai-heygen
MemberJunction AI provider for HeyGen's AI video generation platform. This package implements the `BaseVideoGenerator` interface to create avatar-based videos with customizable characters, voices, and backgrounds.
## Architecture
```mermaid
graph TD
A["HeyGenVideoGenerator
(Provider)"] -->|extends| B["BaseVideoGenerator
(@memberjunction/ai)"]
A -->|uses| C["Axios HTTP Client"]
A -->|calls| D["HeyGen Video API
(api.heygen.com/v2)"]
D -->|generates| E["Avatar Videos"]
A -->|queries| F["HeyGen Avatars API"]
F -->|returns| G["Available Avatars"]
B -->|registered via| H["@RegisterClass"]
style A fill:#7c5295,stroke:#563a6b,color:#fff
style B fill:#2d6a9f,stroke:#1a4971,color:#fff
style C fill:#2d8659,stroke:#1a5c3a,color:#fff
style D fill:#2d8659,stroke:#1a5c3a,color:#fff
style E fill:#b8762f,stroke:#8a5722,color:#fff
style F fill:#2d8659,stroke:#1a5c3a,color:#fff
style G fill:#b8762f,stroke:#8a5722,color:#fff
style H fill:#b8762f,stroke:#8a5722,color:#fff
```
## Features
- **Avatar Video Generation**: Create videos with AI avatars synchronized to audio
- **Avatar Management**: Browse available avatars with preview images and videos
- **Customizable Layout**: Control avatar scale, position (offset X/Y), and style
- **Custom Backgrounds**: Use image assets as video backgrounds
- **Audio Integration**: Sync avatar lip movements with audio assets
- **Resolution Control**: Set custom output width and height
## Installation
```bash
npm install @memberjunction/ai-heygen
```
## Usage
### Create Avatar Video
```typescript
import { HeyGenVideoGenerator } from '@memberjunction/ai-heygen';
const generator = new HeyGenVideoGenerator('your-heygen-api-key');
const result = await generator.CreateAvatarVideo({
avatarId: 'avatar-id',
avatarStyle: 'normal',
scale: 1.0,
offsetX: 0,
offsetY: 0,
audioAssetId: 'audio-asset-id',
imageAssetId: 'background-asset-id',
outputWidth: 1920,
outputHeight: 1080
});
if (result.success) {
console.log('Video ID:', result.videoId);
}
```
### List Avatars
```typescript
const avatars = await generator.GetAvatars();
for (const avatar of avatars) {
console.log(`${avatar.name} (${avatar.gender}): ${avatar.previewImageUrl}`);
}
```
## Supported Methods
| Method | Description |
|--------|-------------|
| `CreateAvatarVideo` | Generate an avatar video with audio and background |
| `GetAvatars` | List available avatars with preview media |
| `CreateVideoTranslation` | Translate existing video (not yet implemented) |
## Class Registration
Registered as `HeyGenVideoGenerator` via `@RegisterClass(BaseVideoGenerator, 'HeyGenVideoGenerator')`.
## Dependencies
- `@memberjunction/ai` - Core AI abstractions (BaseVideoGenerator)
- `@memberjunction/global` - Class registration
- `axios` - HTTP client for API communication