🧪 Skills

Morfeo UGC Engine

Genera y gestiona videos UGC para marcas argentinas con pipeline completo, desde guión hasta publicación en redes, con control manual y logs.

v1.0.0
❤️ 0
⬇️ 106
👁 1
Share

Description

Morfeo UGC Engine Skill

Sistema autónomo de generación de videos UGC para marcas argentinas. Genera contenido TikTok/Instagram que parece orgánico pero termina con un plot twist revelando que es IA de Morfeo Labs.

Cuándo usar esta skill

Cuando Paul pida:

  • "generá un video de [marca]"
  • "corré el pipeline"
  • "qué runs hay en curso"
  • "avanzá el run de [marca] al siguiente paso"
  • "mostrá el estado del engine"
  • "publicá el video de [run]"
  • Cualquier operación sobre el Morfeo UGC Engine

Configuración

API Local

  • Base URL: http://localhost:3336
  • Token: morfeo-admin-2026 (o $MORFEO_API_TOKEN)
  • Auth header: Authorization: Bearer morfeo-admin-2026
  • Project header: x-project-id: morfeo_labs

Proyectos disponibles

  • morfeo_labs — Pipeline principal (productos argentinos)
  • animado — Variante estilo animado

Paths clave

  • API: ~/clawd/projects/morfeo-engine/api/server.js
  • Pipeline: ~/clawd/projects/morfeo-content-engine/pipeline.py
  • Outputs: ~/clawd/projects/morfeo-content-engine/output/
  • PM2: morfeo-engine-api (puerto 3336)

Endpoints principales

BASE="http://localhost:3336"
TOKEN="morfeo-admin-2026"
H_AUTH="Authorization: Bearer $TOKEN"
H_PROJ="x-project-id: morfeo_labs"

Ver todos los runs

