Canal · Etsy

Marketplace con buscador propio: el listing ES el SEO. Sol del Valle llegó a 10 listings activos operando por la Open API v3 oficial — la automatización de navegador quedó descartada (el muro anti-bot saltó 4 veces).

Reglas de la API descubiertas operando (2026-08-30)

  • OAuth PKCE en dos pasos (URL+verifier primero, código después) — sirve para sesiones no interactivas.
  • tags es UN string "a,b,c", no un campo repetido. El POST devuelve 201 igual con 1 tag — sólo el GET independiente lo mostró (Probe over report). Tags ≤20 caracteres y solo alfanumérico, espacio, guion o apóstrofe (el validador real rechaza cualquier otro carácter — etsy_more.py:106); van exactamente 13.
  • Secciones de tienda: ≤24 caracteres ("too long" si te pasás). Ojo: la API devuelve entidades HTML (Host's) — revisar cómo se ve en Shop Manager.
  • Títulos: máximo 3 palabras que empiecen con 2 mayúsculas seguidas; %:&+ sólo una vez.
  • Subidas de archivos: de a UNA, con timeout largo (7 en paralelo → write timeout). Hacé los comandos idempotentes (re-correr no duplica).
  • El checkbox "With an AI generator" NO está en la API — es un clic manual en Shop Manager antes de activar. Regla de la casa: TODO listing con contenido asistido por IA lo declara. Que tu tooling imprima el pendiente y se niegue a activar sin confirmarlo.
  • Los límites duros que el validador local codifica (cada uno costó un rechazo real): título ≤140 (etsy_packages.py:74) · ≤5 archivos digitales (etsy_more.py:107) · ≤20 MB por archivo (etsy_api.py:100) · taxonomy_id obligatorio (etsy_api.py:112) · la sección debe EXISTIR antes del POST (etsy_api.py:118) · who_made exige is_supply+when_made, y no existe is_digital — es type (etsy_api.py:115) · timeout de subida multipart 900 s contra 120 s del resto (etsy_api.py:41).
  • Publicar un listing cuesta $0.20 — la activación es decisión del dueño, no del script.

Después de publicar

GET independiente por listing: fotos, archivos, sección, tags — contra lo prometido. El caso completo del libro con 1/3 archivos son DOS eventos encadenados, y los dos enseñan: (1) la subida en borrador quedó 1/3 por un write timeout de SSL — el GET lo atrapó y lo dejó anotado; (2) el dueño activó el listing ANTES de que se completara → estuvo ACTIVO a precio real vendiendo 1/3, hasta que otro GET lo midió y lo reparó (ventana expuesta con 0 ventas — suerte, no diseño). Verificado hoy: active, 3/3 archivos (7 · Comercio real, no mockup). La lección: el probe del borrador no cubre la activación — el estado se re-verifica DESPUÉS de cada transición, porque la transición la hace otra persona.

El enlace de vuelta

Tu landing tiene que poder mandar tráfico a Etsy Y medir el clic — el cero estructural de G6 (El registro de grietas) fue exactamente no tener ningún link a Etsy mientras el contador reportaba etsy: 0.