El boilerplate ahora incluye el endpoint receptor para publicar posts desde un provider custom de Postiz. Calendario editorial unificado con tus redes sociales en menos de 2 horas.
Esta semana hemos añadido al boilerplate de CREA.MBA un endpoint que permite publicar posts del blog desde Postiz, igual que programas un tweet o un post de LinkedIn. El calendario editorial pasa a estar en un solo sitio.
Si self-hosteas Postiz para tus redes y tu blog vive en CREA.MBA, esta guía explica cómo activarlo en menos de 2 horas.
El boilerplate ahora trae POST /api/postiz-publish y GET /api/postiz-publish/health. Son los dos endpoints que necesita un provider custom de Postiz para conectarse y publicar contra tu blog. Vienen con todo lo que importa:
El boilerplate aporta el receptor. La otra mitad del puente — el provider que aparece en la UI de Postiz — vive en un fork de Postiz que liberamos como referencia. Tres piezas:
Hay un detalle que cuesta horas la primera vez. El orchestrator de Postiz filtra silenciosamente cualquier provider cuyo identifier contenga un guion antes de crear el worker en Temporal:
.filter((f) => f.identifier.indexOf('-') === -1) .map((integration) => ({ taskQueue: integration.identifier.split('-')[0], // ... }))Eso significa que linkedin-page e instagram-standalone NO crean su propio worker — reusan el de su primary (linkedin, instagram). Si tu provider custom usa identifier con guiones y no hay primary correspondiente, los jobs se programan, las queues se crean en Temporal, pero ningún worker las procesa.
Recomendación: nombra tu provider sin guiones. Nuestro blogcreastack evita el filtro y crea su propio worker dedicado.
Postiz sanitiza el HTML del campo content. Cualquier SVG inline desaparece. La solución elegante — que ya viene en el sistema de blog del boilerplate — es mantener las ilustraciones como componentes React mapeados por slug:
const blogIllustrations: Recordexport function renderBlogIllustration(slug: string) {
const Component = blogIllustrations[slug];
return Component ?
El componente del header del post llama a renderBlogIllustration(slug). Si el slug está mapeado, renderiza la ilustración. Si no, no rompe.
Postiz programa contenido. El blog inyecta la ilustración al renderizar. Cada cosa donde tiene que estar. Y la misma ilustración se reusa para versión es y en gracias al doble mapeo.
Si ya tienes un proyecto basado en el boilerplate:
Tiempo total: 1-2 horas si ya tienes Postiz self-hosteado.
Cuando decíamos “fork mantenible” hablábamos de unos 30 minutos por release upstream. Lo medimos: casi todo el código del provider va en archivos propios. Solo dos puntos de fricción con upstream son integration.manager.ts y show.all.providers.tsx — ambos triviales (añadir 2-5 líneas). Rebases reales: ~5 minutos cuando upstream solo toca otros providers, ~20 minutos cuando cambian la interfaz SocialAbstract (raro).
El boilerplate no busca ser el blog más avanzado del mundo. Busca que cuando un builder se sienta a publicar, el flujo no le distraiga. Tener el calendario editorial unificado con redes sociales — mismo Postiz que ya usabas para X y LinkedIn — elimina friction real. Una pestaña, un calendario, todo planificable.
Y el endpoint es lo bastante pequeño como para entenderlo en 10 minutos y modificarlo si tu blog tiene particularidades.
El post que estás leyendo lo programó Postiz contra el endpoint /api/postiz-publish de este mismo blog. El primer post real publicado con la feature cuenta justo cómo activarla. Recursive.
Suscríbete para más tutoriales y tips sobre crear productos con IA
Implementa multi-tenancy con organizations, roles e invitaciones en Next.js usando el plugin de Better Auth. Aislamiento de datos y errores comunes.