Skip to content
cccskills
FreePublished on GitHub

create-image-fal

Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls must be public URLs; --image puts a local file on the fal CDN first. The recipe names the model + prompt. Use for keyframes, flat-cover transforms, product hero edits. (For the OpenAI gpt-image family specifically, create-image-gpt-image-fal also exists.)

The English summary is being prepared. Showing the original description.

Works withOpenAI

Run score Not tested

See how to install

Files included (10)

  • SKILL.md7.9 KB
  • references/avatar-generation.md9.0 KB
  • scripts/brand_pack_lint.py4.4 KB
  • scripts/gen_image.py6.6 KB
  • scripts/image_quality.py1.5 KB
  • scripts/media_proxy.py56.5 KB
  • skill.meta.json337 B
  • tests/smoke-test.md280 B
  • tests/test_brand_pack_lint.py4.8 KB
  • tests/test_image_quality.py1.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

create-image-fal

GPT Image 2 quality follows the customer's tier. gen_image.py always sends an explicit quality: --tier standard (the default) is medium, --tier best is high; a payload's own quality, or --quality, wins. Above the tier is a one-shot upgrade, only after a failed check at the cheaper setting or when the customer asks (see create-creator-takes-h3's quality tier). --query '{"shot_scene": 3, "upgrade_reason": ...}' sends the call's GooseWorks query fields.

Never hand-write a person prompt. Any image with a person in it is made by create-creator-takes-h3's scripts/make_character.py (GPT Image 2, phone capture, deep focus, no retouching), unless the recipe prescribes its own creator still; read the avatar-generation guide first. Nano Banana is for cartoons only, never for real people or real products, and never use Flux for a face.

Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls must be public URLs; --image puts a local file on the fal CDN first. The recipe names the model + prompt. Use for keyframes, flat-cover transforms, product hero edits. (For the OpenAI gpt-image family specifically, create-image-gpt-image-fal also exists.)

Run

gen_image.py --model fal-ai/nano-banana/edit --payload '{...}' --out keyframe.png — bills the agent; returns the *.fal.media URL.

The brand's own product

Never ask for a blank pack of the advertised product. "No brand text in a prompt" bans typing label text; it never means removing the product's real label. A test video asked for a pouch with "its unprinted back facing the camera" and "no printed words", sent no product photo, and the pack in the hands read as a different product.

  • Refused words. When the object is the brand's product, a prompt with "unprinted", "blank" (pack, pouch, box, label...), "unlabeled", "no printed words" (or "without a label") or "back facing the camera" is refused. Pass --brand-product static or --brand-product held and gen_image.py runs scripts/brand_pack_lint.py before any upload or paid call.
  • Static or flat: on a counter or shelf, the real photo usually goes on afterwards with an overlay.
  • Held, opened, poured or used on screen: openai/gpt-image-2/edit with the real product photo as image 1 (--product-image pack-front.jpg, put first), its front facing the camera. The script adds that line to the prompt. Never type the label's words into the prompt.
  • Check the label at 2x against the photo. If it garbles, reframe so the hands cover the label area while the shape and colours still match, or cut to the real photo during the action. A blank, unprinted, back-facing or unlabeled pack of the advertised product is a P0 defect.
  • Each visible state (closed pack, open pack, contents, cooked food) comes from a real brand photo sent as the edit reference, never from prose. No photo of a state: don't show it.
gen_image.py --model openai/gpt-image-2/edit --brand-product held --product-image pack-front.jpg \
    --image presenter.png --payload '{"prompt": "She tips the open pouch into the pot of boiling water"}' \
    --out pour.png

Contract

  • Paid calls route through the GooseWorks proxies (bills the Ads agent) via the bundled media_proxy.py — never a provider SDK's default host.
  • The template recipe (DB) supplies the model + params; this capability is generic.

Edit an image (Nano Banana edit)

fal-ai/nano-banana/edit is the default editor for a prompt-driven edit: a restage or scene swap, a subject swap in the same pose, a product placed into a scene. It keeps subject geometry, the room and the light. Use create-image-gpt-image-fal instead when lettering is the point of the edit (logos, wordmarks, signage) or for a transparent cutout. Small text inside the source can come back mangled with either model; check it.

gen_image.py --model fal-ai/nano-banana/edit --image product.png --image https://.../scene.jpg \
    --payload '{"prompt": "Put the bottle on the counter; keep everything else unchanged", "aspect_ratio": "9:16"}' \
    --out edit.png
  • --image is repeatable and keeps its order; a public url passes through, a local file is put on the fal CDN through the GooseWorks storage proxy (free). Urls already in the payload's image_urls come first.
  • Payload: prompt (required); aspect_ratio auto (the input's), 21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3 or 9:16; output_format png, jpeg or webp; seed. The script saves the first image, so leave num_images at 1.
  • There is no mask. For a region-locked edit, say "keep everything else unchanged" in the prompt.
  • Keep the long edge of each input at about 2048 px or less.
  • Check the result: it decodes, its size matches the asked aspect, and no watermark, garbled text or extra fingers appear.

Creator references

Whenever the image will contain a person (creator, presenter, interviewee or any face in focus), with or without a template recipe, read the bundled avatar-generation guide before any paid call. Unless the selected recipe prescribes its own creator still, make the person with create-creator-takes-h3's scripts/make_character.py, which calls this skill. Never hand-write a person prompt here and never use a Flux route (fal-ai/flux/dev, fal-ai/flux/schnell) for a face. When the selected video route forbids person references (for example the street-interview format), make no person still at all. If a required guide cannot be fetched or opened, stop and name the missing file. Use the current project's creator choices and approved model binding; fetching this guide does not authorize another image, a retry or a different render engine.

Model notes

How the image models behave, measured on shipped projects. Each note lives here once; recipes point here instead of repeating it.

  • Nano Banana: a reference anchors identity and style, not layout. It keeps a product's colourway, materials and proportions, and takes framing, background and pose from the prompt. For a photo-faithful product, composite the real photo instead.
  • Nano Banana does not lock a face. With one reference or four real frames, it matched the room and the clothes and returned a lookalike. Never use it to re-pose or re-light a person already in published work, and compare faces side by side at the same scale before anything downstream spends on the result.
  • Nano Banana redraws wordmarks with wrong glyphs. For product lettering use gpt-image-2 edit (create-image-gpt-image-fal) or composite the real packshot.
  • Nano Banana paths are fal-ai/nano-banana and fal-ai/nano-banana/edit. The engine label nano_banana_2 is not a fal path, and the proxy refuses it as one.
  • Seedream 4.5 fills the canvas with a same-shaped subject: a wide monitor in a 9:16 canvas came back turned portrait three times in four. Generate at the subject's own aspect and crop.
  • Seedream 4.5 draws the device you name. "Shot on a phone camera" put a phone and a hand in the frame despite the negatives. Describe the artefacts (close range, wide lens, mild barrel distortion, sensor noise), never the device.
  • No image model holds a caption safe zone from framing words. Generate loose, then crop or pad to the zone and check it by drawing the band on the frame.
  • Hard constraints: see the note in create-video-fal; it applies to image prompts too.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Research supported advertising promises from a specific buyer's context, current product facts, customer language and observed ads. Turn them into static, video or copy ideas; match video ideas to actual recipes and save a product-scoped angle bank for write-video-ad-script. Product-led discovery can use verified facts without reviews. Reference persistence and reach are observations, not proof of performance.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 23, 2026

Analyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 23, 2026

For paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 23, 2026

The intake stage of a Meta ad harness. Researches the brand first, states what it assumes, and asks only what it cannot infer and what would change money, claims or legal exposure if guessed wrong — at most four questions a turn, in plain business language. Writes the brand's stable facts (ads/brand.md), the campaign brief, and a log of what was asked vs assumed. Use it when someone wants to run Meta ads and the brand's ad facts are not yet recorded.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 23, 2026

Checks paid ads against the ad platform's rules (Meta, TikTok, Google, LinkedIn and others) and the brand's category rules: the copy, on-image or on-screen text, pictures and people. Rewrites what can be fixed honestly, adds the disclosures that are needed, and flags anything that needs a human or legal review, with one pass, fixed or flag line per ad and platform. Use alone when you already have the ad text or images and know where they will run; otherwise run the playbook for the job (e.g. make-static-ads, make-content, email-lifecycle).

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 23, 2026

Analyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 23, 2026

See all skills by gooseworks-ai

Report a problem with this skill