Communitygithub.com

thinslatelabs/keepp-skill

Habilidad de agente para gestionar una página de Keepp (tarjetas de producto, códigos promocionales, captura de leads y configuración) a través de la API Agent de Keepp.

¿Qué es keepp-skill?

Esta habilidad permite a un agente de IA (como Claude Code, Cursor o Codex) gestionar completamente una página de Keepp, que convierte el enlace de bio de un creador o pequeño negocio en una página compartible con tarjetas de producto y enlaces. El agente puede crear, listar, actualizar y eliminar tarjetas de catálogo (productos), así como modificar la configuración general de la página: modo de visualización (solo enlaces, solo catálogo o ambos), la biografía corta, el CTA del héroe, los valores predeterminados de las tarjetas y el tema visual. La autenticación se realiza mediante una clave API de propietario (formato `keepp_live_…`) como token Bearer, con límite de 60 solicitudes por minuto. El agente debe confirmar con el usuario antes de eliminar tarjetas y no puede modificar iconos sociales, bloques de enlaces ni el perfil (nombre, avatar, URL), que se gestionan desde el panel de Keepp. Se incluyen recetas para casos de uso comunes como afiliados, tienda propia y captura de leads.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add thinslatelabs/keepp-skill

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Gestión de una página de Keepp

Qué es Keepp

Keepp convierte el enlace de bio de un creador o pequeño negocio en una página: una colección compartible de "tarjetas" de producto más enlaces, diseñada para convertir seguidores en compradores y leads. Es utilizada por vendedores, afiliados, coaches, creadores de cursos y creadores de link-in-bio en Instagram, YouTube, TikTok, Pinterest y X.

Una página de Keepp está compuesta por:

  • Perfil — avatar, nombre visible, biografía corta
  • Iconos sociales — enlaces a las cuentas sociales del propietario
  • Bloques de enlaces — botones a un sitio web, página de reservas, WhatsApp, etc. (más encabezados de sección)
  • Tarjetas de catálogo — las tarjetas de producto comprables (foto, precio, código promocional, llamada a la acción)
  • Modo — solo enlaces, solo catálogo o enlaces y catálogo

Qué controla esta API

Esta API gestiona dos cosas:

  1. Tarjetas de catálogo (posts) — crear, listar, actualizar y eliminar las tarjetas de producto en el catálogo del propietario.
  2. Configuración de la página — el modo de diseño de la página, el texto "Acerca de", el CTA del héroe, los valores predeterminados de las tarjetas de catálogo y el tema (ver "Configuración de la página" más abajo).

NO puedes cambiar a través de esta API: iconos sociales, bloques de enlaces y detalles del perfil (nombre visible, avatar, URL de la página). Estos los establece el propietario en el panel de Keepp; si un usuario los solicita, indícale que use el panel de Keepp.

Autenticación

Cada solicitud necesita la clave API del propietario como token bearer:

Authorization: Bearer keepp_live_…

URL base: https://api.keepp.link. Las claves se generan desde una cuenta Pro en la sección Agente de IA del panel. Si no tienes una, pídele al usuario que te la proporcione.

Endpoints

MétodoRutaPropósito
GET/api/v1/posts?cursor=Listar las tarjetas del catálogo (paginado).
POST/api/v1/postsCrear una tarjeta.
GET/api/v1/posts/:postIdObtener una tarjeta.
PATCH/api/v1/posts/:postIdActualizar una tarjeta.
DELETE/api/v1/posts/:postIdEliminar una tarjeta.

El modelo de contenido de la tarjeta

Una tarjeta se crea/actualiza con tres campos de nivel superior: imageUrls, userContent y cardOverrides.