curl -s "$BASE/api/runs" -H "$H_AUTH" -H "$H_PROJ" | python3 -c "
import json,sys
runs = json.load(sys.stdin)
for r in runs[:10]:
    print(f\"{r['id']} | {r['stage']:12} | {r.get('brief',{}).get('marca_nombre','?') if r.get('brief') else '?'}\")"

Crear run nuevo (elegir marca aleatoria del catálogo)

curl -s -X POST "$BASE/api/queue/add" \
  -H "$H_AUTH" -H "$H_PROJ" -H "Content-Type: application/json" \
  -d '{"marca_id": null}'  # null = aleatoria

Crear run con marca específica

Primero obtener ID de la marca:

curl -s "$BASE/api/marcas" -H "$H_AUTH" -H "$H_PROJ" | python3 -c "
import json,sys
for m in json.load(sys.stdin):
    print(m['id'], m['nombre'])"

Luego crear run:

curl -s -X POST "$BASE/api/queue/add" \
  -H "$H_AUTH" -H "$H_PROJ" -H "Content-Type: application/json" \
  -d "{\"marca_id\": \"havanna\"}"

Ver estado de un run

RUN_ID="20260307_190100"
curl -s "$BASE/api/runs/$RUN_ID" -H "$H_AUTH" -H "$H_PROJ" | python3 -c "
import json,sys
r = json.load(sys.stdin)
print('Stage:', r['stage'])
print('Status:', r['status'])
print('Marca:', r.get('brief',{}).get('marca_nombre','?') if r.get('brief') else '?')
print('Video:', r.get('video_url','ninguno'))"

Avanzar run a la siguiente etapa

curl -s -X POST "$BASE/api/runs/$RUN_ID/advance" \
  -H "$H_AUTH" -H "$H_PROJ" -H "Content-Type: application/json"

Regenerar campo específico del guión

# campos: HOOK, STORY_1, STORY_2, PLOT_TWIST, CTA
curl -s -X POST "$BASE/api/runs/$RUN_ID/regen-guion-field" \
  -H "$H_AUTH" -H "$H_PROJ" -H "Content-Type: application/json" \
  -d '{"field": "HOOK"}'

Seleccionar shots para el video (índices 0-9)

curl -s -X PUT "$BASE/api/runs/$RUN_ID/shots-selection" \
  -H "$H_AUTH" -H "$H_PROJ" -H "Content-Type: application/json" \
  -d '{"shots": [0, 2, 4, 6, 8]}'

Publicar en redes (Postiz → borrador)

curl -s -X POST "$BASE/api/runs/$RUN_ID/publish" \
  -H "$H_AUTH" -H "$H_PROJ" -H "Content-Type: application/json"

Ver log de ejecución

curl -s "$BASE/api/log?run_id=$RUN_ID" -H "$H_AUTH" -H "$H_PROJ"

Stages del pipeline

Stage Descripción
pending Esperando inicio
brief Guión generado ✓
portrait Personaje diseñado ✓
hero Escena Morpheus generada ✓
multishot 10 variaciones generadas ✓
video Video con lip-sync listo ✓
published Publicado en redes ✓

Flujo completo manual (modo supervisor)

1. Crear run con marca → POST /api/queue/add
2. Esperar brief (stage=brief) → ver guión y personaje
3. Si guión ok → POST /advance
4. Esperar portrait (stage=portrait) → ver imagen del personaje
5. Si personaje ok → POST /advance
6. Esperar hero (stage=hero) → ver escena Morpheus
7. Si escena ok → POST /advance
8. Esperar multishot (stage=multishot) → ver 10 shots
9. Seleccionar 5 mejores → PUT /shots-selection
10. POST /advance → genera videos con lip-sync
11. Esperar video (stage=video) → ver video final
12. Si ok → POST /publish → borrador en Postiz

Polling de un run en curso

import requests, time

BASE = "http://localhost:3336"
HEADERS = {
    "Authorization": "Bearer morfeo-admin-2026",
    "x-project-id": "morfeo_labs"
}

def poll_run(run_id, target_stage, timeout=600):
    """Espera hasta que el run llegue a target_stage."""
    start = time.time()
    while time.time() - start < timeout:
        r = requests.get(f"{BASE}/api/runs/{run_id}", headers=HEADERS).json()
        stage = r.get("stage", "")
        print(f"Stage: {stage}")
        if stage == target_stage or r.get("status") == "error":
            return r
        time.sleep(15)
    return None

Operaciones de diagnóstico

Verificar que la API está levantada

curl -s http://localhost:3336/api/runs -H "Authorization: Bearer morfeo-admin-2026" -H "x-project-id: morfeo_labs" | python3 -c "import json,sys; print(len(json.load(sys.stdin)), 'runs')"

Levantar API si está caída

cd ~/clawd/projects/morfeo-engine/api && pm2 restart morfeo-engine-api
# Si no existe: pm2 start server.js --name morfeo-engine-api

Ver logs en tiempo real

pm2 logs morfeo-engine-api --lines 50

Ver outputs del día

ls ~/clawd/projects/morfeo-content-engine/output/ | sort -r | head -10

Marcas disponibles (pool principal)

Havanna, Bon o Bon, Topper, Mantecol, Stella Artois, Andes Origen, Quilmes, Fernet Branca, Yerba Taragüí, Dulce de Leche La Serenísima, Alfajores Terrabusi, CasanCrem, Freddo, Ketchup Heinz, Mayonesa Hellmann's, y ~20 más en ~/clawd/projects/morfeo-content-engine/pipeline.py (MARCAS_ARG).


Notas importantes

  • Postiz siempre a DRAFT — nunca publicar directo, verificar manualmente
  • El pipeline puede tardar 10-30 min por etapa (ComfyDeploy + VEED)
  • Los outputs se guardan en /output/YYYYMMDD_HHMMSS/
  • Para ver el video final: ~/clawd/projects/morfeo-content-engine/output/<run_id>/final_tg.mp4
  • El dashboard visual está en https://morfeo-engine-ui.vercel.app

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs