[KongchangAI]
· 2 min read· 1,324 words

39 Products Batched on Weekends, Weekday Uploads Take Just Minutes

39 Products Batched on Weekends, Weekday Uploads Take Just Minutes

The creator uses weekend batch asset processing and weekday three-command uploads to complete multi-platform listings in ten minutes.

The article introduces a creator's digital product listing pipeline: weekend concentrated generation of assets, titles, keywords, and packaging; weekdays require only three commands to complete multi-platform uploads in ten minutes. The core pain point isn't slow production but trivial steps leaking into midweek time. Using a CSV column order error that caused 14 products to be batch-rejected, the author illustrates strict header validation and advocates script-generated precise headers per platform, along with a simple tracker to prevent duplicate uploads and a fixed folder layout to avoid repetitive work. Covers and thumbnails are framed as product decisions, not chores. The entire pipeline is validated on a 1 vCPU, 2GB RAM server without GPU, with core scripts relying only on the standard library.

Title

39 Products Batched on Weekends, Weekday Uploads Take Just Minutes

Meta Description

A creator shares a digital product batch-listing workflow: generate 39 products and process metadata over the weekend, then use Python scripts to complete multi-platform uploads in ten minutes on weekdays. Solving CSV format errors and duplicate upload pain points.

Article Content

A creator shared his digital product listing pipeline: concentrate on processing assets and metadata over the weekend, then use three commands to complete multi-platform uploads in ten minutes on weekdays. The core pain point isn't slow production—it's that trivial steps leak into valuable midweek time. He illustrates platform upload strictness with a painful CSV format error experience.

rss source: How I Batch 39 Products On Weekends So Weeknight Uploads Take Minutes

Weekend Batch Processing, Weekday Copy-Paste

The author strictly divides his work: weekends for generating raw assets, writing titles and keywords, and selecting final products; weekdays for uploads only. He uses a vector prompt pack to generate content all at once over the weekend, running one task at a time without parallelization. He completed a full run of 39 products with 856MB of output on a server with only 1 vCPU, 2GB RAM, and no GPU. His advice: you don't need powerful hardware—you need patience and single-task serial execution. For memory management, he calls gc.collect() after each asset and uses resource.getrusage(RUSAGE_SELF).ru_maxrss to check actual peak memory rather than averages.

Vector prompt pack refers to a set of pre-written, reusable prompts, typically organized in a structured way (e.g., by asset type, style, platform), using vector retrieval or embedding techniques to quickly match the most relevant prompt templates during generation. In batch content production scenarios, it lets creators avoid designing prompts from scratch each time, instead calling debugged prompt snippets like functions—maintaining style consistency and reducing repetitive work during concentrated weekend runs. The author emphasizes "running one task at a time, no parallelization" because serial execution avoids multiple generation tasks competing for limited memory and CPU, and makes it easier to pinpoint problems when errors occur.

CSV Headers Are Contracts, Not Suggestions

Adobe Stock requires a specific 5-column CSV, Vecteezy requires 4 columns with different column names, and Dreamstime requires 15 columns. One Tuesday evening, he manually entered metadata tables with incorrect column order, causing 14 completed vector products to be batch-rejected—all due to "malformed CSV." Platforms check headers first during upload; if columns don't match, they reject the entire file without even looking at the images. So he completely stopped manually creating tables and instead uses make_metadata.py to read folders and generate exact headers per platform requirements. The script supports a --titles titles.json parameter to pass in real titles and keywords written over the weekend; if not provided, it converts filenames to title case, but this is only suitable for drafts and must be replaced before formal submission, because filenames like geometric-pattern-04.jpg as titles are obviously machine-generated. Now his midweek upload process is: run one command per platform, open the CSV to upload, done—about ten minutes.

CSV header refers to the fields in the first row of a file that define column names; platforms typically treat it as a "contract" for data mapping. During upload, the system compares headers character-by-character against backend template column names, order, and count—rejecting the entire file on mismatch rather than tolerating row-by-row errors. Different platforms (like Adobe Stock, Vecteezy, Dreamstime) have different column counts and names, and manual adjustment in spreadsheet software easily leads to "malformed CSV" errors from column misalignment or hidden characters. Generating headers precisely per platform templates with scripts eliminates human differences and ensures fields like titles and keywords land in the correct columns.

