Get the FREE Ultimate OpenClaw Setup Guide →
s

Monet AI

Verified

@seekton

npx machina-cli add skill @seekton/monet-ai --openclaw
Files (1)
SKILL.md
10.8 KB

Monet AI Skill

AI content generation API for AI agents.

When to Use

Use this skill when:

  • You need to generate video content (Sora, Wan, Hailuo, Kling, Veo)
  • You need to generate images (GPT-4o, Flux, Imagen, Ideogram)
  • You need to generate music (Suno, Udio)
  • You want to integrate AI generation capabilities into your agent workflow

Installation

npm install monet-ai

Getting API Key

  1. Visit https://monet.vision to register an account
  2. After login, go to https://monet.vision/skills/keys to create an API Key
  3. Configure the API Key in environment variables or code

If you don't have an API Key, ask your owner to apply at monet.vision.

Quick Start

import { MonetAI } from "monet-ai";

const monet = new MonetAI({ 
  apiKey: process.env.MONET_API_KEY! 
});

// Create a video generation task
const task = await monet.createTask({
  type: "video",
  input: {
    model: "sora-2",
    prompt: "A cat running in the park",
    duration: 5,
    aspect_ratio: "16:9"
  }
});

// Poll for result
while (task.status === "pending" || task.status === "processing") {
  await new Promise(r => setTimeout(r, 3000));
  task = await monet.getTask(task.id);
}

console.log("Result:", task.outputs);

Supported Models

Video Generation

Sora (OpenAI)

sora-2

{
  model: "sora-2",
  prompt: string,                // Required
  images?: string[],             // Optional
  duration?: 10 | 15,           // Optional, default: 10
  aspect_ratio?: "16:9" | "9:16"
}

sora-2-pro

{
  model: "sora-2-pro",
  prompt: string,
  images?: string[],
  duration?: 15 | 25,           // Optional, default: 15
  aspect_ratio?: "16:9" | "9:16"
}

Veo (Google)

veo-3-1-fast, veo-3-1

{
  model: "veo-3-1-fast" | "veo-3-1",
  prompt: string,
  images?: string[],
  aspect_ratio?: "16:9" | "9:16"
}

veo-3-fast, veo-3

{
  model: "veo-3-fast" | "veo-3",
  prompt: string,
  images?: string[],
  negative_prompt?: string
}

Wan

wan-2-6

{
  model: "wan-2-6",
  prompt: string,
  images?: string[],
  duration?: 5 | 10 | 15,
  resolution?: "720p" | "1080p",
  aspect_ratio?: "16:9" | "9:16" | "4:3" | "3:4" | "1:1",
  shot_type?: "single" | "multi"
}

wan-2-5

{
  model: "wan-2-5",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  resolution?: "480p" | "720p" | "1080p",
  aspect_ratio?: "16:9" | "9:16" | "4:3" | "3:4" | "1:1"
}

wan-2-2-flash

{
  model: "wan-2-2-flash",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  resolution?: "480p" | "720p" | "1080p",
  negative_prompt?: string
}

wan-2-2

{
  model: "wan-2-2",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  resolution?: "480p" | "1080p",
  aspect_ratio?: "16:9" | "9:16" | "4:3" | "3:4" | "1:1",
  negative_prompt?: string
}

Kling

kling-2-6

{
  model: "kling-2-6",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  aspect_ratio?: "1:1" | "16:9" | "9:16",
  generate_audio?: boolean
}

kling-2-5

{
  model: "kling-2-5",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  aspect_ratio?: "1:1" | "16:9" | "9:16",
  negative_prompt?: string
}

kling-v2-1-master, kling-v2-1, kling-v2

{
  model: "kling-v2-1-master" | "kling-v2-1" | "kling-v2",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  aspect_ratio?: "1:1" | "16:9" | "9:16",
  strength?: number,            // 0-1
  negative_prompt?: string
}

Hailuo

hailuo-2-3, hailuo-2-3-fast

{
  model: "hailuo-2-3" | "hailuo-2-3-fast",
  prompt: string,
  images?: string[],
  duration?: 6 | 10,
  resolution?: "768p" | "1080p"
}

hailuo-02

{
  model: "hailuo-02",
  prompt: string,
  images?: string[],
  duration?: 6 | 10,
  resolution?: "768p" | "1080p"
}

