← Plugin catalog
Creativity

FLORA

FLORA v1.0.0

Publisher description

From the marketplace listing

The FLORA plugin lets users generate, organize, and iterate on visual assets — hero images, moodboards, lifestyle shots, promo graphics — directly from a conversation. When used alongside other connected tools like Notion, Google Drive, or Slack, the same conversation can pull in context and write results back to where the team already works. Authentication is OAuth via your existing FLORA account.

Language: English · Automatically detected from descriptions.

Files & skills

File archives

Plugin package10 files · 7.73 KBBrowse files →
Skill instructions
flora-batch-consistent2.2 KB

View saved version →

---
name: flora-batch-consistent
description: Apply one FLORA technique across many items so every result shares a single consistent style — a product list or spreadsheet into PDP shots, a folder of sketches into renders, a set of photos relit the same way. Use when the user supplies a list, file, or set of images and wants the same treatment on each. Always total the cost and get confirmation before running. Do not use for a single item.
---

# Batch a FLORA technique across many items

Consistency here comes from running **one technique** over every item, not from
repeating a prompt and hoping. Pick the technique once; vary only the inputs.

**Input:** a list of items (rows, URLs, attached files) and the treatment wanted.
**Output:** one output URL per item, a total cost, and a list of any failures.

## Steps

1. **Build the item list.** Read the spreadsheet, list, or attachments into an
   explicit set. Show the user the parsed list and the count before going further —
   a misparsed column is cheaper to catch now than after spending.

2. **Resolve one technique** with `flora_list_techniques` and `flora_get_technique`.
   One technique for the whole batch. If items need different treatments, that is
   two batches, and say so.

3. **Total the cost and stop.** Multiply `run_cost` by the item count and state it
   plainly: *"24 items x $0.117 = $2.81. Proceed?"* **Wait for a yes.** Do this
   even when the per-item cost looks trivial — the batch is where spend compounds.

4. **Run them,** a few at a time rather than all at once. Poll each with
   `flora_get_run`.

5. **Report.** One row per item: source, output URL, cost. Then the total.

## Rules

- **Keep going when one item fails.** Collect failures and report them at the end
  as a list. Never abort a paid batch partway and leave the user guessing what ran.
- **Never re-run a completed item** to "fix" a batch. Each retry bills again.
- **Attached files already have URLs** on `files.openai.com` or `cdn.openai.com`,
  both allowlisted — pass them straight through. Never base64-encode anything.
- **You cannot see any output.** Report URLs and let the user judge them.
- If the user asks for more items than the confirmed count, re-total and re-confirm.

Referenced files: 1

flora-canvas-iterate2.23 KB

View saved version →

---
name: flora-canvas-iterate
description: Find and build on work that already exists in a FLORA project — inspect a canvas, review past generations and what they cost, and regenerate specific assets with new direction applied. Use when the user refers to a named project, "my canvas", or earlier work ("the hero images from last week", "what's in the Meridian project"). Do not use to start new work in an empty project.
---

# Iterate on existing FLORA work

A FLORA project outlives the conversation. Its canvas, every generation, and the
cost of each are all still there, so revision starts from what exists rather than
from a blank prompt.

**Input:** a project reference and the change wanted.
**Output:** what is on the canvas today, plus any regenerated assets.

## Steps

1. **Find the project.** `flora_list_projects` (most recently active first) and
   match on the user's wording. Never create a project when the user named an
   existing one — ask if the name is ambiguous.

2. **Read what is there.** `flora_get_canvas` for structure and how nodes connect;
   `flora_list_canvas_nodes` for the media nodes and their asset URLs. Use
   `flora_list_generations` to see what was made, with cost and status.

3. **Identify the assets the user means.** Name them back before changing anything.
   "Two hero images, both generated Tuesday" is confirmable; "the ones you meant"
   is not.

4. **Apply the change.** Regenerate with `flora_generate`, or re-run the original
   technique with `flora_run_technique` when the asset came from one —
   `flora_list_technique_runs` shows which technique produced what.

5. **Report** the new outputs, their cost, and where they landed on the canvas.

## Rules

- **Read before writing.** The user may have edited the canvas between turns.
- **Additive only.** Regenerating adds new nodes; it does not replace the
  originals. Say so, so the user knows the earlier version is still there.
- **Confirm before spending.** State the cost of the regeneration and wait.
- **You cannot see any asset.** You have URLs, node labels, and generation
  metadata. Reason from those; never claim to have looked at the artwork.
- Prefer the narrowest read that answers the question. A whole-canvas dump on a
  large project is mostly noise.

Referenced files: 1

flora-ooh-placements7.27 KB

View saved version →

---
name: flora-ooh-placements
description: Put a finished ad creative into the world as out-of-home placements — poster on a gable wall, transit platform panel, backlit bus shelter, construction hoarding. Use when someone asks to mock up an ad, see a poster in situ or in the wild, wants out-of-home or OOH placements, or asks how a campaign key visual would look on the street. The artwork is reproduced exactly and never regenerated. Do not use to create the artwork itself, and do not use to resize a creative for social.
---

