本文へ移動
cccskills
無料GitHub で公開日本語紹介

create-image-gpt-image-fal

文章の指示から画像を生成し、公開URLの参照画像を使った編集にも対応します。モデルや縦横比、画質を選び、人物設定画やシーン、文字を含む絵コンテを作れます。

原文原文の説明を見る

Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's `gpt_image_2`) and gpt-image-2 (`openai/gpt-image-2`, custom output sizes up to 3840px). Routes to text-to-image or the edit variant depending on whether a reference image is provided. Use for photoreal character anchors, scene keyframes, and designed sheets (e.g. storyboards) where precise layout and legible text matter.

gooseworks-ai/goose-skillsスター 1,272(GitHub 1,272 + cccskills 0)
連携ツールOpenAI

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 人物の基準画像を生成したいとき
  • 動画用の場面画像を作りたいとき
  • 公開URLの画像を参照して編集したいとき
  • 文字入りの絵コンテを設計したいとき

日本語での紹介

できること

文章のプロンプトから画像を1枚生成し、参照画像がある場合はその内容をもとに編集します。gpt-image-1は既定のモデルで、対応する固定サイズから縦横比を選べます。gpt-image-2では最大3840ピクセルまでのカスタムサイズを指定でき、細かな文字やレイアウトを含むシートの作成に向いています。出力形式はPNGで、モデルや画質、リクエスト内容などを含むメタデータも保存します。人物の基準画像、動画のシーン画像、絵コンテなどのデザインシートが用途です。

こんなときに便利

映像制作で人物の見た目や場面の基準となる画像を用意したいときや、レイアウトと文字の読みやすさを重視した絵コンテを作りたいときに使えます。参照画像から人物やスタイルを引き継ぐ画像編集にも対応します。

使い方の例

  • 「この人物設定をもとに、縦長の基準画像を作って」
  • 「この参照画像の人物を使って、横向きの場面画像を生成して」
  • 「指定サイズで、文字と構図が分かる絵コンテシートを作って」

注意点

生成はfal.ai経由で行われ、利用料金はGooseWorksのクレジットに計上されます。参照画像は公開URLで渡す必要があり、ローカルファイルのパスは使えません。gpt-image-1ではカスタムサイズを指定できません。画像モデルは画像内の文字を正確に描けないことがあるため、読める文字の追加にはPILまたはffmpeg drawtextを使う想定です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(8)

  • SKILL.md9.4 KB
  • scripts/generate.py6.9 KB
  • scripts/media_proxy.py56.8 KB
  • skill.meta.json155 B
  • tests/expected-output.md900 B
  • tests/human-test.md1.2 KB
  • tests/sample-input.md525 B
  • tests/smoke-test.md1.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

create-image-gpt-image-fal

Purpose

Generate one image via fal.ai's OpenAI gpt-image endpoints. Two model families are supported through a single --model flag:

  • gpt-image-1 (default) — fal-ai/gpt-image-1. The FAL fallback for Higgsfield's gpt_image_2. Fixed output sizes only. Used by:
    • video-orchestrator/lock-character Phase 0 (anchor portrait) and Phase 1 (angle keyframes via /edit)
    • video-orchestrator/create-clips Phase 1 for photoreal scenes
    • the orchestrator's generate_with_fallback.py router on Higgsfield failure
  • gpt-image-2 — openai/gpt-image-2. The newer model; accepts custom output sizes (any multiple of 16, up to 3840px) and renders dense text/layouts well. Used for designed sheets such as ad storyboards.

The default stays gpt-image-1 so existing callers and the lock-character anchor-parity contract are unaffected. Opt into the newer model with --model gpt-image-2.

Inputs

Required:

  • --prompt — text prompt. A verbatim character descriptor block goes here for character work.
  • --output — local PNG destination.

Optional:

  • --model — gpt-image-1 (default) or gpt-image-2.
  • --aspect-ratio — 9:16 (default), 16:9, 1:1, 2:3, 3:2. gpt-image-2 also accepts 3:4, 4:3, 4:5. Used when --image-size is not given.
  • --image-size — explicit WIDTHxHEIGHT (e.g. 1728x2304). gpt-image-2 only — values are rounded to multiples of 16 and capped at 3840px. On gpt-image-1 a custom size is ignored with a warning and the aspect-ratio mapping is used instead.
  • --quality — low | medium | high (default medium; use high for finals).
  • --ref-image / --ref-url — a PUBLIC image URL for the /edit variant. Repeatable — pass it twice to send multiple refs (e.g. identity + style). The proxy does not upload local files, so a local path is rejected — host the image first (the MCP media_upload, or any public URL) and pass that URL. When present, routes to the model's /edit variant so the model can match the references. Order matters: pass identity (character) first, then style refs.
  • --with-logs — stream fal queue logs.