Duplicate Upload Problem

Besides CSV format errors, the second fastest way to get flagged by platforms is re-running batches. On tired weekday evenings, re-running to fix a typo easily leads to uploading the same file twice. Platforms notice—duplicate content looks like spam behavior. upload_tracker.py is a simple pure-standard-library logging tool with no installation needed. python upload_tracker.py done "asset-001.jpg" marks completion, pending shows what's truly remaining, and re-runs never duplicate posts because the tracker remembers. The author calls it his most boring but most indispensable script.

Duplicate upload refers to the same file or highly similar content being submitted to a platform multiple times. Platform risk-control systems identify this as spam or batch flooding—ranging from rejecting duplicates to restricting account upload permissions. When fixing typos or uploading missed files, directly re-running the entire batch easily resubmits already-successful files. upload_tracker.py records each asset's status locally (done/pending), skipping completed items on re-runs—mechanically avoiding duplication rather than relying on human memory.

Packaging Is a Product Decision, Not Chores

Bare zip files don't sell well. The same files with a 1280×720 cover and 600×600 square thumbnail sell noticeably better, because the thumbnail is the only thing buyers see in search results. pack_product.py packages the zip and renders both images in one command, with Pillow as the only dependency. For documentation, md2pdf.py converts Markdown files to styled PDFs via reportlab, supporting headings, tables, lists, and links—making license pages and quick-start guides part of the product rather than scattered text files.

Cover and thumbnail serve different display functions in digital product marketplaces: covers are typically used for product detail page hero images or banners at larger sizes (like 1280×720) to convey overall style and use cases; thumbnails (like 600×600 square) appear in search result grids and are the only thing buyers see when browsing listings. Thumbnails need to remain clear and visually prominent at small sizes, so they can't simply be scaled-down covers—they should be composed separately. pack_product.py renders both simultaneously, ensuring products have qualified visual entry points in any display position.

Folder Layout Is the Real Automation

The author once wasted an afternoon due to lack of fixed structure—directories became junk drawers and work was duplicated. The pipeline assumes a deliberately boring layout: under project/ are assets/ (raw output), output/ (files to submit + metadata.csv), packs/ (finished zips + covers), research/ (notes and sources), scripts/ (tools). He shares a hard lesson: never delete research/—scraping logs and notes are raw material for the next product. He cleaned it once and lost weeks of foundational work; he won't make that mistake again.

What a Week Actually Looks Like Now

Saturday: generate and filter assets, write titles and keywords into titles.json, run packaging commands—about four focused hours. Tuesday or Thursday: run make_metadata.py for each platform, check upload_tracker.py status, upload through each site's forms, mark done—ten to fifteen minutes. If he skips a week, nothing breaks because the tracker and folder structure maintain state for him. Behind the entire project are about 19,000 lines of pipeline code and 300+ pages of research, all validated on a 1 vCPU, 2GB RAM machine. No cloud accounts, no frameworks, four standalone Python scripts, two third-party packages total, and the two scripts used weekly only need Python itself. The author has packaged the four scripts, folder layout, and memory notes into his personal toolkit.

One-line Summary

The creator uses a pipeline of weekend batch processing of assets and weekday three-command uploads to complete multi-platform listings in ten minutes.

Paragraph Summary

The article introduces a creator's digital product listing pipeline: weekend concentrated generation of assets, writing titles and keywords, and completing packaging; weekdays require only three commands to complete multi-platform uploads in ten minutes. The core pain point isn't slow production but trivial steps leaking into midweek time. The author uses an experience where CSV column order errors caused 14 products to be batch-rejected to illustrate platforms' strict header validation, and advocates generating precise headers per platform via scripts. Meanwhile, he uses a simple tracker to prevent duplicate uploads on re-runs, uses fixed folder layouts to avoid repetitive work, and emphasizes that covers and thumbnails are product decisions, not chores. The entire pipeline is validated on a 1 vCPU, 2GB RAM server without GPU, with core scripts relying only on the standard library.

#digital product listing#batch processing#CSV format errors#Python scripts#upload tracker#multi-platform upload#folder layout
Share:

Related articles