Back to Skills

Product Six-View Sheet

product-six-view-sheet

Generate a 2K six-view manufacturing reference sheet from a product photo. Use when the user asks to create front, back, side, top, and bottom product views on a pure white background using Nano Banana 2.

SKILL.md

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, and enableWebSearch: 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 upload fails, report the local file/access/upload blocker and do not submit the generation task.
  • If the submit action rejects the payload, check that prompt is nonempty, imageURLs is an array of one to fourteen URL strings, aspectRatio is one of the schema enums, outputFormat is png, and resolution is 2K.
  • 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 saved sessionId and resume by polling fusion-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.