From One Prompt to 39 Finished Products: What Actually Broke
Last March I ran a batch of 40 uploads to Adobe Stock overnight. I woke up to a rejection screen and a bad feeling. The art was fine. The CSV was not. One wrong header column and Adobe's uploader rejects the file before it even looks at your images. That morning I learned that the prompt engine was the easy part, and everything after it was where the product actually gets made. Here is what…
A single prompt resulted in 39 completed products, with an unexpected breakdown of the challenges faced and improvements made along the way. The initial batch of 40 uploads to Adobe Stock was rejected due to a single header column mismatch, highlighting the critical role of metadata in the process. Adobe's uploader is rigid, rejecting entire files if the structure is even slightly incorrect.
To mitigate this, a script called make_metadata.py was created to generate the required CSV files for multiple platforms like Adobe, Vecteezy, and Dreamstime. This script ensures each platform's specific header format is adhered to, preventing rejections due to formatting issues.
Another significant issue was double-posting, which could lead to account flagging. To avoid this, a ledger script named upload_tracker.py was implemented. This script maintains a record of pending uploads, marks items as done, and provides a status overview. By using a plain-text ledger and the Python standard library, it ensures that each item is uploaded only once, eliminating the risk of duplicates.
This script emphasizes the importance of discipline and memory management in automated pipelines, especially when interacting with external accounts.
The entire workflow was executed on a single-core server with limited resources (1 vCPU, 2 GB RAM), forcing a focus on efficiency and simplicity. The make_metadata.py script writes files in a structured manner, which is crucial for maintaining a well-organized catalogue. The folder layout consists of five key directories: assets/ for raw outputs, output/ for files ready for submission along with metadata CSVs, packs/ for finished zips and covers, research/ for notes and logs, and scripts/ for tools.
Keeping a separate research/ directory is essential as it contains valuable material that might be needed for future projects. The pipeline also includes a script called md2pdf.py that converts Markdown documents into sellable PDFs by applying styling through reportlab, and another called pack_product.py that bundles files into zips with appropriate covers and thumbnails using Pillow.
This entire kit, consisting of four primary scripts, is designed to streamline the process of producing digital products without relying on any external frameworks or cloud services, making it a zero-cost solution that can be run on a simple server.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.