Credentials (proxy-routed — NOT a raw FAL key):

  • The bundled scripts/media_proxy.py routes every call through the GooseWorks fal-proxy, so every call is charged to your GooseWorks credits. It reads ~/.gooseworks/credentials.json (api_base, api_key, agent_id), written by the GooseWorks CLI. Do not set FAL_API_KEY: an agent (cal_) token is not a FAL key and 401s against fal directly.
  • Set GW_PROJECT_ID=<ad project id> in the env so the generation's spend attributes to that ad project (per-project cost shows in the app).

Credentials at run time

A cloud sandbox injects GW_MEDIA_PROXY_TOKEN; a terminal uses the CLI's credentials file. With neither, the bundled helper relays each paid call through the agent instead (see media-proxy), so the script never asks for a key or a sign-in.

Workflow

# Text-to-image, default model (gpt-image-1)
python3 skills/video/create-image-gpt-image-fal/scripts/generate.py \
  --prompt "..." \
  --output /path/to/anchor.png \
  --aspect-ratio 9:16 \
  --quality medium

# Edit-from-reference (anchor -> angle). --ref-image must be a PUBLIC URL,
# NOT a local path (the proxy does not upload local files):
python3 .../generate.py \
  --prompt "..." \
  --output /path/to/angle-3q-left.png \
  --ref-image "https://.../anchor.png" \
  --aspect-ratio 9:16

# gpt-image-2 with a custom output size (e.g. a designed storyboard sheet)
python3 .../generate.py \
  --prompt "..." \
  --output /path/to/storyboard.png \
  --model gpt-image-2 \
  --image-size 1728x2304 \
  --quality high

The script:

  1. Loads the agent credentials from ~/.gooseworks/credentials.json via the bundled media_proxy.py (proxy-routed; charged to your GooseWorks credits).
  2. Resolves the model family (--model) and output size (--image-size if given and supported, else the aspect-ratio mapping).
  3. If one or more --ref-image / --ref-url flags are set, passes them as image_urls=[url1, url2, ...] (they must already be PUBLIC URLs) and routes to the model's /edit variant. Otherwise routes to the /text-to-image variant.
  4. Submits through the GooseWorks fal-proxy and polls the queue to completion — host-swapping the queue.fal.run status/response URLs to the proxy base (see media_proxy.py); never polls queue.fal.run directly.
  5. Downloads the first result image to --output.
  6. Writes <output>.meta.json with gateway: "fal-proxy", model id, model_family, request, and cost.

Output

  • <output_path> — PNG (≥ 1 KB).
  • <output_path>.meta.json — request + result metadata + cost, including model_family (gpt-image-1 or gpt-image-2).

Quality Checks

  • Output file exists and is > 1 KB.
  • For character anchors: visually inspect against the descriptor block (hair, shirt color, age).
  • meta.json includes gateway: "fal-proxy", the resolved model id, model_family, image_size, and quality.
  • For gpt-image-2 custom sizes: confirm the output dimensions match the requested WIDTHxHEIGHT.
  • No readable text in the prompt that should appear in the image. AI image models mangle short brand text, URLs, code tokens, captions, and wordmarks even with explicit prompting. Examples observed: "ffmpeg" → "ffmmg"; "claritude" → "clarytude"; "therapists" → "therapits". Use PIL or ffmpeg drawtext for any overlay containing readable text. Reserve image gen for purely visual content (characters, scenes, backgrounds). Repeats LEARNINGS L4.

Failure Modes

SymptomLikely causeFix
401 Unauthorized from falCalling fal directly with an agent token, or polling queue.fal.run instead of the proxyThis atom is proxy-routed — it uses the ~/.gooseworks/credentials.json agent token via media_proxy.py, never a raw FAL_API_KEY. Without that file the helper relays the call instead.
ERROR: ref images must be PUBLIC URLsPassed a local path to --ref-image / --ref-urlThe proxy does not upload local files. Host it (the MCP media_upload) and pass the resulting public URL.
429 Too Many RequestsRPS limitDrop concurrency to 2-3.
Custom size ignored--image-size passed with --model gpt-image-1gpt-image-1 only supports fixed sizes; use --model gpt-image-2 for custom sizes.
Aspect-ratio drift (gpt-image-1)gpt-image-1 only supports 1024x1024, 1024x1536, 1536x1024The script maps aspect ratios to these internally.
Size rejected (gpt-image-2)Dimension not a multiple of 16, or > 3840pxThe script rounds to /16 and caps at 3840; pass a smaller size.
Anchor reference ignored/text-to-image variant doesn't accept refsPass --ref-image to force the /edit variant.
Skin / face looks "AI-stock"gpt-image's failure modeAdd anti-AI cues to the prompt: "natural skin texture with pores, slight asymmetry, no perfect teeth".

