Saltar al contenido principal
SocialCutter

IA y agentes

Automatiza el recorte de imágenes con Zapier

Monta un Zap que reciba una imagen y genere todas sus medidas con SocialCutter: URL pública en el cuerpo JSON, cabeceras, salidas y errores.

  • Zapier
  • no-code
  • automatización
  • Webhooks by Zapier
  • SocialCutter
  • API key
  • redes sociales

Por qué automatizar el recorte en Zapier

Una imagen maestra tiene que servir para Instagram, LinkedIn, X y la portada del blog, y cada hueco pide una proporción distinta. Hacerlo a mano, formato a formato, no escala cuando publicas a diario o cuando el catálogo tiene cientos de fichas.

Zapier encaja porque ya vigila dónde aparecen imágenes nuevas (un formulario, Google Drive, Dropbox, un correo) y porque cualquier plan permite una llamada HTTP a una API REST. SocialCutter recorta la imagen de forma centrada a las medidas exactas de cada destino y devuelve una URL por salida; Zapier mueve esa URL al sitio que toca. El encuadre es predecible: no analiza el contenido ni decide qué parte recortar.

Cómo funciona la API

La API REST vive en https://api.socialcutter.theboomer.dev y la autenticación va en la cabecera X-API-Key (también vale Authorization: Bearer sc_tu_clave).

  • POST /api/v1/images/process — recibe una imagen y devuelve una salida por destino.
  • POST /api/v1/images/upload — acepta la imagen como cadena base64 en el cuerpo JSON.
  • POST /api/v1/images/process/upload — multipart con el fichero en file y destinations como campo de formulario.
  • POST /api/v1/images/batch — varias imágenes en una sola llamada.
  • GET /api/v1/history, GET /api/v1/wallet, GET /api/v1/platforms — historial, cuota y catálogo real de destinos.

La referencia completa está en https://docs.socialcutter.theboomer.dev.

Zapier y el binario: por qué se evita el multipart

El paso HTTP de Zapier maneja bien el JSON, pero el multipart/form-data que lleva un fichero binario es frágil: según la versión y el disparador, el adjunto llega corrupto, con la longitud mal calculada o sin la parte Content-Type correcta, y la API responde 422 o devuelve una imagen rota. Por eso esta guía no envía el binario:

  1. Vía recomendada: la URL pública del fichero en el campo source del cuerpo JSON. Funciona siempre que el origen sea accesible desde fuera.
  2. Alternativa: base64 con POST /api/v1/images/upload, cuando el origen no expone una URL (un Drive privado, un adjunto de formulario).

No montes el multipart a mano con campos de formulario en Zapier: es donde aparecen los fallos.

Crear la API key

Entra en https://dash.socialcutter.theboomer.dev, abre Perfil → API keys, crea una clave con un nombre reconocible (por ejemplo zapier-produccion) y cópiala: empieza por sc_ y solo se muestra una vez. Guárdala como valor de conexión o variable de entorno, no pegada en el texto de la acción.

El paso HTTP: cabeceras y cuerpo

CabeceraValor
X-API-Keysc_tu_clave
Content-Typeapplication/json
Idempotency-KeyOpcional: id estable del fichero, para que un reintento no duplique trabajo

Añade un paso Webhooks by Zapier → POST y pega este cuerpo en crudo, sustituyendo el valor de value por el campo del disparador (por ejemplo {{image_url}}):

{
  "source": { "type": "url", "value": "https://example.com/foto.jpg" },
  "destinations": [
    { "platform": "instagram", "format": "post" },
    { "platform": "linkedin", "format": "post" },
    { "platform": "twitter", "format": "post" }
  ],
  "options": { "fit_mode": "cover" }
}

source acepta url o base64; destinations es la lista de plataforma y formato. fit_mode: cover escala y recorta el exceso de forma centrada (el valor por defecto); para encajar la imagen completa, usa contain con background_color.

Destinos que acepta la API

PlataformaFormatoMedidasRelación
instagrampost1080x10801:1
instagramstory1080x19209:16
instagramlandscape1080x5661.91:1
facebookpost1200x6301.91:1
facebookstory1080x19209:16
facebookcover820x3122.63:1
twitterpost1200x67516:9
twitterheader1500x5003:1
linkedinpost1200x6271.91:1
linkedincover1128x1915.9:1
youtubethumbnail1280x72016:9
youtubebanner2560x144016:9
tiktokcover1080x19209:16

