← Plugin catalog
Creativity

Orisu

Orisu v2.0.0

Product photos, ads and videos

Create a free account to save this plugin.

From the developer

Declared capabilities

  • Product photos
  • Ad creatives
  • Product video

Declared limitations

  • Do not trigger for a general creative-writing request.
  • Do not trigger for unrelated calendar management.
  • Do not treat Orisu as a direct social-media publisher.
  • Do not trigger for a text-only summary request.

Not specified in the available declarations: pricing & account requirements.

Onboarding example

Make store photos from this product image
Sources & dates

Developer declarations; not independently tested. Listing last checked Nov 7, 2026. Package observed Nov 6, 2026.

View package source →

Description

From the marketplace listing

Use a photo of your product and your brand references to guide store images, ad creatives and short videos, then review and refine them in chat. Orisu works from your real product photo rather than describing a new product, and each recipe checks the product, text and styling in every result so you can ask for fixes. Make a white-background packshot, lifestyle scenes and close-ups for a product page; a matching set of feed, portrait and story ads with your headline; new scenes, light or seasonal styling around the same product; and clean cutouts, removed distractions and larger prints. Resize a finished ad for other placements, try several creative directions side by side, or animate a product photo into a short vertical clip. Add captions to a video, a voiceover from your script, a music bed or sound effects, and thumbnails for your videos. Orisu can read your brand's colors, tone and guidelines to guide the styling, and it can run the saved workflows and apps you already have in Orisu.

Language: English · Automatically detected from descriptions.

Matches for “script”

Exact text from the indicated source. A mention alone does not establish support for your task.

Publisher full description

Use a photo of your product and your brand references to guide store images, ad creatives and short videos, then review and refine them in chat. Orisu works from your real product photo rather than describing a new product, and each recipe checks the product, text and styling in every result so you can ask for fixes. Make a white-background packshot, lifestyle scenes and close-ups for a product page; a matching set of feed, portrait and story ads with your headline; new scenes, light or seasonal styling around the same product; and clean cutouts, removed distractions and larger prints. Resize a finished ad for other placements, try several creative directions side by side, or animate a product photo into a short vertical clip. Add captions to a video, a voiceover from your script, a music bed or sound effects, and thumbnails for your videos. Orisu can read your brand's colors, tone and guidelines to guide the styling, and it can run the saved workflows and apps you already have in Orisu.

What changed

· 4 observations

Pricing references

Full description changed from “when generating images, video, audio, or text via Orisu — covers building new workflows from scratch, editing existing ones, and reusing published apps with...” to “for Orisu media tasks that no more specific Orisu skill covers, such as writing text with a model, generating or editing...

View comparison →
Capabilities & instructions

App-6a608e436adc8191affb546011f744cf updated; open the comparison for details. Orisu updated; open the comparison for details. Full description changed from “helps users create, inspect, edit, run, and share node-based workflows for generating AI images, video, audio, and text. Users can manage reusable apps and...”...

View comparison →
Capabilities & instructions

App-6a608e436adc8191affb546011f744cf updated; open the comparison for details. Orisu updated; open the comparison for details. Full description changed from “helps users create, inspect, edit, run, and share node-based workflows for generating AI images, video, audio, and text. Users can manage reusable apps and...”...

View comparison →

Technical updates · 1

Package or technical metadata updated

View technical comparison →

Files & skills

File archives

Plugin package17 files · 20.2 KBBrowse files →
orisu-workflows1 files · 12.9 KBBrowse files →
Skill instructions
ad-concept-variations3.34 KB

View saved version →

---
name: ad-concept-variations
description: Use when the user wants several distinct creative directions for the same product to compare or A/B test, such as different scenes, angles, moods or visual hooks for one brief. Not for resizing one ad (use ad-placement-adaptation) or a single coordinated set with one message (use product-ad-set).
---

# Ad concept variations

Give the user a few genuinely different directions for one product and brief, so they can pick or test. Each concept changes one clear thing (scene, mood, angle or hook) and keeps the product and the message the same.

## What you need

- A photo of the product (attached or a public URL).
- The brief: product, audience and the message or offer, exactly as the user states it.
- Optional: how many concepts. Default three, at most six in one go.

## Recipe

1. `get_brand_context` once; reuse its colors and tone. `upload_asset({ url })` for the photo. For studio or solid-backdrop concepts, cut the product out once with `remove_background` and edit the cutout; scene concepts can start from the photo.
2. Write the concepts before spending anything. Use `generate_text` only if the user wants help; otherwise draft them yourself. Make them differ on purpose, for example:
   - **Lifestyle:** the product in use in a real home moment.
   - **Bold studio:** the product on a saturated brand-color backdrop, hard light.
   - **Ingredient or detail story:** the product beside what it is made of.
   Show the list in one message and let the user drop or change any.
3. One `edit_image` per approved concept, all at the same aspect ratio so they compare fairly:

