Sxela
作者:Sxela更新日 2026-05-11全 3 バージョン · 最新版の公開日 2026-02-07falai@clawhub_sxela/falai
画像生成ビジュアル素材

AlphaMoatによると、2026-09時点でFal Aiのダウンロード数は3,147、スター数は3で、AIスキル全体5,078件中3,620位、デザイン・メディアでは512件中337位です。

インストール数
216
ダウンロード数
3147
スター数
3
総合順位
#3,620
全体の上位 72% · デザイン・メディアの上位 66%
プラットフォームインストール数ダウンロード数スター数コメント
ClawHub ↗9830183-
SkillHub ↗21631473—

プラットフォームごとに集計方法と集計時点が異なります。

このスキルでできること

このスキルはテキストからの画像生成、画像編集、動画処理のタスクをfal.aiに送信し、非同期リクエストの状態を確認する方法を説明する。送信前にモデルの必須フィールドとファイル入力形式を検証する。認可されたAPI認証情報を設定する必要があり、プロンプトや提供した画像・動画素材は外部サービスで処理される。

資料公開日 2026-10-27

できること

  • テキスト指示から画像を生成する
  • 参照画像や入力動画を使った編集タスクを作成する

使う場面

  • fal.aiのモデルでメディアを生成または編集するとき
  • 画像や動画を含むタスクの送信前に必須項目を確認するとき

プロンプト例

スキルのドキュメントをもとに生成した例であり、実際の実行結果ではありません。

この指示からfal.aiで画像を生成して
参照画像を使って提供したメディアを編集し、先に必須項目を確認して

月次の推移

ダウンロード数3147
2044263732292026-03 · ダウンロード数 21262026-05 · ダウンロード数 24882026-06 · ダウンロード数 26212026-07 · ダウンロード数 28202026-08 · ダウンロード数 29252026-09 · ダウンロード数 314726-0326-09
スター数3
2342026-03 · スター数 32026-05 · スター数 32026-06 · スター数 32026-07 · スター数 32026-08 · スター数 32026-09 · スター数 326-0326-09

2026-09 から集計方法を変更し、同名スキルを作者ごとに分けて集計し、全スキルを対象にしました。破線は変更前の月で、変更後のデータとは直接比較せず、変更をまたぐ増減も計算していません。

月ダウンロード数前月比スター数
2026-093147—3
2026-082925+3.7%3
2026-072820+7.6%3
2026-062621+5.3%3
2026-052488—3
2026-032126—3

SKILL.md 原文

作者が公開した元のファイルをテキストのまま表示しています。AlphaMoat による編集や審査はしていません。リンクはクリックできません。コマンドは内容を確認してから実行してください。取得日 2026-10-23。

7.0 KB・ClawHub v1.0.2
---
name: fal-ai
description: Generate images and media using fal.ai API (Flux, Gemini image, etc.). Use when asked to generate images, run AI image models, create visuals, or anything involving fal.ai. Handles queue-based requests with automatic polling.
---

# fal.ai Integration

Generate and edit images via fal.ai's queue-based API.

## Setup
すべて表示(全 233 行)

Add your API key to `TOOLS.md`:

```markdown
### fal.ai
FAL_KEY: your-key-here
```

Get a key at: https://fal.ai/dashboard/keys

The script checks (in order): `FAL_KEY` env var → `TOOLS.md`

## Supported Models

### fal-ai/nano-banana-pro (Text → Image)
Google's Gemini 3 Pro for text-to-image generation.

```python
input_data = {
    "prompt": "A cat astronaut on the moon",      # required
    "aspect_ratio": "1:1",                        # auto|21:9|16:9|3:2|4:3|5:4|1:1|4:5|3:4|2:3|9:16
    "resolution": "1K",                           # 1K|2K|4K
    "output_format": "png",                       # jpeg|png|webp
    "safety_tolerance": "4"                       # 1 (strict) to 6 (permissive)
}
```

### fal-ai/nano-banana-pro/edit (Image → Image)
Gemini 3 Pro for image editing. Slower (~20s) but handles complex edits well.

```python
input_data = {
    "prompt": "Transform into anime style",       # required
    "image_urls": [image_data_uri],               # required - array of URLs or base64 data URIs
    "aspect_ratio": "auto",
    "resolution": "1K",
    "output_format": "png"
}
```

### fal-ai/flux/dev/image-to-image (Image → Image)
FLUX.1 dev model. Faster (~2-3s) for style transfers.

```python
input_data = {
    "prompt": "Anime style portrait",             # required
    "image_url": image_data_uri,                  # required - single URL or base64 data URI
    "strength": 0.85,                             # 0-1, higher = more change
    "num_inference_steps": 40,
    "guidance_scale": 7.5,
    "output_format": "png"
}
```

### fal-ai/kling-video/o3/pro/video-to-video/edit (Video → Video)
Kling O3 Pro for video transformation with AI effects.

**Limits:**
- Formats: **.mp4, .mov only**
- Duration: **3-10 seconds**
- Resolution: **720-2160px**
- Max file size: **200MB**
- Max elements: **4 total** (elements + reference images combined)

