How to Create a Prompt Gallery Using Midjourney, ChatGPT, and Pinata
-tiny.jpeg)
Unsure how to harness the power of AI tools like Midjourney and ChatGPT? You’re not alone. This blog will guide you in leveraging these technologies effectively, helping you keep pace with the rapidly advancing AI field.
We’ll focus on creating a Prompt Gallery using Midjourney, ChatGPT, and Pinata — a project blending AI, creativity, and personal expression. Midjourney generates the images, ChatGPT builds our webpage, and Pinata hosts it, making our creations easily accessible to the world. By the end, you’ll have something similar to this:
Beyond a fun project, this venture imparts valuable AI skills, encourages creativity, and serves as a stepping stone into AI’s vast potential.
Project Inspiration
Twitter and Instagram are great to share your latest Midjourney images and prompts but I wanted to create a unique environment for mine to share. Inspired by museums, I wanted the webpage to feature a minimalistic white background to put focus on the images with simple museum-like labels to share the prompts.
As for the series itself, it’s titled Limelight Lasso. I’ve always been a fan of cowboy hats and wanted to create a series dedicated to them. Drawing inspiration from Drake’s Hotline Bling video, I wanted to create a unique and colorful environment for each cowboy hat. Hopefully you enjoy!
With that, let’s jump in!
Using Midjourney to Generate Images
Midjourney is an exceptional platform that allows you to generate creative and unique images. If you’re new to using Midjourney for generating images, check out this extensive tutorial which explains how to use the Midjourney Discord to prompt images. If you have at least made it to the Midjourney Discord and have prompted an image already, this tutorial will get you through.
For our images in this tutorial, I prompted Midjourney with:

Whatever images you end up selecting, you’ll want to upscale them before downloading. To upscale an image, simply select U1, U2, U3 or U4 of the images you want upscaled.

The result of upscaling:

Next, you’ll want to download the images from Discord to your device. To do so, click on the image and click Open in Browser in the bottom left.

Once the images have been open in browser, right click Save Image As… to your device.

Once downloaded, you will want to upload them to Pinata to generate links to the images. You could use the links from Discord before you downloaded them to your device. However, this leaves the life of the image at the whims of Discord’s and Midjourney’s retention policies. To prevent dead links, upload to Pinata or another provider.

To upload to Pinata, go to https://pinata.cloud and create an account if you don’t have one. Once created, click Add Files in the upper right to upload your images. Upload them as single files.
Once uploaded, to open and grab the URLs of the images, simply click on the file name or the eye next to the file name.
Here is one of those links hosted through my personal Pinata dedicated gateway with custom domain:
https://kyletut.com/ipfs/QmeL4UCFQ56D5WFANrBpbq5C6tNFbWnTbB67LL1Vn1z3yz
We will be using these image URL links in our prompt of ChatGPT in the next section.
Using ChatGPT to Generate Code
With your images ready, it’s time to create your AI-generated Instagram app. For this, we’ll use OpenAI’s ChatGPT to generate the necessary HTML, CSS, and JavaScript code. Here are the steps:
Visit the OpenAI website and sign up for an account if you haven’t already. Navigate to the ChatGPT section. I used ChatGPT-4 for this tutorial.
Begin a conversation with ChatGPT, providing it with detailed instructions on what you want. For our example, I prompted in the following way:

ChatGPT responded with the following:

My answers:

