[object Object]

← back to Pattern Vault

etsy: dry-run listing pipeline from kit CSV — 38 type=download draft payloads, OAuth-gated (safe until shop connected)

d0febc9cbae8936292a1f661d4621a41d224ed38 · 2026-07-04 09:50:47 -0700 · Steve Abrams

Files touched

Diff

commit d0febc9cbae8936292a1f661d4621a41d224ed38
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sat Jul 4 09:50:47 2026 -0700

    etsy: dry-run listing pipeline from kit CSV — 38 type=download draft payloads, OAuth-gated (safe until shop connected)
---
 data/etsy-listings-plan.json | 1008 ++++++++++++++++++++++++++++++++++++++++++
 scripts/etsy-list.mjs        |  155 +++++++
 2 files changed, 1163 insertions(+)

diff --git a/data/etsy-listings-plan.json b/data/etsy-listings-plan.json
new file mode 100644
index 0000000..e8361f1
--- /dev/null
+++ b/data/etsy-listings-plan.json
@@ -0,0 +1,1008 @@
+{
+  "generatedFrom": "kits/etsy/listings.csv",
+  "count": 38,
+  "fixed": {
+    "type": "download",
+    "who_made": "i_did",
+    "when_made": "2020_2026",
+    "quantity": 999,
+    "price": 149
+  },
+  "endpoint": "POST /v3/application/shops/{shop_id}/listings (createDraftListing)",
+  "taxonomyIdResolved": null,
+  "plan": [
+    {
+      "imageFile": "_images/57710.png",
+      "body": {
+        "quantity": 999,
+        "title": "Greige Carouse No.57710 — Seamless Digital Pattern",
+        "description": "Revelrous animal characters mid-carouse on a soft greige ground — conversation-piece whimsy with a neutral palette that still behaves in a real room.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "drunk-animals",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Revelrous animal"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/56250.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Atelier No.56250 — Seamless Digital Pattern",
+        "description": "Muybridge-style sequential motion plates in saddle-mocha on chamois — a scholarly, gallery-wall rhythm for studies, bars and menswear-leaning spaces.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": [
+        "tags dropped (>20 chars): muybridge-plate · saddle-mocha|Muybridge-style sequential"
+      ]
+    },
+    {
+      "imageFile": "_images/40178.png",
+      "body": {
+        "quantity": 999,
+        "title": "Apricot Folio No.40178 — Seamless Digital Pattern",
+        "description": "Hand-painted-look chinoiserie branches drifting across a champagne-linen ground — classic East-meets-West elegance in warm apricot neutrals.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": [
+        "tags dropped (>20 chars): chinoiserie · champagne-linen|Hand-painted-look chinoiserie"
+      ]
+    },
+    {
+      "imageFile": "_images/57669.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Reverie No.57669 — Seamless Digital Pattern",
+        "description": "Full-wall Monterey coastal reverie in sun-washed chamois — a panel mural that reads as fine-art scenery rather than repeat wallpaper.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "monterey-mural",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Full-wall Monterey"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/40172.png",
+      "body": {
+        "quantity": 999,
+        "title": "Oxblood Origin No.40172 — Seamless Digital Pattern",
+        "description": "A disciplined heritage stripe in deep oxblood — tailored, masculine, and instantly at home in libraries, halls and hospitality corridors.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "stripe · oxblood",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A disciplined"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/54111.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Studio No.54111 — Seamless Digital Pattern",
+        "description": "A serene designer-zoo menagerie in muted chamois — calm, illustrative animals with the restraint of a high-end nursery-to-study crossover.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "designer-zoo-calm",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A serene"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/7448.png",
+      "body": {
+        "quantity": 999,
+        "title": "Foxes Slumber in Bottle Green — Seamless Digital Pattern",
+        "description": "Heavy-lidded foxes slumbering in bottle green — moody storybook charm with saturated, jewel-box color.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "stoned-animals",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Heavy-lidded foxes"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/10024.png",
+      "body": {
+        "quantity": 999,
+        "title": "Greige Reverie No.10024 — Seamless Digital Pattern",
+        "description": "A heritage-inspired abstract in layered greige — quiet, textural pattern that flatters furniture instead of fighting it.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "inspired",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A heritage-inspired"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/57678.png",
+      "body": {
+        "quantity": 999,
+        "title": "Terracotta Atelier No.57678 — Seamless Digital Pattern",
+        "description": "Traditional damask reworked in terracotta and umber — old-world formality with an earthy, contemporary temperature.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "damask",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Traditional damask"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/57718.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Folio No.57718 — Seamless Digital Pattern",
+        "description": "Desert cactus silhouettes on warm chamois — southwestern character kept polite enough for coastal and transitional rooms.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "cactus",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Desert cactus"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/38848.png",
+      "body": {
+        "quantity": 999,
+        "title": "Greige Folio No.38848 — Seamless Digital Pattern",
+        "description": "An 11-foot floor-to-ceiling cactus mural in soft greige — sculptural desert scale for feature walls and lobbies.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "cactus-11ft-mural",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "An 11-foot"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/138.png",
+      "body": {
+        "quantity": 999,
+        "title": "Apricot Garden No.138 — Seamless Digital Pattern",
+        "description": "A soft apricot garden floral — romantic, painterly blooms with vintage-print warmth.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "floral",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A soft"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/40138.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Folio No.40138 — Seamless Digital Pattern",
+        "description": "A scenic panoramic toile in chamois — pastoral storytelling in a single sweeping colorway.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A scenic"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": [
+        "tags dropped (>20 chars): designer-scenic · chamois"
+      ]
+    },
+    {
+      "imageFile": "_images/57717.png",
+      "body": {
+        "quantity": 999,
+        "title": "Prussian Origin No.57717 — Seamless Digital Pattern",
+        "description": "Block-printed leaf geometry on deep Prussian blue — graphic, wood-block texture with serious nighttime drama.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Block-printed leaf"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": [
+        "tags dropped (>20 chars): geometric-block-leaves"
+      ]
+    },
+    {
+      "imageFile": "_images/57705.png",
+      "body": {
+        "quantity": 999,
+        "title": "Greige Lattice No.57705 — Seamless Digital Pattern",
+        "description": "A greige lattice geometric — architectural trellis order that layers under art and millwork effortlessly.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "geometric",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A greige"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/54049.png",
+      "body": {
+        "quantity": 999,
+        "title": "Celadon Reverie No.54049 — Seamless Digital Pattern",
+        "description": "Playful monkeys tumbling across a celadon ground — chinoiserie mischief in a fresh botanical green.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "drunk-monkeys-v2",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Playful monkeys"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/57688.png",
+      "body": {
+        "quantity": 999,
+        "title": "Sloths Saunter in Greige — Seamless Digital Pattern",
+        "description": "Sloths sauntering through a greige canopy — slow-living humor rendered in grown-up neutrals.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "drunk-animals",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Sloths sauntering"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/56249.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Reverie No.56249 — Seamless Digital Pattern",
+        "description": "A second Muybridge motion-study plate in chamois reverie — sepia sequences with archival, printed-page character.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A second"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": [
+        "tags dropped (>20 chars): muybridge-plate · saddle-mocha"
+      ]
+    },
+    {
+      "imageFile": "_images/40177.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Origin No.40177 — Seamless Digital Pattern",
+        "description": "Chinoiserie branchwork in smoke-ash over warm chamois — softened contrast for bedrooms and quiet dining rooms.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": [
+        "tags dropped (>20 chars): chinoiserie · smoke-ash|Chinoiserie branchwork"
+      ]
+    },
+    {
+      "imageFile": "_images/57668.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Folio No.57668 — Seamless Digital Pattern",
+        "description": "A companion Monterey mural panel in pale chamois — airy coastal scenery for multi-panel installations.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "monterey-mural",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A companion"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/40171.png",
+      "body": {
+        "quantity": 999,
+        "title": "Honey Studio No.40171 — Seamless Digital Pattern",
+        "description": "A honeyed stripe in antique brass — warm metallic-leaning bands with old-hotel polish.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "A honeyed"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": [
+        "tags dropped (>20 chars): stripe · antique-brass"
+      ]
+    },
+    {
+      "imageFile": "_images/54109.png",
+      "body": {
+        "quantity": 999,
+        "title": "Chamois Reverie No.54109 — Seamless Digital Pattern",
+        "description": "Designer-zoo calm in deeper chamois — the menagerie line in a moodier, tea-stained neutral.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "designer-zoo-calm",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Designer-zoo calm"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/7445.png",
+      "body": {
+        "quantity": 999,
+        "title": "Raccoons Drift in Claret — Seamless Digital Pattern",
+        "description": "Raccoons drifting in claret — rich wine-dark ground with sly, characterful wildlife.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "stoned-animals",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "Raccoons drifting"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/10006.png",
+      "body": {
+        "quantity": 999,
+        "title": "Greige Studio No.10006 — Seamless Digital Pattern",
+        "description": "An inspired abstract study in cool greige — smoky, mineral tones for modern minimal interiors.. Original seamless repeat from the Wallpaper's Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "inspired",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready",
+          "An inspired"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane1.png",
+      "body": {
+        "quantity": 999,
+        "title": "Arden Botanical — Heritage Trellis — Seamless Digital Pattern",
+        "description": "Heritage Botanical — original, generated in our own hand from live trend research (Forest green + cream on soft sage). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "heritage",
+          "trellis",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane2.png",
+      "body": {
+        "quantity": 999,
+        "title": "Nocturne Bloom — Dark Moody Floral — Seamless Digital Pattern",
+        "description": "Dark Moody Florals — original, generated in our own hand from live trend research (Blush peony on ink-black ground). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "dark",
+          "moody",
+          "floral",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-h_black.png",
+      "body": {
+        "quantity": 999,
+        "title": "Gilded Bough — Heritage Noir — Seamless Digital Pattern",
+        "description": "Heritage botanical — original, in our own hand from live trend research (Antique gold on charcoal). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "heritage",
+          "noir",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-h_blush.png",
+      "body": {
+        "quantity": 999,
+        "title": "Rosewater Trellis — Heritage Soft — Seamless Digital Pattern",
+        "description": "Heritage botanical — original, in our own hand from live trend research (Sage on blush). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "heritage",
+          "soft",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-m_plum.png",
+      "body": {
+        "quantity": 999,
+        "title": "Amethyst Nocturne — Moody Bloom — Seamless Digital Pattern",
+        "description": "Dark moody floral — original, in our own hand from live trend research (Plum on aubergine-black). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "moody",
+          "bloom",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-m_emerald.png",
+      "body": {
+        "quantity": 999,
+        "title": "Emerald Nocturne — Camellia — Seamless Digital Pattern",
+        "description": "Dark moody floral — original, in our own hand from live trend research (Blush on emerald-black). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "camellia",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane4.png",
+      "body": {
+        "quantity": 999,
+        "title": "Atomic Meadow — Mid-Century Retro — Seamless Digital Pattern",
+        "description": "Retro mid-century — original, in our own hand from live trend research (Mustard, teal & burnt-orange). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "mid-century",
+          "retro",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane5.png",
+      "body": {
+        "quantity": 999,
+        "title": "Tide Lines — Coastal Stripe — Seamless Digital Pattern",
+        "description": "Coastal stripe — original, in our own hand from live trend research (Faded navy, sage & sand). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "coastal",
+          "stripe",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane6.png",
+      "body": {
+        "quantity": 999,
+        "title": "Folk Tile — Block Print Geometry — Seamless Digital Pattern",
+        "description": "Block-print geometry — original, in our own hand from live trend research (Indigo & terracotta on cream). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "block",
+          "print",
+          "geometry",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane1c2.png",
+      "body": {
+        "quantity": 999,
+        "title": "Calico Vine — Heritage Ditsy — Seamless Digital Pattern",
+        "description": "Heritage botanical ditsy — original, in our own hand from live trend research (Terracotta & olive on bone). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "heritage",
+          "ditsy",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane3b.png",
+      "body": {
+        "quantity": 999,
+        "title": "Cottage Wash — Painterly Floral — Seamless Digital Pattern",
+        "description": "Painterly watercolor floral — original, in our own hand from live trend research (Blush + sage on warm cream). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "painterly",
+          "floral",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane1b.png",
+      "body": {
+        "quantity": 999,
+        "title": "Indigo Trellis — Heritage Vine — Seamless Digital Pattern",
+        "description": "Heritage botanical trellis — original, in our own hand from live trend research (Deep indigo on oatmeal). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "heritage",
+          "vine",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane2b.png",
+      "body": {
+        "quantity": 999,
+        "title": "Crimson Nocturne — Moody Rose — Seamless Digital Pattern",
+        "description": "Dark moody floral — original, in our own hand from live trend research (Burgundy rose on charcoal). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "moody",
+          "rose",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    },
+    {
+      "imageFile": "_images/ih-lane2c.png",
+      "body": {
+        "quantity": 999,
+        "title": "Teal Nocturne — Magnolia Bloom — Seamless Digital Pattern",
+        "description": "Dark moody floral — original, in our own hand from live trend research (Ivory magnolia on deep teal). Original seamless repeat from the Wallpaper’s Back studio — seam-verified, print-clean at 150 DPI. Digital single-use license included; commercial and exclusive tiers available.",
+        "price": 149,
+        "who_made": "i_did",
+        "when_made": "2020_2026",
+        "taxonomy_id": "<SET ETSY_TAXONOMY_ID>",
+        "type": "download",
+        "is_supply": false,
+        "tags": [
+          "magnolia",
+          "bloom",
+          "seamless pattern",
+          "original design",
+          "wallpaper",
+          "surface design",
+          "repeat pattern",
+          "print ready"
+        ],
+        "should_auto_renew": false
+      },
+      "warnings": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/scripts/etsy-list.mjs b/scripts/etsy-list.mjs
new file mode 100644
index 0000000..113546c
--- /dev/null
+++ b/scripts/etsy-list.mjs
@@ -0,0 +1,155 @@
+#!/usr/bin/env node
+// Etsy listing pipeline for Pattern Vault — reads kits/etsy/listings.csv and prepares
+// createDraftListing payloads (type=download) for all 38 designs.
+//
+// SAFE BY DESIGN: dry-run unless BOTH (a) LIVE=1 and (b) Etsy OAuth creds are present.
+// Without a connected shop + listings_w token it CANNOT create a live listing — it just
+// writes data/etsy-listings-plan.json and prints a summary. Once the shop is connected
+// (ETSY_API_KEY, ETSY_ACCESS_TOKEN, ETSY_SHOP_ID, ETSY_TAXONOMY_ID), `LIVE=1` creates the
+// drafts + uploads the preview images; publishing (draft->active) stays a separate step.
+//
+// Flow per row (Etsy API v3):
+//   1. POST /v3/application/shops/{shop_id}/listings          (createDraftListing, type=download)
+//   2. POST .../listings/{listing_id}/images                 (uploadListingImage — preview)
+//   3. [GATED, later] POST .../listings/{listing_id}/files   (uploadListingFile — 150-DPI master from Kamatera)
+//
+// Usage:
+//   node scripts/etsy-list.mjs                 # dry-run: build + validate payloads, write plan
+//   LIVE=1 node scripts/etsy-list.mjs          # live (only proceeds if OAuth creds present)
+
+import fs from 'node:fs';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
+const CSV = path.join(ROOT, 'kits/etsy/listings.csv');
+const OUT = path.join(ROOT, 'data/etsy-listings-plan.json');
+
+// Etsy fixed fields for these products
+const TYPE = 'download';
+const WHO_MADE = 'i_did';
+const WHEN_MADE = '2020_2026';
+const QUANTITY = 999; // Etsy digital-download max
+const PRICE = 149.0;
+
+// OAuth / shop config — absent until Steve connects the Etsy shop.
+const CFG = {
+  apiKey: process.env.ETSY_API_KEY || null,
+  token: process.env.ETSY_ACCESS_TOKEN || null,
+  shopId: process.env.ETSY_SHOP_ID || null,
+  // Digital surface-pattern category. Resolve the real numeric id at wire-up via
+  // getSellerTaxonomyNodes (x-api-key only) and set ETSY_TAXONOMY_ID. Left null here on purpose.
+  taxonomyId: process.env.ETSY_TAXONOMY_ID || null,
+};
+const LIVE = process.env.LIVE === '1';
+
+// --- robust CSV parse (quoted fields, doubled quotes, embedded commas) ---
+function parseCsv(s) {
+  const rows = [];
+  let f = [], cur = '', inq = false;
+  for (let i = 0; i < s.length; i++) {
+    const c = s[i];
+    if (inq) { if (c === '"') { if (s[i + 1] === '"') { cur += '"'; i++; } else inq = false; } else cur += c; }
+    else if (c === '"') inq = true;
+    else if (c === ',') { f.push(cur); cur = ''; }
+    else if (c === '\n') { f.push(cur); rows.push(f); f = []; cur = ''; }
+    else if (c !== '\r') cur += c;
+  }
+  if (cur || f.length) { f.push(cur); rows.push(f); }
+  return rows.filter((r) => r.length > 1 || r[0] !== '');
+}
+
+const raw = parseCsv(fs.readFileSync(CSV, 'utf8'));
+const header = raw[0];
+const idx = (name) => header.indexOf(name);
+const rows = raw.slice(1).map((r) => ({
+  image: r[idx('image')],
+  title: r[idx('title')],
+  description: r[idx('description')],
+  tags: (r[idx('tags')] || '').split(',').map((t) => t.trim()).filter(Boolean),
+}));
+
+// Etsy caps: title <=140 chars; <=13 tags, each <=20 chars.
+const clampTitle = (t) => (t.length <= 140 ? t : t.slice(0, 137).trimEnd() + '…');
+const clampTags = (tags) => tags.filter((t) => t.length <= 20).slice(0, 13);
+
+function buildPayload(row) {
+  const warnings = [];
+  if (row.title.length > 140) warnings.push('title>140 (clamped)');
+  const dropped = row.tags.filter((t) => t.length > 20);
+  if (dropped.length) warnings.push(`tags dropped (>20 chars): ${dropped.join('|')}`);
+  return {
+    imageFile: row.image, // relative to kits/  -> kits/_images/*.png
+    body: {
+      quantity: QUANTITY,
+      title: clampTitle(row.title),
+      description: row.description,
+      price: PRICE,
+      who_made: WHO_MADE,
+      when_made: WHEN_MADE,
+      taxonomy_id: CFG.taxonomyId ? Number(CFG.taxonomyId) : '<SET ETSY_TAXONOMY_ID>',
+      type: TYPE,
+      is_supply: false,
+      tags: clampTags(row.tags),
+      should_auto_renew: false,
+    },
+    warnings,
+  };
+}
+
+const plan = rows.map(buildPayload);
+const totalWarnings = plan.reduce((n, p) => n + p.warnings.length, 0);
+
+fs.mkdirSync(path.dirname(OUT), { recursive: true });
+fs.writeFileSync(OUT, JSON.stringify({
+  generatedFrom: 'kits/etsy/listings.csv',
+  count: plan.length,
+  fixed: { type: TYPE, who_made: WHO_MADE, when_made: WHEN_MADE, quantity: QUANTITY, price: PRICE },
+  endpoint: 'POST /v3/application/shops/{shop_id}/listings (createDraftListing)',
+  taxonomyIdResolved: CFG.taxonomyId || null,
+  plan,
+}, null, 2));
+
+console.log(`[etsy] built ${plan.length} draft-listing payloads (type=${TYPE}) -> ${path.relative(ROOT, OUT)}`);
+console.log(`[etsy] payload warnings: ${totalWarnings}`);
+const missing = ['apiKey', 'token', 'shopId', 'taxonomyId'].filter((k) => !CFG[k]);
+if (missing.length) {
+  console.log(`[etsy] DRY-RUN only — missing config: ${missing.join(', ')}`);
+  console.log('[etsy] connect the shop (OAuth listings_w) + set ETSY_* env, then run LIVE=1 to create drafts.');
+}
+
+async function form(body) {
+  const p = new URLSearchParams();
+  for (const [k, v] of Object.entries(body)) {
+    if (Array.isArray(v)) v.forEach((x) => p.append(k, x));
+    else p.append(k, String(v));
+  }
+  return p;
+}
+
+if (LIVE && missing.length === 0) {
+  const base = `https://openapi.etsy.com/v3/application/shops/${CFG.shopId}/listings`;
+  const headers = { 'x-api-key': CFG.apiKey, Authorization: `Bearer ${CFG.token}`, 'Content-Type': 'application/x-www-form-urlencoded' };
+  let ok = 0, fail = 0;
+  for (const item of plan) {
+    try {
+      const res = await fetch(base, { method: 'POST', headers, body: await form(item.body) });
+      const j = await res.json();
+      if (!res.ok) { console.error(`[etsy] FAIL "${item.body.title}": ${JSON.stringify(j)}`); fail++; continue; }
+      const listingId = j.listing_id;
+      // upload preview image (multipart)
+      const imgPath = path.join(ROOT, 'kits', item.imageFile);
+      if (fs.existsSync(imgPath)) {
+        const fd = new FormData();
+        fd.append('image', new Blob([fs.readFileSync(imgPath)]), path.basename(imgPath));
+        fd.append('rank', '1');
+        await fetch(`${base}/${listingId}/images`, { method: 'POST', headers: { 'x-api-key': CFG.apiKey, Authorization: `Bearer ${CFG.token}` }, body: fd });
+      }
+      console.log(`[etsy] draft ${listingId} ✓ ${item.body.title}`);
+      ok++;
+    } catch (e) { console.error(`[etsy] ERROR "${item.body.title}": ${e.message}`); fail++; }
+  }
+  console.log(`[etsy] LIVE done — ${ok} drafts created, ${fail} failed. Publish (draft->active) is a separate step.`);
+} else if (LIVE) {
+  console.log('[etsy] LIVE requested but config incomplete — refused (nothing sent).');
+}

← 83df324 signup-handoff: record Redbubble automated path (recon-prove  ·  back to Pattern Vault  ·  etsy: auto-resolve digital-pattern taxonomy_id at wire-up (g 1909be7 →