# IMAN Creative

> Calendario de publicaciones y creativos con IA para agencias de marketing. Clientes (marcas) con su ficha de marca, el calendario de cada uno y las piezas (imágenes) de cada publicación: escritas en código (HTML/CSS, compatible con HyperFrames) por un modelo o por vos como agente, hechas con modelos de imagen, o subidas (por ejemplo, desde ChatGPT).

## Conectarse

Con login (lo más simple): en **Claude** (claude.ai o Desktop) → Configuración → Conectores → Agregar conector personalizado → `https://creative.iman.ar/mcp`. En **ChatGPT** → Configuración → Conectores (modo desarrollador) → `https://creative.iman.ar/mcp`. Te pide entrar con tu mail y aprobar el acceso (OAuth 2.1 con PKCE y registro dinámico). Así diseñás desde ahí con tu suscripción.

Con token (Claude Code, Cursor, scripts):

1. En la app: **Ajustes → Agentes → Conectar un agente**. Te da un token `ica_…` (se muestra una sola vez). El agente actúa como la persona que lo creó, dentro de su agencia.
2. Servidor MCP (HTTP, sin estado): `https://creative.iman.ar/mcp` con la cabecera `Authorization: Bearer ica_…`.

   Claude Code:
   ```
   claude mcp add --transport http iman-creative https://creative.iman.ar/mcp --header "Authorization: Bearer ica_…"
   ```

   Cualquier cliente con `mcp.json`:
   ```json
   { "mcpServers": { "iman-creative": { "type": "http", "url": "https://creative.iman.ar/mcp", "headers": { "Authorization": "Bearer ica_…" } } } }
   ```
3. O la API directo: `https://creative.iman.ar/api/…` con la misma cabecera. JSON de ida y vuelta; los errores vienen como `{ "error": { "codigo", "mensaje", "campos" } }`.

## Herramientas MCP

