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.
tagses 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_idobligatorio (etsy_api.py:112) · la sección debe EXISTIR antes del POST (etsy_api.py:118) ·who_madeexigeis_supply+when_made, y no existeis_digital— estype(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.