```json
{ "tool": "edit_image", "arguments": {
  "config": { "model": "nano-banana-2", "aspectRatio": "4:5", "resolution": "2K", "prompt": "Concept B, bold studio: keep this exact product unchanged on a saturated terracotta backdrop, hard directional light from the upper left, strong shadow. No text." },
  "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "ad-concept-variations-1"
} }
```

4. Present them side by side with `preview_asset`, each labeled with its concept letter and a one-line description of what it changes.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

One paid generation per concept. State the count before you start and pass `confirm_above_credits` on each call. On `timed_out: true`, `wait_for_run`. Redo only failed concepts, each with a new key.

## Quality check

- Each concept is clearly different from the others at a glance.
- The product is the same in all of them; no invented text, offers or claims.
- Don't claim one concept will perform better. Suggest testing them.

## Next edits to offer

- Turn the winner into a full placement set: product-ad-set or ad-placement-adaptation.
- Animate the winner: product-motion.
ad-placement-adaptation2.76 KB

View saved version →

---
name: ad-placement-adaptation
description: Use when the user has a finished image or ad and needs it in other sizes or aspect ratios for other placements (story 9:16, feed 1:1 or 4:5, banner 16:9, marketplace square) without cropping out the product or the text. Not for making new ads from a product photo (use product-ad-set).
---

# Ad placement adaptation

Reframe one finished creative into the other formats a campaign needs. `change_aspect_ratio` extends the scene around the existing image instead of stretching or cropping it, so the product and copy stay intact.

## What you need

- The finished image (attached or a public URL).
- Target placements. If not given, offer the common set: 1:1 feed, 4:5 portrait, 9:16 story, 16:9 banner. Skip the format the image is already in.

## Recipe

1. `upload_asset({ url })`; keep the `asset_id`.
2. One call per target format, always from the original (not from an earlier reframe):

```json
{ "tool": "change_aspect_ratio", "arguments": {
  "config": { "model": "nano-banana-2", "targetAspectRatio": "9:16" },
  "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "ad-placement-adaptation-1"
} }
```

`nano-banana-2` takes `1:1`, `4:5`, `5:4`, `3:4`, `4:3`, `2:3`, `3:2`, `9:16`, `16:9`, `21:9` and more.

3. If a reframe placed the headline where a platform covers it (bottom fifth of a story), fix that one image with `edit_image`: "Move the headline \"<exact text>\" to the top third. Change nothing else."
4. Show all formats with `preview_asset`, labeled by placement.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

One paid call per format; pass `confirm_above_credits`, ask before going over. On `timed_out: true`, `wait_for_run`. Redo only the formats that failed, each with a new key.

## Quality check

- Product fully visible, not cut at the edges, same as in the original.
- Headline and any copy readable, unchanged and not duplicated by the extension.
- The extended area matches the original's lighting and style; no visible seams.
- Story formats keep the bottom fifth clear of text.

## Next edits to offer

- More creative directions to test: ad-concept-variations.
- A motion version of the story format: product-motion.
ad-voiceover3.7 KB

View saved version →

---
name: ad-voiceover
description: Use when the user wants a voiceover or narration audio file read from a script, for an ad, product video, explainer or social post, in a chosen voice, accent or pace, or wants help writing a short ad script to voice. Delivers audio only; not for putting the voice onto a video, which this connection does not do.
---

# Ad voiceover

Turn an approved script into a voiceover audio file in one of the available voices. The result is a separate audio file for the user's editor or ad tool. This connection does not mix audio into a video.

## What you need

- The script, or the facts for one (product, benefit, offer, call to action).
- Optional: voice character (warm, energetic, calm; male or female; British or American), pace.

## Script

If the user has no script, draft one yourself or with `generate_text`: about 2.5 words per second, so a 15-second ad is around 35 words. Use only facts the user gave. Show it and get approval before voicing; voicing a script is what costs credits.

## Voices

Pick from the voice list in the `generate_speech` schema. Good defaults:

| Need | Voice id |
|---|---|
| Warm British male storyteller (George) | `JBFqnCBsd6RMkjVDRZzb` |
| Confident American female (Sarah) | `EXAVITQu4vr4xnSDxMaL` |
| Energetic American male creator (Liam) | `TX3LPaxmHKxFdv7VOQHJ` |
| Bright, warm American female (Bella) | `hpp4J3VqNfWAUOO0d1Us` |
| Clear British female educator (Alice) | `Xb7hH8MSUJpSbSDYk0k2` |

## Recipe

```json
{ "tool": "generate_speech", "arguments": {
  "config": { "model": "elevenlabs-eleven-v4", "voice": "JBFqnCBsd6RMkjVDRZzb", "speed": 1.0, "prompt": "Every mug is thrown by hand in our studio, one at a time. Find yours at the link below." },
  "confirm_above_credits": 20,
  "idempotency_key": "ad-voiceover-1"
} }
```