- `quien_soy` — La agencia y la persona con la que estás conectado, si la IA de imagen está prendida y los modelos de imagen disponibles con su costo estimado. Llamala primero.
- `listar_clientes` — Los clientes (marcas) de la agencia, con su color, rubro, si la ficha de marca está confirmada y cuántas publicaciones próximas tienen.
- `ver_cliente` — La ficha de marca completa de un cliente (tono, colores, tipografías, estilo visual, reglas, pilares, hashtags) y sus archivos (logos, fotos, manuales). Las rutas /archivos/… se pueden mirar con ver_imagen.
- `crear_cliente` — Da de alta un cliente. Después conviene leer_link (su web o Instagram) y proponer_ficha.
- `subir_archivos` — Sube hasta 10 archivos de la marca (logos, fotos de producto, manual de marca en PDF, tipografías) en base64. Para cargar carpetas enteras, recorrelas y subí de a tandas. Después: proponer_ficha.
- `subir_desde_link` — Baja un archivo público (una imagen de la web, un archivo compartido de Google Drive o Dropbox) y lo guarda en la marca. Las carpetas de Drive no: compartí archivos sueltos o un zip.
- `leer_link` — Baja la web (o @instagram) del cliente y guarda lo que sirve para la ficha: textos, colores, tipografías, logo e imagen principal.
- `proponer_ficha` — La IA arma la ficha de marca mirando los archivos y textos cargados. Queda como propuesta (sin confirmar) hasta guardar_ficha con confirmar=true.
- `guardar_ficha` — Guarda la ficha de marca (entera, con la forma que devuelve ver_cliente) y, si confirmar=true, la marca como revisada.
- `ver_calendario` — Publicaciones entre dos días (hasta 3 meses), de todos los clientes o de uno, con estado, redes, formato, copy y si tienen pieza.
- `pendientes_de_diseno` — Publicaciones de los próximos 30 días que siguen como idea o en diseño.
- `ver_publicacion` — Una publicación con sus comentarios, todas sus piezas (con el estado de cada generación de IA) y, si ya salió o está saliendo sola, cómo le fue en cada red (envios: estado, link del post, error).
- `crear_publicacion` — Agrega una publicación al calendario de un cliente (queda como idea).
- `actualizar_publicacion` — Cambia lo que se pase (día, hora, copy, estado…). Estados: IDEA, DISENO, APROBAR (la ve el cliente en su link), APROBADA, PROGRAMADA, PUBLICADA.
- `redes_de_cliente` — La página de Facebook y el Instagram profesional conectados a un cliente (para publicar solo), o null si no tiene. Si hay error, hay que volver a conectar.
- `paginas_de_meta` — Las páginas de Facebook que maneja la persona con su Facebook (con su Instagram vinculado y a qué cliente están asignadas). Requiere que la persona haya conectado su Facebook en la app (Ajustes → Facebook e Instagram): ese login es en el navegador.
- `conectar_redes_de_cliente` — Asigna una página de Facebook (de paginas_de_meta) a un cliente: desde ahí, sus publicaciones PROGRAMADAS salen solas a Facebook y al Instagram vinculado. Dice cuántas programadas futuras van a empezar a salir solas.
- `programar_publicacion` — La pasa a PROGRAMADA (y opcionalmente cambia día y hora). Si el cliente tiene Facebook e Instagram conectados, sale sola a esa hora por IG_FEED, IG_HISTORIA y FACEBOOK con el copy y los hashtags; antes revisa que se pueda (pieza elegida, formato, largo del copy) y si no, dice por qué. Devuelve qué sale solo (saleSola) y qué va a mano (aMano: reels, TikTok, LinkedIn).
- `publicar_ahora` — Publica ya en Facebook e Instagram (el cliente tiene que tenerlos conectados). Tarda unos segundos: después, ver_publicacion muestra el link de cada post o el error.
- `reintentar_publicacion` — Vuelve a intentar ya las redes en las que la publicación no salió (las que tienen error en ver_publicacion). Si el error era de la conexión, primero hay que volver a conectar.
- `planificar_mes` — Propone la grilla de un mes para un cliente (fechas, redes, formato, idea, copy y hashtags) según su ficha y las fechas especiales de Argentina. No graba nada: para grabarla, aceptar_plan.
- `aceptar_plan` — Graba en el calendario las publicaciones de un plan (las que devolvió planificar_mes, enteras o editadas).
- `sugerir_copy` — Propone el texto y los hashtags de una publicación con el tono de la marca. No lo graba (usá actualizar_publicacion).
- `contexto_de_cliente` — TODO lo de una marca en un documento: ficha (tono, colores, tipografías, estilo, reglas), estrategia (pilares, frecuencia, hashtags), el calendario de las próximas semanas con ids, y sus archivos (logo, fotos, productos). Leelo antes de diseñar o planificar.
- `guia_de_codigo` — El contrato técnico para diseñar una pieza en HTML/CSS (composición HyperFrames estática): tamaño, recursos asset://, tipografías, lo prohibido y las reglas de diseño. Leela antes de guardar_codigo_pieza.
- `guardar_codigo_pieza` — Guarda una pieza que diseñaste VOS en HTML/CSS (con guia_de_codigo y contexto_de_cliente): la app la sanea, la renderiza a PNG y te devuelve la imagen para que la mires y la corrijas (llamala de nuevo con basada_en_pieza_id para una versión nueva). Usa asset://logo, asset://fondo, asset://producto-N, asset://foto-N.
- `ver_codigo_pieza` — El HTML/CSS de una pieza por código (hecha por la app o por un agente), con sus recursos, para modificarla.
- `cambiar_pieza` — Le pide al modelo de código de la app que modifique una pieza por código («más aire arriba», «el precio más grande»). Sale una versión nueva en 10 a 40 s. Si preferís hacerlo vos, usá ver_codigo_pieza + guardar_codigo_pieza.
- `foto_de_estudio` — Rehace la foto de un producto (de cualquier fondo, sacada con el teléfono) como foto de estudio profesional con el mismo producto: fondo blanco, del color de la marca o un ambiente. Queda como archivo nuevo de la marca en ~20 s (mirá ver_cliente).
- `quitar_fondo` — Recorta el producto de una foto (PNG transparente) y lo guarda como archivo nuevo de la marca, para usarlo como asset://producto-N en el código. Si no está disponible, usá foto_de_estudio con fondo blanco.
- `prompt_de_pieza` — Arma el prompt de imagen de una publicación con la ficha de marca (sin generar nada). Sirve para generar la imagen con tu propio modelo (por ejemplo, el de ChatGPT con la suscripción de la persona) y después subirla con subir_pieza. Devuelve también las referencias de la marca (miralas con ver_imagen).
- `generar_pieza` — Genera la pieza con los modelos de la app (los paga la agencia). CODIGO: un modelo de texto escribe el HTML/CSS con la marca (centavos). IA: el modelo de imagen hace la pieza terminada. HIBRIDO: la IA hace la foto y el código pone el texto exacto. Tarda 10 a 60 s: después mirá ver_publicacion. Si vos podés escribir código, mejor usá guardar_codigo_pieza.
- `subir_pieza` — Sube una imagen hecha afuera (en ChatGPT, por ejemplo) como pieza de una publicación. PNG, JPG o WebP en base64, hasta ~8 MB.
- `elegir_pieza` — Deja una pieza (con la imagen terminada) como la que va en su publicación.
- `ver_imagen` — Trae una imagen de la app (logo, foto de marca o pieza) por su ruta /archivos/… para mirarla.
- `crear_link_aprobacion` — Crea un link (sin usuario ni clave) para que el cliente vea y apruebe o pida cambios en las publicaciones del período que están «para aprobar».
- `costos_por_modelo` — Por modelo de imagen: cuántas generaciones, costo real promedio, tiempo promedio, errores y cuántas se eligieron. Para decidir qué modelo conviene.