hailuo-01-live2d, hailuo-01

{
  model: "hailuo-01-live2d" | "hailuo-01",
  prompt: string,
  images?: string[]
}

Doubao Seedance

doubao-seedance-1-5-pro

{
  model: "doubao-seedance-1-5-pro",
  prompt: string,
  images?: string[],
  duration?: number,
  resolution?: "480p" | "720p",
  aspect_ratio?: "1:1" | "4:3" | "16:9" | "3:4" | "9:16" | "21:9",
  generate_audio?: boolean
}

doubao-seedance-1-0-pro-fast

{
  model: "doubao-seedance-1-0-pro-fast",
  prompt: string,
  images?: string[],
  duration?: number,
  resolution?: "720p" | "1080p",
  aspect_ratio?: "1:1" | "4:3" | "16:9" | "3:4" | "9:16" | "21:9"
}

doubao-seedance-1-0-pro

{
  model: "doubao-seedance-1-0-pro",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  resolution?: "480p" | "1080p",
  aspect_ratio?: "1:1" | "4:3" | "16:9" | "3:4" | "9:16"
}

doubao-seedance-1-0-lite

{
  model: "doubao-seedance-1-0-lite",
  prompt: string,
  images?: string[],
  duration?: 5 | 10,
  resolution?: "480p" | "720p" | "1080p"
}

Special Features

kling-motion-control

{
  model: "kling-motion-control",
  prompt: string,                // Required
  images: string[],              // Required: min 1
  videos: string[],              // Required: min 1
  resolution?: "720p" | "1080p"
}

runway-act-two

{
  model: "runway-act-two",
  images: string[],              // Required: min 1
  videos: string[],              // Required: min 1
  aspect_ratio?: "1:1" | "4:3" | "16:9" | "3:4" | "9:16" | "21:9"
}

wan-animate-mix, wan-animate-mix-pro

{
  model: "wan-animate-mix" | "wan-animate-mix-pro",
  videos: string[],              // Required
  images: string[]               // Required
}

wan-animate-move, wan-animate-move-pro

{
  model: "wan-animate-move" | "wan-animate-move-pro",
  videos: string[],              // Required
  images: string[]               // Required
}

Image Generation

GPT (OpenAI)

gpt-4o

{
  model: "gpt-4o",
  prompt: string,
  images?: string[],
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16",
  style?: string
}

gpt-image-1-5

{
  model: "gpt-image-1-5",
  prompt: string,
  images?: string[],             // max 10
  aspect_ratio?: "1:1" | "3:2" | "2:3",
  quality?: "auto" | "low" | "medium" | "high"
}

Nano Banana

nano-banana-1

{
  model: "nano-banana-1",
  prompt: string,
  images?: string[],             // max 5
  aspect_ratio?: "1:1" | "2:3" | "3:2" | "4:3" | "3:4" | "16:9" | "9:16"
}

nano-banana-2

{
  model: "nano-banana-2",
  prompt: string,
  images?: string[],             // max 14
  aspect_ratio?: "1:1" | "2:3" | "3:2" | "4:3" | "3:4" | "4:5" | "5:4" | "16:9" | "9:16" | "21:9",
  resolution?: "1K" | "2K" | "4K"
}

Wan

wan-i-2-6

{
  model: "wan-i-2-6",
  prompt: string,
  images?: string[],             // max 4
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16" | "21:9"
}

wan-2-5

{
  model: "wan-2-5",
  prompt: string,
  images?: string[],             // max 2
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16" | "21:9"
}

Flux

flux-2-dev

{
  model: "flux-2-dev",
  prompt: string,
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16"
}

flux-kontext-pro, flux-kontext-max

{
  model: "flux-kontext-pro" | "flux-kontext-max",
  prompt: string,
  images?: string[],
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16",
  style?: string
}

flux-1-schnell

{
  model: "flux-1-schnell",
  prompt: string
}

Imagen (Google)

imagen-3-0, imagen-4-0

{
  model: "imagen-3-0" | "imagen-4-0",
  prompt: string,
  aspect_ratio?: "1:1" | "3:4" | "4:3" | "9:16" | "16:9",
  style?: string
}

Ideogram

ideogram-v2, ideogram-v3

{
  model: "ideogram-v2" | "ideogram-v3",
  prompt: string,
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16",
  style?: string
}

Others