{
  "imageUrls": ["https://…/foto.jpg"],   // hasta 5; se obtienen y almacenan por ti. ≤10MB cada una, JPEG/PNG/WebP/GIF, URL pública directa
  "userContent": {
    "name": "Bufanda de seda",                  // título corto (opcional)
    "description": "Seda de morera teñida a mano, 90×90cm.",   // OBLIGATORIO
    "price": "$72",                        // texto libre — "$72", "Desde $50", "₹1,499" (opcional)
    "promoCode": "SAVE15",                 // código promocional / referido / descuento (opcional)
    "category": "accesorios",             // una de las categorías a continuación (opcional)
    "links": ["https://…"],                // enlaces adicionales mostrados en la tarjeta (opcional)
    "contacts": [{ "type": "whatsapp", "value": "+15551234567" }]   // opcional
  },
  "cardOverrides": {                       // cómo se comporta la tarjeta (opcional; omitir para heredar los valores predeterminados de la página)
    "clickAction": "open_detail",          // "open_detail" | "trigger_cta"
    "ctaType": "link",                     // "message" | "link" | "lead_collection"
    "ctaUrl": "https://shop…/bufanda",       // OBLIGATORIO cuando ctaType = "link"
    "ctaLabel": "Comprar ahora"                  // texto del botón
  }
}

description es el único campo obligatorio. Todo lo demás es opcional; omitir cardOverrides hereda los valores predeterminados de toda la página del propietario.

Categorías: ropa, joyería, accesorios, decoración_hogar, belleza, comida_bebida, arte, papelería, plantas, fitness, viajes, bienes_raíces, servicios, mascotas, niños_bebé, libros_medios, artesanía, otros.

Tipos de contacto: teléfono, correo electrónico, whatsapp, telegram, otros.

Cómo se comporta una tarjeta — dos decisiones

1. clickAction — qué hace al tocar la tarjeta:

  • open_detail (predeterminado) — abre una vista de detalle completa (todas las fotos, descripción completa, precio, código promocional, botón de CTA). Úsalo cuando el comprador necesite contexto antes de actuar.
  • trigger_cta — al tocar ejecuta el CTA inmediatamente, sin pantalla de detalle. Úsalo para artículos autoexplicativos donde quieras la menor fricción.

2. ctaType — qué hace el CTA:

  • message — abre un mensaje para el negocio. Un valor predeterminado seguro cuando no hay enlace de pago.
  • link — abre ctaUrl (una página de Shopify/Etsy, un enlace de afiliado, una página de reservas, un formulario de Google). Requiere ctaUrl. Úsalo cuando haya un destino dedicado.
  • lead_collection — abre un formulario corto en la página que captura los datos de contacto del visitante y los guarda como lead. Úsalo para capturar personas que no están listas para comprar (listas de espera, listas de ventas, consultas de coaching). Los campos recopilados se configuran a nivel de página a través de catalogCard.leadCollection en el endpoint de configuración de página (ver más abajo) — se aplican a todas las tarjetas, no por tarjeta.

Configura ctaLabel para que coincida con la acción: "Comprar ahora", "Pedir ahora", "Consigue el lookbook", "Reserva el tuyo", "Recibe notificaciones".

Configuración de la página

Lee y cambia la configuración general de la página.

MétodoRutaPropósito
GET/api/v1/storefrontObtener la configuración actual de la página.
PATCH/api/v1/storefrontCambiar la configuración. Envía solo los campos que deseas cambiar; se fusionan con la configuración actual.

Campos editables:

