Model or dataset
awekrx/ChatGPT-MidJourney-prompt avatar
awekrx/ChatGPT-MidJourney-prompt

ChatGPT-MidJourney-prompt: a Python wrapper that turns short hints into Midjourney prompts

This is a ChatGPT based prompt generation model for MidJorney. The purpose of this model is to simplify the creation of images and increase their creativity. By introducing a partial hint, ChatGPT creates a follow-up that can be used to stimulate creativity and provide new ideas.

344 stars52 forksPythonMIT

At a glance

What is it?
The package wraps an LLM call behind V5, V4, niji and testp methods and returns a ready-to-paste Midjourney string. It is a thin convenience layer, not a prompt library, and the README documents the parameters but not the failure paths.
Who is it for?
Adopt it if you already generate Midjourney prompts by hand and want a Python call that returns a weighted prompt string with the right version and aspect-ratio flags attached, and if you are comfortable reading src/ to learn what the config keys actually do. Skip it if you need deterministic output, documented error handling, or a supported path for the email and password login the README lists first, since the repository does not show how that path is maintained.
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 112 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

What ChatGPT-MidJourney-prompt actually does

The README states the purpose plainly: you give a partial hint, and the model produces a follow-up that you can use to stimulate creativity. Concretely, the package exposes a PromptGenerator class with four methods named after Midjourney model versions, V5, V4, niji and testp. Each call sends your text to an LLM and returns a string formatted as a Midjourney prompt, with weighted terms and trailing flags such as --v 5, --s 1000 and --q 2. The README shows one such return value: a cyberpunk cityscape hint comes back as cyberpunk city::5, neon lights::4, rain::3 --v 5 --s 1000 --q 2.

That is the whole product. It is not a Midjourney client, it does not submit jobs, and it does not store your prompt history. It is a text transformation between a short idea and a longer prompt string, and the value is in the weighting syntax and the version flags being assembled for you rather than typed by hand. Anyone who has spent time hand-tuning double-colon weights will recognise the tedium this removes.

The audience is narrow and specific: Python users who already work with Midjourney, who have an OpenAI or MiniMax key, and who want prompt drafting inside a script rather than in a chat window. The README does not describe a web interface, so there is nothing here for someone who wants a browser tool.

The four generator methods and the config dictionary

The mechanism is a single class that holds credentials or a provider choice, plus a per-call config dictionary. The README's advanced example passes model, type, renderer, content, aspect_ratio, color and url, and a words parameter that the basic calls omit. The words value controls length; the README's example uses words=50.

The README provides two tables that matter more than the prose. One lists the allowed values per key: model accepts weights or artistic, type accepts anime, photorealistic, avatar or couple avatar, renderer accepts octane, unreal engine, ray tracing or mixed, and content accepts character, landscape, object, light or particles. The other table shows which keys each method honours. V5 and V4 accept all seven properties. niji accepts renderer, content, aspect_ratio, color and url but not model or type. testp accepts only aspect_ratio and url.

This is a real constraint, not a footnote. If you build a config dictionary with model set to artistic and pass it to testp, the property table says that key is not supported there, and the README does not say what happens next. Passing the same dictionary to different methods is the obvious way to use this package, and the support matrix is the thing to check before you do it. Aspect ratios are also method-specific: V5 takes any, V4 takes a fixed list including 1:1, 16:9 and 9:16, niji takes only 1:2 and 2:1, and testp takes only 2:3 and 3:2.

Installing ChatGPT-MidJourney-prompt and running a first prompt

Installation is a single pip command, and the package name on PyPI is camel-cased rather than the repository name.

bash
pip install chatGPTMidJourneyPrompt

The pyproject.toml declares requires-python >=3.9 and lists openai>=1.0.0 as the sole runtime dependency, so the install pulls in the OpenAI SDK. Note that the build-system section lists revChatGPT under requires, which is a build-time entry rather than a runtime dependency; the README's acknowledgment credits acheong08's ChatGPT project, which is where that name comes from.

