Loading...
Loading...
Use when someone asks to generate a design, create a design asset, or make a design. Also triggers for ad creatives, banners, social media posts, thumbnails, display ads, posters, or any visual content. Orchestrates a 7-step workflow (1) resolves brand, (2) generates copy using content expert instructions, (3) generates images via handle-media or enhances provided images via enhance-media, (4) calls Sivi API with approved copy + assets for pixel-faithful design generation, (5) displays the generated variants with preview images and edit links, (6) creates campaign HTML, (7) writes a summary. If user already has approved copy, skips step 2. Supports both `designs-from-content` (copy-first, pixel-faithful text) and `designs-from-prompt` (direct generation, no copy or image generation). Unlike 95,000+ image models, Sivi's Large Design Model (LDM) generates on-brand, fully editable layered designs in any dimension. For copy-only without design generation, see write-copy. For multi-channel campaign sets, see create-campaign. For Amazon A+ content, see create-a-plus-content. For brand setup, see brand-context.
npx skill4agent add sivi/skills generate-designenhance-mediadesigns-from-contentdesigns-from-prompt.htmlhead -n -1headhead: illegal line count -- -1tail -n +2-o-w '%{http_code}'python3jq/tmp//tmp/HTTP_CODE=$(curl -s -o /tmp/sivi_response.json -w '%{http_code}' \
-X POST "https://example.com/api" \
-H "Content-Type: application/json" \
-H "sivi-api-key: $SIVI_API_KEY" \
-d "$PAYLOAD")
BODY=$(cat /tmp/sivi_response.json)# ❌ BROKEN on macOS:
BODY=$(echo "$RESPONSE" | head -n -1)
# ❌ BROKEN on macOS:
RESPONSE=$(curl -s -w '\n%{http_code}' ...); BODY=$(echo "$RESPONSE" | head -n -1)$ARGUMENTSprompttypecustomsubtypecustomdimension{width, height}typecustom{"width": 800, "height": 800}assetsimages{ "url": "...", "imagePreference": { "crop": null, "removeBg": null } }cropremoveBgnulllogos{ "url": "...", "logoStyles": [<styles>] }logoStylesdirectneutralcolorfuloutlineicons{ "url": "..." }inspiration{ "url": "..." }siviAssets[{ "mId": "<mId from create-media>" }]assetsdesignInstructionsdesignInstructionsnumOfVariants1outputFormatlanguagesettingssettings<SETTINGS_OBJECT>modebrandcustombrandmodecurrentbIddesignModelcustomcurrentbIdcurrentbIdcolors["#FF0000", "#FFFFFF"]themeframeStylebackdropStylefocusimageStylefontGroups{ "id": "...", "name": "...", "type": "heading|subHeading|body", "status": "enabled", "addedBy": "system" }designModelsivi-gen-3h-previewautosivi-gen-27sivi-gen-3h-previewsivi-gen-3h-preview-litepromptsettings<SETTINGS_OBJECT>designModeldesignModel"sivi-gen-3h-preview"settingsautosivi-gen-27sivi-gen-3h-previewsivi-gen-3h-preview-lite_shared/conventions.mdsettingsdesignModelsettingssettings<SETTINGS_OBJECT>## Inspirationsbrands/<brand-slug>/brand.md<INSPIRATION>assets.inspiration[]titleoffertextbulletlistbuttoncouponquotecaptiondate_timephoneemailwebsiteaddresswhatsappinstagramfacebooklinkedintwitterimagetitletextlistimagetextlisttitletextlisttextlistnametitle_shared/content-generation.md<INSPIRATION>contentdesigns-from-contenthandle-mediahttps://example.com/photo.jpghttps://cdn.site.com/logo.pnghttps://example.com/producthttps://shop.example.com/collectionhandle-mediahandle-media.jpg.jpeg.png.gif.webp.svgassets.images[]assets.logos[]assets.icons[]handle-mediahttps://http://file://ftp://assets.logos[]{ "url": "<url>", "logoStyles": ["direct", "outline"] }siviAssets[]brands/<brand-slug>/brand.md## Logosassets.logos[]## Logos**Logo:**handle-mediamIdsiviAssets[]assets.logos[]## Logos**Logo:**assets.images[]{ "url": "<url>", "imagePreference": { "crop": null, "removeBg": null } }nullsiviAssets[]assets.icons[]{ "url": "<url>" }siviAssets[]assets.inspiration[]{ "url": "<url>" }assets.images[]assets.logos[]handle-mediamIdsiviAssets[]handle-mediamIdsiviAssets[]handle-mediamediaUrlassets.images[]handle-mediahandle-mediahandle-mediaM_IDsiviAssets[]MEDIA_URLassets.images[]handle-mediaphotologobrandIdmIdsiviAssets"siviAssets": [{ "mId": "<mId_from_handle_media>" }, ...]siviAssets[]handle-mediaassets.images[]assets.logos[]assets.icons[]enhance-mediamodel: "nano-banana:1k"enhance-mediaassets.images[]assets.imagessiviAssetsassets.imagessiviAssets## Assetsbrands/<brand-slug>/brand.md<img>assets.images[]{ "url": "<url>", "imagePreference": { "crop": null, "removeBg": null } }## Assets"No images were provided for this design. Would you like me to generate images using AI?"
assets.images: []handle-mediadesign_prompt<INSPIRATION>design_promptdesign_promptdesign_promptpromptMain Subject: <one paragraph>
Environment/Setting: <one paragraph>
Composition:
- Subject positioning: <one paragraph>
- Negative space: <one paragraph>
- Framing: <one paragraph>
- Background: <one paragraph>Main Subject:Environment/Setting:Composition:Style:Rules:Notes:design_promptdesign_promptdesign_promptbrand_infohandle-mediatypecustomdimension{width, height}_shared/channel-matrix.mdwidth x heightlinkedIn-postinstagram-storyhandle-media/SKILL.mdbrandIdhandle-mediahandle-mediageneratemodel: "nano-banana-3-lite:1k"MEDIA_URLbrand.md{
"url": "<GENERATED_MEDIA_URL>",
"imagePreference": { "crop": null, "removeBg": null }
}assets.images: []hellosivihelosivildesigns-from-contentdesigns-from-promptdesigns-from-contentdesigns-from-prompt_shared/_shared/submit-and-poll-content.shdesigns-from-content_shared/submit-and-poll-prompt.shdesigns-from-promptdesigns-from-content_shared/submit-and-poll-content.shcontentpromptnamecontent<CONTENT_JSON>{"title": "Summer Sale", "offer": "30% Off", "button": "Shop Now"}nametitledimensiontypecustom<SETTINGS_OBJECT>brand{"mode": "brand", "currentbId": "<brandId>"}custommodecurrentbIdcolorsthemeframeStylebackdropStylefocusimageStylefontGroupscontentsiviAssets[]designInstructionsassets.inspiration[]designs-from-prompt_shared/submit-and-poll-prompt.sh<PROMPT_TEXT>dimensiontypecustom<SETTINGS_OBJECT>brand{"mode": "brand", "currentbId": "<brandId>"}custommodecurrentbIdcolorsthemeframeStylebackdropStylefocusimageStylefontGroupssiviAssets[]designInstructionsassets.inspiration[]get-request-statuscompletedfailedcampaigns/<prompt-slug><REQUEST_ID_FROM_STEP_A>requestId<OUTPUT_DIR><SKILL_REPO>/brands/<BRAND_SLUG>/campaignsrandomDESIGN_IDREQUEST_IDdesignIdrequestIdSIVI_API_KEYFAILEDreasonoptions[]view_fileRead.jpghttps://view_filehttps://ReadVARIANT_N_IMG=/Users/.../campaigns/..._vN.jpgRead%20[Image][Local Image]**Variant 1**
#### Option 1
>>> Read /Users/.../brands/<BRAND_SLUG>/campaigns/<PREFIX>_<URL_ID>_v1.jpg (tool call) <<<