Estos datos salen de GET /api/v1/platforms, que es público. El catálogo no incluye un formato 4:5.

Guardar el resultado (URLs de salida)

La respuesta trae image_id y un array outputs, una entrada por destino, con la URL del resultado, la plataforma, el formato y las medidas. En Zapier, añade un paso Formatter → Utilities → Line item to text (o Looping by Zapier) sobre outputs para recorrer las salidas, guarda cada url en una columna de Sheets o una nota, y conserva también platform y format para que un router sepa qué URL va a cada sitio.

Comprueba la respuesta en crudo antes de encadenar nada:

curl -s -X POST "https://api.socialcutter.theboomer.dev/api/v1/images/process" \
  -H "X-API-Key: sc_tu_clave" \
  -H "Content-Type: application/json" \
  -d '{"source":{"type":"url","value":"https://example.com/foto.jpg"},"destinations":[{"platform":"instagram","format":"post"}]}' \
  | jq '.image_id, (.outputs[] | {url, platform, format, width, height})'

Encadenar a un CMS o a un almacenamiento

  • WordPress: sube la salida a la biblioteca de medios (POST /wp-json/wp/v2/media) y asigna el id del adjunto a featured_media del post.
  • Shopify: usa el campo image del producto con la URL de la salida.
  • Almacenamiento: el módulo de subida necesita el binario, no la URL. Descarga primero la salida con un paso GET y súbela después; si no acepta el binario, pasa la URL al CMS y deja que él la descargue.

Límites del plan

  • Máximo 5 MB por imagen; por encima la API responde 413.
  • 1 uso por destino (plataforma y formato) por petición. Los destinos repetidos no se cobran dos veces y los procesamientos fallidos se devuelven.
  • Cuota diaria por plan: Free (0 €) 3 usos/día, Basic (3 €) 10/día, Pro (9 €) 30/día, Agency (29 €) 100/día. Todos incluyen API y MCP.
  • En Zapier, cada paso consume una tarea de tu plan; no añadas pasos de más solo para dar formato.

Errores típicos

CódigoSignificado
401Falta la cabecera X-API-Key o la clave es incorrecta
429Cuota agotada: superaste los usos diarios de tu plan
413La imagen supera 5 MB
422Error de validación: source o destinations mal formados
400Payload inválido: plataforma o formato desconocido

Coste por ejecución

1 uso por destino. Un Zap que pida Instagram post, LinkedIn post y X post consume 3 usos por imagen. Si el disparador recibe ráfagas, agrupa antes de llamar o usa POST /api/v1/images/batch. Consulta GET /api/v1/wallet para ver la cuota diaria y lo que queda.

Siguientes pasos

Preguntas frecuentes

¿Hace falta una integración oficial de SocialCutter en Zapier?

No. Basta con un paso HTTP: Webhooks by Zapier con la acción POST, o una acción de petición personalizada. SocialCutter es una API REST y solo necesita URL, cabecera de autenticación y un cuerpo JSON.

¿Por qué no subir el fichero directamente en Zapier?

Porque el paso HTTP de Zapier maneja bien el JSON pero es frágil con el multipart/form-data que lleva un fichero binario: según la versión, el adjunto llega corrupto o sin la longitud correcta. La vía que funciona siempre es enviar la URL pública del fichero en el campo source del cuerpo JSON.

¿Dónde guardo la API key?

Como valor de una conexión o variable de entorno, nunca pegada en el texto de la acción. Zapier guarda los valores de texto plano en el historial de ejecuciones, así que trátala como un secreto.

¿Cómo se cobra cada ejecución?

1 uso por destino, es decir por cada combinación de plataforma y formato que pidas. Un paso que pida Instagram post y LinkedIn post consume 2 usos de tu cuota diaria.

¿Qué tamaño admite?

5 MB por imagen. Por encima la API responde 413. Si el maestro pesa más, redimensiónalo antes o sirve una versión reducida desde la URL.