Replicate
google/nano-banana-2-lite · google/nano-banana-2 · google/nano-banana-pro
Generate the approved media in this recipe.
REPLICATE_API_TOKENTurn one outdoor photograph into a photorealistic dusk scene with a sunless golden-to-deep-blue sky and a naturally lit foreground.
By Wiggly Studio · Updated July 2026


Shared recipe family
Dusk Effect 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 familyBefore you start
google/nano-banana-2-lite · google/nano-banana-2 · google/nano-banana-pro
Generate the approved media in this recipe.
REPLICATE_API_TOKENSetup, 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.
Included assets
The published package includes its agent instructions, input contract, and quality rules, plus 3 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

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

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

Supplied creator reference—not a new Wiggly-generated result.
Examples
3 saved examples for this recipe—not 3 separate Repos. Each example keeps its original version and provenance.






From input to output
From the published pipeline.json. The agent follows the packaged runtime and its approval gates.
Step 01
One run pinned to the photo, exact gathered prompt, and selected model route.
Step 02
The photo and prompt contract checked locally.
Step 03 · approval · provider
One Dusk Effect transform from one approved prediction.
Step 04 · approval
Automatic file checks plus an actual visual review.
Proof & quality
Judge source preservation, a natural sunless dusk gradient, a slightly darker sky, well-lit people and foreground, atmospheric haze, and a photorealistic finish.
The delivered Google Doc supplied the exact Nano Banana Pro prompt. The Instagram carousel supplied three complete native before-and-after examples plus one additional source reference.
Wiggly overlays each packaged original at the top right of its matching output on the consumer Format page.
Saved reference
Saved reference
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.
Open the package
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.
# Wiggly Dusk Effect Format This runnable Repo preserves the exact gathered prompt, guide, three native SKAI before-and-after examples, their original reference photos, and one additional source reference. It uses the shared Wiggly image runner so validation, paid approval, retry caps, and visual finalization stay explicit. Run from `v3`: ```bash npm install npm run format:skai-image -- check --format=dusk-effect npm run format:skai-image -- smoke --format=dusk-effect npm run format:skai-image -- init --format=dusk-effect --run=my-photo --input=/absolute/path/to/photo.jpg npm run format:skai-image -- validate --format=dusk-effect --run=my-photo npm run format:skai-image -- estimate --format=dusk-effect --run=my-photo ``` Generation requires `REPLICATE_API_TOKEN` and explicit approval: ```bash npm run format:skai-image -- render --format=dusk-effect --run=my-photo --approve-paid ``` No Replicate proof call was made while packaging this Repo. Model routes: - Economy: `google/nano-banana-2-lite` - Default: `google/nano-banana-2` - Premium and creator source: `google/nano-banana-pro`
--- name: wiggly-dusk-effect description: Apply the exact gathered SKAI Dusk Effect prompt to one outdoor photograph. --- # Dusk Effect Use the packaged runner and exact prompt. Do not call Replicate separately or create another render path. Ask one short question: > Which outdoor photo should I give the Dusk Effect? Then run: ```bash npm run format:skai-image -- init --format=dusk-effect --run=<id> --input=<absolute-image-path> npm run format:skai-image -- validate --format=dusk-effect --run=<id> npm run format:skai-image -- estimate --format=dusk-effect --run=<id> npm run format:skai-image -- render --format=dusk-effect --run=<id> --approve-paid npm run format:skai-image -- inspect --format=dusk-effect --run=<id> npm run format:skai-image -- inspect --format=dusk-effect --run=<id> --visual-pass --review-notes="<specific observations>" npm run format:skai-image -- finalize --format=dusk-effect --run=<id> --approve-final ``` Hard rules: - Keep the exact gathered prompt unless the user explicitly requests a change. - Use Nano Banana 2 by default, Lite for economy, or Pro for premium and creator-source fidelity. - Validate before spending and never render without `--approve-paid`. - Persist and resume the prediction ID. - Never exceed three attempts. - View the output and record specific visual-review notes before finalizing. - Never print, store, or commit `REPLICATE_API_TOKEN`.
{
"runtime": {
"node": ">=22",
"commands": ["npm"]
},
"providers": [
{
"name": "Replicate",
"models": [
"google/nano-banana-2-lite",
"google/nano-banana-2",
"google/nano-banana-pro"
]
}
],
"environment": [
{
"name": "REPLICATE_API_TOKEN",
"secret": true,
"requiredFor": ["render", "resume"]
}
],
"notes": [
"All smoke and validation commands are local.",
"No proof generation was purchased for this package.",
"One render attempt is one paid prediction.",
"Paid generation requires explicit approval and is capped at three attempts."
]
}
{
"required": [
{
"id": "photo",
"type": "image",
"formats": ["jpg", "png", "webp"],
"minimumWidth": 512,
"minimumHeight": 512,
"maximumBytes": 26214400
}
],
"question": "Which outdoor photo should I give the Dusk Effect?",
"defaults": {
"model": "nano-banana-2",
"aspectRatio": "3:4",
"outputCount": 1
},
"modelRoutes": {
"economy": "google/nano-banana-2-lite",
"default": "google/nano-banana-2",
"premium": "google/nano-banana-pro",
"source": "google/nano-banana-pro"
}
}
{
"progress": "Prepare -> Validate -> Transform -> Inspect",
"attemptCap": 3,
"stages": [
{
"id": "prepare",
"output": "One run pinned to the photo, exact gathered prompt, and selected model route.",
"paid": false,
"approvalRequired": false
},
{
"id": "validate",
"output": "The photo and prompt contract checked locally.",
"paid": false,
"approvalRequired": false
},
{
"id": "transform",
"output": "One Dusk Effect transform from one approved prediction.",
"paid": true,
"approvalRequired": true
},
{
"id": "inspect",
"output": "Automatic file checks plus an actual visual review.",
"paid": false,
"approvalRequired": true
}
]
}
{
"sourceReference": {
"creator": "@skaigenerated",
"postUrl": "https://www.instagram.com/skaigenerated/p/DbGRFNSFlmt/",
"resourceUrl": "https://docs.google.com/document/d/1rjRBiqYyVmbafUaCYejMmA9LtvfqoE02lGSW6V58ozk/edit",
"guide": "assets/source/guide.pdf",
"cover": "assets/source/cover.jpg",
"referenceInset": "assets/source/mountain-hiker-reference.jpg",
"verification": "The delivered Google Doc supplied the exact Nano Banana Pro prompt. The Instagram carousel supplied three complete native before-and-after examples plus one additional source reference.",
"referenceNote": "Wiggly overlays each packaged original at the top right of its matching output on the consumer Format page."
},
"examples": [
{
"id": "mountain-hiker",
"path": "assets/source/mountain-hiker.jpg",
"referencePath": "assets/source/mountain-hiker-reference.jpg"
},
{
"id": "beach-path",
"path": "assets/source/beach-path.jpg",
"referencePath": "assets/source/beach-path-reference.jpg"
},
{
"id": "paddleboard",
"path": "assets/source/paddleboard.jpg",
"referencePath": "assets/source/paddleboard-reference.jpg"
}
],
"additionalReferences": [
{
"id": "lakeside",
"path": "assets/source/lakeside-reference.jpg"
}
]
}
{
"automatic": [
"Exactly 1 decodable JPG, JPEG, PNG, or WebP output",
"At least 640x800 pixels",
"Aspect ratio matches the selected route within 0.02",
"At least 50 KB"
],
"visual": [
"People, foreground objects, composition, and fine source details remain recognizable",
"The sky has no visible sun and moves naturally from golden yellow and orange to pink, lavender, and deep blue",
"The sky is slightly darker while people and foreground remain naturally well lit",
"Soft atmospheric haze, smooth tonal transitions, subtle bloom, and cinematic HDR feel photographic",
"Natural green tones remain rich instead of becoming muddy or neon",
"There are no obvious AI artifacts, warped subjects, logos, or watermarks"
],
"finalization": {
"automaticPassRequired": true,
"visualPassRequired": true,
"reviewNotesRequired": true,
"explicitApprovalFlag": "--approve-final"
}
}
{
"purpose": "Judge source preservation, a natural sunless dusk gradient, a slightly darker sky, well-lit people and foreground, atmospheric haze, and a photorealistic finish.",
"examples": [
{
"id": "mountain-hiker",
"title": "Mountain Hiker at Dusk",
"imagePath": "assets/source/mountain-hiker.jpg",
"referencePath": "assets/source/mountain-hiker-reference.jpg",
"model": "Nano Banana Pro",
"whyItWorks": [
"The person, clothing, binoculars, rocks, and distant peaks stay recognizable",
"The overcast sky becomes a layered pink, lavender, and blue dusk",
"Foreground detail remains naturally lit beneath the darker sky"
]
},
{
"id": "beach-path",
"title": "Beach Path at Dusk",
"imagePath": "assets/source/beach-path.jpg",
"referencePath": "assets/source/beach-path-reference.jpg",
"model": "Nano Banana Pro",
"whyItWorks": [
"The dunes, fence, path, ocean, and bird keep the source composition",
"Golden light near the horizon transitions smoothly into pink and blue",
"The foreground gains warm natural color without looking artificially relit"
]
},
{
"id": "paddleboard",
"title": "Paddleboard at Dusk",
"imagePath": "assets/source/paddleboard.jpg",
"referencePath": "assets/source/paddleboard-reference.jpg",
"model": "Nano Banana Pro",
"whyItWorks": [
"The swimmer, board, paddle, water, and distant shore remain intact",
"A sunless orange-to-blue gradient replaces the bright daytime sky",
"The subject and water stay clear while the atmosphere becomes cinematic"
]
}
]
}
{
"id": "dusk-effect",
"version": "1.0.0",
"title": "Dusk Effect",
"description": "Turn one outdoor photograph into a photorealistic dusk scene with a golden-to-deep-blue sky, soft haze, and a naturally lit foreground.",
"status": "agent-ready",
"owner": "Wiggly Studio",
"source": {
"creator": "@skaigenerated",
"postUrl": "https://www.instagram.com/skaigenerated/p/DbGRFNSFlmt/",
"resourceUrl": "https://docs.google.com/document/d/1rjRBiqYyVmbafUaCYejMmA9LtvfqoE02lGSW6V58ozk/edit",
"ctaKeyword": "AI",
"modelShown": "Nano Banana Pro"
},
"outputs": [
"1 inspected Dusk Effect photograph",
"state.json with model and prediction provenance",
"quality-report.json with automatic and visual inspection"
]
}
{
"name": "wiggly-dusk-effect-format-kit",
"private": true,
"version": "1.0.0",
"type": "module",
"engines": {
"node": ">=22"
},
"scripts": {
"check:kit": "node kit-smoke.mjs",
"format:skai-image": "tsx scripts/skai-image-format.ts",
"test": "tsx tests/skai-image-format-runner.test.ts --format=dusk-effect && node kit-smoke.mjs"
},
"dependencies": {
"image-size": "2.0.2",
"replicate": "1.4.0",
"tsx": "4.20.6"
}
}
{
"slug": "dusk-effect",
"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"
},
"nano-banana-pro-source": {
"label": "Nano Banana Pro (creator source)",
"lane": "source model",
"model": "google/nano-banana-pro",
"family": "nano-banana",
"aspectRatio": "3:4",
"outputFormat": "jpg",
"resolution": "1K"
}
},
"expectedOutputs": 1,
"maximumAttempts": 3,
"smokeInputPath": "assets/source/mountain-hiker-reference.jpg",
"smokeExamplePath": "assets/source/mountain-hiker.jpg",
"minimumOutputWidth": 640,
"minimumOutputHeight": 800,
"minimumOutputBytes": 51200,
"manualReview": [
"source people, foreground, composition, and details stay recognizable",
"sunless golden-orange to pink-lavender-deep-blue dusk gradient",
"sky is slightly darker while people and foreground remain naturally lit",
"soft haze, cinematic HDR, smooth transitions, subtle bloom, and rich natural greens",
"photorealistic DSLR finish with no obvious AI artifacts"
]
}
Run it with a coding agent
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
One Replicate image charge and usually 2-4 min
You provide
One JPEG, PNG, or WebP outdoor photograph at least 512px on both axes · A Replicate API token only when generation is approved
Output
One inspected 3:4 Dusk Effect photograph plus prediction and quality provenance