Última actualización: 2026-10-04
Payload CMS y webhooks
auto-post.io publica artículos generados en un proyecto Payload CMS mediante su API REST. Los webhooks nativos entrantes del producto se usan para facturación (Stripe). Los webhooks de contenido personalizados no son un tipo de destino activo en el catálogo de la app; el ejemplo siguiente es solo para un pipeline externo.
Integración Payload CMS
Lo que necesitas
Antes de conectar Payload CMS, prepara:
- Una URL base pública de la API REST de Payload
- Una cuenta de usuario Payload con acceso a las colecciones configuradas
- El slug de la colección de autenticación, normalmente
users - El slug de la colección de posts
- Slugs opcionales de categorías y medios
Conectar Payload CMS
- Abre Sitios web y elige Añadir sitio.
- Selecciona Payload CMS como plataforma.
- Introduce el nombre del sitio y la URL pública.
- Introduce la URL de la API Payload, el email, la contraseña, el slug de autenticación y el slug de posts.
- Añade slugs de categorías y medios si tu proyecto los usa.
- Selecciona Continuar. auto-post.io inicia sesión, lee un post de ejemplo y sugiere un mapeo de campos.
- Revisa el mapeo sugerido y confirma la conexión.
La conexión guarda las credenciales necesarias para obtener un JWT de Payload. Los tokens se renuevan o recrean cuando hacen falta en peticiones posteriores.
Mapeo de campos
El mapeo conecta campos de auto-post.io con campos de tu colección de posts de Payload:
- Título
- Slug
- Contenido
- Fecha de publicación
- Categorías
- Imagen destacada
- Imagen Open Graph
- Título, descripción y palabras clave SEO
- URL pública del artículo
Los campos anidados se admiten con rutas con puntos como seo.title. Usa la sugerencia de IA como punto de partida y revisa cada campo antes de guardar.
El rich text de Payload se envía como JSON Lexical por defecto. Elige el formato HTML solo si tu colección espera HTML.
Colecciones y endpoints de Payload
El siguiente ejemplo muestra la forma mínima de colección esperada. Los nombres de campo pueden diferir según el mapeo configurado en auto-post.io.
// payload/collections/Posts.js
import { lexicalEditor } from '@payloadcms/richtext-lexical';
export const Posts = {
slug: 'posts',
access: {
create: ({ req }) => Boolean(req.user),
read: () => true,
update: ({ req }) => Boolean(req.user),
},
fields: [
{ name: 'title', type: 'text', required: true },
{ name: 'slug', type: 'text', required: true, unique: true },
{ name: 'content', type: 'richText', editor: lexicalEditor() },
{ name: 'publishedAt', type: 'date' },
{ name: 'categories', type: 'relationship', relationTo: 'categories', hasMany: true },
{ name: 'featuredImage', type: 'upload', relationTo: 'media' },
],
};auto-post.io usa estos endpoints REST de Payload. Sustituye https://cms.example.com/api y los slugs por tus valores:
# Login y JWT
curl -X POST "https://cms.example.com/api/users/login" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"YOUR_PASSWORD"}'
# Crear un post
curl -X POST "https://cms.example.com/api/posts" \
-H "Authorization: JWT YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{"title":"A generated article","slug":"a-generated-article","content":{"root":{"type":"root","children":[],"direction":null,"format":"","indent":0,"version":1}},"_status":"draft"}'
# Actualizar un post existente
curl -X PATCH "https://cms.example.com/api/posts/123" \
-H "Authorization: JWT YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{"title":"An updated article","_status":"published"}'Para imágenes destacadas, configura una colección de medios y asegúrate de que el campo de subida acepta el nombre multipart configurado en auto-post.io (file por defecto):
curl -X POST "https://cms.example.com/api/media" \
-H "Authorization: JWT YOUR_JWT" \
-F "[email protected]"Comportamiento de publicación
Cuando una campaña genera un artículo para un sitio Payload:
- El borrador se envía con
_statusendraft - El contenido publicado se envía con
_statusenpublished - Los documentos Payload existentes se actualizan en lugar de duplicarse cuando se conoce el ID
- Las categorías se sincronizan desde la colección de categorías configurada
- Las imágenes destacadas se suben a la colección de medios cuando el campo está mapeado
- La URL pública del artículo proviene del campo URL configurado, de una URL devuelta o de la plantilla de ruta configurada
Consulta Gestión de campañas para configurar campañas que publiquen en Payload CMS.
Webhooks (facturación y ejemplos externos)
Webhook nativo activo: Stripe
El endpoint webhook del producto usado en producción es la facturación de Stripe en /webhook/stripe. Gestiona eventos de suscripción y pago de tu cuenta auto-post.io. No lo configuras para publicar contenido.
Webhooks de contenido personalizados (solo ejemplo externo)
No hay un catálogo activo en la app ni una ruta personalizada para enviar artículos generados a URLs webhook arbitrarias. Si necesitas un paso de entrega personalizado, constrúyelo fuera de auto-post.io (por ejemplo leyendo el contenido publicado desde Payload, WordPress u otro CMS conectado).
La forma JSON siguiente es un ejemplo de contrato que puedes implementar en tu propio servidor. No es un payload saliente garantizado de auto-post.io hoy.
{
"event": "article.published",
"idempotencyKey": "article-123-published",
"article": {
"title": "A generated article",
"slug": "a-generated-article",
"content": "<p>Article content</p>",
"status": "published",
"publishedAt": "2026-09-10T19:20:00Z",
"featuredImage": "https://cdn.example.com/articles/a-generated-article.jpg"
}
}Si adoptas un contrato similar en tu lado:
- Autentica y valida cada petición
- Rechaza payloads inválidos con
4xx - Haz único
idempotencyKeyantes de escribir contenido - Devuelve
2xxsolo tras aceptar la petición
Solución de problemas
La conexión falla
- Confirma que la URL de la API apunta a la API REST de Payload, no solo al frontend público
- Revisa el slug de autenticación y las credenciales
- Confirma que la colección de posts existe y es legible por el usuario
- Comprueba que la API es accesible desde Internet
Se rechazan artículos
- Verifica que los nombres de campo mapeados coinciden con la colección Payload
- Confirma el tipo del campo de contenido y el formato rich text elegido
- Revisa campos obligatorios, formatos de relación y permisos de medios
- Revisa las reglas de acceso create/update de la colección
Faltan imágenes
- Configura un slug de colección de medios
- Revisa el campo de imagen destacada u Open Graph mapeado
- Confirma que la colección de medios acepta el campo de subida configurado
Documentación relacionada
Última actualización: 2026-10-04