devhive1/devhive-cli

media-generation

Generate and retrieve media including AI-generated images, AI-generated videos, and stock images.

ソースを見る

使い方

  1. インストールコマンドをコピーし、自分の環境へ導入する前にソースを確認します。
  2. 必要なツール、認証情報、対応環境を原文で確認します。
  3. 入力と成果物を指定し、出力を資料と照合します。
npx skills add https://github.com/devhive1/devhive-cli --skill media-generation

開始前の確認

  • 導入にはモデル契約、API枠、ファイルへのアクセス許可は含まれません。
  • スター数や導入数は活動の指標であり、独立した品質・安全性試験ではありません。
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Media Generation Skill

Generate custom images, videos, and retrieve stock images for your application.

Available Functions

generateImage(images, ...)

Generate custom images from text descriptions using AI image generation. Waits for generation to complete before returning.

Parameters:

  • images (list, required): A list of image request objects. This wrapper is always required — even for a single image, pass `images: [{ ... }]`. Up to 10 images can be generated in a single call. Each dict should have:
  • prompt (required): Text description of the desired image
  • outputPath: File path must end in `.png` — this is the only accepted format. .jpg, .jpeg, .webp, and other extensions will cause an error. Defaults to attached_assets/generated_images/{summary}.png
  • aspectRatio: Optional, defaults to "1:1". Options: "1:1", "3:4", "4:3", "9:16", "16:9"
  • negativePrompt: Optional, description of what should NOT appear
  • summary: Optional, short 4-5 word description for default filename
  • removeBackground: Optional, defaults to False
  • overwrite (bool, default True): Whether to overwrite existing files

Returns: Dict with images list (each with filePath and description) and optional failures list

Common Mistakes:

javascript
// WRONG — flat params without images array (causes "images field required" error)
await generateImage({ prompt: "A mountain landscape", outputPath: "hero.png" });

// CORRECT — always wrap in images: [...], even for a single image
await generateImage({ images: [{ prompt: "A mountain landscape", outputPath: "hero.png" }] });

// WRONG — .jpg extension is not supported (causes "outputPath must end with .png" error)
await generateImage({ images: [{ prompt: "A cityscape", outputPath: "city.jpg" }] });

// CORRECT — only .png is accepted
await generateImage({ images: [{ prompt: "A cityscape", outputPath: "city.png" }] });

Examples:

javascript
// Single image
const result = await generateImage({
    images: [
        {
            prompt: "A serene mountain landscape at sunset with snow-capped peaks",
            outputPath: "src/assets/images/hero.png",
            aspectRatio: "16:9",
            negativePrompt: "blurry, low quality",
        }
    ]
});
console.log(`Image saved to: ${result.images[0].filePath}`);

// Multiple images at once
const result = await generateImage({
    images: [
        { prompt: "A red apple", outputPath: "assets/apple.png" },
        { prompt: "A yellow banana", outputPath: "assets/banana.png" },
        { prompt: "An orange", outputPath: "assets/orange.png", removeBackground: true },
    ]
});
for (const img of result.images) {
    console.log(`Generated: ${img.filePath}`);
}

generateImageAsync(images, ...)

Generate images asynchronously in the background. Returns immediately with a workflow ID.

Parameters:

  • images (list, required): Same format as generateImage
  • overwrite (bool, default True): Whether to overwrite existing files

Returns: Dict with workflowId, workflowAlias, status, and imagePaths

Example:

javascript
const result = await generateImageAsync({
    images: [
        { prompt: "A complex detailed illustration", outputPath: "assets/illustration.png" },
    ]
});
console.log(`Started workflow: ${result.workflowAlias}`);
console.log(`Images will be saved to: ${result.imagePaths}`);

generateVideo(prompt, ...)

Generate short video clips from text descriptions using AI video generation.

Parameters:

  • prompt (str, required): Detailed text description of the desired video
  • summary (str, default "generated_video"): Short description for the filename
  • aspectRatio (str, default "16:9"): "16:9" (landscape) or "9:16" (portrait)
  • resolution (str, default "720p"): "720p" or "1080p"
  • durationSeconds (int, default 6): 4, 6, or 8 seconds
  • negativePrompt (str, optional): Description of what should NOT appear
  • personGeneration (str, optional): "dontallow" or "allowadult" for controlling people

