Morfeo UGC Engine

# Morfeo UGC Engine Skill

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Morfeo UGC Engine" with this command: npx skills add pauldelavallaz/morfeo-ugc-engine

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

StageDescripción
pendingEsperando inicio
briefGuión generado ✓
portraitPersonaje diseñado ✓
heroEscena Morpheus generada ✓
multishot10 variaciones generadas ✓
videoVideo con lip-sync listo ✓
publishedPublicado 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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Zoom

Zoom API integration with managed OAuth. Manage meetings, webinars, recordings, and user profiles. Use this skill when users want to schedule meetings, manag...

Registry SourceRecently Updated
General

Kleinanzeigen.de Helper

Erstelle und verwalte Verkaufsanzeigen speziell auf kleinanzeigen.de. Verwende diesen Skill wenn der Human sagt, er will etwas auf kleinanzeigen.de verkaufen...

Registry SourceRecently Updated
General

Poku

Sends and receives phone calls and messages (like SMS, WhatsApp, Slack), and reserves dedicated phone numbers using the Poku API. Example use cases: calling...

Registry SourceRecently Updated
General

IMAP/SMTP Email - Maddy Fix

Read and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Sup...

Registry SourceRecently Updated