- `speed` runs from 0.7 to 1.2 on `elevenlabs-eleven-v4`. For a tight time slot, shorten the script before speeding it up.
- Two voice options to compare: two calls with different `voice` ids on the same script.
- Another language: translate the script first (ask the user to confirm the translation), then voice the translated text. This is a new voiceover, not a dub of an existing recording.
- Re-voice the user's own recording in another voice: `change_voice` with their audio as `input_audio` and a `voice` id from its list.

Deliver the audio from the result's `orisu_media.items`. Always put the file's link (`url` from `orisu_media.items`) in your reply as well. Some hosts show video and audio in the inline player but can't play them there, so the link is how the user opens or downloads the file.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

Pass `confirm_above_credits`. On `timed_out: true`, `wait_for_run`. If one sentence is mispronounced, fix the spelling in the script (for example, write a brand name phonetically) and re-voice; tell the user it is a new paid generation.

## Quality check

- Every word of the approved script is read, in order, nothing added.
- Brand and product names pronounced right; pace fits the slot.
- Voice matches what the user asked for.

## Next edits to offer

- Music under the voiceover, as a separate file: campaign-audio.
- A clip to pair it with: product-motion.
campaign-audio3.25 KB

View saved version →

---
name: campaign-audio
description: Use when the user wants original background music, a jingle-style music bed or sound effects for an ad, product video, podcast or social post, described by mood, genre, length or the sound itself (whoosh, pour, click, rain). Delivers audio files only; not for mixing audio into a video or voicing a script (use ad-voiceover).
---

# Campaign audio

Make original music beds and sound effects for a campaign. Each result is its own audio file for the user's editor. This connection does not mix audio into a video.

## What you need

- For music: mood, genre or reference feel, length and whether it should have vocals (default instrumental).
- For a sound effect: what it is and how long (up to 30 seconds).
- Don't imitate a named artist or a specific copyrighted song. Describe the feel instead ("warm acoustic, light percussion, hopeful").

## Music

```json
{ "tool": "generate_music", "arguments": {
  "config": { "model": "elevenlabs-music-v1", "duration": 30, "force_instrumental": true, "prompt": "Warm acoustic guitar and soft hand percussion, hopeful and calm, steady tempo for a 30-second product video, gentle ending." },
  "confirm_above_credits": 150,
  "idempotency_key": "campaign-audio-1",
  "wait_ms": 110000
} }
```

- Match the duration to the edit: 15, 30 or 60 seconds are common ad lengths. Music is the expensive part of audio (about 120 credits for 15 seconds, more for longer tracks; a sound effect or a short voiceover is a few credits), so confirm the length before generating.
- For a voiceover bed, ask for "sparse, no lead melody, leaves room for a voice".
- `minimax-music-3` also takes `lyrics` when the user wants a sung jingle with their own words.

## Sound effects

```json
{ "tool": "generate_sound_effects", "arguments": {
  "config": { "model": "elevenlabs-sound-effects-v1", "duration_seconds": 3, "prompt": "Coffee pouring into a ceramic mug, close and crisp, quiet room" },
  "confirm_above_credits": 10,
  "idempotency_key": "campaign-audio-2"
} }
```

Use `loop: true` for an ambient bed that repeats cleanly (rain, café murmur).

## Deliver

Give each file's link (`url` from `orisu_media.items`), labeled with its mood and length. Some hosts show audio in the inline player but can't play it there, so the link is how the user listens or downloads.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

Pass `confirm_above_credits` on each call. Music can take a minute or two: on `timed_out: true`, `wait_for_run`. Redo only the track that missed the brief, and say what you changed.

## Quality check

- Length matches the request; the ending doesn't cut off abruptly.
- Mood and instrumentation match the brief; no vocals unless asked.
- Sound effect is clean, without unrelated background noise.
ecommerce-product-photos5.99 KB

View saved version →

---
name: ecommerce-product-photos
description: Use when the user wants store or marketplace images made from a photo of their own product, such as a white-background packshot, lifestyle scenes, a detail close-up or a full product-page set (Shopify, Amazon, Etsy and similar). Not for a single retouch of an existing image (use product-image-cleanup or product-scene-styling) or for ads with a headline (use product-ad-set).
---

# Product Photo Studio

Turn one photo of a real product into a matching set of store images. Every image is an edit of the user's own photo rather than a new product made from a description. Generative edits can still change details, so check every image against the original and fix or flag anything that drifted.

## What you need

- A photo of the product, attached or as a public image URL. A plain phone photo works; one product per photo.
- Optional: product name, where it is used (kitchen, bathroom, desk, outdoors) and the look they want.
- Optional: which images they need. If they don't say, make the standard set.

No photo? Ask for one. Don't generate a product from a text description; it would not be their product. Ask at most one question about scene or style. Otherwise pick sensible defaults and say what you chose.

## Standard set

