I used AI to generate products & write copy for my store
I used Midjourney to generate art that I threw on t-shirts, coasters, and almost everything else RedBubble offers. Then I used OpenAI to generate copy for it, and combined that with a handful of custom scripts to generate a product site called Bed Bath & The Beyond.
It took about 40 hours of work to put all that together for 13 products, but that will be faster next time. In the end, this is a surprisingly viable option, and the only real restriction on profit is how much effort you’re willing to put into marketing what you make.
It started as a joke…
A friend threw this out on Mastodon.
For a giggle, I asked Midjourney for “UNSPEAKABLE HORRORS AT UNSPEAKABLE PRICES. ALSO, BATH MATS.” and this came out
And they looked “real” enough that I wondered if I could actually make a “cool” bath-mat.
A little editing, and I’d extracted it from the “bath mat”, and thrown it on Redbubble.
That’s when things started to spiral out of control.
The work Begins…
I spent that night working through images on Midjourney. It was hours of work, but as I was being pretty lenient with Midjourney I was able to get usable results pretty quickly. At the bottom of this post is a screenshot of the stream of images I generated. I’d put it here, but it’s really long. ;)
Then came the editing. By default an upscaled image from midjourney with a 3:2 aspect ratio is only 1536 x 1024 which is fine on your screen, but not so hot for printing.
Fortunately, I’ve actually got a background in print and fabrics are not a high-resolution, or high-fidelity medium. So, upscaling artifacts shouldn’t be a big deal on most things. I’m a bit unsure about the comforters and shower curtains though. Because of this, the acceptable resolution is much lower. Also, RedBubble has this handy page that suggests resolutions for each of their products.
Combine that with Pixelmator Pro’s ML Super Resolution and the upscaling went pretty well.
Most of the images required very little editing.
At this point I’ve sunk at least 10 hours into the process. I’ve made two or three product pages on RedBubble for them. Creating the RedBubble product pages was … work. There’s just no getting around it. It’s a time sink.
In their defense, it requires a lot of subjective human decision making. They’ve also done a ton of work to help folks to promote things. For example, when I click on “Download Images” on the Desk Mat for Billy and Gog’s Grand Adventures I get this excellent collection of promo images to use to promote it.
Upload, choose, set default colors, save, see what you missed, edit the page to tweak default fabric colors again, repeat.
Hugo is my default static site generator. It’s fast, it’s easy, and I’m familiar with it. So I start making pages, and it… is… taking… forever.
The process was
- grab the product url
- make a markdown link
- choose 2 or 3 items to highlight
- download images of the image on those products
- make a markdown link to each of those product pages
- embed the image in the page with a markdown link to the product page around it.
- come up with some witty title and ridiculous copy for the page
I punted on the last one. The process doesn’t sound like much when you say it, but in practice it was hugely time consuming, mentally draining, boring, and soul sucking.
I knew that if I forced my way through, I could finish the 13 or so products I had. I also knew that I’d never add anything else to the site if I did. I’d definitely not make another site if some other entertaining idea came along.
So, I wrote some code. We’re talking ugly, get it done, do the first thing that’ll work kind a code.
Along the way I discover that for some reason Firefox doesn’t bother to store session cookies in its SQLite cookie database, and it turns out I need session cookies. So, right click, inspect the network call to their GraphQL API (totally undocumented) and “Copy as curl”.
Then write a bash script to read in the clipboard, extract the cookies and throw them into some ancient Netscape Navigator format that curl apparently knows how to handle. This file doesn’t need to be regenerated for …. days? I dunno.
Then copy the url for the product promotion page (the one with links to downloadable images) and run that through another script that extracts the product id, gives it to curl, which utilizes the new cookie file, and hits their GraphQL endpoint to extract the JSON (same stuff as on the web page). It’s more JSON than I need but refining the query would have been wasted time.
Run that JSON through a third script (this one in Raku) that presents me with a list like this. Now I just need to scan the RedBubble promo page to find images I want to use, and type in their numbers.
...  Shower Curtain  Spiral Notebook  Sticker  Tall Mug  Tapestry  Throw Blanket  Throw Pillow  Transparent Sticker  Travel Coffee Mug  Wood Mounted Print  Zipper Pouch  iPad Skin  iPad Snap Case  iPhone Skin  iPhone Snap Case  iPhone Soft Case  iPhone Tough Case  iPhone Wallet Choose some items (comma separated):
The script considers my choices, downloads the default product image, runs it through imagemagic for resizing, takes my original artwork, resizes that, asks me for the name of the product and ….. voilà I’ve got a markdown file with all the soul-sucking grunt work done for me.
And yes, I have a way to add new products without overwriting the page.
That Sweet Marketing Copy
I never lost sight of the fact that this was, ultimately, a joke. I expect to, over time, make tens of dollars from this. If we consider my hourly rate it’s very unlikely this thing will ever pay for the labor that went into it.
So, because I’m not going to get rich on this, and I’m probably going to get a Cease and Desist letter from a Megacorp who likely lacks a sense of humor and thus shan’t be named. I’m not worried about “real” copy.
However. We’re a day and a half of work into this thing and frankly my ability to write entertaining micro-fiction about each of these is… shall we say, “diminished”.
But along the way I’ve been keeping my friend’s discord ( the one responsible for this stupidity ) in the loop. There someone points to an article about using AI for marketing copy, and I remember that I’d seen a bunch of hype about OpenAI on Mastodon lately. I don’t really want great “marketing copy”. I want creative stories, that happen to also be marketing copy.
So, I make an account there, and see what comes out. I started by creating some copy for this image, which I imagined having come from some old children’s book.
Folks… Text AIs are good.
In the end I edited the Elouise Makes A Friend text down to this:
This image from Elouise Makes a Friend is a timeless reminder of friendship and kindness. It shows Elouise bravely offering a flower to the Tentacle Monster, who in turn offers a kind smile. Whether you choose a the sleeveless top, the throw pillow, or a coffee mug, this image will comfort you and remind you of the power of friendship.
Bring this touching moment from Elouise Makes a Friend into your home. Our products featuring this image are perfect for gifting to that special someone, or for yourself.
Everything required heavy editing, but that didn’t matter. It’s radically easier to edit two to three paragraphs of copy than to come up with some ridiculous story that you then have to edit anyway.
Over time, I got better and guiding the AI, and increasingly impressed with what it would come up with. For example, I let it create almost everything on the About page.
Knowing then what I know now, would I do it again? 100% It was fun. I’m ridiculously proud of it, and I genuinely want many of the products.
Would I recommend it to others?
Yes, but with caveats. You really need tooling to get from “I threw something on RedBubble” to “I have a site for my products”. Otherwise your brain will melt. I guess you could outsource that work, but the profit margin is so small here that that’d just put you farther in the hole.
There are some existing tools on GitHub but a quick glance suggested they might be abandoned, and frankly it was faster to write ~100 lines of Raku than figure out and tweak someone else’s stuff.
Also, I really need to find a prettier template. I’d hire someone to make one but there’s no way this thing is going to cover the cost of my time to make it, and I’m not currently employed (hire me!) so that’s not going to happen.
Will I add to the site? Almost guaranteed. You can Follow Bed Bath & The Beyond on Mastodon to see the latest items as I add them.
Will I share my code?
Maybe? It’s kinda crap, and could use a lot of refinement, and frankly not many folks have realized the joys of Raku yet so it’s probably not in a language you want to poke anyways.
What’s my favorite?
Lovecraft & The Octopus. Something about this just tickles my funny-bone. Also it looks unreasonably good on everything I put it on. I can not explain it. Like, how can you not want this ridiculous clock?
So Many Images
Working With AI Image generators is like herding cats. This is, honestly, a surprisingly small number of images to get 13 usable products. See A Journey With Midjourney if you’re curious about the process.
Some of these are good, but I haven’t gotten around to incorporating in the site yet. A handful of these are pixelated, because I’ve got another blog post idea involving them… maybe more t-shirts. ;)
Holler if there’s anything there that isn’t on the site, that you’d actually buy. I’ll add a page for it. I’m @firstname.lastname@example.org