{"slug":"bria-ai","title":"bria-ai","summary":"Image generation, photo editing, background removal — transparent PNG images, cutouts, ecommerce packshots, product catalogs, lifestyle shots via Bria.ai. Build store-ready e-commerce catalogs at scale — shadows, product dimensions images, lifestyle scenes, marketplace listing va","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-17T17:01:35.099701Z","repo":{"url":"https://github.com/Bria-AI/bria-skill","stars":68,"forks":6,"license":null,"updatedAt":"2026-10-06T12:19:32Z"},"bodyHtml":"<hr>\n<h2>name: bria-ai\ndescription: Image generation, photo editing, background removal — transparent PNG images, cutouts, ecommerce packshots, product catalogs, lifestyle shots via Bria.ai. Build store-ready e-commerce catalogs at scale — shadows, product dimensions images, lifestyle scenes, marketplace listing variants. ALWAYS use this skill when the user wants to generate, edit, or transform any image — hero images, banners, social media visuals, product photos, illustrations, icons, thumbnails, ad creatives, or marketing materials — or to build a product catalog, create a packshot, stage a lifestyle shot, remove a background, make transparent PNGs, or batch-process product photos. Triggers on packshot, product catalog, product shot creator, lifestyle shot, cutout, product dimensions image, inpainting, outpainting, object removal, upscale, photo restoration, style transfer, relight, reseason, sketch-to-photo. Commercially safe, royalty-free.\nlicense: MIT\nmetadata:\nauthor: Bria AI\nversion: \"1.3.7\"</h2>\n<h1>Bria — AI Image Generation, Editing &amp; Background Removal</h1>\n<p>Commercially safe, royalty-free image generation and editing through 20+ API endpoints. Generate from text, edit with natural language, remove backgrounds, create product shots, and build automated image pipelines.</p>\n<p>For additional endpoint details beyond what is documented here, see the <a href=\"https://docs.bria.ai/llms.txt\">Bria API reference for agents</a>.</p>\n<h2>When to Use This Skill</h2>\n<p>Use this skill when the user wants to:</p>\n<ul>\n<li><strong>Generate images</strong> — \"create an image of...\", \"make me a banner\", \"generate a hero image\", \"I need a product photo\"</li>\n<li><strong>Edit images</strong> — \"change the background\", \"make it look like winter\", \"add a vase to the table\", \"remove the person\"</li>\n<li><strong>Remove/replace backgrounds</strong> — \"make the background transparent\", \"cut out the product\", \"replace with a studio background\"</li>\n<li><strong>Product photography</strong> — \"create a lifestyle shot\", \"place this product in a kitchen scene\", \"e-commerce packshot\"</li>\n<li><strong>Enhance/transform</strong> — \"upscale this image\", \"make it higher resolution\", \"restyle as oil painting\", \"change the lighting\"</li>\n<li><strong>Batch/pipeline</strong> — \"generate 10 product images\", \"process all these images\", \"remove backgrounds in bulk\"</li>\n</ul>\n<p>This skill handles the full spectrum of AI image operations. If the user mentions images, photos, visuals, or any visual content creation — use this skill.</p>\n<hr>\n<h2>What You Can Build</h2>\n<ul>\n<li><strong>E-commerce product catalog</strong> — Generate product photos, remove backgrounds for transparent PNGs, place products in lifestyle scenes (kitchen, office, outdoor), create packshots with consistent style</li>\n<li><strong>Landing page visuals</strong> — Generate hero images, abstract tech backgrounds, team photos, and section illustrations — all matching your brand aesthetic</li>\n<li><strong>Social media content</strong> — Instagram posts (1:1), Stories/Reels (9:16), LinkedIn banners (16:9), ad creatives — batch-generate variants for A/B testing</li>\n<li><strong>Marketing campaign assets</strong> — Seasonal transformations (summer→winter), restyle product shots for different markets, create localized visuals at scale</li>\n<li><strong>Photo restoration pipeline</strong> — Restore old damaged photos, colorize black &amp; white images, upscale low-res photos to 4x, enhance quality automatically</li>\n<li><strong>Brand asset toolkit</strong> — Remove backgrounds from logos, blend artwork onto products (t-shirts, mugs), create consistent product photography across your entire catalog</li>\n<li><strong>AI-powered design workflows</strong> — Chain operations: generate→edit→remove background→place in scene→upscale — all automated through API pipelines</li>\n</ul>\n<hr>\n<h2>Setup — Authentication</h2>\n<p>Before making any API call, you need a valid Bria access token.</p>\n<h3>Step 1: Check for existing credentials</h3>\n<pre><code>if [ -f ~/.bria/credentials ]; then\n  BRIA_ACCESS_TOKEN=$(grep '^access_token=' \"$HOME/.bria/credentials\" | cut -d= -f2-)\n  BRIA_API_KEY=$(grep '^api_token=' \"$HOME/.bria/credentials\" | cut -d= -f2-)\nfi\nif [ -z \"$BRIA_ACCESS_TOKEN\" ]; then\n  echo \"NO_CREDENTIALS\"\nelif [ -n \"$BRIA_API_KEY\" ]; then\n  echo \"READY\"\nelse\n  echo \"CREDENTIALS_FOUND\"\nfi\n</code></pre>\n<p>If the output is <code>READY</code>, skip straight to making API calls — no introspection needed.\nIf the output is <code>CREDENTIALS_FOUND</code>, skip to Step 3.\nIf the output is <code>NO_CREDENTIALS</code>, proceed to Step 2.</p>\n<h3>Step 2: Authenticate via device authorization</h3>\n<p>Start the device authorization flow:</p>\n<p><strong>2a. Request a device code:</strong></p>\n<pre><code>DEVICE_RESPONSE=$(curl -s -X POST \"https://engine.prod.bria-api.com/v2/auth/device/authorize\" \\\n  -H \"Content-Type: application/json\")\necho \"$DEVICE_RESPONSE\"\n</code></pre>\n<p>Parse the response fields:</p>\n<ul>\n<li><code>device_code</code> — used to poll for the token (keep this, don't show to user)</li>\n<li><code>user_code</code> — the code the user must enter (e.g. <code>BRIA-XXXX</code>)</li>\n<li><code>interval</code> — seconds between poll attempts</li>\n</ul>\n<p><strong>2b. Show the user a single sign-in link.</strong> Tell them exactly this — nothing more:</p>\n<blockquote>\n<p><strong>Connect your Bria account:</strong> <a href=\"https://platform.bria.ai/device/verify?user_code=%7Buser_code%7D\">Click here to sign in</a>\nYour code is <strong></strong> — it's already filled in.</p>\n</blockquote>\n<p>Do NOT show two links. Do NOT show the raw URL separately. Do NOT use <code>verification_uri</code> from the API response. Keep it to one clickable link.</p>\n<p><strong>2c. Poll for the token.</strong> After showing the user the code, immediately start polling. Try up to 60 times with the given interval (default 5 seconds):</p>\n<pre><code>for i in $(seq 1 60); do\n  TOKEN_RESPONSE=$(curl -s -X POST \"https://engine.prod.bria-api.com/v2/auth/token\" \\\n    -d \"grant_type=urn:ietf:params:oauth:grant-type:device_code\" \\\n    -d \"device_code=$DEVICE_CODE\")\n  ACCESS_TOKEN=$(printf '%s' \"$TOKEN_RESPONSE\" | sed -n 's/.*\"access_token\" *: *\"\\([^\"]*\\)\".*/\\1/p')\n  if [ -n \"$ACCESS_TOKEN\" ]; then\n    BRIA_ACCESS_TOKEN=\"$ACCESS_TOKEN\"\n    REFRESH_TOKEN=$(printf '%s' \"$TOKEN_RESPONSE\" | sed -n 's/.*\"refresh_token\" *: *\"\\([^\"]*\\)\".*/\\1/p')\n    mkdir -p ~/.bria\n    printf 'access_token=%s\\nrefresh_token=%s\\n' \"$BRIA_ACCESS_TOKEN\" \"$REFRESH_TOKEN\" &gt; \"$HOME/.bria/credentials\"\n    echo \"AUTHENTICATED\"\n    break\n  fi\n  sleep 5\ndone\n</code></pre>\n<p>If the output contains <code>AUTHENTICATED</code>, proceed to Step 3. Otherwise the code expired — start over from Step 2a.</p>\n<p><strong>Do not proceed with any API call until authentication is confirmed.</strong></p>\n<h3>Step 3: Verify billing status and resolve API key</h3>\n<p>Introspect the bearer token to check billing status and obtain the real API key for Bria API calls:</p>\n<pre><code>INTROSPECT=$(curl -s -X POST \"https://engine.prod.bria-api.com/v2/auth/token/introspect\" \\\n  -d \"token=$BRIA_ACCESS_TOKEN\")\nBILLING_STATUS=$(printf '%s' \"$INTROSPECT\" | sed -n 's/.*\"billing_status\" *: *\"\\([^\"]*\\)\".*/\\1/p')\nif [ \"$BILLING_STATUS\" = \"blocked\" ]; then\n  BILLING_MSG=$(printf '%s' \"$INTROSPECT\" | sed -n 's/.*\"billing_message\" *: *\"\\([^\"]*\\)\".*/\\1/p')\n  echo \"BILLING_ERROR: $BILLING_MSG\"\nfi\nACTIVE=$(printf '%s' \"$INTROSPECT\" | sed -n 's/.*\"active\" *: *\\([^,}]*\\).*/\\1/p' | tr -d ' ')\nif [ \"$ACTIVE\" = \"false\" ]; then\n  # Clear stale tokens so re-auth starts fresh (credentials file is re-created in Step 2c)\n  printf '' &gt; \"$HOME/.bria/credentials\"\n  echo \"TOKEN_EXPIRED\"\nfi\nBRIA_API_KEY=$(printf '%s' \"$INTROSPECT\" | sed -n 's/.*\"api_token\" *: *\"\\([^\"]*\\)\".*/\\1/p')\nif [ -n \"$BRIA_API_KEY\" ]; then\n  grep -v '^api_token=' \"$HOME/.bria/credentials\" &gt; \"$HOME/.bria/credentials.tmp\" 2&gt;/dev/null || true\n  printf 'api_token=%s\\n' \"$BRIA_API_KEY\" &gt;&gt; \"$HOME/.bria/credentials.tmp\"\n  mv \"$HOME/.bria/credentials.tmp\" \"$HOME/.bria/credentials\"\nfi\n</code></pre>\n<p>Interpret the output:</p>\n<ul>\n<li>If it prints <code>BILLING_ERROR: ...</code> — relay the message to the user exactly as shown and <strong>stop</strong>. Do not make any API calls.</li>\n<li>If it prints <code>TOKEN_EXPIRED</code> — the session is no longer valid. Tell the user their session expired and restart from Step 2.</li>\n<li>Otherwise, <code>BRIA_API_KEY</code> now contains the real API key and is cached for future calls. Proceed to the next section.</li>\n</ul>\n<hr>\n<h2>Core Capabilities</h2>\n<table>\n<thead>\n<tr>\n<th>Need</th>\n<th>Capability</th>\n<th>Use Case</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Generate images from text</td>\n<td>FIBO Generate</td>\n<td>Hero images, product shots, illustrations, social media images, banners</td>\n</tr>\n<tr>\n<td>Edit images by text instruction</td>\n<td>FIBO-Edit</td>\n<td>Change colors, modify objects, transform scenes</td>\n</tr>\n<tr>\n<td>Combine 2–4 images in one edit</td>\n<td>FIBO-Edit multi-reference</td>\n<td>Put the outfit, product, logo, style, or background of one image into another</td>\n</tr>\n<tr>\n<td>Edit image region with mask</td>\n<td>GenFill/Erase</td>\n<td>Precise inpainting, add/replace specific regions</td>\n</tr>\n<tr>\n<td>Add/Replace/Remove objects</td>\n<td>Text-based editing</td>\n<td>Add vase, replace apple with pear, remove table</td>\n</tr>\n<tr>\n<td>Remove background (transparent PNG)</td>\n<td>RMBG-2.0</td>\n<td>Extract subjects for overlays, logos, cutouts</td>\n</tr>\n<tr>\n<td>Turn a finished ad back into layers</td>\n<td>Ad Delayer</td>\n<td>make a shipped creative editable, resize or localise an ad</td>\n</tr>\n<tr>\n<td>Replace/blur/erase background</td>\n<td>Background ops</td>\n<td>Change, blur, or remove backgrounds</td>\n</tr>\n<tr>\n<td>Expand/outpaint images</td>\n<td>Outpainting</td>\n<td>Extend boundaries, change aspect ratios</td>\n</tr>\n<tr>\n<td>Upscale image resolution</td>\n<td>Super Resolution</td>\n<td>Increase resolution 2x or 4x</td>\n</tr>\n<tr>\n<td>Enhance image quality</td>\n<td>Enhancement</td>\n<td>Improve lighting, colors, details</td>\n</tr>\n<tr>\n<td>Restyle images</td>\n<td>Restyle</td>\n<td>Oil painting, anime, cartoon, 3D render</td>\n</tr>\n<tr>\n<td>Change lighting</td>\n<td>Relight</td>\n<td>Golden hour, spotlight, dramatic lighting</td>\n</tr>\n<tr>\n<td>Change season</td>\n<td>Reseason</td>\n<td>Spring, summer, autumn, winter</td>\n</tr>\n<tr>\n<td>Composite/blend images</td>\n<td>Image Blending</td>\n<td>Apply textures, logos, merge images</td>\n</tr>\n<tr>\n<td>Restore old photos</td>\n<td>Restoration</td>\n<td>Fix old/damaged photos</td>\n</tr>\n<tr>\n<td>Colorize images</td>\n<td>Colorization</td>\n<td>Add color to B&amp;W, or convert to B&amp;W</td>\n</tr>\n<tr>\n<td>Sketch to photo</td>\n<td>Sketch2Image</td>\n<td>Convert drawings to realistic photos</td>\n</tr>\n<tr>\n<td>Product cutout</td>\n<td>Product Cutout</td>\n<td>Clean transparent PNG from a raw product photo</td>\n</tr>\n<tr>\n<td>Product packshot</td>\n<td>Product Packshot</td>\n<td>Standardized 2000×2000 shot on a solid/clean background</td>\n</tr>\n<tr>\n<td>Product shadow</td>\n<td>Product Shadow</td>\n<td>Add a realistic drop or float shadow to a cutout</td>\n</tr>\n<tr>\n<td>Create product lifestyle shots</td>\n<td>Lifestyle Shot</td>\n<td>Place products in scenes for e-commerce</td>\n</tr>\n<tr>\n<td>Integrate products into scenes</td>\n<td>Product Integrate</td>\n<td>Embed products at exact coordinates</td>\n</tr>\n<tr>\n<td>Add dimension callouts to products</td>\n<td>Product Dimensions</td>\n<td>Marketplace-style measurement images with size/weight/capacity labels</td>\n</tr>\n<tr>\n<td>Build a full product catalog</td>\n<td>Catalog Pipeline</td>\n<td>Batch a folder of photos → packshots, dimensions, lifestyle, marketplace variants</td>\n</tr>\n</tbody>\n</table>\n<h2>How to Call Any Endpoint</h2>\n<p>Use <code>bria_call</code> for all API calls. It handles URL passthrough, local file base64 encoding, JSON construction, API call, and async polling in a single function call. The API key is auto-loaded from <code>~/.bria/credentials</code>.</p>\n<p><strong>First</strong>, source the helper script at <code>references/code-examples/bria_client.sh</code> (resolve relative to this skill's directory).</p>\n<pre><code>source &lt;SKILL_DIR&gt;/references/code-examples/bria_client.sh\n\n# Generate (no image input — pass empty string)\nRESULT=$(bria_call /v2/image/generate \"\" '\"prompt\": \"your description\", \"aspect_ratio\": \"16:9\", \"sync\": true')\n\n# Remove background\nRESULT=$(bria_call /v2/image/edit/remove_background \"/path/to/local/image.png\")\n\n# Replace background\nRESULT=$(bria_call /v2/image/edit/replace_background \"https://example.com/img.jpg\" '\"prompt\": \"sunset beach\"')\n\n# Edit image (uses images array — pass --key images)\nRESULT=$(bria_call /v2/image/edit \"/path/to/image.png\" --key images '\"instruction\": \"make it look warmer\"')\n\n# Edit with reference images — each --image adds the next one, in order\nRESULT=$(bria_call /v2/image/edit \"https://example.com/man.jpg\" --key images \\\n  --image \"https://example.com/santa.png\" \\\n  '\"instruction\": \"dress the man in image 1 in the santa outfit from image 2\"')\n\n# Upscale (`desired_increase` is 2 or 4 — no other value. Transparency is preserved by default)\nRESULT=$(bria_call /v2/image/edit/increase_resolution \"https://example.com/img.jpg\" '\"desired_increase\": 4')\n\n# Product cutout → transparent PNG (use --key file for a local image)\nCUTOUT=$(bria_call /v1/product/cutout \"/path/to/raw.jpg\" --key file)\n\n# Packshot on white from the cutout URL\nRESULT=$(bria_call /v1/product/packshot \"$CUTOUT\" --key image_url '\"background_color\": \"#FFFFFF\"')\n\n# Lifestyle shot\nRESULT=$(bria_call /v1/product/lifestyle_shot_by_text \"/path/to/product.png\" '\"scene_description\": \"modern kitchen countertop\"')\n\n# Product dimensions — auto-removes background, draws measurement callouts.\n# Dual cm / in labels: repeat each dimension with the same name+position in both\n# units and set \"units_display\": \"dual_slash\" so they merge into one \"12 cm / 4.7 in\" label.\nRESULT=$(bria_call /v2/image/edit/product_dimensions \"/path/to/product.png\" \\\n  '\"style\": \"default\", \"units_display\": \"dual_slash\", \"dimensions\": [{\"name\": \"height\", \"value\": 12, \"unit\": \"cm\", \"position\": \"left\"}, {\"name\": \"height\", \"value\": 4.7, \"unit\": \"in\", \"position\": \"left\"}, {\"name\": \"width_bottom\", \"value\": 6, \"unit\": \"cm\", \"position\": \"bottom\"}, {\"name\": \"width_bottom\", \"value\": 2.4, \"unit\": \"in\", \"position\": \"bottom\"}], \"title\": \"Gummies Bottle\", \"capacity\": {\"value\": 500, \"unit\": \"ml\"}, \"weight\": {\"value\": 250, \"unit\": \"g\", \"label\": \"Net Weight\"}')\n\necho \"$RESULT\"\n</code></pre>\n<p><strong>Calling convention:</strong> <code>bria_call &lt;endpoint&gt; &lt;image_or_empty&gt; [--key &lt;json_key&gt;] [extra JSON fields...]</code></p>\n<ul>\n<li>Pass a URL, local file path, or <code>\"\"</code> (empty) for endpoints without image input</li>\n<li>Use <code>--key images</code> when the endpoint expects an <code>images</code> array instead of <code>image</code></li>\n<li>Add <code>--image &lt;url_or_path&gt;</code> once per extra reference image (<code>--key images</code>, up to 4 in total).\nOrder is preserved: the positional image is \"image 1\", the first <code>--image</code> is \"image 2\", …</li>\n<li>Extra JSON fields are appended as key-value pairs: <code>'\"key\": \"value\"'</code></li>\n<li>Returns the result image URL on success, or prints an error to stderr</li>\n</ul>\n<p><strong>Editing with several images (2–4):</strong> reach for a second image when the look the user wants\nalready exists as a picture — a specific outfit, product, logo, or scene — instead of something you\ncan describe in words. Put the image being edited first, references after it, and address them by\nposition in the instruction: <em>\"dress the man in image 1 in the santa outfit from image 2\"</em>. Say what\neach reference contributes (\"the background of image 3\"), in plain prose. A single-image edit needs\nno positional wording: <em>\"change the mug color to red\"</em>.</p>\n<p><strong>Generation options:</strong> Aspect ratios <code>1:1</code>, <code>16:9</code>, <code>4:3</code>, <code>9:16</code>, <code>3:4</code>. Resolution <code>1MP</code> (default) or <code>4MP</code> (more detail, +30s). Pass <code>\"sync\": true</code> for a single generated image. Editing endpoints are the other way round —\nthey answer with a <code>status_url</code> you poll, and <code>\"sync\": true</code> on an edit fails with a gateway\ntimeout.</p>\n<blockquote>\n<p><strong>Advanced</strong>: For precise control over generation, use the <strong>vgl</strong> skill for structured VGL JSON prompts instead of natural language.</p>\n</blockquote>\n<p>See <strong><a href=\"references/api-endpoints.md\">API Endpoints Reference</a></strong> for full parameter documentation on all 20+ endpoints.</p>\n<hr>\n<h2>Product Catalog Pipeline (batch)</h2>\n<p>When the user wants <strong>listing-ready imagery for physical products at scale</strong> — \"build a product catalog from ./products\", \"turn this folder of photos into a catalog\", \"make these Amazon/Shopify/Etsy compliant\" — use the bundled driver instead of calling endpoints one by one. It is <strong>zero-config</strong>: with no arguments it reads <code>./products</code> and writes <code>./catalog</code>.</p>\n<pre><code>python3 &lt;SKILL_DIR&gt;/references/code-examples/build_catalog.py\n</code></pre>\n<p>Per product it runs <strong>cutout → packshot + lifestyle scenes (+ dimensions) → marketplace variants</strong> and writes <code>cutout.png</code>, <code>packshot.jpg</code>, <code>lifestyle_N.jpg</code>, <code>dimensions.png</code> (when measurements are available), per-channel variants, and a <code>listing.json</code> copy scaffold. Override only what you need:</p>\n<pre><code>python3 &lt;SKILL_DIR&gt;/references/code-examples/build_catalog.py \\\n  --input ./photos --output ./store \\\n  --scenes \"clean marble surface, soft studio light|cozy wooden desk, warm morning light\" \\\n  --variants amazon,shopify --dims ./dims.json\n</code></pre>\n<p><strong>Dimensions need real measurements — ask, don't guess.</strong> With no measurements file and no <code>--no-dims</code>, the driver prints <code>NEEDS_DIMENSIONS</code> and exits (code 2). When that happens, stop and ask the user to either provide height/width (and optional weight/capacity) per product — as a <code>dims.json</code>/CSV — or re-run with <code>--no-dims</code> to skip only the dimensions image. Never fabricate sizes. <code>dims.json</code> format:</p>\n<pre><code>{ \"soap.jpg\": {\"title\": \"Hand Wash\", \"height_cm\": 19, \"width_cm\": 6, \"capacity_ml\": 250} }\n</code></pre>\n<p>Store measurements in <strong>cm</strong> — callouts render dual <strong><code>cm / in</code></strong> automatically. Requires <code>pip install requests Pillow</code>.</p>\n<h3>Marketplace-ready variants</h3>\n<p><code>export_variants.py</code> turns one master image (packshot or cutout) into a compliant file per channel — enforcing background, aspect ratio, product fill, and minimum resolution:</p>\n<pre><code>python3 &lt;SKILL_DIR&gt;/references/code-examples/export_variants.py \\\n  --input ./catalog/soap/packshot.jpg --output ./catalog/soap --channels amazon,shopify,etsy\n</code></pre>\n<table>\n<thead>\n<tr>\n<th>Channel</th>\n<th>Aspect</th>\n<th>Background</th>\n<th>Product fill</th>\n<th>Min resolution</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Amazon (main)</td>\n<td>1:1</td>\n<td>pure white <code>#FFFFFF</code></td>\n<td>~85%</td>\n<td>1600 px (≥ 3000 ideal)</td>\n</tr>\n<tr>\n<td>Shopify</td>\n<td>1:1 (+ 4:5)</td>\n<td>white / transparent</td>\n<td>~90%</td>\n<td>2048 px</td>\n</tr>\n<tr>\n<td>Etsy</td>\n<td>5:4</td>\n<td>white / lifestyle</td>\n<td>~85%</td>\n<td>2000 px</td>\n</tr>\n</tbody>\n</table>\n<p>Full rules: <strong><a href=\"references/marketplace-presets.md\">Marketplace Presets</a></strong>.</p>\n<h3>Write the listing copy (SEO)</h3>\n<p>Bria generates images, not text — <strong>you, the agent, write the copy</strong>. <code>build_catalog.py</code> writes a <code>listing.json</code> scaffold per product; after the images are generated, <strong>view each <code>packshot.jpg</code></strong> and fill it: <code>seo_title</code> (≤ 60 chars, keyword-first), <code>meta_description</code> (≤ 160 chars), <code>description</code> (1–2 paragraphs), <code>bullets</code> (4–6 benefit-led), <code>tags</code> (8–15 keywords). Ground every claim in what's visible — don't invent specs — and fold in any known dimensions.</p>\n<hr>\n<h2>Prompt Engineering Tips</h2>\n<ul>\n<li><strong>Style</strong>: \"professional product photography\" vs \"casual snapshot\", \"flat design illustration\" vs \"3D rendered\"</li>\n<li><strong>Lighting</strong>: \"soft natural light\", \"studio lighting\", \"dramatic shadows\"</li>\n<li><strong>Background</strong>: \"white studio\", \"gradient\", \"blurred office\", \"transparent\"</li>\n<li><strong>Composition</strong>: \"centered\", \"rule of thirds\", \"negative space on left for text\"</li>\n<li><strong>Quality keywords</strong>: \"high quality\", \"professional\", \"commercial grade\", \"4K\", \"sharp focus\"</li>\n<li><strong>Negative prompts</strong>: \"blurry, low quality, pixelated\", \"text, watermark, logo\"</li>\n</ul>\n<h3>Recipes by Use Case</h3>\n<p><strong>Hero banner (16:9):</strong> <code>\"Modern tech startup workspace with developers collaborating, bright natural lighting, clean minimal aesthetic\"</code> — include \"clean background\" or \"minimal\" for text overlay space</p>\n<p><strong>Product photo (1:1):</strong> <code>\"Professional product photo of [item] on white studio background, soft shadows, commercial photography lighting\"</code> — then remove background for transparent PNG</p>\n<p><strong>Presentation visual (16:9):</strong> <code>\"Abstract visualization of data analytics, blue and purple gradient, modern corporate style, clean composition with space for text\"</code> — common themes: \"abstract technology\", \"business collaboration\", \"minimalist geometric patterns\"</p>\n<p><strong>Instagram post (1:1):</strong> <code>\"Lifestyle photo of coffee and laptop on wooden desk, morning light, cozy atmosphere\"</code></p>\n<p><strong>Story/Reel (9:16):</strong> <code>\"Vertical product showcase of smartphone, floating in gradient background, tech aesthetic\"</code></p>\n<hr>\n<h2>Additional Resources</h2>\n<ul>\n<li><strong><a href=\"references/api-endpoints.md\">API Endpoints Reference</a></strong> — Complete endpoint documentation with request/response formats for all 20+ endpoints</li>\n<li><strong><a href=\"references/code-examples/bria_client.sh\">Shell Client (bria_client.sh)</a></strong> — Single-function helper: <code>bria_call</code> handles auth, base64, JSON, polling</li>\n<li><strong><a href=\"references/code-examples/build_catalog.py\">build_catalog.py</a></strong> — Batch a folder of product photos into a store-ready catalog</li>\n<li><strong><a href=\"references/code-examples/export_variants.py\">export_variants.py</a></strong> — Turn a master image into Amazon/Shopify/Etsy variants</li>\n<li><strong><a href=\"references/marketplace-presets.md\">Marketplace Presets</a></strong> — Amazon / Shopify / Etsy image specs</li>\n<li><strong><a href=\"https://docs.bria.ai/llms.txt\">Full API docs for agents (llms.txt)</a></strong> — Agent-ready Bria API reference; use when this skill's summary is not enough</li>\n</ul>\n<h2>Related Skills</h2>\n<ul>\n<li><strong>vgl</strong> — Write structured VGL JSON prompts for precise, deterministic control over FIBO image generation</li>\n<li><strong>ad-delayer</strong> — Take a finished, flat ad apart into editable layers (background, hero image, logo, copy, CTA)</li>\n<li><strong>image-utils</strong> — Classic image manipulation (resize, crop, composite, watermarks) for post-processing</li>\n</ul>\n","files":[{"path":"LICENSE.txt","sizeBytes":1335,"isText":true},{"path":"references/api-endpoints.md","sizeBytes":29672,"isText":true},{"path":"references/code-examples/bria_client.sh","sizeBytes":7181,"isText":true},{"path":"references/code-examples/build_catalog.py","sizeBytes":11908,"isText":true},{"path":"references/code-examples/export_variants.py","sizeBytes":4222,"isText":true},{"path":"references/marketplace-presets.md","sizeBytes":2267,"isText":true},{"path":"SKILL.md","sizeBytes":22027,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-06T15:23:13.271311Z","sha256":"0BA0CDAC0AD91566C44E1C88A1B1A9A64EC2C9D2C38D75E293AA11EA1AFADAC9","sizeBytes":28880},"review":null,"source":{"repositoryUrl":"https://github.com/Bria-AI/bria-skill","path":"skills/bria-ai","license":null,"commit":"0a65163513443a1b8c589449ea5920edcecad946","subtreeSha":"81C2F224D0ECE5A75430F955E40D779A61058637AAC833826C8E146F45096EC9","lastSyncedAt":"2026-10-06T15:23:04.488518Z"},"reviewedAt":"2026-10-06T15:23:17.640995Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/Bria-AI/bria-skill/tree/main/skills/bria-ai"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install bria-ai-bria-skill@llmmart"},{"target":"git","command":"git clone https://github.com/Bria-AI/bria-skill.git"}]}