| Image | Aspect ratio | Instruction |
|---|---|---|
| Packshot | 1:1 | This exact product, centered on a pure white background, soft even studio light, true colors and label, no props. |
| Lifestyle | 4:5 | This exact product in a realistic scene that matches how it is used, natural light, product in sharp focus. |
| Detail | 1:1 | A close-up of this exact product's most important detail (texture, material, label), shallow depth of field. |
| Cutout | original | Optional: the product on a transparent background, for the user's own layouts. |

Match the scene to the product: a candle in a living room, a trail shoe on a trail, a serum on a bathroom shelf. Four images is the default; make fewer if the user asks for fewer.

## Recipe

1. **Brand look (once).** If the user mentions their brand or style, call `get_brand_context` once and reuse what it says in every instruction. If it is empty, keep the styling neutral.
2. **Store the photo.**

```json
{ "tool": "upload_asset", "arguments": { "url": "https://orisu.ai/review-assets/ceramic-mug.jpg" } }
```

Keep the returned `asset_id`.

3. **Packshot first.** Marketplaces often require a white main image, and it confirms the product survives the edit before you spend on the rest.

```json
{ "tool": "edit_image", "arguments": {
  "config": { "model": "nano-banana-2", "aspectRatio": "1:1", "resolution": "2K", "prompt": "Place this exact product, unchanged, centered on a pure white background. Soft even studio lighting, true colors, the label exactly as in the photo, no props, no added text." },
  "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "ecommerce-product-photos-1"
} }
```

4. **Check it** (see "Quality check"). If the product changed, retry once with a stricter instruction ("do not change the product's shape, label or color") before moving on. If the original background shows through or the photo appears as a framed picture, cut the product out with `remove_background` (step 6) and run the packshot on the cutout instead.
5. **Lifestyle and detail.** Same call on the original photo (not on the packshot), one call per image, with the table's instruction, `aspectRatio` and the chosen scene. For two lifestyle options, make two calls with different scenes rather than one vague prompt.
6. **Cutout (only if asked).**

```json
{ "tool": "remove_background", "arguments": { "config": {}, "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } } } }
```

