Etsy printables: a production and listing pipeline built on three automations
Mockups went from 3 min to 45 s, listing prep from 15–20 min to 2 min.
- Role
- The whole product, automation and listing pipeline
- Period
- Feb 2026 – present
- Platforms
- Photoshop, n8n, GPT, Google Sheets, Etsy
- 3 min , now 45 s Mockup output
- 15–20 min , now 2 min Listing prep
- 3 Automations built
Context
I sell printable wall art on Etsy: the customer buys a digital file, not a physical print. After purchase they get a single PDF, and its Drive link gives them JPGs at 300 DPI in five different aspect ratios — so they can print at whatever size they choose.
The product itself comes together quickly. The real load is producing mockups for every product, sorting images into the right folders and filling in the listing fields one by one.
Problem
In this business, one product gets you nowhere; the store needs a steady stream of new listings to stay visible. Working by hand, placing an image into the mockups and exporting it in Etsy’s format took 3 minutes, and filling in a listing’s fields (title, 13 tags, description, attributes, price, SKU) took 15–20 minutes.
So getting a single product ready to publish took close to half an hour. Add keyword research and image generation on top, and keeping up with the volume needed by hand was close to impossible. Worse, as fatigue set in on repetitive work, skipped mockups, wrong sizes and files in the wrong folder piled up.
What I did
I split the pipeline into three parts. Each one works on its own; together they turn a product idea into a publish-ready draft in two minutes.
1. Image generation — prompt generator GPT
I built a GPT that produces Midjourney prompts according to a rule set I wrote. It reads two up-to-date files together: the store’s listing table (what’s in the inventory) and the eRank keyword table (what the market is searching for).
It decides in this order: fit with the store’s identity → gaps in the inventory → keyword potential → variety within the batch → how well it prints → whether it can be produced. High search volume alone isn’t enough; an idea that would print badly doesn’t get priority just because its keyword is strong.
The most critical rule in the rulebook is print realism. The product is digital, but in the listing image the customer wants to see the piece framed, like a real print. So the prompts explicitly ban outputs that feel like a screenshot — glossy surfaces, a backlit feel, plastic digital texture — and favor print-like terms such as matte pigment, paper texture and visible brushwork.
Keywords set the direction but don’t box in the image: completely different scenes can come out of the same keyword cluster, and the keyword itself never appears as text in the image. By default a batch produces 25 prompts with a fixed mix: 10 keyword gaps, 7 expansions of the core aesthetic, 5 creative gap fills and 3 experiments. On top of that, human figures appear in at most a quarter of a batch, the palette stays muted and sun-faded, and a batch never drifts into a single color.
Every prompt comes out in a fixed ten-part template: subject, setting, composition, medium, palette, light, texture, print guidance, negatives and aspect ratio. Next to it goes a selection reason saying which gap it fills — so I can look back later and see why an idea was produced.
2. Mockup production — Photoshop script
By hand, placing an image into every mockup and exporting it in Etsy’s format took 3 minutes. The script I wrote cut that to 45 seconds.
The way it works is simple: I pick the output folder, the design folders to
process (I can select several at once) and the folder with the mockup
templates. The script opens each template PSD, finds the Smart Object named
Artwork inside, places the design into it, scales it to cover the canvas,
centers it and exports a JPEG with the color profile embedded. I solved file
naming through the SKU: each design goes to its own folder, and files are named
SKU_mockupname.jpg — you can read which image belongs to which product and
which template straight from the name.
The real work starts after that. In batch runs, what matters isn’t that the script runs, but that it doesn’t stop:
- Every PSD and every design sits in its own try/catch block. If a template fails, that output is skipped and the batch carries on — a 30-image run doesn’t start over on a single error.
- If the Artwork layer can’t be found, a safe Smart Object search kicks in; if the PSD has exactly one Smart Object it uses that, and if it can’t be sure, it skips the template and writes it to the report.
- Windows’ 255-character path limit was a real problem. If a name is too long, the script first shortens the folder and file names, and if it’s still too long, it falls back to an index-based name. Without this, outputs silently disappeared on long SKU + long template name combinations.
- At the end of every run, it writes the number of successful outputs, errors and skipped templates, plus the duration, to a log file; if there were errors, a separate report file comes out.
I also did a round of speed optimization: the Smart Object reference is found once per PSD and cached, and the progress window refreshes every five outputs instead of every one. It got back close to V12 speed without hurting reliability.
3. Listing — n8n workflow
This is where the real gain is. The 41-node workflow does the following, in order:
- Reads the listing table and the attribute reference sheet in Google Sheets — the title, tag and description data from the SEO GPT has already landed here
- Pulls that category’s property list from the Etsy taxonomy via the API; it takes attribute IDs from the source instead of guessing them from names
- Processes SKUs one at a time: if a row has a listing ID it updates the existing listing, otherwise it opens a new draft — the same product is never opened twice
- Writes the new listing ID to the table right away; even if the flow fails at the next step, no orphaned draft is left on Etsy
- Fills in the title, description, tags and price, then writes price, quantity and SKU to the inventory side
- Writes attributes one by one (Etsy won’t accept them in bulk), then reads them back from Etsy: a 200 response doesn’t mean the field was actually filled. If anything is missing, a second repair pass runs and verifies again
- Finds the images in the SKU folder on Drive and uploads them in order (the first image becomes the cover), and attaches the delivery PDF for the customer as the digital product file
- Produces a one-line result for the SKU and writes it to the table: what was written, what’s still missing. Then it moves on to the next SKU
The listing is prepared on Etsy as a draft.
I deliberately didn’t automate publishing. A listing is the face the customer sees; if the automation filled in a field wrong, I should be the one to spot it, not the customer. A final review of the draft before publishing takes thirty seconds, while fixing a product that went live with a wrong title or a missing attribute costs far more. Deciding where an automation should stop is as much part of the job as being able to build it.
Result
The 15–20 minutes of work per listing dropped to 2 minutes. Mockup output went from 3 minutes to 45 seconds.
Screenshots of the work
The numbers are left exactly as they appear in the dashboards.
Drag to explore · click a node
3× speed
If you have a question about this project, drop me a line.