seedream-4-0

{
  model: "seedream-4-0",
  prompt: string,
  images?: string[],             // max 10
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16"
}

stability-1-0

{
  model: "stability-1-0",
  prompt: string,
  aspect_ratio?: "1:1" | "4:3" | "3:2" | "16:9" | "3:4" | "2:3" | "9:16",
  style?: string,
  negative_prompt?: string
}

Music Generation

suno-3.5, udio-v1-6

{
  model: "suno-3.5" | "udio-v1-6",
  prompt: string                 // Required: music description
}

API Methods

createTask(options)

Create an async task. Returns immediately with task ID.

const task = await monet.createTask({
  type: "video",
  input: { model: "sora-2", prompt: "A cat" },
  idempotency_key: "unique-key"  // Required - must be a unique value (e.g., UUID)
});

⚠️ Important: idempotency_key is required. Use a unique value (e.g., UUID) to prevent duplicate task creation if the request is retried.

createTaskStream(options)

Create a task with SSE streaming. Returns ReadableStream.

const stream = await monet.createTaskStream({
  type: "video", 
  input: { model: "sora-2", prompt: "A cat" }
});

getTask(taskId)

Get task status and result.

const task = await monet.getTask("task_id");

listTasks(options)

List tasks with pagination.

const list = await monet.listTasks({ page: 1, pageSize: 20 });

Configuration

const monet = new MonetAI({
  apiKey: "monet_xxx",    // Required: API key from monet.vision
  timeout: 60000          // Optional: timeout in ms
});

Environment Variables

MONET_API_KEY=monet_xxx

curl Examples

Create Task

curl -X POST https://monet.vision/api/v1/tasks/async \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer monet_xxx" \
  -d '{
    "type": "video",
    "input": {
      "model": "sora-2",
      "prompt": "A cat running"
    }
  }'

Get Task

curl https://monet.vision/api/v1/tasks/task_id \
  -H "Authorization: Bearer monet_xxx"

List Tasks

curl "https://monet.vision/api/v1/tasks/list?page=1" \
  -H "Authorization: Bearer monet_xxx"

Source

git clone https://clawhub.ai/seekton/monet-aiView on GitHub

Overview

Monet AI provides an API to generate media content across video, image, and music. It supports a range of models for each medium, including Sora, Wan, Hailuo, Kling, and Veo for video; GPT-4o, Flux, Imagen, and Ideogram for images; and Suno and Udio for music. This enables AI-powered content generation to be integrated directly into agent workflows.

How This Skill Works

Install the monet-ai SDK, create a MonetAI instance with your API key, and call createTask with a type such as video along with input like model and prompt. Poll the task via getTask until the status is done, then access the outputs. An API key from monet.vision is required to authenticate and use the service.

When to Use It

  • Generate video content with Sora, Wan, Hailuo, Kling, or Veo models.
  • Generate images with GPT-4o, Flux, Imagen, or Ideogram models.
  • Create AI-generated music with Suno or Udio.
  • Integrate AI media generation into an agent workflow for automated content creation.
  • Prototype and iterate quickly by launching multiple tasks in parallel and aggregating results.

Quick Start

  1. Step 1: npm install monet-ai
  2. Step 2: const monet = new MonetAI({ apiKey: process.env.MONET_API_KEY })
  3. Step 3: Create a video task with monet.createTask({ type: "video", input: { model: "sora-2", prompt: "A cat running in the park", duration: 5, aspect_ratio: "16:9" } }) and poll with monet.getTask(task.id) until it completes.

Best Practices

  • Protect and rotate your MONET_API_KEY; never commit it in code or public repos.
  • Choose the right model for the media type and specify sensible parameters like duration and aspect_ratio.
  • Start with smaller durations or resolutions to validate outputs before scaling up.
  • Poll at reasonable intervals and implement timeouts to handle slow tasks gracefully.
  • Cache final outputs and maintain a reference to tasks to avoid redundant requests.

Example Use Cases

  • A product team uses sora-2 to generate a 10-second video teaser for a launch.
  • A social media bot creates 1080p promotional images using Imagen for a visual campaign.
  • A podcast workflow composes background music with Suno for new episode intros.
  • A news desk agent releases short Veo video clips to accompany daily reports.
  • A creative assistant explores multiple art variations using Ideogram and Kling for a gallery draft.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers