How make_metadata.py Builds Adobe, Vecteezy and Dreamstime CSVs From One Asset Folder
Description and use
make_metadata.py generates platform‑specific CSVs with exact headers from a single asset folder, eliminating manual spreadsheet errors and speeding metadata preparation.
Problem
Hand‑building metadata CSVs for Adobe Stock, Vecteezy and Dreamstime fails because each platform requires a fixed header order and column count; a single mistake causes instant rejection.
Outcome
The metadata builder reduced the time spent on spreadsheet work from an afternoon per batch to a few seconds, enabling three CSV outputs from one asset folder and eliminating upload failures caused by header mismatches.
Workflow
- 1. Run make_metadata.py with platform flag, output file, and file extension to generate a CSV with the exact required header and one row per asset.
- 2. Optionally provide a titles.json file to replace default title‑casing with real titles and keywords.
- 3. Use upload_tracker.py to record pending, done, and status entries, preventing double‑posting.
- 4. Submit the generated CSV to the respective platform.
- 5. Repeat for each platform using the same asset folder.
Evidence
Last March I lost an entire upload day to a CSV header. I had 40 JPEGs ready for Adobe Stock, I built the metadata file by hand in a spreadsheet, and the uploader rejected it in about two seconds.
The script writes three different CSV shapes, and none of them are negotiable: Adobe Stock uses a 5-column header… Vecteezy uses a 4-column header… Dreamstime uses a 15-column header.
The script itself uses only the Python standard library. No pip install, no dependencies to break.
Once the CSV builder worked, I created a new problem for myself. I ran a batch, got distracted, and ran it again. Double‑posted assets are the fastest way I know to get an account flagged.
- Record date: 2026-10-17T03:56:10.278Z