Returns: Dict with filePath and description keys

Example:

javascript
const result = await generateVideo({
    prompt: "A cat playing with a ball of yarn, cute and playful, natural lighting",
    summary: "playful cat",
    aspectRatio: "16:9",
    durationSeconds: 6
});
console.log(`Video saved to: ${result.filePath}`);

generateVideoAsync(prompt, ...)

Generate a video asynchronously in the background. Returns immediately with a workflow ID.

Parameters:

  • prompt (str, required): Detailed text description of the desired video
  • summary (str, default "generated_video"): Short description for the filename
  • aspectRatio (str, default "16:9"): "16:9" (landscape) or "9:16" (portrait)
  • resolution (str, default "720p"): "720p" or "1080p"
  • durationSeconds (int, default 6): 4, 6, or 8 seconds
  • negativePrompt (str, optional): Description of what should NOT appear
  • personGeneration (str, optional): "dontallow" or "allowadult" for controlling people

Returns: Dict with workflowId, workflowAlias, status, and videoPath

Example:

javascript
const result = await generateVideoAsync({
    prompt: "A cat playing with a ball of yarn, cute and playful, natural lighting",
    summary: "playful cat",
    aspectRatio: "16:9",
    durationSeconds: 6
});
console.log(`Started workflow: ${result.workflowAlias}`);
console.log(`Video will be saved to: ${result.videoPath}`);

// Later, wait for completion
await wait_for_background_tasks({ wait_mode: "all" });

stockImage(description, ...)

Retrieve stock images matching a description from a stock image provider.

Parameters:

  • description (str, required): Text description of desired stock image(s)
  • summary (str, default "stock_image"): Short description for the filename
  • limit (int, default 1): Number of images to retrieve (1-10)
  • orientation (str, default "horizontal"): "horizontal", "vertical", or "all"

Returns: Dict with filePaths list and query string

Example:

javascript
const result = await stockImage({
    description: "modern office with natural lighting",
    summary: "office background",
    limit: 3,
    orientation: "horizontal"
});
for (const path of result.filePaths) {
    console.log(`Stock image saved to: ${path}`);
}

When to Use Each Function

generateImage / generateImageAsync

  • Custom illustrations or graphics not available elsewhere
  • Specific visual concepts or designs
  • Placeholder images for development
  • Creative or artistic content
  • Use generateImageAsync when images are not needed immediately

generateVideo / generateVideoAsync

  • Use generateVideoAsync when the video is not needed immediately
  • Short animated clips or motion graphics
  • Video backgrounds or visual effects
  • Product animations or demonstrations
  • Social media video content

stockImage

  • Professional photography
  • Real-world scenes and people
  • Business and corporate imagery
  • When authenticity is more important than customization

Aspect Ratio Guidelines

Images

  • 1:1 - Square, good for profile pictures, thumbnails, icons
  • 3:4 - Portrait, good for mobile screens, product images
  • 4:3 - Landscape, good for presentations, desktop displays
  • 9:16 - Vertical, good for mobile stories, tall banners
  • 16:9 - Widescreen, good for hero images, video thumbnails

Videos

  • 16:9 - Widescreen landscape, good for web videos, presentations
  • 9:16 - Vertical portrait, good for mobile stories, social media shorts

Best Practices

  1. Write detailed prompts: Include style, mood, lighting, colors, and composition
  2. Use negative prompts: Exclude unwanted elements like "blurry", "watermark", "text"
  3. Choose appropriate formats: Match aspect ratio and media type to intended use
  4. Consider stock for realism: Use stock images when you need authentic photography
  5. Do not over generate: Do not over generate images in one user request unless explicitly requested by the user

Output Locations

  • Generated images: attached_assets/generated_images/
  • Generated videos: attached_assets/generated_videos/
  • Stock images: attached_assets/stock_images/

Limitations

  • Generated videos are limited to 8 seconds maximum
  • Stock image availability depends on the search query
  • Complex or highly specific prompts may not match exactly
  • Text in generated media is not reliably rendered

Copyright

  • Always use this skill to create media assets rather than copying from websites
  • Generated images and videos are created for your use
  • Stock images are licensed for use in your projects
  • Do not download or copy media files directly from external websites

タスクに関連する項目

同じリポジトリから

関連する Skills

すべての Skills