This will result in an output of code by ChatGPT like the following:
Excellent! With those specifications in mind, we can create a simple, responsive portfolio webpage using HTML, CSS, and JavaScript. Let’s start by breaking down the task into smaller pieces:
- HTML for content structure
- CSS for design and styling
- JavaScript for interactivity and responsiveness
I’ll guide you step by step. Remember, the comments inside the <span class="code-inline"><!-- --></span> for HTML and <span class="code-inline">/* */</span> for CSS and JS are my descriptions.
Step 1: HTML Structure
We’ll first define the HTML structure of our webpage. In this case, a series of <span class="code-inline">span</span> containers, each containing an <span class="code-inline">img</span> tag for the image and a p tag for the description.
Step 2: CSS Styling
Next, we’ll add the CSS to provide the style you described. This will be within a <span class="code-inline"><style></span> tag in the <span class="code-inline"><head></span> of the document. We're setting up the gallery as a horizontal scroller, with each image and its label inside a container. The images will have rounded corners.
Step 3: JavaScript for Responsiveness and Interactivity
Lastly, let’s add some JavaScript to handle swipe/scroll events for touch devices. We will add this script inside a <span class="code-inline"><script></span> tag in the <span class="code-inline"><head></span> section.
Remember to replace <span class="code-inline">"path_to_your_image.jpg"</span> and <span class="code-inline">"description of image"</span> with your actual image paths and descriptions. Try this out and let me know if you need further assistance!

This will result in an output of code by ChatGPT. I’m still learning the best ways to prompt ChatGPT but have found it takes some back and forth to get it right.
You will need to copy the code provided by ChatGPT and paste the code into a text editor on your desktop. I use Sublime Text. Once pasted in the editor, save it to your device.

Once saved as an html file, open the file with a browser. It should open in your browser like so:

Then, start playing with the functionality. After seeing the initial code in browser, I gave ChatGPT suggestions. You will need to go back and forth a little bit to get exactly what you want. Below are some examples of prompts altering the code:



Once you’re satisfied with the generated code, copy it and save it as an .html file on your device using your text editor. This file will be used in the final section of this tutorial.
If you just want to use the final code produced for this tutorial and make changes to it, see below. The easiest way to do this would be to copy it and paste it into ChatGPT and tell ChatGPT to swap out URLs and make specific changes you desire.
Upload the Code to Pinata
With the images and webpage ready, we’ll now upload the code to Pinata. Here’s how:
Click on the Add Files button in the upper right and upload the HTML file you created in the previous sections.

After the upload process completes, Pinata will provide you with a URL for your HTML file.
Visit this URL in any mobile or desktop browser to view your AI-generated Prompt Gallery.
And that’s it! You’ve successfully created a Prompt Gallery using Midjourney, ChatGPT, and Pinata.
Check it out here: https://kyletut.com/ipfs/QmPvh6kGt9fBZtgsCh41oz83gSac7NnDzb2x5eniFkrdCX
Happy Pinning!
H1 - THE RICH TEXT
EXAMPLE STARTS HERE
H2 - Enabling Widespread Adoption for Music NFTs
paragraph — The first thing the music industry needs is more exposure. For artists, listeners and yeah, the labels. Even with the use cases mentioned above, the majority of the music industry still sees NFTs as a novelty rather than a legitimate way to run a business. We see a future where the experience is built and monetized on the blockchain, with labels taking part of the experience, as well.
Second, there needs to be a big jump in user experience. Listeners know what to expect with Spotify and Apple Music: a smooth, intuitive experience that lets them listen to Lil Nas X with just a few clicks. Web3 platforms aren’t quite there. Music NFTs and related premium content require extra steps that most people don’t yet have an appetite for.
H3 - How Could Music NFTs Save Artists?
paragraph — Musician Daniel Allan spent months building a relationship with the NFT community and raised 50 ETH to fund his new album, Overstimulated. Companies like Audius and artists like Vérité's, who raised $90,000 in an NFT launch, are at the forefront of exploring new ways to get paid. Avenged Sevenfold launched an NFT collection called "Deathbats Club" with 10,000 items that grants holders access to benefits such as meet and greets at shows, lifetime free tickets, limited edition merchandise, and more.

H4 - Static and dynamic content editing
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!
H5 — How to customize formatting for each rich text
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
LINK — This is how a link looks like. Please provide normal & hover state (if different than this)
- This will be bullet points
- Numbered list is the same but with numbers
- It has a margin-left applied
- Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
- Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
- Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
QUOTE — Everyone is obsessed with making money and seeking alpha, which does a disservice to what [NFTs] can actually do. We have been instructing many bands that NFTs are a ticket for access to an exclusive club.” - M. Shadows, Avenged Sevenfold’s lead singer.