Model notes

  • Product lettering. openai/gpt-image-2/edit off a real product photo keeps proportions and exact lettering far better than nano-banana, so use it for product-hero frames. Cheaper and pixel-exact: cut the real photo out and composite it instead of redrawing the product.
  • /edit can ignore the aspect ratio and return a 1024x1024 square; center-cropping that to 9:16 chops the subject. Pass --image-size (gpt-image-2) or verify the returned size before using it.
  • No contact shadow under a soft key on a bright seamless floor. That is physically right for the lighting, so re-prompting cannot fix it: ask for a harder key from a steeper angle, a floor several stops darker than the wall, or composite the shadow afterwards.
  • Safe zones: see create-image-fal; it holds the notes that apply to every image model.

Cross-provider parity note

When this atom generates a character anchor (lock-character Phase 0), the anchor approved here MUST be pinned for all downstream angle gens, and the same --model must be used for those angle gens. Mixing model families (or mixing FAL-gpt-image with Higgsfield-gpt_image_2) introduces aesthetic drift. The orchestrator's generate_with_fallback.py inherits gateway/model_family from the anchor's .meta.json for subsequent calls.

References

  • fal.ai/models/fal-ai/gpt-image-1
  • fal.ai/models/openai/gpt-image-2
  • Sibling Higgsfield path: mcp__higgsfield__generate_image with model="gpt_image_2"
  • Shared helper: scripts/media_proxy.py (proxy-routed FAL/ElevenLabs; charged to your GooseWorks credits — the helper generate.py actually imports). scripts/fal_helpers.py is a LEGACY raw-FAL helper kept for reference only; generate.py does not use it (it would need a real FAL_KEY).
  • Storyboard sheets for video ads are made with this skill's gpt-image-2 mode.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

<slug>

無料概要あり

資料には具体的なスキルの内容や手順が記載されていないため、用途や得られる結果を特定できません。

  • 用途を確認したいとき
  • 入力や手順を確認したいとき
  • 期待する結果を確認したいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-angle-miner

無料概要あり

顧客の課題や商品情報、広告事例を調べ、根拠のある広告訴求と静止画・動画・コピー案にまとめます。動画案は実際の制作フォーマットとの相性も確認し、商品単位の角度集として整理します。

  • 商品の根拠に沿った広告の切り口を探したいとき
  • 静止画広告や動画広告の案を作りたいとき
  • 顧客の言葉から見出しや広告文を考えたいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-campaign-analyzer

無料概要あり

Google、Meta、LinkedInなどの広告実績を分析し、成果の出た広告や予算の無駄を特定します。停止・拡大・テスト案や、具体的な予算配分を提案します。

  • 広告予算の無駄を見つけたいとき
  • 複数媒体の成果を比較したいとき
  • 広告の停止・拡大候補を決めたいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-lead-quality-analyzer

無料概要あり

広告費と登録後の成果を照合し、質の高いリード獲得にかかった実コストを算出します。広告素材ごとに拡大・維持・調査・停止の判断材料を整理するスキルです。

  • 広告素材ごとの実質獲得コストを比べたいとき
  • 低CPAでも質の低い広告を見つけたいとき
  • 登録後の成果データとの照合状況を調べたいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-management-intake

無料概要あり

Meta広告を始める前にブランド情報を調べ、予算や広告表現に関わる不明点だけを質問して準備を整えます。確認事項と仮定を記録し、ブランド情報とキャンペーン概要を作成します。

  • ブランド情報が未記録の状態で広告を始めたいとき
  • 予算や広告期間の前提を整理したいとき
  • 広告で使う主張や制約を記録したいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-policy-check

無料概要あり

広告文や画像内の表現を配信先と商品カテゴリのルールに照らして確認し、直せる箇所を修正しながら、法務や人の判断が必要なリスクを広告ごとに整理します。

  • 広告の配信前チェック
  • 広告画像や動画の表現確認
  • クリエイター広告の表示確認
gooseworks-ai/goose-skills1,2722026年10月27日 更新

gooseworks-ai のスキルをすべて見る

このスキルの問題を報告する