Curated Formatv1.0.0

Fortnite Filter

Turn one portrait into a recognizable, cinematic Fortnite-style 3D character.

By Wiggly Studio · Updated July 2026

Portrait transformation: From real portrait to game character

Shared recipe family

One family. 31 recipes.

Fortnite Filter belongs to Image Filters. These recipes share a runtime; adjacent examples are not separate Repos. The download on this page packages this specific recipe.

See the full recipe family

Before you start

Services & costs

Replicate

google/nano-banana-2-lite · google/nano-banana-2 · google/nano-banana-pro

Run the selected official Google Nano Banana image model.

REPLICATE_API_TOKEN

Local runtime

Setup, validation & inspection

Node.js >=22 · npm

Typical run estimate

One Replicate image charge and usually 2-4 min

Estimates describe the saved recipe, not a price guarantee. Confirm current provider pricing and approve any spend before generation. Your coding agent may have its own fees or usage limits. Never paste API keys into chat.

Setup notes from requirements.json
  • check, init, validate, estimate, inspect, finalize, and smoke are local.
  • render makes exactly one Replicate prediction per attempt after --approve-paid.
  • The runner persists the prediction ID before polling and can resume the same job.
  • Maximum paid attempts per run: 3.

Included assets

The ingredients behind the format.

The published package includes its agent instructions, input contract, and quality rules, plus 8 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

Creator example output

Creator example output

Creator reference 2

Creator reference 2

Supplied creator reference—not a new Wiggly-generated result.

Creator reference 3

Creator reference 3

Supplied creator reference—not a new Wiggly-generated result.

Creator reference 4

Creator reference 4

Supplied creator reference—not a new Wiggly-generated result.

Creator reference 5

Creator reference 5

Supplied creator reference—not a new Wiggly-generated result.

Creator reference 6

Creator reference 6

Supplied creator reference—not a new Wiggly-generated result.

View all 8 asset references
Creator reference 7

Creator reference 7

Supplied creator reference—not a new Wiggly-generated result.

Creator reference 8

Creator reference 8

Supplied creator reference—not a new Wiggly-generated result.

What stays consistent

  • The same person
  • The original pose and expression
  • A clean game-character silhouette
  • Warm cinematic 3D lighting

What you bring

  • One JPEG, PNG, or WebP portrait at least 512px on both axes
  • A Replicate API token for the paid transform
Read the included contracts and asset inventory ↓

Examples

Examples & references.

8 saved examples for this recipe—not 8 separate Repos. Each example keeps its original version and provenance.

Portrait transformation: From real portrait to game character

Example 01 · Portrait transformation

From real portrait to game character

Open finished ad
Environment transformation: Carry the whole setting into the game world

Example 02 · Environment transformation

Carry the whole setting into the game world

Open finished ad
Everyday action: Keep the action, outfit, and location

Example 03 · Everyday action

Keep the action, outfit, and location

Open finished ad
Full-body transformation: Turn fan energy into a game-character frame

Example 04 · Full-body transformation

Turn fan energy into a game-character frame

Open finished ad
Two-person transformation: Keep two people inside one coherent scene

Example 05 · Two-person transformation

Keep two people inside one coherent scene

Open finished ad
Quiet character moment: Small details still make it through

Example 06 · Quiet character moment

Small details still make it through

Open finished ad
Travel transformation: Make a travel portrait feel playable

Example 07 · Travel transformation

Make a travel portrait feel playable

Open finished ad
Fashion transformation: Hold onto the full fashion silhouette

Example 08 · Fashion transformation

Hold onto the full fashion silhouette

Open finished ad

From input to output

How the run works.

From the published pipeline.json. The agent follows the packaged runtime and its approval gates.

  1. Step 01

    Prepare

    A local run with one copied input image and selected model route.

  2. Step 02

    Validate

    Decoded dimensions, type, byte size, and SHA-256 stored before spending.

  3. Step 03 · approval · provider

    Transform

    One 3:4 JPG from the selected official Replicate model.

  4. Step 04 · approval

    Inspect

    Automatic media checks plus a recorded visual review.

Proof & quality

What a good result looks like.