# Out-of-home placements

Not an image generator. **A placement engine.** The creative already exists and is
finished. The only job is putting it into the world convincingly, four ways, without
altering it.

**Input:** one finished artwork (URL or attached file), optionally a one-line brief.
**Output:** four placement images, their URLs, and the total cost.

## The law

> **The artwork is reproduced. The world is generated.**
> Any change to the creative — colour, crop, wording, letterforms, logo — is a fail.

What makes a mockup fail is never the photograph. It is the artwork drifting:
recoloured, recropped, re-lettered, a word dropped.

## Steps

1. **Resolve the workspace** with `flora_list_workspaces`. Ask which to bill if there
   is more than one.

2. **Get the artwork into FLORA.** Attached files in ChatGPT are already hosted on
   `files.openai.com` or `cdn.openai.com`, both allowlisted — pass that URL as
   `source` to `flora_create_asset`. Never base64-encode a file.

3. **Make or pick a project** — `flora_list_projects`, or `flora_create_project` for
   new work.

4. **State the cost and confirm.** Four generations on GPT Image 2, roughly $0.28
   each. Say the total and wait for a yes.

5. **Fire all four placements** with `flora_generate`, one call per site, in the same
   pass with no gap between them. Each call takes the placement prompt,
   `model: "i2i-gpt-image-2-i2i"`, and
   `params: { image_url: "<artwork url>", resolution: "4k" }`.

   **The artwork goes in `params.image_url` — a single string.** `image_urls` (plural,
   an array) is accepted without complaint, silently ignored, and still billed: you get
   a text-to-image render of your prompt with the creative nowhere in it.

6. **Poll** each `run_id` with `flora_get_run` until `completed` or `failed`.

7. **Report** each placement's URL and the total charged. If one is visibly wrong,
   say so in a sentence — do not re-roll it without asking.

## Model

**GPT Image 2 image-to-image (`i2i-gpt-image-2-i2i`) at `resolution: "4k"`, for every
placement.** Lowercase `4k`. Pass both in `params` alongside `image_url`. It holds the fine detail of the creative, which is usually
the artwork's identity, and it observes street environments well. 4k costs no more time
than 2k.

**Never Krea** — it reinterprets what you wire it, which is the one thing that must
never happen to the creative.

## The four sites

Fixed, because they are genuinely different media buys. Swap one only if the brief
names a specific environment.

| tag | what it is |
|---|---|
| `gable` | flat end wall of a building, arts district |
| `transit` | curved underground platform panel, artificial light |
| `shelter` | backlit 6-sheet bus shelter at street level |
| `hoarding` | construction hoarding at pavement level |

**Get variety from site and scale, never from camera angle.** The same wall from three
angles is one placement photographed three times.

## Prompt architecture

One invariant block, four scene lines. Only the scene changes.

```
Place the supplied artwork into a real photograph of the world as an out-of-home
advertisement.

THE ARTWORK IS REPRODUCED EXACTLY. Its composition, colours and type come through
unchanged. Do not recolour, recrop, redraw or re-letter it, do not add or remove a
word, do not add a logo. It reads clearly at a glance.

THE ARTWORK SITS ON THE SURFACE CORRECTLY. It takes the perspective of the surface
it is printed on, takes that scene's daylight and shadow, and picks up the surface
texture underneath. Printed material in a real place, never a flat rectangle pasted
onto a photo.

The photograph around it is real, candid and unstyled — ordinary weather, ordinary
light, ordinary passers-by. Full-frame camera, natural depth of field, no HDR, no
gloss, no lens flare, no CGI sheen.

THE WHOLE ARTWORK IS VISIBLE. Every edge of it sits inside the photograph — nothing
is cropped by the frame, cut off by a pole, hidden behind a tree or run off the top
of the wall.

No extra text anywhere beyond the artwork itself and signage that genuinely belongs
to that street.

THE CAMERA IS SQUARE ON TO THE ARTWORK. The lens is perpendicular to the printed
surface, so the ad sits in frame as a TRUE RECTANGLE, flat and undistorted, read
straight. Only slight keystone is acceptable.
- NO three-quarter view. NO oblique or angled view of the surface.
- The artwork NEVER wraps a corner and NEVER bends across two planes.
- No fisheye, no wide-angle bowing, no perspective warp through the type.

AND THE SURFACE ITSELF RUNS FLAT ACROSS THE FRAME. The wall, hoarding or panel does
not recede to a vanishing point and its far end is not visible. Both the artwork AND
the thing it is printed on face the camera.

THE HOUSE GRADE — the whole photograph is graded this way, and this matters as much
as the composition.

Shot on film and printed slightly flat. The tonal range is COMPRESSED: shadows deep
and neutral but never crushed, and the highlights ROLL OFF EARLY — nothing reaches
paper white, not the sky, not a lit sign. Low contrast, gentle S-curve, no punch.

A GREEN-CYAN CAST runs through the midtones and especially the highlights — skies,
pale walls, concrete and daylight lean eucalyptus and sea-green rather than blue or
warm. Reds and skin pulled back and desaturated. No orange-and-teal, no warm/cool
split. The cool green IS the light.

Colour moderately rich, never vivid. Fine film grain. Slight halation on the
brightest edges. No HDR, no clarity, no glow, no saturation boost.

THE PLACEMENT — <scene>
```