7. **Deliver.** Show the set together with `preview_asset` (up to 8 asset ids from each result's `orisu_media.items`). Label each image (Packshot, Lifestyle, Detail) and offer the next

Preview of the first 4,000 characters. Read full instructions →

orisu-workflows6.97 KB

View saved version →

---
name: orisu-workflows
description: Use for Orisu media tasks that no more specific Orisu skill covers, such as writing text with a model, generating or editing a one-off image or video, upscaling or removing a video background, lip-syncing a photo to audio, changing the voice in a recording, transcription; for checking on runs and finding or showing files in the Orisu library; for running a saved Orisu workflow or app again; and for reading or adding to the brand's knowledge. Prefer the product photo, ad, scene, cleanup, placement, concept, motion, captions, voiceover, thumbnail and audio skills when the request matches one of them.
---

# Working with Orisu

Each Orisu tool does one job and returns its result in the conversation. Chain steps yourself: every result lists its files in `orisu_media.items`, and each file's `asset_id` is the input for the next step.

## Tools by job

| Job | Tool | Key inputs |
|---|---|---|
| Write text with a model | `generate_text` | `inputs.input_text_prompt`; optional `inputs.input_media` images to look at |
| New image | `generate_image` | `config.prompt`; optional `inputs.input_reference_images` |
| Edit an image | `edit_image` | `inputs.input_image`, `config.prompt` |
| Cut out the subject | `remove_background` | `inputs.input_image` |
| Enlarge an image | `upscale_image` | `inputs.input_image`, `config.scale_factor` |
| New aspect ratio | `change_aspect_ratio` | `inputs.input_image`, `config.targetAspectRatio` |
| Change lighting | `relight` | `inputs.input_image`, `inputs.input_instructions` |
| Image to SVG | `vectorize_image` | `inputs.input_image` |
| New video clip | `generate_video` | `config.prompt`; optional `inputs.input_first_frame` image |
| Sharper video | `upscale_video` | `inputs.input_video` |
| Remove video background | `remove_video_background` | `inputs.input_video` |
| Burn in captions | `add_video_subtitles` | `inputs.input_video` |
| Make a face speak | `generate_lipsync` | `inputs.input_audio` plus `inputs.input_image` or `inputs.input_video` |
| Voiceover | `generate_speech` | `config.prompt`, `config.voice` |
| Music | `generate_music` | `config.prompt` |
| Sound effect | `generate_sound_effects` | `config.prompt` |
| Re-voice a recording | `change_voice` | `inputs.input_audio`, `config.voice` |
| Speech to text | `transcribe_audio` | `inputs.input_audio` |

Every model tool takes `config.model` (the schema lists the choices and each model's options), estimates the cost, runs once and returns the run with its outputs. Media inputs are `{ "kind": "image" | "video" | "audio", "assetId": "..." }` references, never URLs.

Not available on this connection: dubbing into another language, publishing new apps, trimming or merging clips, mixing audio into video, scraping and feeds. If asked, say so and offer what is available (for example a new voiceover from a translated script instead of a dub).

## Example: a talking product mascot

Three steps, each feeding the next. First the voice:

```json
{ "tool": "generate_speech", "arguments": {
  "config": { "model": "elevenlabs-eleven-v4", "voice": "EXAVITQu4vr4xnSDxMaL", "prompt": "Meet the mug that keeps your coffee warm all morning." },
  "confirm_above_credits": 20,
  "idempotency_key": "workflows-1"
} }
```

Then the user's mascot photo, stored with `upload_asset`, is made to speak the audio from the first result:

```json
{ "tool": "generate_lipsync", "arguments": {
  "config": { "model": "veed-fabric-1.0-fast", "resolution": "720p" },
  "inputs": { "input_image": { "kind": "image", "assetId": "<photo asset_id>" }, "input_audio": { "kind": "audio", "assetId": "<voiceover asset_id>" } },
  "confirm_above_credits": 150,
  "idempotency_key": "workflows-2",
  "wait_ms": 110000
} }
```

Then `add_video_subtitles` on the resulting video, if the user wants captions.

## The user's files

```json
{ "tool": "upload_asset", "arguments": { "url": "https://orisu.ai/review-assets/ceramic-mug.jpg" } }
```

- Store a file with `uplo

Preview of the first 4,000 characters. Read full instructions →

product-ad-set5.67 KB

View saved version →

---
name: product-ad-set
description: Use when the user wants ad creatives for a product launch, sale, new collection, restock or seasonal campaign from a photo of their product and a message or offer, such as a coordinated set of square, 4:5 and story ads. Not for plain store photos without a message (use ecommerce-product-photos), for resizing an ad they already have (use ad-placement-adaptation) or for a video ad (use product-motion).
---

# Product Ad Campaign

Make a coordinated set of static ads from one product photo and one message: one image per placement, the same product, the same headline and the same look. The images are for the user to post or run themselves. This connection does not publish anything.

## What you need

- A photo of the product, attached or as a public image URL.
- The message: what is promoted and the exact offer, if any ("New Lavender Candle", "20% off this weekend", "Back in stock").
- Optional: brand colors or mood, and which placements. Default to the three below.

No photo? Ask for one first. Never make up an offer, price, discount, rating or claim. Use only what the user gave you.

## Default placements

| Placement | Aspect ratio | Layout |
|---|---|---|
| Feed | 1:1 | Product large and centered, headline at the top. |
| Portrait feed | 4:5 | Product in a styled scene, headline in the clear space above it. |
| Story / Reels | 9:16 | Product in the middle third, headline near the top, bottom fifth left empty for the platform's buttons. |

## Recipe

1. **Brand.** Call `get_brand_context` once and use its colors and tone in every placement.

```json
{ "tool": "get_brand_context", "arguments": {} }
```

If it is empty, ask for one color or mood, or keep it neutral.

2. **Headline.** Six words or fewer, in quotes inside the prompt. If the user has none, suggest three, let them pick and keep their choice verbatim:

```json
{ "tool": "generate_text", "arguments": {
  "config": { "model": "gemini/gemini-3.5-flash", "instructions": "Suggest three ad headlines of six words or fewer, one per line. Use only the facts given. No prices or claims that are not in the facts." },
  "inputs": { "input_text_prompt": "Lavender soy candle, hand-poured. Offer: 20% off this weekend." },
  "confirm_above_credits": 10,
  "idempotency_key": "product-ad-set-1"
} }
```

3. **Store the photo** with `upload_asset({ url })`, then cut the product out once. Ads put the product on a designed backdrop; edited from the raw photo, the model sometimes pastes the whole photo, old background included, as a framed card. A cutout prevents that.

```json
{ "tool": "remove_background", "arguments": { "config": {}, "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } } } }
```

Use the cutout's asset id (from `orisu_media.items`) as `input_image` for every placement.

4. **Feed placement first.** It sets the look; the others follow it.

```json
{ "tool": "edit_image", "arguments": {
  "config": { "model": "nano-banana-2", "aspectRatio": "1:1", "resolution": "2K", "prompt": "Square social ad. Place this exact product, unchanged, large and centered on a soft lavender background with a gentle natural shadow beneath it. Add the headline \"20% off this weekend\" in clean bold sans-serif type at the top. No other text, badges, prices or frames." },
  "inputs": { "input_image": { "kind": "image", "assetId": "<cutout asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "product-ad-set-2"
} }
```

5. **Check the headline and product** (see "Quality check"), then make the 4:5 and 9:16 placements with the same call, the table's layout and the same background, type and colors described in the same words.
6. **Deliver.** `preview_asset` with the three asset ids from the results' `orisu_media.items`, labeled by placement, and the headline used.

## Cost and waiting

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call 

Preview of the first 4,000 characters. Read full instructions →

product-image-cleanup3.49 KB

View saved version →

---
name: product-image-cleanup
description: Use when the user wants an existing product photo cleaned up for a store or listing: background removed or made white, a distracting object, dust or a reflection removed, the image enlarged or sharpened, or a vector (SVG) version of a logo or flat graphic. Not for new scenes (use product-scene-styling) or a full photo set (use ecommerce-product-photos).
---

# Product image cleanup

Fix an image the user already has, without changing the product: cut it out, clean the background, remove distractions, enlarge it, or trace a flat graphic to SVG. Each fix is one call; chain them in the order below.

## What you need

- The image (attached or a public URL).
- What to fix. If they say "clean it up", do background → distractions → enlarge, and say so.

## Recipe

Store it first with `upload_asset({ url })` and keep the `asset_id`. Then use what applies, passing each result's asset id (from `orisu_media.items`) to the next step:

1. **Transparent cutout.**

```json
{ "tool": "remove_background", "arguments": { "config": {}, "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } } } }
```

2. **White background or a small removal** (dust, a cable, a reflection, a price sticker the user wants gone):

```json
{ "tool": "edit_image", "arguments": {
  "config": { "model": "nano-banana-2", "prompt": "Remove the dust specks and the cable behind the product. Change nothing else: same product, label, colors, framing and light." },
  "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "product-image-cleanup-1"
} }
```

Remove only what the user asked. Never remove or alter labels, logos, ingredients or safety text on the product.

3. **Enlarge** for print or zoom (2x or 4x):

```json
{ "tool": "upscale_image", "arguments": {
  "config": { "model": "topaz-upscale", "scale_factor": 4 },
  "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "product-image-cleanup-2"
} }
```

Upscale last, after edits, so later edits don't work on a huge file.

4. **SVG** for a logo, icon or flat illustration (not photos): `vectorize_image` with `config: {}` and the same `inputs`.
5. Show the before and after with `preview_asset` (original asset id and result) so the user can compare.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

Each step is a paid call; pass `confirm_above_credits` and ask before going over. On `timed_out: true`, call `wait_for_run`. If a step fails, redo that step on the last good result, not the whole chain.

## Quality check

- Cutout edges are clean (no halo, no missing parts such as handles or straps).
- Only the requested things were removed; product text and details unchanged.
- Upscaled image has no invented texture on the label.

## Next edits to offer

- New scenes for the cleaned product: product-scene-styling.
- The full store set: ecommerce-product-photos.
product-motion4.47 KB

View saved version →

---
name: product-motion
description: Use when the user wants a short video clip of their product made from a photo, such as a slow turn, a push-in or an orbit, a vertical clip for Reels, TikTok or Stories, or a looping product shot for a store page. One clip at a time. Not for edited multi-clip ads, trimming or merging footage, or talking presenters, which this connection does not do.
---

# Product motion

Animate a product photo into one short clip. The photo is the first frame, so the clip starts from the user's real product. This connection makes single clips. It cannot cut several clips together, trim footage or mix music under a video. Say so if the user asks for a full edited ad.

## What you need

- A photo of the product, or one of the images made with the photo or ad skills (an asset id).
- The motion, in a few words ("slow push-in", "the bottle turns slowly", "camera orbits the shoe"). If not given, propose one that suits the product.
- Format: 9:16 for Reels, TikTok and Stories (default), 16:9 for YouTube or a site banner.

## Defaults

- `veo3.1`, 9:16, 6 seconds, 720p, no sound. One clip, about 180 credits and one to two minutes.
- Video costs far more than an image (a 2K image is about 10 credits). Always say that one clip is being made and get a go-ahead if the estimate is above the limit.
- Describe camera and light movement, not new content. Only animate what is already in the first frame: an empty mug should not fill with coffee, a closed box should not open.

## Recipe

1. Need a better start frame? Make it first with the ecommerce-product-photos or product-scene-styling skill. A clean, well-lit still gives a cleaner clip.
2. `upload_asset({ url })` if the photo isn't in Orisu yet; keep the `asset_id`.
3. Generate the clip:

```json
{ "tool": "generate_video", "arguments": {
  "config": { "model": "veo3.1", "aspectRatio": "9:16", "duration": 6, "resolution": "720p", "prompt": "Slow, steady push-in toward the ceramic mug while soft morning light drifts across the table. The mug, its glaze and its shape stay exactly as in the first frame. Nothing new appears. No text, no people." },
  "inputs": { "input_first_frame": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 200,
  "idempotency_key": "product-motion-1",
  "wait_ms": 110000
} }
```

4. Video usually takes a few minutes. If the result has `timed_out: true`, tell the user it is rendering and call `wait_for_run` with the run `id` until it completes. Don't start a second clip while waiting.
5. Deliver the clip from `orisu_media.items` (video comes back as a link). Describe what to look for and offer changes. Always put the file's link (`url` from `orisu_media.items`) in your reply as well. Some hosts show video and audio in the inline player but can't play them there, so the link is how the user opens or downloads the file.

Other models: `kling-3.0` (1:1, 16:9 or 9:16, 3–15 s) and `seedance-2.0` (4–15 s) also start from an image. `veo3.1` and `kling-3.0` can add sound with `generateAudio: true`; only add it if the user wants ambient sound.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

Pass `confirm_above_credits` on every video call; on `COST_CONFIRMATION_REQUIRED`, show the estimate and wait for a yes. A failed clip is retried once with a simpler motion description; tell the user before a second paid retry.

## Quality check

- The product keeps its shape, label and color through the 

Preview of the first 4,000 characters. Read full instructions →

product-scene-styling3.79 KB

View saved version →

---
name: product-scene-styling
description: Use when the user has a photo of their product and wants it shown in a different setting, season, mood or light (on a marble counter, in a beach scene, at golden hour, in holiday styling) while the product itself stays exactly the same. Not for a full product-page set (use ecommerce-product-photos), for removing a background only (use product-image-cleanup) or for ads with a headline (use product-ad-set).
---

# Product scene styling

Keep the user's product exactly as it is and change everything around it: the setting, props, season, mood or light. The result is a small set of scene options the user can pick from.

## What you need

- A photo of the product (attached or a public image URL).
- The direction: a setting, a season or a mood ("cozy autumn kitchen", "summer picnic", "dark moody studio"). If they only say "make it nicer", offer three concrete directions and let them pick.

## Defaults

- Two scenes per direction, 4:5, unless the user asks for another format or count.
- Product stays the hero: in focus, at a natural size for the scene, not hidden by props.

## Recipe

1. `upload_asset({ url })` for the photo; keep the `asset_id`. If the brand has a look, call `get_brand_context` once and reuse it.
2. One `edit_image` call per scene:

```json
{ "tool": "edit_image", "arguments": {
  "config": { "model": "nano-banana-2", "aspectRatio": "4:5", "resolution": "2K", "prompt": "Keep this exact product unchanged: same shape, label, colors and size. Place it on a light oak kitchen counter in a cozy autumn scene with soft window light, a linen napkin and a few cinnamon sticks behind it. Product in sharp focus. No added text." },
  "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "product-scene-styling-1"
} }
```

3. **Light only** (the scene is fine but the light is wrong): use `relight` instead of a new scene.

```json
{ "tool": "relight", "arguments": {
  "config": { "initialLatent": "Left" },
  "inputs": { "input_image": { "kind": "image", "assetId": "<scene asset_id>" }, "input_instructions": "warm golden-hour sunlight from the left, long soft shadows" },
  "confirm_above_credits": 40,
  "idempotency_key": "product-scene-styling-2"
} }
```

4. Show the options with `preview_asset` and ask which to keep. Iterate on the chosen one with another `edit_image` on that result ("same scene, remove the napkin").

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

One paid generation per image; pass `confirm_above_credits` and ask before going over. On `timed_out: true`, call `wait_for_run`. Redo only the image that failed.

## Quality check

- Product unchanged: shape, label, color, count, proportions.
- Scene lighting and shadows plausible for where the product sits; no floating product.
- Props don't cover or compete with the product; no invented text or logos.

If the product drifted, retry once with "do not change the product in any way" first in the prompt. If it still drifts, tell the user and offer `remove_background` plus a simpler scene.

## Next edits to offer

- Other formats of the chosen scene: the ad-placement-adaptation skill.
- Turn it into an ad with a headline: the product-ad-set skill.
- Animate the chosen scene: the product-motion skill.
thumbnail-and-cover3.16 KB

View saved version →

---
name: thumbnail-and-cover
description: Use when the user wants a thumbnail or cover image for a video, Reel, YouTube upload, podcast episode, blog post or product launch, built from their product photo or an image they supply, with a short readable title. Not for ad sets across placements (use product-ad-set).
---

# Thumbnail and cover

Make cover images that read at a glance: one subject, one short title, strong contrast. Built from the user's own product photo or image, so the product or the supplied face stays faithful.

## What you need

- The main image: a product photo, a still from their video or a photo they are allowed to use. Use people's faces only from photos the user supplies, and keep them as they are.
- The title: four words or fewer works best. Use the user's exact wording.
- Where it goes: YouTube 16:9 (default), Reels or TikTok cover 9:16, podcast or square post 1:1.

## Recipe

1. `upload_asset({ url })` for the image; `get_brand_context` once for colors and type style. For a product on a designed background, cut it out first with `remove_background` and use the cutout as `input_image`, so the old background isn't pasted in as a framed photo.
2. Make two variants in one go so the user can choose. One call per variant, each with a different layout:

```json
{ "tool": "edit_image", "arguments": {
  "config": { "model": "nano-banana-2", "aspectRatio": "16:9", "resolution": "2K", "prompt": "YouTube thumbnail. Keep this exact product unchanged, large on the right third, on a deep navy background with a soft rim light. Bold white title \"Made by Hand\" on the left, large and easy to read at small size. No other text." },
  "inputs": { "input_image": { "kind": "image", "assetId": "<asset_id>" } },
  "confirm_above_credits": 40,
  "idempotency_key": "thumbnail-and-cover-1"
} }
```

Second variant: swap sides, change the background color or try a close-up crop of the product.

3. Show both with `preview_asset`, and remind the user that thumbnails are judged at about 200 pixels wide.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

One paid generation per variant; pass `confirm_above_credits`. On `timed_out: true`, `wait_for_run`. Redo only a failed variant, with a new key.

## Quality check

- Title spelled exactly, readable when small, not covering the product or a face.
- Subject faithful to the supplied image and placed on the new background, not inside a rectangle of the old photo; no invented logos, badges or claims.
- Correct aspect ratio for the platform.

Generated lettering is not guaranteed. If the title is wrong after one retry, offer a version without text that the user can add a title to in their own editor.
video-captions3.67 KB

View saved version →

---
name: video-captions
description: Use when the user wants subtitles or captions burned into a video they have, for example captioned Reels or TikToks or accessibility captions, or a text transcript of an audio recording such as a voiceover or podcast. Not for translating or dubbing speech into another language, which this connection does not do yet.
---

# Video captions

Burn styled captions into a video with speech, or transcribe an audio recording. Captions come from the speech in the video itself; nothing is invented.

## What you need

- The video, attached or as a public URL. It must contain speech; a silent clip gets no captions.
- Optional: caption style, position (top, center, bottom) and color. Defaults: `veed-simple`, bottom, language detected automatically.

## Recipe

1. Store the video with `upload_asset({ url })`. Use a URL for video; data URLs are for small files only.
2. Burn in captions:

```json
{ "tool": "add_video_subtitles", "arguments": {
  "config": { "styleId": "veed-simple", "language": "auto", "position": "bottom" },
  "inputs": { "input_video": { "kind": "video", "assetId": "<asset_id>" } },
  "confirm_above_credits": 60,
  "idempotency_key": "video-captions-1",
  "wait_ms": 110000
} }
```

For a story or Reel, use `position: "center"` or `"top"` if the platform's buttons would cover the bottom. Bold styles: `veed-hustle`, `veed-karl`, `veed-glide`. Quiet styles: `veed-simple`, `veed-plain`, `veed-lowkey`.

3. **Transcript of an audio recording** (mp3, wav, m4a, such as a voiceover or podcast). `transcribe_audio` takes audio only, and this connection cannot pull the soundtrack out of a video. For a transcript of a video, ask the user for its audio track as a separate file, or offer burned-in captions instead. Never pass a video as an audio reference.

```json
{ "tool": "transcribe_audio", "arguments": {
  "config": { "model": "elevenlabs-scribe-v2", "language": "auto" },
  "inputs": { "input_audio": { "kind": "audio", "assetId": "<audio asset_id>" } },
  "confirm_above_credits": 20,
  "idempotency_key": "video-captions-2"
} }
```

4. If the result has `timed_out: true`, call `wait_for_run` with the run `id`. Deliver the captioned video link from `orisu_media.items`. Always put the file's link (`url` from `orisu_media.items`) in your reply as well. Some hosts show video and audio in the inline player but can't play them there, so the link is how the user opens or downloads the file.

## Cost, waiting and retries

Give every paid call its own `idempotency_key`, unique to that request (for example `mug-packshot-1`). Send the same key again only to resend a call that was interrupted or whose result you never saw, such as after a permission or file-download prompt; the first result then comes back instead of a second charge. Before re-running anything, check `list_runs` or `get_run` for a result that already finished. To redo something on purpose (a failed run, an image that missed, changed settings), use a new key: the old one would replay the same result, failure included.

Pass `confirm_above_credits`; ask before going over. If captioning fails, check the video has audible speech before retrying.

## Quality check

- Captions match what is said and are timed to the speech.
- Readable on a phone: not covering the product or the platform's buttons.
- Brand and product names spelled right. If a name is wrong, tell the user; this tool has no manual caption editor.

## Not available here

Translating or dubbing a video into another language, extracting a video's soundtrack, and editing caption text by hand are not available on this connection yet. Offer captions in the original language, or a new voiceover in another language from a translated script (ad-voiceover).
Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package author
Orisu
Commerce declaration
Does not support commerceThis does not establish whether access is free or paid.
Review scenarios
8 positive · 4 negativeScenario counts, not test results.

Declared capabilities

  • Product photos
  • Ad creatives
  • Product video
  • Scene styling
  • Image cleanup
  • Video captions
  • Voiceovers
  • Music and sound effects
  • Brand knowledge

Package observed Nov 6, 2026.

Technical details
First seen
Oct 1, 2026 · 12:00 UTC
Last seen
Nov 7, 2026 · 06:00 UTC
Latest observed change
Oct 26, 2026 · 00:04 UTC
Collection status
Collected

plugin_asdk_app_6a608e436adc8191affb546011f744cf

Download plugin data (JSON)

Plugin details: served from cache. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.