Compare resemblance, pose retention, cinematic 3D styling, and output consistency across distinct portraits.

Saved reference

Original @skaigenerated example

  • The person stays recognizable
  • The pose survives the transformation
  • The look is dimensional and cinematic
  • The warm lighting and particles support the game-inspired finish

Saved reference

Banana grove source proof

  • The subject and goose stay recognizable
  • The playful pose survives the transformation
  • The banana grove remains a coherent environment

Quality gates

These are the acceptance criteria in quality.json—not a claim that every pictured example passed the current version. Inspect each new output before finalizing.

Automatic · 5 checks
  • The output decodes as JPEG or PNG
  • The output is at least 768x1024
  • The output aspect ratio is 3:4 within 0.015
  • The output is at least 50 KB
  • The output SHA-256 is recorded
Manual Review · 7 checks
  • The subject remains recognizably the same person
  • The original pose and expression are preserved
  • Face, eyes, hands, and fingers do not contain obvious artifacts
  • The silhouette and hair read clearly
  • The result has cinematic 3D volume rather than a flat cartoon look
  • Warm rim light, soft shadows, depth of field, and subtle particles support the look
  • No accidental text, watermarks, duplicate limbs, or broken clothing
Finalization Gate · 4 checks
  • All automatic checks pass
  • A human or viewing agent inspected the actual output
  • Review notes are stored
  • The --approve-final flag is present
Reject · 5 checks
  • The subject is no longer recognizable
  • The pose or expression changes substantially
  • Visible face, hand, limb, or clothing artifacts
  • Flat 2D cartoon treatment
  • Malformed, undersized, or wrong-aspect output

Open the package

Readable Repo files.

Actual files from the published v1.0.0 package. Expand any file to inspect the instructions, requirements, or evidence before sending the Repo to your agent.

README.md
Open raw file ↗
# Wiggly Fortnite Filter Format

Turn one portrait into one realistic, cinematic Fortnite-style 3D character image. The Repo preserves the prompt gathered from @skaigenerated, routes generation through official Google Nano Banana models on Replicate, and refuses to finalize an uninspected file.

## Quick start

Run from `v3`:

```bash
npm install
npm run format:fortnite-filter -- smoke --format=fortnite-filter
npm run format:fortnite-filter -- init --format=fortnite-filter --run=my-portrait --input=/absolute/path/photo.jpg
npm run format:fortnite-filter -- validate --format=fortnite-filter --run=my-portrait
npm run format:fortnite-filter -- estimate --format=fortnite-filter --run=my-portrait
```

Add `REPLICATE_API_TOKEN` to your shell environment. After approving one paid prediction:

```bash
npm run format:fortnite-filter -- render --format=fortnite-filter --run=my-portrait --approve-paid
```

View `public/format-repositories/fortnite-filter-v1/agent-runs/my-portrait/outputs/01.jpg`. Then record the visual review and finalize:

```bash
npm run format:fortnite-filter -- inspect --format=fortnite-filter --run=my-portrait --visual-pass --review-notes="Resemblance and pose hold; face and hands are coherent; no accidental text."
npm run format:fortnite-filter -- finalize --format=fortnite-filter --run=my-portrait --approve-final
```

If a generation keeps running after the terminal times out:

```bash
npm run format:fortnite-filter -- resume --format=fortnite-filter --run=my-portrait
```

The runner reuses the persisted Replicate prediction ID. It does not start a duplicate job.

## Model routes

- Economy: `google/nano-banana-2-lite`
- Default: `google/nano-banana-2`
- Premium/source-guide model: `google/nano-banana-pro`

Choose a non-default route during `init` with `--model=nano-banana-2-lite` or `--model=nano-banana-pro`.

## Source and proof

