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 portrait into a haunting monochrome fallen angel with gigantic luminous wings, extreme bloom, and damaged-video dreamcore texture.
By Wiggly Studio · Updated July 2026

Shared recipe family
Dreamcore Angel 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 provider prediction; the estimate command prints the selected route before approval
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 8 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

Every proof slide already contains exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 8 and 9 are intentionally excluded.

Every proof slide already contains exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 8 and 9 are intentionally excluded.

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.

Supplied creator reference—not a new Wiggly-generated result.
Examples
7 saved examples for this recipe—not 7 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 portrait, exact gathered prompt, and selected model route.
Step 02
The 3:4 portrait and prompt contract checked locally.
Step 03 · approval · provider
One dreamcore fallen-angel portrait from one approved prediction.
Step 04 · approval
Automatic file checks plus an actual visual review.
Proof & quality
Judge identity preservation, enormous luminous wings, intimate fallen-angel body language, extreme monochrome bloom, damaged-video texture, and a haunting dreamcore mood.
The delivered Google Doc supplied the exact Dreamcore Angel prompt and a clean 3:4 example. The Instagram carousel supplied one native title cover and six 3:4 transformation proofs.
Every proof slide already contains exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 8 and 9 are intentionally excluded.
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 Dreamcore Angel Format This runnable Repo preserves the exact prompt delivered by @skaigenerated, the native title cover, and six source transformation proofs. Each proof already contains one original-photo inset, so Wiggly does not add another. The final two CTA slides are intentionally excluded. Run from `v3`: ```bash npm install npm run format:skai-image -- check --format=dreamcore-angel npm run format:skai-image -- smoke --format=dreamcore-angel npm run format:skai-image -- init --format=dreamcore-angel --run=my-dreamcore-angel --input=/absolute/path/to/3-by-4-portrait.jpg npm run format:skai-image -- validate --format=dreamcore-angel --run=my-dreamcore-angel npm run format:skai-image -- estimate --format=dreamcore-angel --run=my-dreamcore-angel ``` The input must already be 3:4. Add `--model=nano-banana-2-lite` or `--model=nano-banana-pro` to `init` to select the economy or premium route. Generation requires `REPLICATE_API_TOKEN`. Stop after `estimate` and get the user's explicit approval before supplying the paid flag: ```bash npm run format:skai-image -- render --format=dreamcore-angel --run=my-dreamcore-angel --approve-paid ``` No Replicate proof call was made while packaging this Repo. - Economy: `google/nano-banana-2-lite` - Default: `google/nano-banana-2` - Premium: `google/nano-banana-pro` - Model named on the source cover: GPT Image 2.0 The source model is recorded for provenance. Wiggly's official runtime uses the existing Replicate-backed Nano Banana lanes. The estimate is a packaged planning value, so verify Replicate's current rate immediately before paid approval.
--- name: wiggly-dreamcore-angel description: Turn one 3:4 portrait into a luminous monochrome fallen angel using the exact gathered SKAI prompt. --- # Dreamcore Angel Use the packaged runner and exact prompt. Do not call Replicate separately or create another render path. From the extracted kit's `v3` directory: ```bash npm install npm run format:skai-image -- check --format=dreamcore-angel npm run format:skai-image -- smoke --format=dreamcore-angel ``` Ask one short question: > Which 3:4 portrait should I turn into a dreamcore fallen angel, and should I use Nano Banana 2 (default), Lite (economy), or Pro (premium)? Then initialize the free run. Omit `--model` for Nano Banana 2, or add `--model=nano-banana-2-lite` for economy or `--model=nano-banana-pro` for premium: ```bash npm run format:skai-image -- init --format=dreamcore-angel --run=<id> --input=<absolute-image-path> [--model=<route>] npm run format:skai-image -- validate --format=dreamcore-angel --run=<id> npm run format:skai-image -- estimate --format=dreamcore-angel --run=<id> ``` Stop after `estimate` and ask the user to approve the paid prediction. Only after explicit approval should you supply `--approve-paid`: ```bash npm run format:skai-image -- render --format=dreamcore-angel --run=<id> --approve-paid npm run format:skai-image -- inspect --format=dreamcore-angel --run=<id> npm run format:skai-image -- inspect --format=dreamcore-angel --run=<id> --visual-pass --review-notes="<specific observations>" npm run format:skai-image -- finalize --format=dreamcore-angel --run=<id> --approve-final ``` Hard rules: - Preserve the same recognizable face while following the gathered lowered-gaze side-profile composition. - Make gigantic glowing feathered wings dominate a pure black void. - Use monochrome silver-gray color, blown whites, crushed blacks, aggressive bloom, and soft diffusion. - Keep the dirty CCD/VHS texture, grain, compression, tape damage, and imperfect underground-art finish. - Do not clean the image into modern beauty photography, glossy CGI, crisp ultra-HD, or vibrant color. - Use a user-approved 3:4 input before validation. - 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. - Validate and estimate before spending, pause for explicit user approval, 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. - Return the finished image and `quality-report.json` to the user after finalization. - 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.",
"The SKAI cover names GPT Image 2.0; Wiggly's runnable Replicate lanes use Nano Banana 2 Lite, Nano Banana 2, and Nano Banana Pro.",
"No Replicate proof call was made for this package.",
"One render attempt is one paid prediction.",
"Paid generation requires explicit approval and is capped at three attempts."
]
}
{
"required": [
{
"id": "image",
"type": "image",
"formats": ["jpg", "png", "webp"],
"minimumWidth": 512,
"minimumHeight": 512,
"maximumBytes": 26214400,
"aspectRatio": "3:4",
"aspectRatioTolerance": 0.02
}
],
"question": "Which 3:4 portrait should I turn into a dreamcore fallen angel, and should I use Nano Banana 2 (default), Lite (economy), or Pro (premium)?",
"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"
},
"sourceModel": "GPT Image 2.0"
}
{
"progress": "Prepare -> Validate -> Transform -> Inspect",
"attemptCap": 3,
"stages": [
{
"id": "prepare",
"output": "One run pinned to the portrait, exact gathered prompt, and selected model route.",
"paid": false,
"approvalRequired": false
},
{
"id": "validate",
"output": "The 3:4 portrait and prompt contract checked locally.",
"paid": false,
"approvalRequired": false
},
{
"id": "transform",
"output": "One dreamcore fallen-angel portrait 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/DYK2SU7CgBW/",
"resourceUrl": "https://docs.google.com/document/d/1ggp03GnsW9VDaxqSq3CXyhaOLKZb_IZBR3fU3Wb2fxQ/mobilebasic",
"guide": "assets/source/guide.txt",
"nativeHero": "assets/source/skai-carousel-01.jpg",
"cleanGuideExample": "assets/source/guide-example.png",
"smokeInput": "assets/source/smoke-input.jpg",
"modelShown": "GPT Image 2.0",
"commentsAtCollection": 31900,
"collectedAt": "2026-07-31",
"verification": "The delivered Google Doc supplied the exact Dreamcore Angel prompt and a clean 3:4 example. The Instagram carousel supplied one native title cover and six 3:4 transformation proofs.",
"referenceNote": "Every proof slide already contains exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 8 and 9 are intentionally excluded."
},
"examples": [
{ "id": "native-hero", "path": "assets/source/skai-carousel-01.jpg", "provenance": "@skaigenerated carousel title cover" },
{ "id": "street-selfie", "path": "assets/source/skai-carousel-02.jpg", "provenance": "@skaigenerated carousel" },
{ "id": "clean-portrait", "path": "assets/source/skai-carousel-03.jpg", "provenance": "@skaigenerated carousel" },
{ "id": "soft-features", "path": "assets/source/skai-carousel-04.jpg", "provenance": "@skaigenerated carousel" },
{ "id": "white-tee", "path": "assets/source/skai-carousel-05.jpg", "provenance": "@skaigenerated carousel" },
{ "id": "sports-selfie", "path": "assets/source/skai-carousel-06.jpg", "provenance": "@skaigenerated carousel" },
{ "id": "set-selfie", "path": "assets/source/skai-carousel-07.jpg", "provenance": "@skaigenerated carousel" }
],
"excluded": [
{ "path": "Instagram carousel slide 8", "reason": "Comment-to-DM CTA, not format proof" },
{ "path": "Instagram carousel slide 9", "reason": "Follow CTA, not format proof" }
]
}
{
"automatic": [
"The source input is 3:4 within 0.02",
"Exactly 1 decodable JPG, JPEG, PNG, or WebP output",
"At least 600x800 pixels",
"Aspect ratio matches the selected route within 0.02",
"At least 50 KB"
],
"visual": [
"The same face remains recognizable beneath the stylization",
"Gigantic luminous feathered wings dominate the frame and read clearly against a pure black void",
"The close side profile, lowered gaze, fragile posture, and melancholic expression feel intimate rather than posed",
"Blown whites, crushed blacks, bloom, monochrome grain, VHS damage, and low-fidelity artifacts feel intentional",
"There are no malformed facial features, broken wings, or stray modern-background details"
],
"finalization": {
"automaticPassRequired": true,
"visualPassRequired": true,
"reviewNotesRequired": true,
"explicitApprovalFlag": "--approve-final"
}
}
{
"purpose": "Judge identity preservation, enormous luminous wings, intimate fallen-angel body language, extreme monochrome bloom, damaged-video texture, and a haunting dreamcore mood.",
"examples": [
{
"id": "native-hero",
"title": "See the fallen-angel transformation in one glance",
"imagePath": "assets/source/skai-carousel-01.jpg",
"model": "GPT Image 2.0 · SKAI source",
"whyItWorks": [
"The native cover names the recipe while showing the full visual language",
"Huge white wings and the lowered face read immediately against a crushed-black void",
"Bloom, grain, and damaged-video texture make the result feel recovered rather than polished"
]
},
{
"id": "street-selfie",
"title": "Let the wings consume the frame",
"imagePath": "assets/source/skai-carousel-02.jpg",
"model": "GPT Image 2.0 · SKAI source",
"whyItWorks": [
"The original face remains recognizable in the single inset",
"Gigantic feathered wings dominate without erasing the fragile lowered pose",
"Crushed blacks, dirty grain, and blown highlights create the intended forgotten-video finish"
]
},
{
"id": "clean-portrait",
"title": "Keep identity beneath crushed blacks",
"imagePath": "assets/source/skai-carousel-03.jpg",
"model": "GPT Image 2.0 · SKAI source",
"whyItWorks": [
"The clean input identity survives the darker hair and side-profile composition",
"A brilliant wing creates a readable silhouette inside heavy negative space",
"The grain and bloom feel tactile instead of digitally pristine"
]
},
{
"id": "soft-features",
"title": "Turn soft features into a gothic still",
"imagePath": "assets/source/skai-carousel-04.jpg",
"model": "GPT Image 2.0 · SKAI source",
"whyItWorks": [
"The subject remains recognizable while the lowered gaze becomes more vulnerable",
"The wing light wraps around the face without revealing a modern environment",
"Subtle tape scratches and uneven exposure sell the degraded archive aesthetic"
]
},
{
"id": "white-tee",
"title": "Push bloom until it feels haunted",
"imagePath": "assets/source/skai-carousel-05.jpg",
"model": "GPT Image 2.0 · SKAI source",
"whyItWorks": [
"The source face and white shirt remain legible beneath a radical lighting change",
"The left wing blows into the body and lens exactly as the prompt requests",
"The empty black surround keeps the portrait lonely and intimate"
]
},
{
"id": "sports-selfie",
"title": "Let feather light overpower the lens",
"imagePath": "assets/source/skai-carousel-06.jpg",
"model": "GPT Image 2.0 · SKAI source",
"whyItWorks": [
"The face remains anchored even as hair, pose, and lighting become dreamlike",
"Both wings extend beyond the body and overpower the frame",
"Extreme bloom and sensor grain produce the intended low-fidelity music-video still"
]
},
{
"id": "set-selfie",
"title": "Hold the face inside a damaged tape",
"imagePath": "assets/source/skai-carousel-07.jpg",
"model": "GPT Image 2.0 · SKAI source",
"whyItWorks": [
"The reference inset makes identity preservation easy to judge",
"The face, shoulders, glowing wings, and negative space form one compact emotional frame",
"Horizontal interference, grain, and soft focus create a convincing degraded recording"
]
}
]
}
{
"id": "dreamcore-angel",
"version": "1.0.0",
"title": "Dreamcore Angel",
"description": "Turn one portrait into a blown-out monochrome fallen angel frame with gigantic luminous wings, damaged-video grain, and a haunting dreamcore mood.",
"status": "agent-ready",
"owner": "Wiggly Studio",
"source": {
"creator": "@skaigenerated",
"postUrl": "https://www.instagram.com/skaigenerated/p/DYK2SU7CgBW/",
"resourceUrl": "https://docs.google.com/document/d/1ggp03GnsW9VDaxqSq3CXyhaOLKZb_IZBR3fU3Wb2fxQ/mobilebasic",
"ctaKeyword": "AI",
"modelShown": "GPT Image 2.0"
},
"outputs": [
"1 inspected 3:4 dreamcore fallen-angel portrait",
"state.json with model and prediction provenance",
"quality-report.json with automatic and visual inspection"
]
}
{
"name": "wiggly-dreamcore-angel-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=dreamcore-angel && node kit-smoke.mjs"
},
"dependencies": {
"image-size": "2.0.2",
"replicate": "1.4.0",
"tsx": "4.20.6"
}
}
{
"slug": "dreamcore-angel",
"version": "1.0.0",
"promptPath": "prompts/transform.txt",
"input": {
"mode": "image",
"formats": ["jpg", "png", "webp"],
"minimumWidth": 512,
"minimumHeight": 512,
"maximumBytes": 26214400,
"aspectRatio": "3:4",
"aspectRatioTolerance": 0.02
},
"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",
"costEstimate": "about $0.034 per output image at the current listed rate",
"timeEstimate": "usually 5-60 seconds"
},
"nano-banana-2": {
"label": "Nano Banana 2",
"lane": "default",
"model": "google/nano-banana-2",
"family": "nano-banana",
"aspectRatio": "3:4",
"outputFormat": "jpg",
"resolution": "1K",
"costEstimate": "about $0.067 per 1K output image at the current listed rate",
"timeEstimate": "usually 10-120 seconds"
},
"nano-banana-pro": {
"label": "Nano Banana Pro",
"lane": "premium",
"model": "google/nano-banana-pro",
"family": "nano-banana",
"aspectRatio": "3:4",
"outputFormat": "jpg",
"resolution": "1K",
"costEstimate": "about $0.15 per 1K output image at the current listed rate",
"timeEstimate": "usually 30-180 seconds"
}
},
"expectedOutputs": 1,
"maximumAttempts": 3,
"smokeInputPath": "assets/source/smoke-input.jpg",
"smokeExamplePath": "assets/source/guide-example.png",
"minimumOutputWidth": 600,
"minimumOutputHeight": 800,
"minimumOutputBytes": 51200,
"manualReview": [
"the same recognizable face beneath a soft androgynous fallen-angel transformation",
"gigantic luminous feathered wings dominating a pure black void",
"close side profile, lowered gaze, fragile posture, and melancholic vulnerability",
"extreme bloom, blown whites, crushed blacks, monochrome grain, VHS damage, and low-fidelity artifacts",
"no clean modern polish, vibrant color, malformed anatomy, or visible modern environment"
]
}
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 provider prediction; the estimate command prints the selected route before approval
You provide
One 3:4 JPEG, PNG, or WebP portrait at least 512px on both axes · A Replicate API token only when generation is approved
Output
One inspected 3:4 dreamcore fallen-angel portrait plus prediction and quality provenance