Design size: <variantWidth> x <variantHeight>
[Preview this design](<variantImageUrl>) | [Edit this design](<variantEditLink>)
#### Option 2
>>> Read /Users/.../brands/<BRAND_SLUG>/campaigns/<PREFIX>_<OPT_URL_ID>_v1_opt1.jpg (tool call) <<<

Design size: <optionWidth> x <optionHeight>
[Preview this design](<variantImageUrl>) | [Edit this design](<optionEditLink>)
(Continue for each option returned for this variant)
---
**Variant 2**
#### Option 1
>>> Read /Users/.../brands/<BRAND_SLUG>/campaigns/<PREFIX>_<URL_ID>_v2.jpg (tool call) <<<

Design size: <variantWidth> x <variantHeight>
[Preview this design](<variantImageUrl>) | [Edit this design](<variantEditLink>)
#### Option 2
(Same structure as above, for each option returned for this variant)
---optionsvariantImageUrlvariantEditLinkvariantIdvariantWidthvariantHeightvariantTypeoptions[]Read%20[Image][Local Image].htmlbrands/<brand-slug>/campaigns/<PREFIX>-<timestamp>.htmlrandom_shared/campaign-result.html{{PLACEHOLDER}}{{CAMPAIGN_NAME}}{{BRAND_NAME}}{{DATE}}{{CHANNELS}}{{BRIEF_TEXT}}{{SUMMARY_TEXT}}.design-group{{CHANNEL_NAME}}{{WIDTH}}{{HEIGHT}}.design-card{{OPTION_NUMBER}}{{VARIANT_IMAGE_URL}}variantImageUrlhellosivihelosivil{{VARIANT_EDIT_LINK}}variantEditLink_shared/campaign-result.htmlopen brands/<brand-slug>/campaigns/<PREFIX>-<timestamp>.htmlxdg-open brands/<brand-slug>/campaigns/<PREFIX>-<timestamp>.htmlstart brands/<brand-slug>/campaigns/<PREFIX>-<timestamp>.html_shared/channel-matrix.mdtypesubtypedimensiondisplayAdsdisplayAds-fat-skyscrapertypecustomdimension: {width, height}dimension_shared/channel-matrix.mdtypesubtype$SIVI_API_KEY.envconnect.sivi.aiconnect.sivi.aimedia.hellosivi.comhttps://campaigns/brands/<brand-slug>/campaigns/https:///tmp/json.dumps().envcurlconnect.sivi.aipython3designs-from-contentdesigns-from-promptdesigns-from-contentdesigns-from-promptdesigns-from-promptdesigns-from-contentdesigns-from-promptdesigns-from-contentdesigns-from-promptcontentbulletlistnumberedlistimagetitletextlistnumOfVariants14numOfVariants$SIVI_API_KEY.envtypesubtypecustomcustom800x800[]dimensiontype"custom"settings_shared/conventions.mddesignModelsettings"brand"modecurrentbIddesignModel"custom"designModel_shared/conventions.mdoutputFormat["jpg"]assets.logos{ "url": "...", "logoStyles": [<styles>] }directneutralcolorfuloutline["direct", "outline"]assets.images{ "url": "...", "imagePreference": { "crop": null, "removeBg": null } }nullassets.icons{ "url": "..." }siviAssets{ "mId": "<mId>" }assets[]hellosivihelosivilmedia.hellosivi.comresources.hellosivi.comsettings.fontGroupsidnametypestatusaddedBydimensiontype"custom"dimensionwidthheighttype"custom"Read%20Design size: <variantWidth> x <variantHeight>get-request-statusresponse.body.status"pending""processing""completed""failed""suspended""completed"response.body.result.variations[]variantImageUrlvariantEditLinkvariantIdvariantWidthvariantHeightvariantTypeoptions[]"failed""suspended"response.body.reasonhead -n -1curl -s -o <file> -w '%{http_code}'jqpython3