Two Packages, One Server: Metadata CSVs, Covers and PDFs for 39 Products
Описание и применение
Автоматизированный набор скриптов генерирует корректные CSV‑файлы, отслеживает загрузки, конвертирует Markdown в PDF, создаёт обложки и миниатюры, упаковывает всё в ZIP‑архивы и успешно публикует 39 продуктов на сервере с 1 vCPU и 2 ГБ RAM.
Задача
Rejections from stock platforms due to incorrect CSV headers and duplicate uploads caused wasted time and effort.
Результат
Produced 39 compliant product packages (856 MB) on a 1 vCPU, 2 GB server, eliminating manual errors and duplicate uploads.
Рабочий процесс
- Generate metadata CSV with make_metadata.py specifying platform and file extensions
- Supply real titles and keywords via titles.json if needed
- Track pending uploads with upload_tracker.py pending items.txt
- Mark items as done with upload_tracker.py done "asset-001.jpg"
- Check status with upload_tracker.py status
- Convert Markdown documentation to PDF using md2pdf.py content.md product.pdf "My Product Title"
- Package product assets, cover, and thumbnail into a zip with pack_product.py my-product "My Product" "A short subtitle" 9
- Use environment variable PACK_ROOT or --dir to control output location
- Run entire pipeline on a single-core server, ensuring one process at a time, freeing memory with gc.collect(), measuring peak RSS, isolating heavy renders in subprocesses, and rendering at required resolution
Доказательства
One column was out of order in the CSV. That's it.
I built one script, make_metadata.py, that writes the exact header each platform demands and nothing else.
It remembers what you posted: python upload_tracker.py pending items.txt ... python upload_tracker.py done "asset-001.jpg"
md2pdf.py turns a Markdown file into a clean styled PDF with headings, tables, lists and links
pack_product.py zips the files and renders two images: a cover at 1280×720 and a thumbnail at 600×600.
The full pipeline produced 39 products, 856 MB of output, from a single-core server with no GPU.
- Дата записи: 2026-10-24T14:41:08.853Z