Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Generate professional advertising images with AI models holding/wearing products. ✅ USE WHEN: - Need a person/model in the image WITH a product - Creating fashion ads, product campaigns, commercial photography - Want consistent model face across multiple shots - Need professional lighting/camera simulation - Input: product image + model reference (or catalog) ❌ DON'T USE WHEN: - Just editing/modifying an existing image → use nano-banana-pro - Product-only shot without a person → use nano-banana-pro - Already have the hero image, need variations → use multishot-ugc - Need video, not image → use veed-ugc after generating image - URL-based product fetch with brand profile → use ad-ready instead OUTPUT: Single high-quality PNG image (2K-4K resolution)
Generate professional advertising images with AI models holding/wearing products. ✅ USE WHEN: - Need a person/model in the image WITH a product - Creating fashion ads, product campaigns, commercial photography - Want consistent model face across multiple shots - Need professional lighting/camera simulation - Input: product image + model reference (or catalog) ❌ DON'T USE WHEN: - Just editing/modifying an existing image → use nano-banana-pro - Product-only shot without a person → use nano-banana-pro - Already have the hero image, need variations → use multishot-ugc - Need video, not image → use veed-ugc after generating image - URL-based product fetch with brand profile → use ad-ready instead OUTPUT: Single high-quality PNG image (2K-4K resolution)
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Generate professional fashion/product advertising images using ComfyDeploy's Morpheus Fashion Design workflow.
The logo input has been removed from the API. Do NOT pass it. Only two image inputs exist: product → the product being advertised model → frontal face photo of the model
Configuration packs MUST NEVER be left on auto or AUTO. auto = empty values = neutral, boring images with no creative direction. Always select deliberately based on the brief. Custom string values are allowed and encouraged.
PackHow to Choosestyle_packBrand personality: luxury→premium_restraint, sports→cinematic_realism, street→street_authenticcamera_packSports→sony_a1, editorial→hasselblad_x2d, street→leica_m6lens_packPortrait compression? Wide? Match shot type and moodlighting_packGolden hour? Studio? Natural window? Match briefpose_discipline_packSport action→sport_in_motion, commercial→commercial_front_facing, UGC→street_style_candid_walkfilm_texture_packWarm editorial→kodak_portra_400, cinematic→kodak_vision3_500t, clean→digital_clean_no_emulationenvironment_packbeach_minimal, urban_glass_steel, street_crosswalk — or custom stringcolor_science_packwarm_golden_editorial, neutral_premium_clean, cinematic_low_contrasttime_weather_packgolden_hour_clear, bright_midday_sun, overcast_winter_daylight
Endpoint: https://api.comfydeploy.com/api/run/deployment/queue Deployment ID: 1e16994d-da67-4f30-9ade-250f964b2abc
const response = await fetch("https://api.comfydeploy.com/api/run/deployment/queue", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer YOUR_API_KEY" }, body: JSON.stringify({ "deployment_id": "1e16994d-da67-4f30-9ade-250f964b2abc", "inputs": { "product": "/* product image URL */", "model": "/* model face URL */", "brief": "Detailed scene, pose, lighting, mood, product placement...", "target": "Target audience: demographics, psychographics, lifestyle...", "input_seed": -1, "branding_pack": "logo_none", "aspect_ratio": "9:16", "style_pack": "street_authentic", "camera_pack": "sony_a1", "lens_pack": "zeiss_otus_55", "film_texture_pack": "kodak_portra_400", "color_science_pack": "warm_golden_editorial", "shot_pack": "medium_shot", "pose_discipline_pack": "street_style_candid_walk", "lighting_pack": "natural_window", "time_weather_pack": "golden_hour_clear", "environment_pack": "urban_glass_steel", "intent": "awareness" } }) });
GitHub: https://github.com/PauldeLavallaz/model_management Local path: ~/clawd/models-catalog/catalog/images/
User provides model image → use directly User describes model → search catalog, select best match No specification → choose based on brief context
# By body type cat models-catalog/catalog/catalog.json | python3 -c " import json,sys; data=json.load(sys.stdin) for t in data['talents']: if t.get('body_type') in ['curvy','plus_size']: print(t['id'], t['name'], t['ethnicity']) " # By ethnicity + gender cat models-catalog/catalog/catalog.json | jq '[.talents[] | select(.ethnicity == "hispanic" and .gender == "female") | {id, name, body_type}]'
Write it as a real photography director's brief — specific, physical, cinematic:
Campaña UGC TikTok para CasanCrem Light La Serenísima. Joven de contextura robusta sostiene el pote con sonrisa cómplice en cocina hogareña argentina. Pose relajada, apoyada en la mesada, mirando directo a cámara con energía y complicidad. El pote visible y protagonista en la mano. Luz de ventana natural, cálida de tarde. Estilo UGC auténtico, no publicitario clásico. Cuerpo real, relatable, no atlético.
Oakley snowboarding campaign. Rider on metal rail in snowpark, body slightly rotated, arms open for balance, eyes on the line. Technical authentic freestyle pose. Alpine snowpark, full midday daylight, compacted snow, metal structures. Natural sun bouncing off snow — saturated colors, strong contrast. Documentary approach — freeze rider on rail, sharp body and board. Real session frame: balance, concentration, style merged.
PackOptionsstyle_packpremium_restraint, editorial_precision, cinematic_realism, cinematic_memory, campaign_hero, product_truth, clean_commercial, street_authentic, archive_fashion, experimental_authorialshot_packfull_body_wide, medium_shot, close_up, low_angle_hero, three_quarter, waist_upcamera_packarri_alexa35, canon_r5, hasselblad_x2d, leica_m6, sony_a1lens_packcooke_anamorphic_i_50, leica_noctilux_50, zeiss_otus_55, wide_distortion_controlledlighting_packgolden_hour_backlit, natural_window, studio_three_point, bright_midday_sunpose_discipline_packcommercial_front_facing, street_style_candid_walk, sport_in_motionfilm_texture_packkodak_portra_400, fujifilm_velvia_50, kodak_vision3_500t, digital_clean_no_emulationcolor_science_packneutral_premium_clean, warm_golden_editorial, cinematic_low_contrastenvironment_packbeach_minimal, urban_glass_steel, street_crosswalk — or custom descriptive stringtime_weather_packgolden_hour_clear, bright_midday_sun, overcast_winter_daylightbranding_packlogo_none ← always unless logo explicitly requestedintentawareness, consideration, conversion, retentionaspect_ratio9:16, 16:9, 1:1, 4:5, 3:4
def comfy_upload(filepath: str, api_key: str) -> str: from pathlib import Path import requests p = Path(filepath) mime = "image/png" if p.suffix == ".png" else "image/jpeg" with open(p, "rb") as f: r = requests.post( "https://api.comfydeploy.com/api/file/upload", headers={"Authorization": f"Bearer {api_key}"}, files={"file": (p.name, f, mime)}, timeout=60 ) r.raise_for_status() return r.json()["file_url"]
Talent (identity) > Product fidelity > Fit > Pose > Style > Location > Branding
Imagen negra/vacía = filtro de moderación de Google/Gemini activado. No usar personas famosas o celebridades Modificar el brief eliminando referencias problemáticas API Key: NO pasar como parámetro. Ya está configurado en ComfyDeploy.
El campo model puede venir de dos fuentes: Opción A — Catálogo (default): ~/clawd/models-catalog/catalog/images/model_XX.jpg Usar cuando el guión no requiere rasgos muy específicos. Opción B — Portrait Generator (cuando el guión lo requiere): portrait-generator → imagen_1 (vista frontal) → model en Morpheus Usar cuando necesitás: etnia muy específica, edad exacta, rasgos únicos, personaje que no existe en el catálogo de 114 modelos. Regla: imagen_1 del Portrait Generator = siempre la vista frontal = la correcta para model.
Personaje mayor de 60 años Etnia muy específica no disponible en catálogo Rasgos físicos únicos (cicatrices, vitiligo, asimetría facial) Cualquier personaje que el guión describa con detalle
Personaje genérico / sin especificaciones Cualquier modelo joven-adulto estándar Cuando la velocidad importa más que la precisión
Agent frameworks, memory systems, reasoning layers, and model-native orchestration.
Largest current source with strong distribution and engagement signals.