The README's first usage example builds a config with credentials and then calls the generator. The comment lists three supported authorization methods: via email and password, via token, or via api key.

py
from chatGPTMidJourneyPrompt.mjPrompt import PromptGenerator

config = {
    "api_key": "your_api_key",
}

promptGenerator = PromptGenerator(config)
prompt = promptGenerator.V5("any text")
print(prompt)

What you should see is a prompt string in the shape the README shows for its own example, with weighted terms followed by version and quality flags. The exact text will differ because it comes from a model.

For the MiniMax backend, the README says no extra SDK is required because the API is OpenAI-compatible. Set the key as an environment variable and select the provider by name.

bash
export MINIMAX_API_KEY="your_minimax_api_key"
py
from chatGPTMidJourneyPrompt.mjPrompt import PromptGenerator

config = {"provider": "minimax"}
promptGenerator = PromptGenerator(config)
prompt = promptGenerator.V5("cyberpunk cityscape at night")
print(prompt)

The README lists four MiniMax models: MiniMax-M2.7, which is the default, MiniMax-M2.7-highspeed, MiniMax-M2.5 and MiniMax-M2.5-highspeed, all with a 204K context window. You can also set minimax_api_key and minimax_model directly in the config, and temperature, which the README says is clamped to (0.0, 1.0].

Where the documentation stops and the source begins

The README is generous with parameter tables and thin on behaviour. It does not document error handling, so it is unclear what a call returns when the API key is missing, when the provider rejects the request, or when the model returns text that cannot be parsed into Midjourney syntax. It does not document retries or timeouts. It does not say what happens when a config key is passed to a method that does not support it, even though the support matrix makes that a likely mistake.

The credential story is the weakest part. Email and password login appears first in the config comment, and session_token second, but the package now depends on the openai SDK at version 1.0.0 or later. The README does not explain how those two paths relate to that dependency, and it does not describe how they are kept working as providers change their authentication. The MiniMax section, by contrast, is explicit about environment variables and model names, which suggests the newer provider path is the better documented one.

The release history reinforces the point. The three listed releases are 1.0 on 2023-03-08, 1.1 on 2023-03-11 and 2.0.3 on 2023-03-24. The README's What's new block is dated 24.03.2023 and promises that a CLI app and a Discord bot will be available within a few days. Those two components do not appear in the README's usage section. The last push to the repository was on 2026-05-27, so work has happened since the 2.0.3 release, but the published release notes stop in March 2023 and the README still carries the unfulfilled CLI and bot note. Treat the README as a description of the 2.0.3 API plus the MiniMax addition, and read src/ for anything else.

When ChatGPT-MidJourney-prompt is the wrong tool

The output is non-deterministic. Every call goes to a language model, so the same hint can produce different prompts on consecutive runs, and the README offers no seed, no caching and no way to pin a result. If your workflow needs reproducible prompt strings, for example a test suite that asserts on generated output, this package cannot give you that. The tests/ directory exists in the repository layout, but the README does not describe what it covers.

The second limitation is scope. The package generates prompt text and stops. It does not upload reference images despite accepting a url config key, does not track which prompt produced which image, and does not manage Midjourney parameters beyond what the config dictionary exposes. If you want an end-to-end pipeline that submits jobs and collects results, this is one component, not the pipeline.

The third is the dependency surface. You need an OpenAI key or a MiniMax key, and the README's example output shows a quality flag of --q 2 and a stylize flag of --s 1000 baked into the returned string. Those are Midjourney parameters, and if Midjourney changes its syntax, the package's output format is what breaks. The README does not describe a versioning strategy for that.

How it compares with calling the API directly

The real alternative is not another package. It is a short script that calls the OpenAI or MiniMax chat completion endpoint yourself and appends the Midjourney flags in a format string. That approach gives you control over the system prompt, the temperature, the retry logic and the output parsing, all of which this package handles for you in ways the README does not spell out.

