Una publicación de principio a fin
El enlace es un servidor de Model Context Protocol. Tu asistente inicia sesión como tú, una sola vez, en la página de acceso de Spica Post; no hay claves que copiar. Después, cada publicación sigue las mismas seis llamadas.
Los nombres de las herramientas y de los campos, y las frases de error, están en inglés porque así los recibe tu asistente. Tu asistente te responde en tu idioma.
Encontrar las cuentas
Cada cuenta conectada tiene un id. Los borradores se escriben para esos ids, que no cambian mientras la cuenta siga conectada.
accounts_list {}
Subir la imagen
Este paso se salta en una publicación de solo texto. La respuesta trae el id del archivo que se adjunta.
media_upload {
"name": "horario-sabado.jpg",
"mimeType": "image/jpeg",
"base64": "/9j/4AAQSk…",
"alt": "La entrada del local con el nuevo horario de los sábados en la puerta"
}
Escribir el borrador
Una entrada por cuenta, cada una con su propio texto. Todavía no se envía nada. La respuesta trae el id del borrador y su versión.
drafts_create {
"title": "Horario de sábado",
"variants": [
{
"accountId": "acc_instagram",
"text": "Ya abrimos los sábados, de 9 a 2. Pasa a saludar.",
"mediaIds": [
"med_1"
]
},
{
"accountId": "acc_facebook",
"text": "Novedad: desde esta semana abrimos los sábados de 9 a 2.",
"mediaIds": [
"med_1"
]
}
]
}
Revisarlo
Responde si cada red lo va a aceptar y, si no, qué hay que corregir, con palabras claras.
drafts_validate {
"id": "draft_1",
"version": 1
}
Mostrarlo y luego programarlo
Solo después de que la persona aprobó esta publicación y esta hora. La respuesta es un envío por cuenta, en espera.
schedule {
"id": "draft_1",
"version": 1,
"idempotencyKey": "0b0f6a7e-3a52-4d0c-9a3e-6f1f0c2d9b11",
"scheduledAt": "2026-11-06T14:00:00Z"
}
Leer el resultado
Cuando pasa la hora, el envío dice si se publicó y da el enlace a la publicación.
jobs_get {
"id": "job_1"
}
Reglas que mantienen seguro lo que publicas
- Nada sale sin un sí. El asistente muestra cada borrador y espera la aprobación antes de publicar o programar.
- Una publicación nunca se envía dos veces. Cada llamada para publicar o programar lleva una clave que el asistente inventa. Repetir la llamada con la misma clave devuelve los mismos envíos en lugar de publicar otra vez.
- Se publica lo que se aprobó. La llamada nombra la versión del borrador. Si el borrador cambió desde que se leyó, la llamada se rechaza.
- En cola no es publicado. Un envío empieza como
queued. El resultado y el enlace a la publicación salen de jobs_get. - Un resultado desconocido se lee, no se reintenta. Cuando una red no confirma, el envío queda en
unknown y se resuelve en una lectura posterior.
Lo que acepta cada red
Estos son los límites que el servicio revisa antes de poner algo en cola. Algunas redes también limitan cómo se combinan los archivos, por ejemplo varias fotos o un solo video; post_check responde para cualquier combinación sin necesidad de un borrador.
Un asistente sube archivos PNG, JPEG, WebP o MP4 de hasta 10 MB cada uno, o agrega por su dirección uno que ya está en línea. Un video más grande se agrega en la aplicación.
Cuentas
Las cuentas de redes conectadas a este espacio de trabajo: el id, la red, el nombre y el estado de cada una. Los borradores se escriben para estos ids. Una cuenta con estado disconnected tiene que volver a conectarse en la página de cuenta del usuario antes de poder publicar en ella.
Enlaces que el usuario abre para conectar sus cuentas de redes, uno por red, con lo que ya está conectado en cada una. El enlace abre su página de cuenta en esa red: ahí pulsa Connect e inicia sesión en la página de la propia red, así que nunca ves una contraseña. Dale el enlace de cada red que use y después llama a accounts_list para ver qué llegó. Una red que todavía no se puede conectar responde ready: false y sin enlace; dilo en lugar de enviar al usuario a ella. Sirve para una primera conexión y para una que hay que volver a conectar. No cambia nada.
networktexto, opcional- Una red, por su clave en capabilities, por ejemplo "instagram". Si se deja fuera, se devuelven todas las redes que se pueden conectar.
Lo que admite cada red: el texto más largo y cómo se cuenta, qué tipos de archivo, cuántos archivos (y si la publicación necesita alguno) y si tiene historias. Se consulta antes de escribir para una red.
Lo que una cuenta conectada ha publicado últimamente, leído de la red misma: el texto de cada publicación, cuándo salió, de qué tipo es y su enlace, con los me gusta y comentarios cuando la red los da. Úsala durante la configuración para conocer cómo ya escribe el negocio, y antes de un nuevo grupo de publicaciones para no repetir nada. Funciona con Bluesky, Instagram, Páginas de Facebook y Threads; para las demás redes, lee tú mismo la página pública de la cuenta. No cambia nada.
accountIdtexto- El id de una cuenta, de accounts_list.
limitnúmero, opcional- Cuántas publicaciones leer, de la más reciente a la más antigua, de 1 a 25. Si se omite, diez.
Los tableros de una cuenta de Pinterest conectada, leídos de Pinterest en el momento: el id y el nombre de cada tablero, y a cuál van sus pines (chosen). Para fijar una publicación en otro, nombra un tablero en options.board del borrador. No cambia nada.
accountIdtexto- El id de una cuenta de Pinterest de accounts_list.
Cambia el tablero al que fija una cuenta de Pinterest conectada cuando una publicación no nombra ninguno. Primero se comprueba que el tablero está entre los de la cuenta en Pinterest. Pregunta al usuario antes de cambiarlo. Responde con la cuenta, cuyo nombre termina ahora con el del tablero.
accountIdtexto- El id de una cuenta de Pinterest de accounts_list.
boardIdtexto- El id del tablero, de boards_list.
Desconecta una cuenta. Su conexión guardada se borra y sus publicaciones en cola se cancelan, así que no se le envía nada más; lo ya publicado queda en el historial. La cuenta sigue en la lista como desconectada hasta que el usuario la conecte otra vez en su página de cuenta. Primero se le pregunta al usuario.
idtexto- El id de una cuenta, de accounts_list.
Agrega una cuenta de práctica que no publica en ninguna parte, para probar el proceso. Sus envíos son simulados y así se marcan. Se rechaza donde las cuentas de práctica están desactivadas.
labeltexto- Un nombre para la cuenta de práctica.
mode"success" o "expired" o "ambiguous" o "retry", opcional- Cómo terminan sus envíos: success (por defecto), expired (falla como una conexión vencida), ambiguous (resultado desconocido) o retry (se rechaza dos veces y luego sale bien).
Sube una imagen o un video para adjuntarlo a los borradores: PNG, JPEG, WebP o MP4, hasta 10 MB. Devuelve el id del archivo. Un archivo que ningún borrador usa se elimina 24 horas después de subirlo.
nametexto- El nombre del archivo, para la lista del propio usuario.
mimeType"image/png" o "image/jpeg" o "image/webp" o "video/mp4"- El formato real del archivo. Si su contenido no coincide, se rechaza.
base64texto- El contenido del archivo en base64 estándar, sin el prefijo data:. Hasta 10 MB de archivo.
alttexto, opcional- Lo que muestra la imagen, para quien no puede verla. Se guarda junto al archivo.
Agrega una imagen o un video por su dirección web pública en lugar de enviar el archivo: PNG, JPEG, WebP o MP4, hasta 10 MB. El servicio lo descarga una sola vez y lo guarda; devuelve el id del archivo, igual que media_upload. Sirve cuando el usuario señala un archivo que ya está en línea. Se rechaza cuando la dirección no es una https pública, no se puede descargar, pesa demasiado o lleva a una página y no a un archivo.
urltexto- La dirección https del archivo mismo, una que abre la imagen o el video en un navegador sin iniciar sesión. No la dirección de una página que lo muestra.
nametexto, opcional- Un nombre de archivo para la lista del propio usuario. Si se omite, se toma de la dirección.
alttexto, opcional- Lo que muestra la imagen, para quien no puede verla. Se guarda junto al archivo.
Todos los archivos subidos: id, nombre, tipo, tamaño y texto alternativo. Un archivo con purgedAt ya se eliminó y no puede adjuntarse.
Mira una imagen guardada de este espacio de trabajo: la respuesta es la imagen misma. Úsala con cada imagen que hizo templates_render, antes de mostrársela al usuario: revisa que ninguna línea quede cortada, que el texto quepa en su espacio y que la foto esté bien encuadrada, y vuelve a generarla si no. Un video responde con su imagen fija. No cambia nada.
idtexto- El id de un archivo, de media_upload o media_list.
Elimina ahora un archivo subido. Se rechaza con 409 mientras un borrador lo usa, mientras forma parte de la marca guardada o mientras una publicación que lo usa sigue en cola o sin confirmar.
idtexto- El id de un archivo, de media_upload o media_list.
Borradores
Crea un borrador: un título y una versión por cuenta, cada una con su propio texto y sus archivos. No se envía nada. Devuelve el borrador con su id y su versión. Se revisa con drafts_validate y se le muestra al usuario antes de publish o schedule.
titletexto- Un nombre para el borrador en la lista del propio usuario. Nunca se publica.
variantslista de objetos- Una entrada por cada cuenta a la que va la publicación, cada una con su propio texto y sus archivos.
accountIdtexto- El id de una cuenta, de accounts_list.
texttexto- El texto para esta cuenta, dentro del límite de esa red (consulta capabilities). Vacío para una historia. En YouTube la primera línea es el título del video.
mediaIdslista de textos- Los ids de los archivos, de media_upload, media_list o templates_render, en el orden en que deben aparecer. Vacío para una publicación de solo texto.
kind"post" o "story", opcional- Se omite en una publicación normal. "story" envía exactamente una foto o un video como historia de Instagram o Facebook, con el texto vacío.
optionsobjeto, opcional- Lo que lleva una publicación además del texto y los archivos, en las cuatro redes que lo admiten; se omite en las demás. YouTube: visibility. Pinterest: board y link. X: thread y firstReply. Google Business Profile: un botón, o los datos de una oferta o de un evento (todos los campos menos visibility, board, link, thread y firstReply).
visibility"public" o "unlisted" o "private", opcional- Solo en YouTube: quién puede ver este video. Se le pregunta al usuario; si se omite, el video es público.
boardtexto, opcional- Solo en Pinterest: el tablero al que va este pin, por su nombre tal como aparece en Pinterest o por su id (boards_list los muestra). Si se omite, el pin va al tablero elegido para la cuenta.
linktexto, opcional- Solo en Pinterest: la dirección https a la que lleva el pin, como una página del sitio web del negocio. Si se omite, se usa la primera dirección https de la descripción.
threadverdadero o falso, opcional- Solo en X: true publica las imágenes como un hilo, la primera en la publicación con su texto y cada una de las siguientes en una respuesta propia, hasta 10. X recorta varias imágenes de una misma publicación en recuadros pequeños, así que un carrusel va a X de esta forma, dibujado en el corte horizontal (templates_render).
firstReplytexto, opcional- Solo en X: el texto de una respuesta publicada justo debajo de la publicación, hasta 280 caracteres ponderados. Es el lugar para un enlace: la publicación se lee mejor sin él. Con thread, va en la primera respuesta junto con la segunda imagen.
type"update" o "offer" o "event", opcional- "update" (el valor por defecto), "offer" o "event".
languagetexto, opcional- El idioma en que está escrita la publicación, como código: en o es, por ejemplo.
buttonobjeto, opcional- Un botón en una novedad o en un evento. Una oferta no lleva botón.
action"book" o "order" o "shop" o "learn_more" o "sign_up" o "call"- Lo que dice el botón. "call" llama al teléfono del perfil.
urltexto, opcional- Adónde lleva el botón; empieza por https://. Se omite con "call".
titletexto, opcional- El nombre de la oferta o del evento, hasta 58 caracteres. Hace falta en ambos.
starttexto, opcional- El primer día de la oferta o del evento, como AAAA-MM-DD, o con hora como AAAA-MM-DDTHH:MM, en la hora local del negocio. Hace falta en ambos.
endtexto, opcional- El último día, escrito igual que start. Se da la hora en los dos o en ninguno.
offerobjeto, opcional- Solo en una oferta: lo que el cliente necesita para canjearla.
codetexto, opcional- El código que da el cliente, hasta 58 caracteres.
urltexto, opcional- Dónde se canjea la oferta en línea; empieza por https://.
termstexto, opcional- Las condiciones de la oferta.
Reemplaza el título y las versiones de un borrador. Se envía el borrador completo, no solo lo que cambió, con la versión leída por última vez; la respuesta trae la versión siguiente. Se rechaza con 409 si el borrador cambió mientras tanto: se vuelve a leer con drafts_get. Las publicaciones que ya están en cola conservan el contenido con el que entraron.
idtexto- El id del borrador.
versionnúmero- La versión del borrador tal como se leyó por última vez. Un número distinto se rechaza, así nada sale con un contenido que el usuario no vio.
titletexto- Un nombre para el borrador en la lista del propio usuario. Nunca se publica.
variantslista de objetos- Una entrada por cada cuenta a la que va la publicación, cada una con su propio texto y sus archivos.
accountIdtexto- El id de una cuenta, de accounts_list.
texttexto- El texto para esta cuenta, dentro del límite de esa red (consulta capabilities). Vacío para una historia. En YouTube la primera línea es el título del video.
mediaIdslista de textos- Los ids de los archivos, de media_upload, media_list o templates_render, en el orden en que deben aparecer. Vacío para una publicación de solo texto.
kind"post" o "story", opcional- Se omite en una publicación normal. "story" envía exactamente una foto o un video como historia de Instagram o Facebook, con el texto vacío.
optionsobjeto, opcional- Lo que lleva una publicación además del texto y los archivos, en las cuatro redes que lo admiten; se omite en las demás. YouTube: visibility. Pinterest: board y link. X: thread y firstReply. Google Business Profile: un botón, o los datos de una oferta o de un evento (todos los campos menos visibility, board, link, thread y firstReply).
visibility"public" o "unlisted" o "private", opcional- Solo en YouTube: quién puede ver este video. Se le pregunta al usuario; si se omite, el video es público.
boardtexto, opcional- Solo en Pinterest: el tablero al que va este pin, por su nombre tal como aparece en Pinterest o por su id (boards_list los muestra). Si se omite, el pin va al tablero elegido para la cuenta.
linktexto, opcional- Solo en Pinterest: la dirección https a la que lleva el pin, como una página del sitio web del negocio. Si se omite, se usa la primera dirección https de la descripción.
threadverdadero o falso, opcional- Solo en X: true publica las imágenes como un hilo, la primera en la publicación con su texto y cada una de las siguientes en una respuesta propia, hasta 10. X recorta varias imágenes de una misma publicación en recuadros pequeños, así que un carrusel va a X de esta forma, dibujado en el corte horizontal (templates_render).
firstReplytexto, opcional- Solo en X: el texto de una respuesta publicada justo debajo de la publicación, hasta 280 caracteres ponderados. Es el lugar para un enlace: la publicación se lee mejor sin él. Con thread, va en la primera respuesta junto con la segunda imagen.
type"update" o "offer" o "event", opcional- "update" (el valor por defecto), "offer" o "event".
languagetexto, opcional- El idioma en que está escrita la publicación, como código: en o es, por ejemplo.
buttonobjeto, opcional- Un botón en una novedad o en un evento. Una oferta no lleva botón.
action"book" o "order" o "shop" o "learn_more" o "sign_up" o "call"- Lo que dice el botón. "call" llama al teléfono del perfil.
urltexto, opcional- Adónde lleva el botón; empieza por https://. Se omite con "call".
titletexto, opcional- El nombre de la oferta o del evento, hasta 58 caracteres. Hace falta en ambos.
starttexto, opcional- El primer día de la oferta o del evento, como AAAA-MM-DD, o con hora como AAAA-MM-DDTHH:MM, en la hora local del negocio. Hace falta en ambos.
endtexto, opcional- El último día, escrito igual que start. Se da la hora en los dos o en ninguno.
offerobjeto, opcional- Solo en una oferta: lo que el cliente necesita para canjearla.
codetexto, opcional- El código que da el cliente, hasta 58 caracteres.
urltexto, opcional- Dónde se canjea la oferta en línea; empieza por https://.
termstexto, opcional- Las condiciones de la oferta.
Revisa un borrador contra las reglas de cada red a la que va. Devuelve valid, y errors como frases claras que dicen qué corregir. No cambia nada. publish y schedule hacen la misma revisión y rechazan un borrador que no la pasa.
idtexto- El id del borrador.
versionnúmero- La versión del borrador tal como se leyó por última vez. Un número distinto se rechaza, así nada sale con un contenido que el usuario no vio.
¿Aceptaría cada red esta publicación? Se dan el texto, las redes y cuántas fotos y videos lleva; responde por cada red si está lista, qué falla y cuánto mide el texto frente al límite. No necesita un borrador y no cambia nada.
texttexto- El texto que se va a revisar.
networkslista de textos- Las claves de las redes contra las que se revisa: x, linkedin, instagram, facebook, threads, bluesky, tiktok, youtube, google (Google Business Profile), pinterest.
imagesnúmero, opcional- Cuántas fotos llevaría.
videosnúmero, opcional- Cuántos videos llevaría.
storyverdadero o falso, opcional- True para revisarlo como historia y no como publicación.
Un borrador: su título, su versión y el texto y los archivos de cada cuenta. mediaRemovalAt, cuando aparece, es la fecha en la que se eliminarán sus archivos si el borrador sigue sin publicarse.
idtexto- El id del borrador.
Todos los borradores del espacio de trabajo, con su versión actual y el enlace que lo abre en el editor del usuario.
Borra un borrador y, con él, cada uno de sus archivos que ningún otro borrador usa. Se rechaza con 409 mientras una de sus publicaciones está en cola o sin confirmar. Lo ya publicado queda en el historial.
idtexto- El id del borrador.
Guarda una publicación para una red que el usuario todavía no ha conectado, con sus imágenes, para que no se pierda con la conversación. Aparece en su página de cuenta junto al botón Connect de esa red y se convierte sola en borrador, para la cuenta nueva, cuando la conecta. Úsalo solo mientras accounts_list no tenga una cuenta conectada de esa red; si la tiene, escribe un borrador con drafts_create. Pueden esperar hasta 10 publicaciones. Devuelve la publicación guardada y todas las que están esperando.
networktexto- La red a la que va, por su clave en capabilities, por ejemplo "facebook". Todavía no debe tener una cuenta conectada.
texttexto- La publicación, de hasta 20000 caracteres y dentro de lo que acepta esa red (lo dice post_check).
titletexto, opcional- Un nombre corto, de hasta 200 caracteres. Si se deja fuera, se usa su primera línea.
topicIdtexto, opcional- El tema para el que se escribió, de topics_add. El borrador queda unido a ese tema cuando la publicación se convierte en uno.
mediaIdslista de textos, opcional- Las imágenes o videos que la acompañan, por sus ids (de templates_render, media_upload o media_from_url), dentro de lo que acepta esa red. Se conservan mientras la publicación espera y pasan al borrador con ella.
idtexto, opcional- Una publicación en espera de un drafts_hold anterior, para reemplazar su texto. Si se deja fuera, se guarda una publicación nueva.
Quita una publicación que esperaba a que se conectara una red, cuando el usuario ya no la quiere. No se toca nada más. Primero se le pregunta al usuario.
idtexto- Una publicación en espera, de drafts_hold o de setup_start.
Publicar
publishTe pregunta antes
Publica un borrador ahora en todas sus cuentas. Solo se llama después de que el usuario aprobó esta publicación. Devuelve un envío por cuenta en estado queued, que significa aceptado, no publicado: el resultado y el enlace a la publicación se leen con jobs_get. Una llamada cuenta como una publicación del plan.
idtexto- El id del borrador.
versionnúmero- La versión del borrador tal como se leyó por última vez. Un número distinto se rechaza, así nada sale con un contenido que el usuario no vio.
idempotencyKeytexto- Una clave que el asistente inventa para esta sola solicitud, de 8 a 200 caracteres (sirve un UUID). Repetir la solicitud con la misma clave devuelve los mismos envíos y nunca publica dos veces, así que se reutiliza si la llamada no respondió a tiempo. Una clave ya usada con otro borrador, otra versión u otra hora se rechaza.
scheduleTe pregunta antes
Pone un borrador en cola para publicarse más tarde en todas sus cuentas. Solo se llama después de que el usuario aprobó esta publicación y esta hora. Devuelve un envío por cuenta en estado queued; un warning en un envío significa que la conexión de esa cuenta vencerá antes de esa hora y el usuario debe reconectarla. Se rechaza cuando la hora está más lejos de lo que el plan permite programar (usage_get dice hasta cuándo).
idtexto- El id del borrador.
versionnúmero- La versión del borrador tal como se leyó por última vez. Un número distinto se rechaza, así nada sale con un contenido que el usuario no vio.
idempotencyKeytexto- Una clave que el asistente inventa para esta sola solicitud, de 8 a 200 caracteres (sirve un UUID). Repetir la solicitud con la misma clave devuelve los mismos envíos y nunca publica dos veces, así que se reutiliza si la llamada no respondió a tiempo. Una clave ya usada con otro borrador, otra versión u otra hora se rechaza.
scheduledAttexto- Cuándo publicar, en UTC y terminado en Z, por ejemplo 2026-11-06T14:00:00Z. Se calcula a partir de la hora local del usuario (usage_get dice la zona horaria del espacio de trabajo). Tiene que ser una hora futura.
Pone un borrador en cola para el siguiente horario de publicación libre, en todas sus cuentas, sin elegir una fecha. Solo se llama después de que el usuario aprobó esta publicación; se le dice la hora que recibió. La hora es el siguiente de los horarios guardados en el que ninguna de las cuentas del borrador tiene ya una publicación. Devuelve un envío por cuenta en estado queued, con su scheduledAt. Se rechaza cuando todavía no hay horarios guardados (queue_set) o cuando están ocupados todos los que el plan permite programar.
idtexto- El id del borrador.
versionnúmero- La versión del borrador tal como se leyó por última vez. Un número distinto se rechaza, así nada sale con un contenido que el usuario no vio.
idempotencyKeytexto- Una clave que el asistente inventa para esta sola solicitud, de 8 a 200 caracteres (sirve un UUID). Repetir la solicitud con la misma clave devuelve los mismos envíos y nunca publica dos veces, así que se reutiliza si la llamada no respondió a tiempo. Una clave ya usada con otro borrador, otra versión u otra hora se rechaza.
Los horarios de publicación guardados: las horas propias de cada día (week), la zona horaria en la que se leen y los cinco siguientes. times y days dicen lo mismo de forma corta, y uniform es true cuando todos los días de publicación tienen las mismas horas. set es false hasta que el usuario los elige.
Guarda los horarios de publicación que usa la cola y reemplaza los anteriores: o las mismas horas en algunos días (times y days), o las propias de cada día (week). Para cambiar un solo día, se lee queue_get, se cambia ese día en week y se envía la semana completa. Primero se le pregunta al usuario qué días y a qué horas quiere publicar. Las publicaciones ya programadas conservan su hora.
timeslista de textos, opcional- La forma corta, para las mismas horas en varios días: de una a doce horas del día en formato de 24 horas con dos dígitos, como "09:00" o "17:30". Se leen en la zona horaria del espacio de trabajo. Se omite cuando se envía week.
dayslista de textos, opcional- Con times: los días en los que se publica, entre mon, tue, wed, thu, fri, sat, sun. Si se omite, todos los días.
weekobjeto, opcional- Las horas propias de cada día, para días que no coinciden, como { "mon": ["17:30"], "tue": ["09:00", "17:30"] }. Un día que se omite no tiene ninguna. Se envía esto, o times y days, pero no ambos.
Un envío y su resultado. state es queued, provider_accepted (la red lo tiene y lo sigue procesando), published (receipt.url es la publicación), failed (error dice por qué), unknown (no se pudo confirmar el resultado: no se envía otra vez, se vuelve a leer más tarde) o cancelled.
idtexto- El id de un envío, de publish, schedule o jobs_list.
Todos los envíos, uno por publicación y por cuenta: en cola, publicados, fallidos o cancelados, con su hora, estado, error y comprobante.
Cómo les fue a las publicaciones de los últimos 7, 30 o 90 días, con los mismos números que la página de Resultados: cuántas salieron, sus me gusta, comentarios y compartidos, las vistas y el alcance donde una red los informa, lo mismo para el periodo anterior, la parte de cada red las cinco publicaciones con mejor resultado, con sus enlaces, los momentos de la semana en los que mejor les fue (bestTimes, de los últimos 90 días; times queda vacío hasta que haya suficientes publicaciones con resultados) y lo que obtuvo en promedio una publicación con cada etiqueta (hashtags). Sirve cuando el usuario pregunta cómo van sus publicaciones o de qué conviene publicar más. notReported nombra las redes en las que se publicó y que no dieron números. Una publicación se lee 1 hora, 1 día, 3 días y 7 días después de salir, así que una nueva puede no tener nada todavía. Donde hay un Perfil de Negocio de Google conectado, google trae lo que obtuvo el propio perfil, según la cuenta de Google, en el mismo número de días terminados hace tres días (period): cuántas personas llamaron (calls), pidieron indicaciones para llegar (directions) o abrieron el sitio web desde el perfil (websiteClicks), y cuántas veces se vio (views, repartidas en viewsInSearch y viewsInMaps). totals suma todos los perfiles que se leyeron y profiles los trae uno por uno; un perfil cuyo state es no_reading no dio números por ahora, así que dilo y vuelve a preguntar más tarde, y reconnect significa que el usuario lo vuelve a conectar en su página de cuenta. google es null cuando no hay ningún perfil conectado. Es parte de Studio y Pro. No cambia nada.
daysnúmero, opcional- Cuánto mirar hacia atrás: 7, 30 o 90 días. Si se omite, 30.
Mueve un envío que sigue en cola a otra hora futura. Se rechaza con 409 cuando ya se está enviando o ya se envió. Cada cuenta de una publicación es un envío aparte.
idtexto- El id de un envío, de publish, schedule o jobs_list.
scheduledAttexto- Cuándo publicar, en UTC y terminado en Z, por ejemplo 2026-11-06T14:00:00Z. Se calcula a partir de la hora local del usuario (usage_get dice la zona horaria del espacio de trabajo). Tiene que ser una hora futura.
Cancela un envío que sigue en cola. Se rechaza con 409 cuando ya se está enviando o ya se envió. Cada cuenta de una publicación es un envío aparte, así que se cancela cada uno de los que no deben salir.
idtexto- El id de un envío, de publish, schedule o jobs_list.
Marca
Por aquí se empieza cuando el usuario pide la configuración o no hay una marca guardada, y también cada vez que pierdas el hilo. Di en can lo que puedes hacer (abrir páginas web, abrir los archivos del usuario, mirar imágenes) y cada paso se escribe para eso. Devuelve cómo está el espacio de trabajo, los primeros pasos, que son pocos y terminan en una primera publicación, y lo que se ofrece después (cada uno con un id, lo que hay que hacer y si ya está hecho), cuál es el paso siguiente y los campos de una marca. No cambia nada.
canobjeto, opcional- Lo que puedes hacer, para que cada paso esté escrito para ti. Si se deja fuera, los pasos son los generales.
webverdadero o falso, opcional- True si puedes abrir páginas web y buscar en ellas por tu cuenta, false si no puedes.
filesverdadero o falso, opcional- True si puedes abrir los archivos o carpetas del usuario, false si no puedes.
picturesverdadero o falso, opcional- True si puedes mirar una imagen y ver lo que hay en ella, false si no puedes.
El estudio de marca: cómo se ve de verdad el negocio, leído de su propio sitio web. Responde con su logo (el archivo propio, nunca el logo de la plataforma con la que está hecho el sitio ni una insignia), los colores con que está dibujado el logo y la proporción de cada uno, los colores de marca que salen de ellos, sus propias fotos por dirección con su texto alternativo y notas sobre lo que no se pudo leer. Las hojas de estilo de un sitio suelen llevar los colores de la herramienta con que se hizo, así que tome el aspecto de aquí, no de los estilos del sitio. Llámelo antes de redactar la marca y luego importe el logo y las mejores fotos con media_from_url. No cambia nada.
urltexto- La dirección del sitio web del negocio, como sunegocio.com.
La marca guardada de este espacio de trabajo (negocio, voz, estilo visual, ofertas, lo que nunca se dice), o null antes de la configuración. Se lee antes de escribir cualquier publicación.
Guarda la marca redactada durante la configuración. Se envía la marca completa cada vez: reemplaza a la guardada. confirmed va en true solo después de que el usuario aprobó el resumen.
brandobjeto- La marca completa. Se envían todas sus partes cada vez: lo que se omite se borra, salvo las partes que el usuario definió a mano (brand.owned), que se conservan.
businessobjeto- Quién es el negocio y cómo contactarlo.
nametexto- El nombre del negocio, hasta 80 caracteres.
tradetexto- Qué tipo de negocio es, hasta 60 caracteres, como "auto shop" o "restaurant". setup_start da la lista de oficios que las plantillas conocen.
descriptiontexto, opcional- A qué se dedica el negocio, hasta 600 caracteres.
locationtexto, opcional- La ciudad o el barrio, hasta 80 caracteres.
serviceAreatexto, opcional- La zona que atiende, hasta 200 caracteres.
phonetexto, opcional- El teléfono al que llaman los clientes, hasta 40 caracteres.
websitetexto, opcional- Su dirección web, que empieza con https://, hasta 200 caracteres.
hourstexto, opcional- El horario en palabras, hasta 300 caracteres.
weekobjeto, opcional- El horario día por día, con las claves mon a sun: { open, close } en formato de 24 horas, como "08:30", null si está cerrado, o una lista de hasta tres { open, close } para un día que abre más de una vez. De un día que se omite no se dice nada.
speciallista de objetos, opcional- Los días que se salen de la semana normal, hasta 30: un feriado, un cierre, una noche de horario extendido. El usuario los define en su página de marca.
datetexto- La fecha, como "2026-11-26".
hoursobjeto, opcional- El horario de ese día como { open, close } en formato de 24 horas, null si está cerrado, o una lista de hasta tres { open, close } para un día que abre más de una vez.
labeltexto, opcional- Qué día es, hasta 40 caracteres.
languageslista de textos, opcional- Los idiomas en los que publica, hasta 5, cada uno de hasta 40 caracteres.
audiencetexto, opcional- Quién compra, en una o dos frases, hasta 600 caracteres.
goaltexto, opcional- Lo que el negocio quiere conseguir más con sus publicaciones, en una línea de hasta 200 caracteres: llamadas, reservas, visitas, pedidos. La llamada a la acción de una publicación lleva ahí.
offerslista de textos, opcional- Lo que ofrece en este momento, hasta 20 líneas de hasta 160 caracteres.
voiceobjeto, opcional- Cómo suena el negocio.
tonelista de textos, opcional- Hasta 8 palabras que describen cómo suena, cada una de hasta 40 caracteres.
dolista de textos, opcional- Lo que sus textos sí hacen, hasta 10 líneas de hasta 200 caracteres.
avoidlista de textos, opcional- Lo que sus textos evitan, hasta 10 líneas de hasta 200 caracteres.
sampletexto, opcional- Un pasaje con la voz propia del negocio, hasta 600 caracteres.
lookobjeto, opcional- Los colores, la tipografía y el logo con los que se dibujan las plantillas.
colorsobjeto, opcional- Los cuatro colores con los que se dibujan las plantillas. El que se omite conserva su valor por defecto.
primarytexto, opcional- El color principal de la marca, como #RRGGBB.
accenttexto, opcional- El color de énfasis, como #RRGGBB.
inktexto, opcional- El color del texto, como #RRGGBB.
papertexto, opcional- El color del fondo, como #RRGGBB.
fontsobjeto, opcional- La tipografía de las plantillas, por nombre de familia.
displaytexto, opcional- La familia de Google Fonts para los títulos, como "Archivo".
bodytexto, opcional- La familia de Google Fonts para el texto. Si se omite, es la misma que display.
logotexto, opcional- El id del archivo del logo subido.
topicslista de textos, opcional- Los temas sobre los que publica el negocio, hasta 20 líneas de hasta 120 caracteres.
hashtagslista de textos, opcional- Las etiquetas que usa, hasta 30, cada una de hasta 60 caracteres.
neverlista de textos, opcional- Lo que ninguna publicación puede decir, hasta 20 líneas de hasta 240 caracteres: precios que no son públicos, afirmaciones que no se pueden demostrar.
templatesobjeto, opcional- La plantilla elegida para cada formato, como { "carousel": "rundown" }, para hasta 12 formatos. Los ids salen de templates_list.
sourceslista de objetos, opcional- De dónde salió cada parte de la marca, hasta 20, para que el usuario vea que se leyó y no se inventó.
wheretexto- Una dirección web, o "the customer", hasta 200 caracteres.
whattexto- Lo que se tomó de ahí, hasta 200 caracteres.
itemslista de objetos, opcional- Lo que vende el negocio, hasta 60.
nametexto- El producto, el servicio o el plato, hasta 80 caracteres.
abouttexto, opcional- Una línea que lo describe, hasta 240 caracteres.
pricetexto, opcional- Su precio tal como lo escribe el usuario, como "$89" o "desde $45", hasta 24 caracteres. Se omite si el usuario no lo dio.
librarylista de objetos, opcional- Fotos del trabajo del propio negocio, hasta 200. Una foto se conserva guardada mientras siga en esta lista.
mediaIdtexto- El id del archivo de una imagen subida.
captiontexto, opcional- Lo que muestra la foto, hasta 160 caracteres.
itemtexto, opcional- El producto o servicio al que corresponde, por su nombre, hasta 80 caracteres.
cutoutverdadero o falso, opcional- True para una foto que va sola: recortada o tomada sobre blanco. La página de portada usa estas.
confirmedverdadero o falso, opcional- True solo cuando el usuario ya aprobó el resumen de la marca.
El perfil del sector guardado (quién compra, qué preguntan, qué convierte, lo local, las fuentes, los límites) o null, con la explicación de cada parte. Se lee antes de elegir un tema o escribir un artículo.
Guarda el perfil del sector investigado durante la configuración. Se envía el perfil completo cada vez: reemplaza al guardado. Necesita una marca guardada.
profileobjeto- El perfil completo. Se envían todas sus partes cada vez: reemplaza al que estaba guardado.
tradeobjeto- Qué es este oficio en una línea, y los tipos de cliente o de negocio que dentro de él se comportan distinto.
definitiontexto- El oficio en una o dos frases, hasta 300 caracteres.
segmentslista de textos, opcional- Los tipos de cliente o de negocio que hay dentro de él, hasta 8, cada uno de hasta 160 caracteres.
buyerslista de objetos, opcional- Quién compra: cada tipo de comprador y lo que busca cuando llega. Hasta 6.
whotexto- Un tipo de comprador, hasta 160 caracteres.
wantstexto- Lo que busca cuando llega, hasta 240 caracteres.
questionsobjeto, opcional- Las preguntas reales que escriben los compradores, con sus propias palabras, agrupadas según lo que buscan. Salen de las sugerencias de búsqueda, de «otras personas también preguntan», de las reseñas y del cliente.
learninglista de textos, opcional- Preguntas de quienes se están informando, hasta 15, cada una de hasta 160 caracteres.
comparinglista de textos, opcional- Preguntas de quienes comparan opciones, hasta 15, cada una de hasta 160 caracteres.
buyinglista de textos, opcional- Preguntas de quienes ya quieren reservar o comprar, hasta 15, cada una de hasta 160 caracteres.
nearbylista de textos, opcional- Preguntas que nombran un lugar, hasta 15, cada una de hasta 160 caracteres.
convertingTopicslista de objetos, opcional- De 3 a 8 temas que llevan a quien lee a llamar, reservar o comprar, y por qué lo logra cada uno.
topictexto- El tema, hasta 120 caracteres.
whytexto- Por qué lleva a quien lee a actuar, hasta 240 caracteres.
tonetexto, opcional- Cómo debe sonar un texto de este oficio para llegarles a sus compradores, dentro de brand.voice. Hasta 400 caracteres.
localAnglelista de textos, opcional- Lo que es local: barrios, idiomas, temporadas, normas. Vacío para un negocio que vende en todas partes. Hasta 10, cada uno de hasta 200 caracteres.
entitieslista de textos, opcional- Los nombres que un texto debe escribir siempre igual: el negocio, lugares, productos, herramientas, marcas. Hasta 30, cada uno de hasta 80 caracteres.
keywordslista de textos, opcional- Las frases de búsqueda con las que se quiere aparecer. Solo aquellas para las que se vio demanda; cuando no se pudo comprobar, se dice en `landscape.gap`. Hasta 40, cada una de hasta 80 caracteres.
landscapeobjeto, opcional- Lo que hoy aparece primero o se cita para esas preguntas, y el hueco que este negocio puede llenar.
rankslista de textos, opcional- Quién o qué aparece primero hoy, y para qué pregunta, hasta 10, cada uno de hasta 200 caracteres.
gaptexto, opcional- El hueco que este negocio puede llenar, hasta 500 caracteres.
sourceslista de objetos, opcional- Las fuentes de autoridad en las que debe apoyarse una afirmación en este oficio. Hasta 20.
nametexto- La fuente, hasta 120 caracteres.
fortexto- Lo que respalda, hasta 200 caracteres.
callToActionobjeto, opcional- La oferta que convierte a quien lee en cliente, y en qué parte del texto va.
offertexto, opcional- La oferta, hasta 200 caracteres.
wheretexto, opcional- En qué parte del texto va, hasta 200 caracteres.
guardrailsobjeto, opcional- Lo que vuelve relleno a un texto en este oficio, y lo que todo texto debe tener para que valga la pena leerlo.
bannedlista de textos, opcional- Lo que vuelve relleno a un texto, hasta 10, cada uno de hasta 200 caracteres.
requiredlista de textos, opcional- Lo que todo texto debe tener, hasta 10, cada uno de hasta 200 caracteres.
Plantillas
Las plantillas de publicación que este espacio de trabajo puede usar, con el uso de cada una.
Una plantilla: sus tipos de página, cada campo con sus límites y un ejemplo completo para el oficio.
idtexto- El id de una plantilla, de templates_list.
Llena una plantilla con texto. El servicio dibuja cada página con los colores y las tipografías de la marca guardada, la guarda como imagen y devuelve los ids de los archivos, en el orden de las páginas, listos para adjuntar a un borrador. Mira cada una con media_view antes de que el usuario la vea. La foto de una página es una que el usuario ya subió (su id en media_list) o una dirección https.
idtexto- El id de una plantilla, de templates_list.
seriestexto, opcional- Un nombre corto de serie que aparece en las páginas, cuando la plantilla lo lleva.
language"en" o "es" o "pt" o "fr" o "ht", opcional- El idioma de las palabras que el servicio imprime por su cuenta, como los días de la semana y "Cerrado": inglés (en), español (es), portugués (pt), francés (fr) o criollo haitiano (ht). Si se omite, inglés.
cut"portrait" o "landscape" o "pin" o "google", opcional- La forma de las imágenes, una por red: portrait (1080 por 1350) para Instagram, Facebook, LinkedIn y Threads; landscape (1600 por 900) para X y Bluesky; pin (1080 por 1620) para Pinterest. templates_list indica qué cortes tiene cada plantilla. Si se omite, se usa la forma propia de la plantilla.
pageslista de objetos- Las páginas en orden, tantas como admita la plantilla. Un carrusel termina con una página de acción.
typetexto- El tipo de página, uno de los de la plantilla (templates_get da la lista). Los demás campos de la página son los de ese tipo, cada uno dentro de su límite de caracteres y de líneas.
Las plantillas y sus páginas
Una plantilla es una imagen o un carrusel ya diseñado. El asistente escribe el texto; el servicio dibuja cada página con los colores y la tipografía de tu marca. Cada tipo de página lleva estos campos, y a cada campo le cabe cierta cantidad de caracteres y de líneas.
The Rundown rundown
Una sola cosa explicada de principio a fin en tres a cinco páginas: un servicio, un plato, un producto.
carrusel · 1080 × 1350 · hasta 6 páginas
cover- Una foto sobre el fondo con el título debajo. La foto va recortada o tomada sobre blanco: usa una foto de brand.library marcada como cutout, y de ningún otro tipo.
image una imagen: el id de un archivo o una dirección httpskicker hasta 40 caracteres, 1 líneatitle hasta 40 caracteres, 2 líneassub hasta 120 caracteres, 2 líneas, opcional
punch- Sin foto: una o dos palabras llevan la página. Sirve cuando no hay una buena imagen.
kicker hasta 40 caracteres, 1 líneaword hasta 24 caracteres, 2 líneastitle hasta 90 caracteres, 2 líneassub hasta 140 caracteres, 2 líneas
number- Un rango o una cifra, y las dos cosas que lo mueven.
kicker hasta 40 caracteres, 1 línealow hasta 4 caracteres, 1 líneahigh hasta 5 caracteres, 1 líneaunit hasta 40 caracteres, 1 líneatitle hasta 80 caracteres, 2 líneasleft con head (hasta 14 caracteres, 1 línea), body (hasta 70 caracteres, 1 línea)right con head (hasta 14 caracteres, 1 línea), body (hasta 70 caracteres, 1 línea)
stats- Un título, una foto opcional y exactamente tres cifras.
kicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneasimage una imagen: el id de un archivo o una dirección https, opcionalstats exactamente 3, cada uno con value (hasta 7 caracteres, 1 línea), label (hasta 24 caracteres, 1 línea)
cells- Un título y dos o cuatro puntos cortos.
kicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneascells 2 o 4, cada uno con title (hasta 24 caracteres, 1 línea), body (hasta 64 caracteres, 1 línea)
items- Lo que vende el negocio, impreso por el servicio a partir de la lista de la marca: el nombre de cada producto o servicio, su línea y su precio cuando el cliente lo dio. El asistente solo escribe el título, y puede indicar cuáles mostrar. Un precio no se puede escribir a mano; prices: false los omite. Cuando cada producto mostrado tiene su propia foto en la biblioteca de la marca, las fotos también se imprimen; photos: false las omite.
kicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneasnames de 1 a 6 nombres, cada uno de hasta 80 caracteres, opcionalprices verdadero o falso, opcionalphotos verdadero o falso, opcional
hours- El horario, día por día, impreso por el servicio a partir de la marca. El asistente solo escribe el título; los días y las horas no se pueden escribir a mano.
kicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneasnote hasta 110 caracteres, 2 líneas, opcionalshow "week" o "special" o "both", opcional
action- La última página de un carrusel: qué hacer después y dónde.
kicker hasta 40 caracteres, 1 líneatitle hasta 28 caracteres, 2 líneassub hasta 110 caracteres, 1 líneaaction hasta 26 caracteres, 1 líneaurl hasta 48 caracteres, 1 líneahours verdadero o falso, opcional
Head to Head head-to-head
Dos opciones que un cliente compara, con un veredicto claro al final.
una imagen o carrusel · 1080 × 1350 · hasta 2 páginas
compare- Dos opciones lado a lado, de tres a cinco filas, y luego el veredicto.
leftName hasta 24 caracteres, 2 líneasleftLabel hasta 24 caracteres, 1 línearightName hasta 24 caracteres, 2 líneasrightLabel hasta 24 caracteres, 1 línearows 3, 4 o 5, cada uno con label (hasta 14 caracteres, 1 línea), left (hasta 22 caracteres, 1 línea), right (hasta 22 caracteres, 1 línea)callKicker hasta 24 caracteres, 1 líneacall hasta 120 caracteres, 1 línea
action- La última página de un carrusel: qué hacer después y dónde.
kicker hasta 40 caracteres, 1 líneatitle hasta 28 caracteres, 2 líneassub hasta 110 caracteres, 1 líneaaction hasta 26 caracteres, 1 líneaurl hasta 48 caracteres, 1 líneahours verdadero o falso, opcional
The Work showcase
Las fotos del propio cliente: un trabajo terminado, un plato, un antes y después, el local. Se arma con las imágenes de brand.library.
una imagen o carrusel · 1080 × 1350 · hasta 6 páginas
photo- Una foto del propio cliente que llena toda la página, con el texto en la parte baja. Es la portada de una publicación de fotos.
image una imagen: el id de un archivo o una dirección httpskicker hasta 40 caracteres, 1 líneatitle hasta 40 caracteres, 2 líneassub hasta 110 caracteres, 2 líneas, opcionalfocus "top" o "center" o "bottom", opcional
card- Una foto completa arriba, con el texto debajo sobre el fondo. Sirve cuando la foto no debe taparse.
image una imagen: el id de un archivo o una dirección httpskicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneassub hasta 120 caracteres, 2 líneas, opcional
grid- Dos o cuatro fotos lado a lado bajo un título: varios trabajos, platos o ángulos a la vez.
kicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneasphotos 2 o 4, cada uno con image (una imagen: el id de un archivo o una dirección https), caption (hasta 26 caracteres, 1 línea)
before_after- Dos fotos de lo mismo, antes y después del trabajo, con un título debajo.
before una imagen: el id de un archivo o una dirección httpsafter una imagen: el id de un archivo o una dirección httpsbeforeLabel hasta 14 caracteres, 1 líneaafterLabel hasta 14 caracteres, 1 líneakicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneassub hasta 120 caracteres, 2 líneas, opcional
items- Lo que vende el negocio, impreso por el servicio a partir de la lista de la marca: el nombre de cada producto o servicio, su línea y su precio cuando el cliente lo dio. El asistente solo escribe el título, y puede indicar cuáles mostrar. Un precio no se puede escribir a mano; prices: false los omite. Cuando cada producto mostrado tiene su propia foto en la biblioteca de la marca, las fotos también se imprimen; photos: false las omite.
kicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneasnames de 1 a 6 nombres, cada uno de hasta 80 caracteres, opcionalprices verdadero o falso, opcionalphotos verdadero o falso, opcional
hours- El horario, día por día, impreso por el servicio a partir de la marca. El asistente solo escribe el título; los días y las horas no se pueden escribir a mano.
kicker hasta 40 caracteres, 1 líneatitle hasta 44 caracteres, 2 líneasnote hasta 110 caracteres, 2 líneas, opcionalshow "week" o "special" o "both", opcional
action- La última página de un carrusel: qué hacer después y dónde.
kicker hasta 40 caracteres, 1 líneatitle hasta 28 caracteres, 2 líneassub hasta 110 caracteres, 1 líneaaction hasta 26 caracteres, 1 líneaurl hasta 48 caracteres, 1 líneahours verdadero o falso, opcional
Moments moments
Publicaciones de estilo de vida para un restaurante, una floristería, un salón, cualquier negocio al que la gente va por cómo se siente: las fotos propias del cliente llevan la publicación. Un carrusel va del momento al detalle, luego al lugar y cierra con una invitación. Se arma con brand.library; necesita fotos de personas y momentos, no solo de productos.
una imagen o carrusel · 1080 × 1350 · hasta 6 páginas
moment- Una foto propia del cliente de un momento, a página completa, con una sola línea corta encima en la voz del negocio: alguien disfrutando, manos trabajando, la mesa, el local. No es un titular y nunca lleva precio; el texto de la publicación dice el resto.
image una imagen: el id de un archivo o una dirección httpsline hasta 40 caracteres, 2 líneasplace "bottom" o "top", opcionalfocus "top" o "center" o "bottom", opcional
signoff- La última página de un carrusel de estilo de vida: una foto, una línea corta que invita (“lo esperamos en la terraza.”) y debajo dónde está el negocio y su logo, en pequeño.
image una imagen: el id de un archivo o una dirección httpsline hasta 40 caracteres, 2 líneasplace "bottom" o "top", opcionalfocus "top" o "center" o "bottom", opcional
Google post google-post
Esta semana en el Perfil de Negocio de Google: una novedad, una oferta, un cambio de horario.
una imagen · 1200 × 900 · 1 página
google- Una publicación del Perfil de Negocio de Google, horizontal: texto a la izquierda, una foto o una cifra a la derecha.
kicker hasta 40 caracteres, 1 líneatitle hasta 36 caracteres, 2 líneassub hasta 120 caracteres, 3 líneasimage una imagen: el id de un archivo o una dirección https, opcionalfigure hasta 4 caracteres, 1 línea, opcionalfigureLabel hasta 28 caracteres, 1 línea, opcional
google_hours- El horario como publicación del Perfil de Negocio de Google, horizontal: el título a la izquierda y la semana a la derecha, impresa por el servicio a partir de la marca. Los días y las horas no se pueden escribir a mano.
kicker hasta 40 caracteres, 1 líneatitle hasta 36 caracteres, 2 líneasnote hasta 110 caracteres, 3 líneas, opcionalshow "week" o "special" o "both", opcional
Temas
Lo que está cubierto y lo que no: cómo va cada tema en cada red y en cada idioma, lo que todavía le falta, cuántos temas tiene cada pilar de la marca y las preguntas del perfil que ningún tema ha tomado. Se llama para elegir qué escribir después.
El registro de temas: cada tema planeado o cubierto, con su avance en cada red y en cada idioma.
Agrega un tema al registro antes de escribirlo: su título, la pregunta o frase de búsqueda que quiere ganar (keyword), el producto o servicio del que trata (item), el ángulo desde el que lo aborda (angle) y a cuál de los temas de la marca pertenece (pillar). Una keyword ya cubierta se rechaza, así la misma pregunta nunca se escribe dos veces.
titletexto- El tema en pocas palabras, hasta 160 caracteres.
keywordtexto, opcional- La pregunta o la frase de búsqueda que quiere ganar, hasta 120 caracteres. Una que ya está cubierta se rechaza.
itemtexto, opcional- El producto o servicio del que trata, hasta 120 caracteres.
angletexto, opcional- El ángulo desde el que lo aborda, en una o dos palabras de hasta 60 caracteres: guía, comparación, lista, historia.
pillartexto, opcional- A cuál de los temas de la marca pertenece, hasta 120 caracteres.
notetexto, opcional- Lo que haya que recordar al escribirlo, hasta 400 caracteres.
Une un borrador con su tema, con el idioma en el que está escrito. Se hace con cada borrador que se crea, para que el registro sepa qué se escribió y qué se publicó.
idtexto- El id de un tema, de topics_add o topics_list.
draftIdtexto- El borrador que se escribió para ese tema.
languagetexto, opcional- El idioma en el que está escrito el borrador.
Quita del registro un tema planeado. Un tema que ya tiene una publicación no puede quitarse.
idtexto- El id de un tema, de topics_list.
Guías para escribir
Cómo escribir una publicación para cada red: qué es una publicación ahí, cómo se arma su texto, dónde va un enlace y las reglas que toda publicación sigue. Se lee antes de escribir un grupo de publicaciones. Sin una red, responde por las conectadas.
networktexto, opcional- La clave de una red, como instagram. Se omite para recibir todas las redes conectadas.
Cómo evaluar un borrador antes de que el usuario lo vea: siete dimensiones con puntaje para un artículo, comprobaciones de sí o no para una publicación en redes, y qué cuenta como aprobado. Cada texto se evalúa y se corrige hasta que apruebe.
kind"article" o "post", opcional- Lo que se está evaluando.
Artículos
Guarda un artículo que escribiste para el usuario, o la siguiente versión de uno. Llega a sus lectores de una de dos maneras. En el blog del usuario aquí: envía blog true con el estado ready, y queda público en la dirección de su página de enlaces seguida de /blog, con su marca (un espacio de trabajo con una sola página de enlaces tiene ahí su blog; con varias, links_save con showBlog elige la página; sin ninguna, crea una primero). O en el sitio del propio usuario: él lo pega ahí, y luego guardas su dirección como url con el estado published. De las dos maneras las publicaciones pueden enlazarlo. Un artículo en el blog puede llevar una imagen de portada (image) e imágenes dentro del texto, cada una de las imágenes guardadas del propio usuario. La misma pieza en dos idiomas son dos artículos: guarda cada uno en su idioma y luego nombra uno en el twinId del otro. Envía todos los campos otra vez con cada versión: un campo que se omite se quita. Evalúalo primero con grader_get, vincúlalo a su tema con topicId, y no pongas nada en el blog sin el sí del usuario a ese artículo.
idtexto, opcional- El artículo que se reemplaza. Se omite para un artículo nuevo.
versionnúmero, opcional- Junto con id: la versión que leíste, para no sobrescribir un cambio hecho entretanto.
titletexto- El titular, hasta 160 caracteres.
bodytexto- El artículo en Markdown, sin su título: encabezados ## y ###, párrafos, listas, tablas, **negritas**, *cursivas* y [enlaces](https://…). En el blog una lista numerada se muestra como pasos, así que usa una para lo que se hace en orden. Una imagen dentro del texto va en una línea propia, , con un id de medio de media_upload, media_from_url o media_list, nunca una dirección web; hasta 12. Se muestra en el blog donde está su línea, y se omite en la copia que el usuario pega en su propio sitio. Hasta 60,000 caracteres.
summarytexto, opcional- Lo que un resultado de búsqueda muestra debajo del título, hasta 160 caracteres.
slugtexto, opcional- La última parte de la dirección de la página: letras minúsculas, números y guiones, hasta 80 caracteres. Si se omite, se forma a partir del título.
keywordtexto, opcional- La pregunta o frase de búsqueda que el artículo busca ganar, hasta 120 caracteres.
languagetexto, opcional- El idioma en que está escrito, hasta 40 caracteres. Si se omite, inglés.
topicIdtexto, opcional- El tema del registro que cubre este artículo, de topics_list.
status"draft" o "ready" o "published", opcional- draft mientras lo trabajas, ready cuando pasa la evaluación y el usuario está de acuerdo, published cuando el usuario ya lo puso en su propio sitio (entonces hace falta url). Un artículo que está en el blog aquí es ready o published. Si se omite, draft.
urltexto, opcional- La dirección https donde el artículo ya está publicado en el sitio del usuario, hasta 300 caracteres.
blogverdadero o falso, opcional- true pone el artículo en el blog del usuario aquí, en la dirección de su página de enlaces seguida de /blog. Si se omite o es false, no está en el blog. Necesita el estado ready o published, y el sí del usuario a este artículo.
publishAttexto, opcional- Para el blog: el momento en que sale el artículo, que es también la fecha con la que se muestra, con su zona horaria, por ejemplo 2026-10-13T09:00:00-04:00. Un momento posterior hace que aparezca solo en ese momento. Si se omite, sale cuando se pone en el blog por primera vez.
faqlista de objetos, opcional- Hasta 8 preguntas que el artículo responde, cada una con su respuesta. En el blog se muestran completas debajo del artículo y se entregan a los buscadores palabra por palabra.
qtexto- La pregunta como la haría alguien, hasta 160 caracteres.
atexto- La respuesta en una a tres frases que se entiendan solas, hasta 600 caracteres. Texto simple, sin Markdown.
sourceslista de objetos, opcional- De dónde sale cada cifra del artículo, hasta 12. Una cifra sin fuente no va en el artículo.
labeltexto- Un nombre corto para la fuente, hasta 120 caracteres.
urltexto- La dirección https de la página de donde sale la cifra, hasta 300 caracteres.
tagslista de textos, opcional- Hasta 12 etiquetas cortas, cada una de hasta 40 caracteres. En el blog, los artículos que comparten una etiqueta se le ofrecen al lector a continuación.
imagetexto, opcional- La imagen de portada, por su id de medio (de media_upload, media_from_url o media_list). En el blog se muestra debajo del titular, pequeña junto al artículo en la lista y en la página de enlaces, y es la imagen que se ve al compartir el artículo. Usa la foto del propio usuario de aquello de lo que trata el artículo. Se conserva mientras se conserve el artículo.
imageAlttexto, opcional- Lo que muestra la imagen de portada, en una frase sencilla, para quien no puede verla. Hasta 200 caracteres. Necesita image.
twinIdtexto, opcional- El id del mismo artículo en otro idioma, de articles_list. Une los dos desde cualquiera de ellos: en el blog cada uno nombra entonces al otro ante los buscadores, y el enlace de idioma en la parte de arriba de cada uno lleva al otro. Si se omite, los dos quedan sin unir.
Un artículo completo: su Markdown, el mismo texto como HTML limpio listo para pegar en el sitio del usuario, el marcado de búsqueda (schema) que va en la misma página, y dónde está en el blog del usuario aquí cuando está en él.
idtexto- El id de un artículo, de articles_list o articles_save.
Los artículos guardados en este espacio de trabajo, del más reciente al más antiguo: título, dirección, estado y extensión, sin el texto. El que está en el blog del usuario aquí dice dónde (blogAddress) y si un visitante lo ve ahora mismo (blogLive).
Quita un artículo de este espacio de trabajo. Si estaba en el blog del usuario aquí, sale del blog al instante. No se toca nada en el sitio del propio usuario.
idtexto- El id de un artículo, de articles_list.
Sucursales
Las sucursales de este espacio de trabajo, cada una con las cuentas conectadas que le pertenecen, y las cuentas que no pertenecen a ninguna. Para publicar en una sucursal, usa los ids de sus cuentas como destinos del borrador. Es parte de Pro.
Crea una sucursal o cambia una: su nombre, dónde está, para quién es su informe y qué cuentas conectadas le pertenecen. Úsala cuando el usuario tiene varias sucursales o publica para varios clientes. Una cuenta pertenece a una sola sucursal a la vez. Es parte de Pro; en los demás planes se rechaza.
idtexto, opcional- El id de una sucursal de locations_list, para cambiar esa. Se omite para crear una sucursal nueva.
nametexto, opcional- Cómo se llama la sucursal, por ejemplo la sede o el cliente, hasta 80 caracteres. Hace falta para una nueva.
placetexto, opcional- Dónde está, por ejemplo "Hialeah, FL", hasta 120 caracteres.
clienttexto, opcional- Para quién es su informe, cuando el usuario publica para otra persona, hasta 120 caracteres.
accountIdslista de textos, opcional- Las cuentas conectadas que le pertenecen, como ids de accounts_list. Esto reemplaza la lista. Una cuenta sale de cualquier otra sucursal en la que estaba.
Lo que hizo una sucursal en los últimos 7, 30 o 90 días: cuántas publicaciones salieron y dónde, qué obtuvieron, cuáles funcionaron mejor, cuáles fallaron y qué está programado. `text` es lo mismo en palabras sencillas, listo para que el usuario se lo envíe a la sucursal o al cliente: muéstraselo tal cual. Sin un id, la respuesta es cada sucursal lado a lado para el mismo periodo, con los totales de todas. Es parte de Pro; en los demás planes se rechaza.
idtexto, opcional- El id de una sucursal de locations_list. Se omite para ver todas las sucursales lado a lado.
daysnúmero, opcional- El periodo, contado hacia atrás desde ahora: 7, 30 o 90 días. Si se omite, 30.
Elimina una sucursal. Sus cuentas siguen conectadas y no pertenecen a ninguna sucursal; nada de lo publicado se toca.
idtexto- El id de una sucursal de locations_list.
Página de enlaces
Las páginas de enlaces del usuario: de cada una, su dirección pública, su nombre, su línea, sus botones de enlace en orden, qué muestra y si está en línea. También cuántas páginas incluye el plan, y `kept`: lo que el servicio mantiene al día en cada página sin que se le pida (el aspecto y el logo de la marca, la línea de “abierto ahora” según el horario de la marca, las cuentas conectadas y las últimas publicaciones publicadas). Y `reserved`: direcciones que una página suya dejó, y que solo el usuario puede usar hasta la fecha indicada. La página que lleva el blog del usuario lo dice (showBlog) y dice dónde está el blog (blogAddress).
Crea una página de enlaces o cambia una: una página pública en la dirección de la app seguida de /@handle, con el nombre del usuario, una línea sobre él, sus cuentas conectadas como iconos y sus botones de enlace. Solo cambia lo que envías. La página toma sus colores, tipografías y logo de la marca guardada y mantiene al día por sí sola las últimas publicaciones y la línea de “abierto ahora”, así que nunca las agregues como enlaces. Starter incluye 1 página, Studio 10 y Pro 30; una más se rechaza. Un handle que ya tiene otra persona se rechaza. Con showBlog una página lleva además el blog del usuario: sus artículos, en la dirección de la página seguida de /blog.
idtexto, opcional- El id de una página de links_list, para cambiar esa página. Se omite para crear una página nueva.
handletexto, opcional- La dirección de la página, después de la @: de 3 a 30 letras minúsculas, dígitos y guiones, por ejemplo "casa-lola". Hace falta para una página nueva. Cambiarla mueve la página: la dirección anterior deja de funcionar de inmediato. Si la página fue pública alguna vez, la dirección anterior queda reservada para el usuario durante 30 días: nadie más puede tomarla, y puede volver a mover la página a ella.
nametexto, opcional- El nombre en la parte superior de la página, hasta 60 caracteres. Si se omite, es el nombre del negocio que está en la marca.
biotexto, opcional- Una línea sobre el negocio o la persona, hasta 160 caracteres. Un texto vacío la quita.
linkslista de objetos, opcional- Todos los botones de enlace, en el orden en que se muestran, hasta 30. Esto reemplaza la lista, así que envía los enlaces de links_list con tu cambio hecho. Para agregar un solo enlace, usa addLink.
labeltexto- El texto del botón, hasta 60 caracteres.
urltexto- A dónde lleva el botón: una dirección web que empieza con https://, un número de teléfono como tel:+13055550100 o un correo electrónico como mailto:name@example.com. No se acepta nada más, y una dirección tiene como máximo 500 caracteres.
shownverdadero o falso, opcional- false conserva el enlace en la lista de la página sin mostrarlo. Si se omite, se muestra.
topverdadero o falso, opcional- true lo convierte en el botón principal: va primero y con relleno. Un solo enlace como máximo.
addLinkobjeto, opcional- Un enlace para agregar sin enviar toda la lista. Va primero, debajo del botón principal. Úsalo para "agrega mi nuevo video a mi página de enlaces".
labeltexto- El texto del botón, hasta 60 caracteres.
urltexto- A dónde lleva: una dirección web https://, un número de teléfono tel: o un correo electrónico mailto:, hasta 500 caracteres.
topverdadero o falso, opcional- true lo convierte en el botón principal; el enlace que era el botón principal queda como un enlace normal.
accountIdslista de textos, opcional- Las cuentas conectadas que esta página muestra como iconos, y de las que muestra las últimas publicaciones, como ids de accounts_list, hasta 150. Se omite para dejarlo como está; null muestra todas las cuentas conectadas, que es como empieza una página nueva.
showPostsverdadero o falso, opcional- Si la página muestra las últimas publicaciones publicadas (hasta tres). Activado en una página nueva.
showHoursverdadero o falso, opcional- Si la página dice si el negocio está abierto ahora, según el horario de la marca. Activado en una página nueva; no se muestra nada mientras la marca no tenga horario.
showBlogverdadero o falso, opcional- true hace que esta sea la página que lleva el blog del usuario: los artículos puestos en el blog quedan públicos en la dirección de esta página seguida de /blog, y la página nombra los tres más recientes. Un espacio de trabajo tiene un solo blog, así que la página que lo tenía lo deja y la dirección de cada artículo cambia. Desactivado en una página nueva.
publishedverdadero o falso, opcional- true pone la página en su dirección pública; false la retira. Una página nueva no se publica hasta que esto sea true. Pregunta al usuario antes de publicar.
Elimina una página de enlaces. Su dirección pública deja de funcionar de inmediato. Si la página fue pública alguna vez, la dirección queda reservada para el usuario durante 30 días, y después cualquiera puede tomarla. No se toca nada de lo publicado ni de la marca.
idtexto- El id de una página de links_list.
Plan y ayuda
Lo que incluye el plan y lo que se ha usado este mes: publicaciones, cuentas y archivos subidos, la zona horaria del espacio de trabajo, cuándo termina el mes y la fecha más lejana para la que hoy se puede programar. Se consulta antes de poner en cola un grupo.
Define la zona horaria del espacio de trabajo. El mes del plan y sus conteos la siguen; la respuesta dice desde cuándo aplica el cambio.
timeZonetexto- El nombre de una zona horaria, como America/Chicago o Europe/Madrid.
atSignupverdadero o falso, opcional- Lo usa la aplicación en la primera visita. Se omite.
Busca en el centro de ayuda. Devuelve hasta cinco artículos que coinciden; cada uno se lee con help_get. Sirve cuando el usuario pregunta cómo funciona algo o por qué algo se rechazó.
querytexto- La pregunta en pocas palabras.
Un artículo de ayuda en texto simple, para leérselo o resumírselo al usuario.
idtexto- El id de un artículo, de help_search.
Cuando una llamada se rechaza
Un rechazo es una frase clara en error que dice qué pasó y qué hacer después, y no se cambia nada. Cuando el motivo es un límite del plan o de ritmo trae además un code, y en un límite del plan también el limit que se alcanzó y un enlace help a la respuesta completa.
{
"error": "“Saturday hours” already covers that keyword. Pick another question, or wait until 90 days after it was last posted and come at it from a new angle.",
"code": "topic_repeat",
"topicId": "topic_1"
}
Un rechazo sin código es un borrador que cambió desde que se leyó, un envío que ya va en camino o un borrador que no cumple la regla de una red. La frase dice cuál.
Sigue con: cómo funciona, precios o la versión corta para agentes.