Product Six-View Sheet
When to Use
Use this skill when the user provides a product photo and asks for standard manufacturing views, six views, orthographic product views, product reference sheets, CAD-style view sheets, or ecommerce/product-design reference images. The default output is one 2K PNG on a pure white background with six isolated views arranged in a clean grid: front, back, left side, right side, top, and bottom.
This skill uses the OOMOL built-in Fusion API connector action
fusion-api.fal_nano_banana_2_submit for image generation/editing and
fusion-api.fal_nano_banana_2_result for polling the async result. Do not run
oo search or rediscover image-generation capabilities at execution time.
Inputs
- Required: one product reference image, either as a local file path or a remote HTTP(S) URL.
- Optional: product-specific notes to preserve, such as material, color, brand plaque, stitching, hardware, openings, proportions, or manufacturing details.
- Optional: requested output directory and filename. If absent, save beside the
source image when practical, or in the current workspace with a descriptive
name such as
product_six_views_2k.png. - Default generation settings:
numImages: 1,aspectRatio: "3:2",outputFormat: "png",resolution: "2K",limitGenerations: true, andenableWebSearch: false. - Ask one focused question only when the product image is missing, multiple candidate products are shown and the main object is ambiguous, or the user wants a nonstandard view set that changes the repeated workflow.
Execution
If the input is a local file, upload it first:
oo file upload "<filePath>" --json
Use the returned downloadUrl in imageURLs. Do not pass local absolute paths
or local file:// URLs into the Fusion API payload.
Create a JSON payload file for the submit action when the prompt contains quotes, line breaks, or detailed product notes. Use this payload shape:
{
"prompt": "<six-view manufacturing-sheet prompt>",
"imageURLs": ["<uploaded-or-remote-reference-url>"],
"numImages": 1,
"aspectRatio": "3:2",
"outputFormat": "png",
"resolution": "2K",
"limitGenerations": true,
"enableWebSearch": false
}
Prompt requirements:
- State that the reference photo is the only product source.
- Request exactly six orthographic/studio views in a neat 3 by 2 grid: front, back, left side, right side, top looking into or onto the product as appropriate, and bottom.
- Preserve visible product identity and construction details from the reference image, including material, color, seams, stitching, hardware, panels, openings, labels, and proportions.
- Require a pure white background, neutral product-reference lighting, minimal shadows, no props, no hands, no mannequin, no watermark, no text labels, and no extra products.
- If the user names a specific product category, adapt the top and bottom view wording to that category while keeping the same six-view structure.
Submit the task:
oo connector run "fusion-api" \
--action "fal_nano_banana_2_submit" \
--data @payload.json \
--json
Read the async session id from .data.sessionId. Poll the result action with
that id:
oo connector run "fusion-api" \
--action "fal_nano_banana_2_result" \
--data '{"sessionID":"<sessionId>"}' \
--json
Repeat polling until .data.state is completed, or stop on a terminal
failure shape. Treat .data.state == "processing" with .data.progress as
non-terminal progress.
Result Handling
On success, the observed completed response shape is:
.data.state == "completed"
.data.data.images[0].url
Download the first returned image URL with oo file download:
oo file download "<image-url>" "<outDir>" --name "<base-name>" --ext ".png"
oo file download prints Saved to: <path> and does not support --json.
After saving, verify the local file exists and inspect image dimensions with a
local tool such as file or sips -g pixelWidth -g pixelHeight. Preview the
image when practical, and include the local path plus an inline image preview
in the final response. Do not print full signed or temporary artifact URLs to
the user.
Failure Handling
- If
oo file uploadfails, report the local file/access/upload blocker and do not submit the generation task. - If the submit action rejects the payload, check that
promptis nonempty,imageURLsis an array of one to fourteen URL strings,aspectRatiois one of the schema enums,outputFormatispng, andresolutionis2K. - If the submit response lacks
.data.sessionId, report the unexpected response shape and keep the raw command output for debugging. - If polling returns
.data.state == "processing"for an extended period, report the savedsessionIdand resume by pollingfusion-api.fal_nano_banana_2_result; do not resubmit the same logical task just because polling timed out. - If polling returns
.data.state == "not_found", report the not-found error and do not invent a result URL. - If the completed response has no image URL under
.data.data.images[], report the unexpected completed result shape instead of synthesizing an artifact. - If the downloaded image is visibly wrong, such as missing six views, not white background, extra products, or wrong main object, explain the issue and ask whether to rerun with a tighter prompt before spending another generation.