## API (lo principal)

- `GET /api/auth/yo` — quién soy, la agencia, si hay IA.
- `GET /api/marcas` · `POST /api/marcas` · `GET|PATCH|DELETE /api/marcas/:id` — clientes y su ficha de marca.
- `PUT /api/marcas/:id/archivos` — subir un archivo crudo (cabeceras `content-type`, `x-nombre`, `x-tipo`: LOGO, FOTO, FUENTE, MANUAL).
- `POST /api/marcas/:id/link` `{ url }` · `POST /api/marcas/:id/ficha/ia`.
- `GET /api/calendario?desde=YYYY-MM-DD&hasta=YYYY-MM-DD[&marca=id]` · `POST /api/calendario` · `GET|PATCH|DELETE /api/calendario/:id`.
- `GET /api/calendario/pendientes` · `POST /api/calendario/planificar` · `POST /api/calendario/planificar/aceptar` · `POST /api/calendario/:id/copy`.
- `GET /api/piezas?publicacion=id` · `POST /api/piezas` · `POST /api/piezas/codigo` (tu HTML/CSS) · `POST /api/piezas/:id/cambiar` · `GET /api/piezas/:id/codigo` · `POST /api/piezas/prompt` · `PUT /api/piezas/imagen?publicacion=id&motor=CHATGPT` (cuerpo: la imagen) · `POST /api/piezas/:id/elegir`.
- `POST /api/marcas/:id/archivos/:archivoId/estudio` (foto de estudio) · `POST /api/marcas/:id/archivos/:archivoId/recorte` (sin fondo).
- `POST /api/laboratorio` (el mismo brief en varios modelos) · `GET /api/laboratorio/resumen` (costo real por modelo).
- `POST /api/aprobacion` `{ marcaId, desde, hasta }` — link para que el cliente apruebe.
- `GET /api/meta/paginas` · `GET|PUT|DELETE /api/meta/clientes/:marcaId` `{ paginaId }` — Facebook e Instagram de cada cliente.
- `POST /api/calendario/:id/publicar` (publicar ahora) · `POST /api/calendario/:id/reintentar`.
- `GET /archivos/<clave>` — las imágenes y archivos (con el mismo token).

## Diseñar piezas por código (lo que mejor hace un agente)

Leé `contexto_de_cliente` (marca, estrategia, calendario, archivos) y `guia_de_codigo`; escribí el HTML/CSS de la pieza (una composición HyperFrames estática, con `asset://logo`, `asset://producto-1`…) y mandalo con `guardar_codigo_pieza`: la app lo sanea, lo renderiza a PNG con Chrome y te devuelve la imagen para que la revises. La pieza se puede bajar como proyecto HyperFrames (`GET /api/piezas/:id/hyperframes`) y animar para el reel.

## Conceptos

- **Estados de una publicación**: IDEA → DISENO → APROBAR (la ve el cliente en su link) → APROBADA → PROGRAMADA → PUBLICADA.
- **Publicar solo**: si el cliente tiene Facebook e Instagram conectados, lo PROGRAMADO sale solo a su hora por IG_FEED, IG_HISTORIA y FACEBOOK (la pieza elegida, en JPEG, con el copy y los hashtags) y queda PUBLICADA con el link de cada post. Si falla, se reintenta y se avisa por mail. IG_REEL (necesita video), TIKTOK y LINKEDIN van a mano. El feed de Instagram no acepta 9:16 (eso va como historia).
- **Motores de pieza**: CODIGO (un modelo escribe el HTML/CSS con la marca y se renderiza; centavos), IA (el modelo de imagen hace la pieza terminada), HIBRIDO (la IA hace la foto sin texto y el código pone el texto exacto), CHATGPT / SUBIDA (imagen hecha afuera).
- **Formatos**: CUADRADO 1:1, VERTICAL 4:5, HISTORIA 9:16, HORIZONTAL 1,91:1.
- Días `YYYY-MM-DD` y horas `HH:MM` en la zona de la agencia (Argentina por defecto).