## Direction, per placement

Every scene line carries three things beyond the location:

```
SHOT     focal length, camera height, angle    e.g. 85mm compressed from down the road
LIGHT    time of day and what it does          e.g. overcast, wet road holding reflection
MOMENT   one human beat                        e.g. one person stopped on the far kerb
```

Without these the model defaults to eye-level, midday, nobody — and every placement
looks the same.

**Keep the human beat off the artwork's plane.** The invariant block bans the artwork
being hidden, but the MOMENT direction asks for a person near the ad, and the two pull
against each other. Say where the person is *relative to the ad* — in the near
foreground and cropped, at the far end of the shelter, stopped on the opposite kerb —
never just that they are in shot. "Walking past mid-frame" puts them across the panel.

## Rules

- **Square on, always.** Three-quarter and corner-wrap views bend the artwork across
  two planes; the type distorts and stops reading. This is the single biggest driver
  of placement quality.
- **One shot.** Four generations, no draft pass, no variant sprawl. Fire all four,
  then wait.
- **You cannot see the results.** Report URLs and let the user judge them.
- **Never re-roll without asking** — each retry bills again.

Referenced files: 1

flora-run-technique2.96 KB

View saved version →

---
name: flora-run-technique
description: Run a saved FLORA technique — a multi-step visual workflow such as background swap, relighting, upscale, model swap, or sketch-to-render. Use when the user names a technique, asks to transform an image they already have ("put this on a clean background", "match this lighting", "upscale this", "make this look photographed"), or asks what FLORA can do. Do not use for a plain text-to-image request with no source image, and do not use to inspect existing project work.
---

# Run a FLORA technique

A technique is a saved workflow that chains several models. It is the thing FLORA
does that a single image model cannot: the steps, prompts, and model choices are
fixed by whoever authored it, so the same technique gives the same treatment every
time.

**Input:** the user's intent, plus any source image.
**Output:** the technique's output URLs, the charged cost, and the project the run
landed in.

## Steps

1. **Resolve the workspace.** Call `flora_list_workspaces`. If there is more than
   one, ask which to bill before spending anything.

2. **Find the technique.** Call `flora_list_techniques` and match on the user's
   intent. It returns `run_cost` and a summary of inputs for each. If nothing fits,
   say so and offer `flora_generate` instead — do not force an unrelated technique.

3. **Get the exact input ids.** Call `flora_get_technique`. Its declared input ids
   are the keys `flora_run_technique` expects. Never guess them from the name.

4. **Get each image input to an HTTPS URL** (see Image inputs below).

5. **Run it.** Call `flora_run_technique` with `workspace_id`, `technique_id`, and
   an `inputs` object keyed by those ids. Omit optional text inputs entirely when
   the user gave no direction — an empty string is rejected, not treated as absent.

6. **Poll and report.** Poll `flora_get_run` until status is `completed` or
   `failed`. Report the output URL, the charged cost, and a link to the project.

## Image inputs

FLORA fetches images server-side from an HTTPS URL. **Files the user attaches in
ChatGPT already have one** — they are hosted on `files.openai.com` or
`cdn.openai.com`, both allowlisted. Pass that URL straight to
`flora_create_asset` as `source`, or into the technique input directly.

Never base64-encode a file or try to upload bytes. If the image genuinely has no
URL, say that this environment cannot upload it and point the user at their FLORA
project to add it there.

## Rules

- **State the cost before running.** `run_cost` comes back from
  `flora_list_techniques`. Techniques range from free to several dollars per run.
- **You cannot see the output.** Runs return URLs, not pixels. Describe what was
  produced from the technique and the inputs; never claim to have looked at it.
- **On `input_validation_error`,** re-read `flora_get_technique`, rebuild `inputs`
  from what it returns, and retry once. Do not retry other failures — retries bill.
- **On insufficient credits,** surface the message and stop.

Referenced files: 1

Package details

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

Package author
FLORA

Package observed Sep 30, 2026.

Technical details
First seen
Sep 30, 2026 · 22:02 UTC
Last seen
Oct 2, 2026 · 00:00 UTC
Collection status
Collected

plugin_asdk_app_6a8c516c7e308191a0091f1b9c98a621

Download plugin data (JSON)