{
  "mode": "links_and_catalog",   // "links_only" | "catalog_only" | "links_and_catalog"
  "about": "Cerámica hecha a mano desde mi estudio en Lisboa.",  // eslogan corto de la página (≤280 caracteres)
  "mainCta": {                    // botón héroe en la parte superior de la página
    "enabled": true,
    "label": "Reservar una llamada",
    "url": "https://cal.com/me"   // obligatorio cuando está habilitado
  },
  "catalogCard": {                // VALORES PREDETERMINADOS para toda la página para cada tarjeta
    "showCardDetails": true,
    "clickAction": "open_detail", // "open_detail" | "trigger_cta"
    "ctaType": "message",         // "message" | "link" | "lead_collection"
    "ctaUrl": "https://…",        // obligatorio cuando ctaType = "link"
    "ctaLabel": "Pedir ahora",
    "leadCollection": { "phone": true, "email": true, "instagram": false, "message": true }
  },
  "theme": {
    "useCustomTheme": true,       // DEBE ser true para que preset/brandColor tengan efecto
    "preset": "professional",     // "calm" | "professional" | "playful" | "dark"
    "brandColor": "#d7494c"       // hex de 6 dígitos
  }
}
  • Las actualizaciones parciales se fusionan. PATCH {"theme":{"useCustomTheme":true,"brandColor":"#000000"}} cambia solo el tema; el modo, las tarjetas, etc. permanecen como estaban.
  • Protección del tema: preset/brandColor se ignoran a menos que useCustomTheme sea true — envíalo en la misma solicitud.
  • catalogCard es el valor predeterminado para todas las tarjetas. Los cardOverrides propios de una tarjeta (arriba) tienen prioridad sobre estos. Cambia estos para reestilizar todas las tarjetas a la vez.
  • leadCollection establece qué campos recopila el formulario de leads a nivel de página (no hay elección de campo por tarjeta).
  • Las combinaciones no válidas son rechazadas con 400 INVALID_STOREFRONT_CONFIG (por ejemplo, ctaType:"link" sin ctaUrl).

Recetas de casos de uso

Producto de afiliado/influencer con código promocional → enlace externo

{
  "imageUrls": ["https://example.com/serum.jpg"],
  "userContent": { "name": "Sérum de vitamina C", "description": "Mi sérum de brillo diario — 15% de descuento con mi código.", "price": "$28", "promoCode": "GLOW15", "category": "belleza" },
  "cardOverrides": { "clickAction": "trigger_cta", "ctaType": "link", "ctaUrl": "https://brand.com/serum?ref=me", "ctaLabel": "Compra con mi código" }
}

Producto de boutique vendido a través de tu propia tienda

{
  "imageUrls": ["https://example.com/bufanda.jpg"],
  "userContent": { "name": "Bufanda de seda", "description": "Seda de morera teñida a mano, 90×90cm.", "price": "$72", "category": "accesorios" },
  "cardOverrides": { "clickAction": "open_detail", "ctaType": "link", "ctaUrl": "https://mitienda.com/bufanda", "ctaLabel": "Comprar ahora" }
}

Coach / servicio — captura un lead en lugar de vender directamente

{
  "imageUrls": ["https://example.com/programa.jpg"],
  "userContent": { "name": "Coaching 1:1", "description": "Programa de 6 semanas para conseguir tus primeros 5 clientes.", "price": "Desde $400", "category": "servicios" },
  "cardOverrides": { "clickAction": "trigger_cta", "ctaType": "lead_collection", "ctaLabel": "Solicitar ahora" }
}

Respuestas y errores

Éxito: { "ok": true, "data": { … } }. Error: { "ok": false, "error": { "code": "…", "message": "…" } }.

  • 401 NO_API_TOKEN / INVALID_API_TOKEN — clave faltante o revocada. Pide al usuario una clave válida.
  • 403 PLAN_REQUIRED — la cuenta no es Pro.
  • 422 INVALID_IMAGE — no se pudo obtener una URL de imagen, era del tipo/tamaño incorrecto, redirigió o se resolvió a una dirección no pública. Usa una URL de imagen https directa y pública.
  • 429 RATE_LIMITED — más de 60 solicitudes por minuto. Reduce la velocidad y reintenta.

Orientación

  • Confirma con el usuario antes de eliminar tarjetas.
  • Establece price y promoCode siempre que los tengas; se renderizan en la tarjeta y en la vista de detalle y son esenciales para casos de afiliados y ventas.
  • Al crear en masa, mantente por debajo de 60 solicitudes por minuto.
  • Las tarjetas se publican en la página inmediatamente.
  • Puedes gestionar tarjetas y la configuración de la página (modo, acerca de, CTA héroe, valores predeterminados de tarjetas, tema). Para enlaces, iconos sociales y detalles del perfil (nombre, avatar, URL de la página), dile al usuario que use el panel de Keepp.

Más contexto

Las guías prácticas de Keepp explican una página de Keepp en profundidad:

Skills relacionados