- Prompt and example: [@skaigenerated Instagram post](https://www.instagram.com/p/DbA4f6Blm2v/)
- Proof input: [Trevor Chris Hutchinson on Pexels](https://www.pexels.com/photo/portrait-of-a-man-sitting-5790938/)
- Proof input: [rao qingwei on Pexels](https://www.pexels.com/photo/elegant-portrait-of-woman-at-city-sunset-29484597/)

The two stock inputs are included under the Pexels License. Their exact sources and roles are recorded in `assets.json`.
SKILL.md
Open raw file ↗
---
name: wiggly-fortnite-filter
description: Turn one portrait into a realistic cinematic Fortnite-style 3D character image through Replicate.
---

# Fortnite Filter

Use the official runner. Do not call Replicate separately, rewrite the prompt, or create a second render path.

## Conversation

Ask one short question at a time. Start with:

> Which photo should I turn into a Fortnite-style character?

Use Nano Banana 2 by default. Offer Nano Banana 2 Lite when the user wants the lowest price, or Nano Banana Pro when they explicitly want the source guide's premium model.

## Workflow

1. Run `npm run format:fortnite-filter -- check --format=fortnite-filter`.
2. Initialize a run with one image.
3. Validate locally.
4. Show the model route and estimate.
5. Only run the paid transform with explicit user approval.
6. If polling is interrupted, use `resume`; never create a duplicate prediction.
7. Inspect the actual output with an image-viewing tool.
8. Record specific review notes and finalize only after the image passes.

```bash
npm run format:fortnite-filter -- init --format=fortnite-filter --run=<id> --input=<path>
npm run format:fortnite-filter -- validate --format=fortnite-filter --run=<id>
npm run format:fortnite-filter -- estimate --format=fortnite-filter --run=<id>
npm run format:fortnite-filter -- render --format=fortnite-filter --run=<id> --approve-paid
npm run format:fortnite-filter -- inspect --format=fortnite-filter --run=<id>
npm run format:fortnite-filter -- inspect --format=fortnite-filter --run=<id> --visual-pass --review-notes="<specific observations>"
npm run format:fortnite-filter -- finalize --format=fortnite-filter --run=<id> --approve-final
```

Select another route during `init`:

```bash
--model=nano-banana-2-lite
--model=nano-banana-pro
```

## Hard rules

- Exactly one input image and one final image per run.
- Keep the packaged prompt exact.
- Validate before any paid call.
- Require `--approve-paid`.
- Persist and resume the same Replicate prediction ID.
- Never exceed three paid attempts in one run.
- Save the provider output locally immediately.
- Require automatic checks, visual review, notes, and `--approve-final`.
- Never print, store, or commit `REPLICATE_API_TOKEN`.
requirements.json
Open raw file ↗
{
  "runtime": {
    "node": ">=22",
    "commands": [
      "npm"
    ]
  },
  "providers": [
    {
      "name": "Replicate",
      "purpose": "Run the selected official Google Nano Banana image model.",
      "models": [
        "google/nano-banana-2-lite",
        "google/nano-banana-2",
        "google/nano-banana-pro"
      ]
    }
  ],
  "environment": [
    {
      "name": "REPLICATE_API_TOKEN",
      "requiredFor": [
        "render",
        "resume"
      ],
      "secret": true
    }
  ],
  "notes": [
    "check, init, validate, estimate, inspect, finalize, and smoke are local.",
    "render makes exactly one Replicate prediction per attempt after --approve-paid.",
    "The runner persists the prediction ID before polling and can resume the same job.",
    "Maximum paid attempts per run: 3."
  ]
}
inputs.json
Open raw file ↗
{
  "required": [
    {
      "id": "portrait",
      "type": "image",
      "count": 1,
      "formats": [
        "jpg",
        "png",
        "webp"
      ],
      "minimumWidth": 512,
      "minimumHeight": 512,
      "maximumBytes": 26214400,
      "question": "Which photo should I turn into a Fortnite-style character?"
    }
  ],
  "defaults": {
    "model": "nano-banana-2",
    "aspectRatio": "3:4",
    "outputFormat": "jpg",
    "resolution": "1K"
  },
  "modelRoutes": {
    "economy": "google/nano-banana-2-lite",
    "default": "google/nano-banana-2",
    "premium": "google/nano-banana-pro"
  }
}
pipeline.json
Open raw file ↗
{
  "progress": "Prepare -> Validate -> Transform -> Inspect",
  "attemptCap": 3,
  "stages": [
    {
      "id": "prepare",
      "output": "A local run with one copied input image and selected model route.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "validate",
      "output": "Decoded dimensions, type, byte size, and SHA-256 stored before spending.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "transform",
      "output": "One 3:4 JPG from the selected official Replicate model.",
      "paid": true,
      "approvalRequired": true
    },
    {
      "id": "inspect",
      "output": "Automatic media checks plus a recorded visual review.",
      "paid": false,
      "approvalRequired": true
    }
  ]
}
assets.json
Open raw file ↗
{
  "sourceReference": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
    "guideScreenshot": "assets/source/skai-guide-screenshot.png",
    "exampleOutput": "assets/source/skai-example-output.jpg",
    "carouselExamples": [
      "assets/source/skai-example-output.jpg",
      "assets/source/example-02.jpg",
      "assets/source/example-03.jpg",
      "assets/source/example-04.jpg",
      "assets/source/example-05.jpg",
      "assets/source/example-06.jpg",
      "assets/source/example-07.jpg",
      "assets/source/example-08.jpg"
    ],
    "capturedPrompt": "prompts/transform.txt"
  },
  "proofInputs": [
    {
      "id": "seated-man",
      "path": "fixtures/trevor-chris-hutchinson-man.jpg",
      "creator": "Trevor Chris Hutchinson",
      "sourceUrl": "https://www.pexels.com/photo/portrait-of-a-man-sitting-5790938/",
      "license": "Pexels License",
      "licenseUrl": "https://www.pexels.com/license/",
      "description": "Full-body seated outdoor portrait with a detailed pose and visible hands."
    },
    {
      "id": "sunset-woman",
      "path": "fixtures/rao-qingwei-woman.jpg",
      "creator": "rao qingwei",
      "sourceUrl": "https://www.pexels.com/photo/elegant-portrait-of-woman-at-city-sunset-29484597/",
      "license": "Pexels License",
      "licenseUrl": "https://www.pexels.com/license/",
      "description": "Close portrait at sunset with a different subject, crop, expression, and lighting."
    }
  ]
}
quality.json
Open raw file ↗
{
  "automatic": [
    "The output decodes as JPEG or PNG",
    "The output is at least 768x1024",
    "The output aspect ratio is 3:4 within 0.015",
    "The output is at least 50 KB",
    "The output SHA-256 is recorded"
  ],
  "manualReview": [
    "The subject remains recognizably the same person",
    "The original pose and expression are preserved",
    "Face, eyes, hands, and fingers do not contain obvious artifacts",
    "The silhouette and hair read clearly",
    "The result has cinematic 3D volume rather than a flat cartoon look",
    "Warm rim light, soft shadows, depth of field, and subtle particles support the look",
    "No accidental text, watermarks, duplicate limbs, or broken clothing"
  ],
  "finalizationGate": [
    "All automatic checks pass",
    "A human or viewing agent inspected the actual output",
    "Review notes are stored",
    "The --approve-final flag is present"
  ],
  "reject": [
    "The subject is no longer recognizable",
    "The pose or expression changes substantially",
    "Visible face, hand, limb, or clothing artifacts",
    "Flat 2D cartoon treatment",
    "Malformed, undersized, or wrong-aspect output"
  ]
}
goldens.json
Open raw file ↗
{
  "purpose": "Compare resemblance, pose retention, cinematic 3D styling, and output consistency across distinct portraits.",
  "examples": [
    {
      "id": "skai-source-example",
      "type": "source-reference",
      "title": "Original @skaigenerated example",
      "inputPath": null,
      "imagePath": "assets/source/skai-example-output.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The person stays recognizable",
        "The pose survives the transformation",
        "The look is dimensional and cinematic",
        "The warm lighting and particles support the game-inspired finish"
      ]
    },
    {
      "id": "skai-banana-grove",
      "type": "source-reference",
      "title": "Banana grove source proof",
      "inputPath": null,
      "imagePath": "assets/source/example-02.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The subject and goose stay recognizable",
        "The playful pose survives the transformation",
        "The banana grove remains a coherent environment"
      ]
    },
    {
      "id": "skai-pizza-street",
      "type": "source-reference",
      "title": "Pizza street source proof",
      "inputPath": null,
      "imagePath": "assets/source/example-03.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The pizza box and hand pose stay readable",
        "Streetwear and tattoos remain distinct",
        "The city scene keeps cinematic depth"
      ]
    },
    {
      "id": "skai-stadium",
      "type": "source-reference",
      "title": "Stadium source proof",
      "inputPath": null,
      "imagePath": "assets/source/example-04.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The full-body silhouette stays intact",
        "The raised-arm pose and Brazil outfit remain recognizable",
        "The stadium crowd supports the subject"
      ]
    },
    {
      "id": "skai-cafe-duo",
      "type": "source-reference",
      "title": "Cafe duo source proof",
      "inputPath": null,
      "imagePath": "assets/source/example-05.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "Both people remain distinct",
        "The table pose and drinks survive",
        "One consistent 3D treatment holds the scene together"
      ]
    },
    {
      "id": "skai-puppy",
      "type": "source-reference",
      "title": "Puppy portrait source proof",
      "inputPath": null,
      "imagePath": "assets/source/example-06.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The puppy remains visible and believable",
        "The seated posture and tracksuit carry through",
        "The quiet interior still feels cinematic"
      ]
    },
    {
      "id": "skai-safari",
      "type": "source-reference",
      "title": "Safari source proof",
      "inputPath": null,
      "imagePath": "assets/source/example-07.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The open-arm pose stays readable",
        "The elephants and foliage survive",
        "The bright travel scene keeps polished depth"
      ]
    },
    {
      "id": "skai-city-bench",
      "type": "source-reference",
      "title": "City bench source proof",
      "inputPath": null,
      "imagePath": "assets/source/example-08.jpg",
      "sourceUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The seated pose and full outfit stay recognizable",
        "The cap and sneakers retain their shape",
        "The bench and skyline support a cohesive game-world frame"
      ]
    },
    {
      "id": "nano-banana-2-seated-man",
      "type": "replicate-proof",
      "title": "Full-body pose proof",
      "inputPath": "fixtures/trevor-chris-hutchinson-man.jpg",
      "imagePath": "goldens/nano-banana-2-seated-man.jpg",
      "sourceUrl": "https://www.pexels.com/photo/portrait-of-a-man-sitting-5790938/",
      "model": "google/nano-banana-2",
      "whyItWorks": [
        "Identity and seated pose remain recognizable",
        "Visible hands, tattoos, watch, and clothing survive",
        "The silhouette has cinematic 3D volume",
        "It passed automatic and recorded visual inspection"
      ]
    },
    {
      "id": "nano-banana-2-lite-sunset-woman",
      "type": "replicate-proof",
      "title": "Economy close-portrait proof",
      "inputPath": "fixtures/rao-qingwei-woman.jpg",
      "imagePath": "goldens/nano-banana-2-lite-sunset-woman.jpg",
      "sourceUrl": "https://www.pexels.com/photo/elegant-portrait-of-woman-at-city-sunset-29484597/",
      "model": "google/nano-banana-2-lite",
      "whyItWorks": [
        "Identity, gaze, head angle, hair, and outfit remain recognizable",
        "The sunset city composition carries through",
        "The economy route still produces a polished 3D finish",
        "It passed automatic and recorded visual inspection"
      ]
    }
  ]
}
format.json
Open raw file ↗
{
  "id": "fortnite-filter",
  "version": "1.0.0",
  "title": "Fortnite Filter",
  "description": "Turn one portrait into a realistic, cinematic Fortnite-style 3D character image.",
  "status": "agent-ready",
  "owner": "Wiggly Studio",
  "source": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/p/DbA4f6Blm2v/",
    "ctaKeyword": "AI",
    "guideTitle": "Fortnite Filter Prompt",
    "modelShown": "Nano Banana Pro"
  },
  "outputs": [
    "1 JPG image at a 3:4 aspect ratio",
    "state.json with the Replicate prediction ID and provenance",
    "quality-report.json with automatic and visual inspection"
  ]
}
kit.package.json
Open raw file ↗
{
  "name": "wiggly-fortnite-filter-format-kit",
  "private": true,
  "version": "1.0.0",
  "type": "module",
  "engines": {
    "node": ">=22"
  },
  "scripts": {
    "check:kit": "node kit-smoke.mjs",
    "format:fortnite-filter": "tsx scripts/skai-image-format.ts",
    "test": "tsx tests/skai-image-format-runner.test.ts --format=fortnite-filter && node kit-smoke.mjs"
  },
  "dependencies": {
    "image-size": "2.0.2",
    "replicate": "1.4.0",
    "tsx": "4.20.6"
  }
}
proofs.json
Open raw file ↗
{
  "generatedAt": "2026-07-29",
  "provider": "Replicate",
  "promptPath": "prompts/transform.txt",
  "proofs": [
    {
      "id": "proof-seated-man",
      "inputPath": "fixtures/trevor-chris-hutchinson-man.jpg",
      "outputPath": "goldens/nano-banana-2-seated-man.jpg",
      "qualityReportPath": "goldens/nano-banana-2-seated-man.quality.json",
      "model": "google/nano-banana-2",
      "predictionId": "9v21s663tdrmr0cznh9rh31qc0",
      "attemptsUsed": 1,
      "status": "finalized",
      "sha256": "ce90f7f01df202cc29a0ef3c9fc6d571ee53acb15e4e70f28911feb914bba49d"
    },
    {
      "id": "proof-sunset-woman",
      "inputPath": "fixtures/rao-qingwei-woman.jpg",
      "outputPath": "goldens/nano-banana-2-lite-sunset-woman.jpg",
      "qualityReportPath": "goldens/nano-banana-2-lite-sunset-woman.quality.json",
      "model": "google/nano-banana-2-lite",
      "predictionId": "zkwhk22bvhrmr0cznha91n4aa4",
      "attemptsUsed": 1,
      "status": "finalized",
      "sha256": "8f1939f82f113f062ec288a574259e10cbdb1bf090d8680f8017214f4afb80db"
    }
  ]
}
runtime.json
Open raw file ↗
{
  "slug": "fortnite-filter",
  "version": "1.0.0",
  "promptPath": "prompts/transform.txt",
  "input": {
    "mode": "image",
    "formats": [
      "jpg",
      "png",
      "webp"
    ],
    "minimumWidth": 512,
    "minimumHeight": 512,
    "maximumBytes": 26214400
  },
  "defaultModel": "nano-banana-2",
  "modelRoutes": {
    "nano-banana-2-lite": {
      "label": "Nano Banana 2 Lite",
      "lane": "economy",
      "model": "google/nano-banana-2-lite",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg"
    },
    "nano-banana-2": {
      "label": "Nano Banana 2",
      "lane": "default",
      "model": "google/nano-banana-2",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "resolution": "1K"
    },
    "nano-banana-pro": {
      "label": "Nano Banana Pro",
      "lane": "premium",
      "model": "google/nano-banana-pro",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "resolution": "1K"
    }
  },
  "expectedOutputs": 1,
  "maximumAttempts": 3,
  "smokeInputPath": "fixtures/trevor-chris-hutchinson-man.jpg",
  "smokeExamplePath": "goldens/nano-banana-2-seated-man.jpg",
  "minimumOutputWidth": 768,
  "minimumOutputHeight": 1024,
  "minimumOutputBytes": 51200,
  "aspectRatioTolerance": 0.015,
  "manualReview": [
    "subject resemblance",
    "pose and expression preservation",
    "face, eyes, hands, fingers, and clothing anatomy",
    "cinematic 3D volume rather than flat cartoon styling",
    "warm rim light, soft shadows, depth of field, and subtle particles",
    "no accidental text, watermarks, duplicate limbs, or broken clothing"
  ]
}
Technical proof archive ↗

Run it with a coding agent

Know the run before you start.

The agent reads this version’s instructions, checks the requirements, and walks you through the approved workflow. Review the inputs and estimate before starting.

Typical run

Prepare + validateFree · under 1 min
One image transformCurrent Replicate model rate · usually under 2 min
Inspect + finalizeFree · about 1 min

One Replicate image charge and usually 2-4 min

You provide

One JPEG, PNG, or WebP portrait at least 512px on both axes · A Replicate API token for the paid transform

Output

One inspected 3:4 JPG plus prediction and quality provenance