The difference in approach is where the prompt-engineering knowledge lives. With a direct API call, you write the instructions that tell the model how to weight terms and which flags to attach. With ChatGPT-MidJourney-prompt, that instruction text is inside the package, and the README does not reproduce it. The config tables tell you which values are accepted, not what the model is told to do with them. If you want to change how the model weighs terms or which flags it emits, you are editing the package or forking it rather than editing your own prompt.

That trade-off is reasonable for someone who wants the weighting syntax handled and does not care about the instructions behind it. It is a poor fit for someone who treats the system prompt as the product, because the repository's README does not expose it as configuration. The MiniMax provider option does soften the dependency question: the README states the API is OpenAI-compatible, so switching backends is a config change rather than a code change.

Licence, maintenance and what an upgrade costs

The project is MIT licensed, and pyproject.toml carries the matching classifier. MIT permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. That is the standard reading of the text, not legal advice; if you vendor the package into a product, keep the LICENSE file with it.

The dependency picture is simple: one runtime dependency, openai>=1.0.0, plus the Python 3.9 floor. The MiniMax path adds no SDK. Upgrading the package itself is a pip install away, and since the API surface is one class with four methods and a config dictionary, the migration cost between versions is low unless the config keys change. The support matrix in the README is the contract you would check against.

The maintenance signal is mixed and worth stating precisely. The repository is not archived. The last push was on 2026-05-27, which is recent, but the newest listed release is 2.0.3 from 2023-03-24, and the README's What's new block has not moved past that date. The MiniMax section is clearly newer than the release notes around it. So there is activity, but the release channel and the README changelog do not reflect it. If your team pins versions, verify what the current published version on PyPI actually contains before assuming it matches the README.

Editorial conclusion

Adopt it if you already generate Midjourney prompts by hand and want a Python call that returns a weighted prompt string with the right version and aspect-ratio flags attached, and if you are comfortable reading src/ to learn what the config keys actually do. Skip it if you need deterministic output, documented error handling, or a supported path for the email and password login the README lists first, since the repository does not show how that path is maintained. Before you commit, install the package, run the V5 call from the README against your own hint, and read the four method bodies in src/chatGPTMidJourneyPrompt/mjPrompt.py to confirm which config keys each one honours.

Frequently asked questions

How do I install ChatGPT-MidJourney-prompt?

The README gives a single command, pip install chatGPTMidJourneyPrompt. The package requires Python 3.9 or later and pulls in openai>=1.0.0 as its only runtime dependency.

Which Midjourney versions can ChatGPT-MidJourney-prompt generate prompts for?

The PromptGenerator class exposes four methods: V5, V4, niji and testp. Each accepts a different subset of the config properties, and the README's support table shows that testp honours only aspect_ratio and url.

Can I use ChatGPT-MidJourney-prompt without an OpenAI API key?

Yes. The README documents MiniMax as an alternative backend, selected with provider set to minimax, and it reads MINIMAX_API_KEY from the environment. The README also lists email and password and session_token as authorization methods, though it does not explain how those paths are maintained.

Why does ChatGPT-MidJourney-prompt return a different prompt each time?

Each call goes to a language model, and the README documents no seed or caching option, so output varies between runs. If you need identical strings on every call, the package does not provide a way to pin them.

What aspect ratios does ChatGPT-MidJourney-prompt support?

It depends on the method. The README's table says V5 accepts any ratio, V4 accepts a fixed list including 1:1, 16:9 and 9:16, niji accepts only 1:2 and 2:1, and testp accepts only 2:3 and 3:2.

Is ChatGPT-MidJourney-prompt free to use in a commercial project?

The repository is MIT licensed, which permits commercial use, modification and redistribution as long as the copyright and permission notices are kept. You still pay for the underlying OpenAI or MiniMax API calls.

Official sources

  1. awekrx/ChatGPT-MidJourney-prompt on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Community notes

Community notes