AI Visual Prompt Cookbook: JSON Style Packs for Image Models
118+ plug-and-play JSON style packs for Nano Banana Pro, GPT Image & Midjourney. Copy one JSON, get a style. Updated daily.
At a glance
- What is it?
- A repository of structured style.json files meant to be pasted into an LLM image workflow instead of rewritten each time. The format is the interesting part; the value depends on whether you want a fixed visual system or freehand prompting.
- Who is it for?
- Adopt it if you produce repeatable visual series (posters, thumbnails, editorial layouts) and want the style direction separated from the scene description, since the style.json format is the actual product here. Do not adopt it if you need a runtime library, a diffable prompt versioning system, or per-style automated tests; nothing in the repository provides those.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The Problem: Prompts as Text Blobs
The README states the case directly: most AI image prompts are one-off text blobs that are hard to reuse, hard to compare, and hard to iterate on. Anyone who has kept a notes file of prompts knows the failure mode. The scene description and the visual direction sit in the same sentence, so when you change the subject you also disturb the lighting, the crop and the typography rules. You end up re-tuning the style every time you change the content.
The cookbook's answer is to split those concerns. Each visual style lives in its own folder as a style.json, and the style file declares variables that the user fills in. The style fidelity rules stay fixed; the subject, location, wardrobe and headline text move. The repository is aimed at people producing a series rather than a single image: social snapshots, fashion posters, travel thumbnails, type-driven campaign graphics. The Quick Links table groups styles by that kind of output, which tells you the intended audience is a designer or content producer working to a recurring visual format, not someone experimenting with a one-off image.
What Is Actually Inside a Style Folder
The repository describes a style.json containing at least three parts: a prompt_template, an environment_variables declaration, and an examples array where each entry has a values object. The Complete Example in the README shows the template as a text block with brace placeholders such as {ASPECT_RATIO}, {SUBJECT}, {SUBJECT_ACTION}, {PRODUCT_OR_PROP}, {LOCATION}, {BACKGROUND_ELEMENTS}, {WARDROBE_STYLE}, {MAIN_TEXT}, {SECONDARY_TEXT}, {ACCENT_SYMBOL}, {STYLE_FIDELITY_ANCHORS} and {SOURCE_CONTENT_TO_AVOID}.
Two of those placeholders carry most of the design intent. STYLE_FIDELITY_ANCHORS is where the template restates the non-negotiable visual rules, and in the Mono Noir example those are spelled out as black-and-white photographic portrait, deep charcoal background, giant lowercase left-aligned headline, high contrast, sparse negative space, close crop. SOURCE_CONTENT_TO_AVOID is a negative list naming the original reference material so the model does not reproduce it. In the same example that list includes no young woman with blunt bangs, no freckles close-up, no copied face or exact source crop. That is a deliberate attempt to keep the output in the style without cloning the source image, and it is the most distinctive idea in the format.
The template also contains conditional composition rules keyed to aspect ratio. The Mono Noir template instructs that a 16:9 output should weight the subject to the right with the headline block on the left, while a 9:16 output should stack the headline in the upper-left or middle-left field with the subject cropped large on the right or lower-right. So the JSON is not a flat prompt string; it branches on one variable.
Getting a Style Running
There is no install step described. The Quick Start is five numbered actions: browse the Featured Styles, Quick Links or All Styles sections; open a style folder and copy the style.json; paste the full JSON into ChatGPT, Claude, Nano Banana Pro or another LLM-based image workflow; supply your own values for the variables declared in environment_variables, or edit a case in examples[*].values; then generate the final image prompt and send it to your image model.
In practice that means the JSON is consumed as text by a chat model, not imported by a program. The repository's primary language is listed as Python, but the README does not document a Python entry point, a CLI, or an importable module. Treat the Python listing as a signal about how the repository is maintained and generated, not as an API you can call. The README notes the styles were structured with assistance from OpenAI Codex, which fits the pattern of generated and regenerated JSON files rather than hand-written runtime code.
The workflow has one model-selection constraint worth taking seriously. The README recommends end-to-end multimodal image models that can read long structured JSON prompts and produce the image in one step, naming ChatGPT Images 2 (gpt-image-2) and Nano Banana Pro (Google, Gemini 3 Pro Image). It says other multimodal LLMs that accept long JSON prompts may work but are not the primary recommendation. A classic text-to-image endpoint that takes a short prompt string is not the target here, and the project's topic list includes Midjourney, but the README's recommended-models section does not mention Midjourney or describe how a style.json maps onto its parameter syntax. That is a gap between the repository description and the documentation.
Where the Format Breaks Down
The style.json is a document, not a schema-enforced artifact. Nothing in the supplied material describes validation, a version field, or a migration path when a template changes. If you copy a style into your own project and the upstream template is later rewritten, there is no described mechanism to tell you what changed or to reconcile your local edits. The repository publishes dated releases such as v2026.09.07 (2026.09.07 Style Drop), which suggests a drop-based cadence, but the README does not describe a changelog for individual styles or a stability guarantee for any of them.
The second limitation is the negative-list approach. SOURCE_CONTENT_TO_AVOID works by naming what should not appear. That is a soft constraint. Whether a model honors it depends on the model, and the README makes no claim about how reliably it does. If your use case requires that a specific face, logo or composition never appear, a text instruction inside a JSON template is a weak guarantee compared with an actual content filter or a reference image you control.
Third, the approach assumes the model can hold a long structured prompt and follow it. The README itself frames long JSON prompts as the requirement and recommends models on that basis. If you are working with a model that truncates or summarises long inputs, the variable substitution and the conditional aspect-ratio rules are exactly the parts most likely to be lost, and the output degrades toward a generic interpretation of the style name.
How This Differs from a Prompt Marketplace
The obvious alternative is a prompt-sharing site or a gallery of finished prompt strings, where you copy a paragraph of text and paste it into a model. The difference is structural rather than cosmetic. A shared prompt string is a single artifact with the style and the content fused; the cookbook's unit is a template plus a declared variable set plus worked examples. That makes the style comparable across entries, because two styles can be read side by side and you can see which placeholders they share. It also makes a style portable across subjects without rewriting the visual rules.
The cost of that structure is overhead. To use a style you must read the template, identify which placeholders exist, and supply each one. The README offers a shortcut through examples[*].values, where you can edit an existing case instead of filling every variable from scratch. That is a reasonable on-ramp, but it also means the fastest path is to inherit someone else's subject choices and change them incrementally, which is how styles drift toward looking the same.
A second alternative is writing your own template once and keeping it in your own repository. That gives you full control over the variable names, the negative list and the aspect-ratio rules, and it costs one afternoon. The cookbook's advantage over that is breadth of starting points and the fact that its templates already encode specific compositional decisions, such as the 16:9 versus 9:16 behaviour in the Mono Noir example, that you would otherwise have to work out yourself.
Maintenance, Releases and the MIT Licence
The repository is not archived, the default branch is main, and the last push recorded is 2026-09-07. Releases are dated and named as style drops, with three in the supplied list spanning roughly a week, which is consistent with the daily-update claim in the repository description. For a consumer of the library, that cadence cuts both ways: new styles arrive often, and the surface you depend on can also change often. Pin the specific style folder you adopt, or copy it into your own repository, if you need the template to stay still.
The licence is MIT. That permits use, modification and redistribution provided the copyright notice and permission notice are retained, and it disclaims warranty. It says nothing about the provenance of the visual references the styles were distilled from, and the README describes the styles as distilled from visual design references without listing them per style. If you intend to use a style commercially, that provenance question is the one to resolve with your own counsel rather than infer from the licence file. The MIT grant covers the repository's code and text as published; it is not a statement about any third-party reference material.
There is no described dependency surface to maintain, because there is no runtime. Your upgrade cost is the cost of re-reading templates you already use and re-checking that your filled-in values still match the current placeholder names.
Who Should Take It and What to Check First
This is a good fit for a designer or content team that ships a recurring visual format and wants the style rules written down once. It is a poor fit for anyone who needs a library to call from code, a test harness for prompts, or a guarantee that a named subject will never appear in output. It is also a poor fit if your image model of choice is not one of the two the README recommends, since the long structured prompt is the load-bearing assumption.
Before adopting a style, open its folder and do three checks. Confirm that every placeholder in prompt_template has a matching entry in environment_variables, since a mismatch is the failure you will hit first. Read the SOURCE_CONTENT_TO_AVOID list and decide whether it actually excludes the elements you need excluded. And test the aspect-ratio branch you intend to use, because the Mono Noir template behaves differently at 16:9 and 9:16 and there is no reason to assume other styles handle both. If a style passes those three checks, copying the folder into your own repository is the cheapest way to keep it stable while the upstream drops continue.
Editorial conclusion
Adopt it if you produce repeatable visual series (posters, thumbnails, editorial layouts) and want the style direction separated from the scene description, since the style.json format is the actual product here. Do not adopt it if you need a runtime library, a diffable prompt versioning system, or per-style automated tests; nothing in the repository provides those. Before committing, open one style folder, confirm that environment_variables matches the placeholders in prompt_template, and check whether the SOURCE_CONTENT_TO_AVOID list in the style you picked names elements that appear in your own reference material.
Community notes