Naming Vector Packs For Adobe And Vecteezy: What The Filename Field Actually Controls
Description and use
Automating vector pack uploads to Adobe Stock and Vecteezy with standardized filenames and script‑generated CSV metadata eliminated duplicates and errors, enabling efficient workflow on modest hardware.
Problem
Duplicate uploads and orphaned metadata caused by inconsistent filenames and manual header editing.
Outcome
The pipeline runs on a 1 vCPU, 2 GB RAM server, processing 39 products and 856 MB of output without GPU, eliminating duplicate uploads and orphaned metadata.
Workflow
- Organize assets in a fixed folder structure: assets/, output/, packs/, research/, scripts/
- Generate a single canonical filename per asset using the pattern pack-name_asset-number.svg
- Move renamed files from assets/ to output/ to freeze names
- Run make_metadata.py for each platform to create CSVs with correct headers and filenames
- Use upload_tracker.py to record completed uploads and prevent double‑posting
- Upload the CSVs and files to each platform
- Maintain research/ folder for future packs
Evidence
I lost about two hours of upload work last month because of a filename. Not a rejected file, not a corrupt zip. A filename.
Adobe's upload CSV format is 5 columns, and the first column is the filename. If that string does not exactly match the file you uploaded, the metadata row attaches to nothing.
All three channels I upload to reject a wrong CSV header instantly. Adobe wants its exact 5-column header, Vecteezy wants its exact 4-column header, Dreamstime wants 15 columns.
The whole pipeline, 39 finished products and about 856 MB of output, ran on a 1 vCPU, 2 GB RAM server with no GPU.
- Record date: 2026-10-21T03:56:09.883Z