```python
input_data = {
    # Required
    "prompt": "Change environment to be fully snow as @Image1. Replace animal with @Element1",
    "video_url": "https://example.com/video.mp4",    # .mp4/.mov, 3-10s, 720-2160px, max 200MB
    
    # Optional
    "image_urls": [                                  # style/appearance references
        "https://example.com/snow_ref.jpg"           # use as @Image1, @Image2 in prompt
    ],
    "keep_audio": True,                              # keep original audio (default: true)
    "elements": [                                    # characters/objects to inject
        {
            "reference_image_urls": [                # reference images for the element
                "https://example.com/element_ref1.png"
            ],
            "frontal_image_url": "https://example.com/element_front.png"  # frontal view (better results)
        }
    ],                                               # use as @Element1, @Element2 in prompt
    "shot_type": "customize"                         # multi-shot type (default: customize)
}
```

**Prompt references:**
- `@Video1` — the input video
- `@Image1`, `@Image2` — reference images for style/appearance
- `@Element1`, `@Element2` — elements (characters/objects) to inject

## Input Validation

The skill validates inputs before submission. For multi-input models, ensure all required fields are provided:

```bash
# Check what a model needs
python3 scripts/fal_client.py model-info "fal-ai/kling-video/o3/standard/video-to-video/edit"

# List all models with their requirements
python3 scripts/fal_client.py models
```

**Before submitting, verify:**
- ✅ All `required` fields are present and non-empty
- ✅ File fields (`image_url`, `video_url`, etc.) are URLs or base64 data URIs
- ✅ Arrays (`image_urls`) have at least one item
- ✅ Video files are within limits (200MB, 720-2160p)

**Example validation output:**
```
⚠️  Note: Reference video in prompt as @Video1
⚠️  Note: Max 4 total elements (video + images combined)
❌ Validation failed:
   - Missing required field: video_url
```

## Usage

### CLI Commands

```bash
# Check API key
python3 scripts/fal_client.py check-key

# Submit a request
python3 scripts/fal_client.py submit "fal-ai/nano-banana-pro" '{"prompt": "A sunset over mountains"}'

# Check status
python3 scripts/fal_client.py status "fal-ai/nano-banana-pro" "<request_id>"

# Get result
python3 scripts/fal_client.py result "fal-ai/nano-banana-pro" "<request_id>"

# Poll all pending requests
python3 scripts/fal_client.py poll

# List pending requests
python3 scripts/fal_client.py list

# Convert local image to base64 data URI
python3 scripts/fal_client.py to-data-uri /path/to/image.jpg

# Convert local video to base64 data URI (with validation)
python3 scripts/fal_client.py video-to-uri /path/to/video.mp4
```

### Python Usage

```python
import sys
sys.path.insert(0, 'scripts')
from fal_client import submit, check_status, get_result, image_to_data_uri, poll_pending

# Text to image
result = submit('fal-ai/nano-banana-pro', {
    'prompt': 'A futuristic city at night'
})
print(result['request_id'])

# Image to image (with local file)
img_uri = image_to_data_uri('/path/to/photo.jpg')
result = submit('fal-ai/nano-banana-pro/edit', {
    'prompt': 'Transform into watercolor painting',
    'image_urls': [img_uri]
})

# Poll until complete
completed = poll_pending()
for req in completed:
    if 'result' in req:
        print(req['result']['images'][0]['url'])
```

## Queue System

fal.ai uses async queues. Requests go through stages:
- `IN_QUEUE` → waiting
- `IN_PROGRESS` → generating
- `COMPLETED` → done, fetch result
- `FAILED` → error occurred

Pending requests are saved to `~/. openclaw/workspace/fal-pending.json` and survive restarts.

### Polling Strategy

**Manual:** Run `python3 scripts/fal_client.py poll` periodically.

**Heartbeat:** Add to `HEARTBEAT.md`:
```markdown
- Poll fal.ai pending requests if any exist
```

**Cron:** Schedule polling every few minutes for background jobs.

## Adding New Models

1. Find the model on fal.ai and check its `/api` page
2. Add entry to `references/models.json` with input/output schema
3. Test with a simple request

**Note:** Queue URLs use base model path (e.g., `fal-ai/flux` not `fal-ai/flux/dev/image-to-image`). The script handles this automatically.

## Files

```
skills/fal-ai/
├── SKILL.md                    ← This file
├── scripts/
│   └── fal_client.py           ← CLI + Python library
└── references/
    └── models.json             ← Model schemas
```

## Troubleshooting

**"No FAL_KEY found"** → Add key to TOOLS.md or set FAL_KEY env var

**405 Method Not Allowed** → URL routing issue, ensure using base model path for status/result

**Request stuck** → Check `fal-pending.json`, may need manual cleanup

デザイン・メディアの人気スキル

データ月:2026-09 · ダウンロード数、スター数、インストール数は公開スキルレジストリ(ClawHub、SkillHub)から月単位で集計しています。詳しくはデータの方法論をご覧ください。