@xmarts/genius-setup 1.13.1 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugin/skills/contentforge/SKILL.md +62 -0
- package/plugin/skills/elevenlabs-voiceover/SKILL.md +85 -0
- package/plugin/skills/genius-media-gen/SKILL.md +49 -0
- package/plugin/skills/genius-operator/references/provision-consultant-ui-access.md +14 -4
- package/plugin/skills/higgsfield-video/SKILL.md +97 -0
- package/plugin/skills/video-storytelling/SKILL.md +79 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmarts/genius-setup",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.0",
|
|
4
4
|
"description": "One-command, self-updating onboarding for Xmarts Genius (Brain MCP + per-turn injection + automatic session/time capture + presence heartbeat for honest time-tracking 'amarre' + plan/committee→Brain enforcement + CLAUDE.md protocol + MCP fan-out: provisions the consultant's granted MCP servers into Claude Code & Claude Desktop). Secret-free onboarding via single-use setup-token exchange. Installs once; self-updates daily so new tools/skills/features arrive with zero action.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"genius-setup": "bin/genius-setup.js"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: contentforge
|
|
3
|
+
description: ContentForge — Content Command Center de Xmarts. USAR cuando el usuario pida producir contenido/videos de contenido (guion con fórmulas probadas, pipeline artículo→video, News Animator, hooks A/B, fact-check con fuentes, teleprompter, voz TTS karaoke) o mencione ContentForge. Claude drives: el consultor NUNCA toca la terminal.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ContentForge — Content Command Center (Xmarts)
|
|
7
|
+
|
|
8
|
+
Herramienta propia de Xmarts (repo privado `Bananoman/ContentForge`). Genera
|
|
9
|
+
guiones con 27 fórmulas probadas, renderiza B-roll con Remotion, anima artículos
|
|
10
|
+
(News Animator), hace fact-check con fuentes reales y narra con ElevenLabs
|
|
11
|
+
(captions karaoke con timings exactos del engine). **Todo en modo suscripción
|
|
12
|
+
Claude CLI — sin API keys de LLM.**
|
|
13
|
+
|
|
14
|
+
## Regla #1 — Claude drives
|
|
15
|
+
El consultor pide en lenguaje natural; TÚ ejecutas los comandos. Nunca le pidas
|
|
16
|
+
correr nada en terminal.
|
|
17
|
+
|
|
18
|
+
## Setup en máquina nueva (una vez, ~10 min)
|
|
19
|
+
Prerrequisitos que TÚ verificas/instalas: Node 20+, pnpm, Docker (para el
|
|
20
|
+
Postgres local), Claude Code CLI logueado.
|
|
21
|
+
```bash
|
|
22
|
+
git clone https://github.com/Bananoman/ContentForge.git ~/Development/ContentForge
|
|
23
|
+
cd ~/Development/ContentForge && pnpm install && pnpm bootstrap # idempotente
|
|
24
|
+
pnpm doctor # DEBE dar GREEN 8/8 antes de usar — si no, arregla lo que marque
|
|
25
|
+
```
|
|
26
|
+
Si el clone falla por acceso: el consultor necesita el grant del repo — pedirlo
|
|
27
|
+
a Rubén/Daniela (1 min). El acceso es por-persona, igual que las demás
|
|
28
|
+
herramientas de Genius.
|
|
29
|
+
|
|
30
|
+
## Recetas (todas verificadas E2E)
|
|
31
|
+
| El consultor pide… | Tú corres… |
|
|
32
|
+
|---|---|
|
|
33
|
+
| "Video de este artículo" (pipeline completo, resumible) | `pnpm cf pipeline --name X --source <url> --out out/x.mp4` |
|
|
34
|
+
| Proyecto + ingesta de fuente | `pnpm cf new --name X --source <url>` |
|
|
35
|
+
| Guion 60s con fórmulas | `pnpm cf generate <projectId> --length 60` |
|
|
36
|
+
| **News Animator** (scroll+highlight+closeup de artículo) | `pnpm cf capture --url <articulo> --highlight "texto exacto" --image 0 --render out/x.mp4` |
|
|
37
|
+
| Variantes de hook A/B | `pnpm cf hooks generate <versionId>` → `hooks pick` |
|
|
38
|
+
| **Fact-check con fuentes reales** | `pnpm cf factcheck <versionId>` |
|
|
39
|
+
| Revisión con feedback | `pnpm cf revise <versionId> --feedback "..."` |
|
|
40
|
+
| Voz narrada + captions karaoke | lane TTS ElevenLabs (usa el skill `elevenlabs-voiceover`; timings verbatim del engine — commit 50e3478, e2e 13/13) |
|
|
41
|
+
| Teleprompter (solo texto hablado, 0 cues) | `pnpm cf teleprompter <versionId>` |
|
|
42
|
+
| Guardián de voz de marca | `pnpm cf voice-check <versionId>` |
|
|
43
|
+
| Render de composición | `pnpm cf render --comp KineticQuote --props f.json --out x.mp4` |
|
|
44
|
+
| **Dashboard visual** | `pnpm cf ui` → http://localhost:4577 (library/detail/formulas/runs) |
|
|
45
|
+
| Inteligencia competitiva (velocity + trend radar, zero-key) | `cf intel add-channel/poll/trends` |
|
|
46
|
+
| Costos de corridas (reales o NULL, nunca fabricados) | `pnpm cf runs` |
|
|
47
|
+
|
|
48
|
+
## Flujo recomendado (calidad máxima)
|
|
49
|
+
1. `cf new` con la fuente → 2. `cf generate` (fórmula sugerida) → 3. `cf hooks
|
|
50
|
+
generate` + `hooks pick` (el hook decide la retención) → 4. `cf factcheck`
|
|
51
|
+
(NUNCA publicar claims sin fuente) → 5. `cf revise` con feedback del consultor →
|
|
52
|
+
6. voz con `elevenlabs-voiceover` → 7. `cf render`/`pipeline` → 8. preview
|
|
53
|
+
aprobado ANTES del render final.
|
|
54
|
+
|
|
55
|
+
## Reglas duras
|
|
56
|
+
- `pnpm doctor` GREEN antes de cualquier sesión de trabajo.
|
|
57
|
+
- Fact-check obligatorio antes de publicar (claims con receipts o fuera).
|
|
58
|
+
- Los costos que reporta `cf runs` son reales o NULL — jamás inventar números.
|
|
59
|
+
- Guía ilustrada completa: `docs/guide/index.html` del repo (paso a paso con
|
|
60
|
+
screenshots + registro E2E).
|
|
61
|
+
- Combina con: `video-storytelling` (narrativa), `elevenlabs-voiceover` (voz),
|
|
62
|
+
`higgsfield-video` (motion generativo), NanoBanana2 (imágenes).
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: elevenlabs-voiceover
|
|
3
|
+
description: Voz profesional con ElevenLabs para consultores Xmarts (la API key llega provisionada por Genius — NUNCA pedirla ni pegarla en el chat). USAR SIEMPRE que el usuario pida narración, voiceover, text-to-speech, TTS, doblaje, diseñar una voz, o audio para un video/demo/curso.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ElevenLabs Voiceover — receta Xmarts (tier Creator)
|
|
7
|
+
|
|
8
|
+
Comité creative-stack 2026-07-06 — todo verificado en docs oficiales + pipeline
|
|
9
|
+
real en producción. Fuentes: `docs/audit/2026-07-06-creative-stack-research/seats/B-elevenlabs.md`.
|
|
10
|
+
La key llega por Genius (MCP `elevenlabs` o env `ELEVENLABS_API_KEY`). Si falta:
|
|
11
|
+
la máquina no convergió → cualquier turno + reiniciar sesión. NUNCA pedir la key.
|
|
12
|
+
|
|
13
|
+
## 1. Ruteo de modelo (decisión #1)
|
|
14
|
+
| Modelo | Cuándo | Límite/request |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `eleven_v3` | Expresivo con audio tags, diálogos | 5,000 chars |
|
|
17
|
+
| `eleven_multilingual_v2` | **Default narración es-MX/LATAM larga** | 10,000 chars |
|
|
18
|
+
| `eleven_flash_v2_5` | Barato+rápido (0.5 cr/char); escribir NÚMEROS COMO PALABRAS (no normaliza) | 40,000 chars |
|
|
19
|
+
| ~~`eleven_turbo_v2_5`~~ | ⛔ **MUERTO 2026-07-09** — migrar a flash_v2_5 | — |
|
|
20
|
+
|
|
21
|
+
## 2. Prompting v3 (audio tags)
|
|
22
|
+
- Tags = dirección de actuación entre corchetes: emoción (`[excited]` `[sarcastic]`
|
|
23
|
+
`[warmly]` `[professional]`), reacciones (`[laughs]` `[sighs]` `[clears throat]`),
|
|
24
|
+
delivery (`[whispers]` `[SHOUTING]` `[pause]` `[rushed]` `[drawn out]`),
|
|
25
|
+
acentos (`[strong French accent]`).
|
|
26
|
+
- **Puntuación = prosodia**: elipsis `…` pausa con peso; MAYÚSCULAS = énfasis;
|
|
27
|
+
`¿? ¡!` ayudan la entonación en español. Ej oficial:
|
|
28
|
+
`"Fue un día MUY largo [sigh] … nadie escucha."`
|
|
29
|
+
- Prompts **>250 chars** (cortos = inconsistentes). **NO existe SSML `<break>` en v3**
|
|
30
|
+
(solo en v2) — pausas con tags + puntuación.
|
|
31
|
+
- Stability en v3 es discreto: Creative/Natural responden a tags; **Robust los mata**.
|
|
32
|
+
- No contradecir la voz (voz calma + `[SHOUTING]` no funciona).
|
|
33
|
+
- Generar 2-3 tomas y elegir; `seed` para reproducibilidad.
|
|
34
|
+
|
|
35
|
+
## 3. Voice Design — plantilla oficial (crear voces por prompt)
|
|
36
|
+
```
|
|
37
|
+
Native <idioma + variante>. <Género>, <edad>. <Calidad de audio>.
|
|
38
|
+
Persona: <2-5 palabras>. Emotion: <2-3 adjetivos>.
|
|
39
|
+
<1-2 frases de timbre, ritmo y entrega>
|
|
40
|
+
```
|
|
41
|
+
Receta Xmarts narrador demo: *"Native Spanish, español latinoamericano neutro.
|
|
42
|
+
Male, 30-40. Studio quality. Persona: narrador tecnológico confiable. Emotion:
|
|
43
|
+
confident, warm, clear. Smooth timbre, relaxed pace, clear emphasis on key data."*
|
|
44
|
+
- **Guidance scale**: 20-25% naturalidad · 30-35% balance (default Xmarts) ·
|
|
45
|
+
40%+ fidelidad al acento/carácter. Preview text 100-1000 chars acorde a la voz.
|
|
46
|
+
- NUNCA "foreign accent" (vago) ni términos FX ("reverb","phone") — degradan.
|
|
47
|
+
- Flujo API: `POST /v1/text-to-voice/design` → previews → persistir. Registrar
|
|
48
|
+
voice_ids del equipo en Genius.
|
|
49
|
+
|
|
50
|
+
## 4. Settings por caso de uso (voice_settings)
|
|
51
|
+
| Caso | stability | style | speed |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| **VO corporativo/demo (probado en producción)** | **0.55** | **0.2** | 1.0 |
|
|
54
|
+
| Ad/hook enérgico (v3+tags) | Creative/Natural | — | — |
|
|
55
|
+
| E-learning largo | 0.6-0.7 | 0.1 | 0.95-1.05 |
|
|
56
|
+
Si suena robótico: alargar la escena/copy, NO tocar speed primero.
|
|
57
|
+
|
|
58
|
+
## 5. Integración con video (Remotion) — el núcleo
|
|
59
|
+
1. **`scenes.json` como contrato**: `{id, text, duration, character, delay}` →
|
|
60
|
+
genera `scene1..N.mp3` + `info.json` con duraciones reales.
|
|
61
|
+
2. **Config central de timing** (única fuente de verdad) — duraciones hardcodeadas
|
|
62
|
+
en varios archivos rompen silencioso.
|
|
63
|
+
3. **`previous_text`/`next_text`** en cada request (o `previous_request_ids` ≤3,
|
|
64
|
+
mismo modelo) → prosodia continua entre escenas.
|
|
65
|
+
4. **Captions frame-perfect SIN Whisper**: `POST /v1/text-to-speech/{voice}/with-timestamps`
|
|
66
|
+
→ alignment POR CARÁCTER (start/end seconds) → karaoke en Remotion.
|
|
67
|
+
5. Audio por escena: `<Sequence from={Math.round(FPS * audioDelay)}>` dentro de
|
|
68
|
+
TransitionSeries (sin esto los VO se pisan en transiciones).
|
|
69
|
+
6. Regenerar UNA escena, no todo (ahorra créditos en iteración).
|
|
70
|
+
7. Música/SFX: `textToSoundEffects` (cuota separada), `loop:true`, volumen ≤0.12.
|
|
71
|
+
8. Formato: **`mp3_44100_192`** (se desbloquea en Creator — usarlo siempre).
|
|
72
|
+
WAV/PCM requiere Pro: no prometer WAV master.
|
|
73
|
+
9. Guion: escribir COMO SE HABLA; números y abreviaturas en palabras.
|
|
74
|
+
10. Pronunciación de marcas: dictionary PLS con reglas **alias** ("Odoo"→"Oh-doo",
|
|
75
|
+
"Xmarts"→"Ex-marts") — phoneme IPA solo flash_v2/v3.
|
|
76
|
+
|
|
77
|
+
## 6. Presupuesto Creator (121,000 créditos/mes ≈ 1 cr/char en v2)
|
|
78
|
+
≈2h de narración premium/mes. Lo que come cuota es la ITERACIÓN → regeneración
|
|
79
|
+
por-escena + `seed`. Voice changer: 1,000 chars/min de audio. Dubbing 90+ idiomas
|
|
80
|
+
(watermark solo en free). Concurrencia 2-15: serializar renders batch.
|
|
81
|
+
|
|
82
|
+
## Referencia clonada
|
|
83
|
+
`~/Development/creative-stack/elevenlabs-examples` (oficial, MIT) y
|
|
84
|
+
`elevenlabs-remotion-skill` (patrón scenes.json). MCP oficial opcional:
|
|
85
|
+
`uvx elevenlabs-mcp` con `ELEVENLABS_MCP_BASE_PATH` al `public/audio/` del proyecto.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: genius-media-gen
|
|
3
|
+
description: Generación de imágenes y voz/TTS para consultores Xmarts. USAR SIEMPRE que el usuario pida crear/generar/editar una imagen, icono, ilustración, visual, logo, banner (→ NanoBanana2) o audio, voz, narración, text-to-speech, TTS (→ ElevenLabs). Nunca preguntar qué modelo usar ni pedir API keys.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Genius Media Gen — imágenes (NanoBanana2) y voz (ElevenLabs)
|
|
7
|
+
|
|
8
|
+
## Regla de oro (no negociable)
|
|
9
|
+
1. **NUNCA preguntes al usuario qué modelo usar.** El estándar Xmarts está decidido:
|
|
10
|
+
- **Imágenes → NanoBanana2** (= `gemini-3.1-flash-image-preview`, fijo).
|
|
11
|
+
- **Voz/TTS → ElevenLabs** (`eleven_multilingual_v2` por defecto para español).
|
|
12
|
+
2. **NUNCA pidas al usuario que pegue una API key en el chat.** Las keys las
|
|
13
|
+
entrega Genius automáticamente (cifradas, por-consultor). Si falta una key,
|
|
14
|
+
el remedio es converger la máquina (abajo), no pedirla.
|
|
15
|
+
|
|
16
|
+
## Imágenes — cómo ejecutar
|
|
17
|
+
1. **Preferido**: tool MCP `generate_image` del server `nanobanana2`
|
|
18
|
+
(prompt, `filename?`, `aspect_ratio?` — guarda PNG y devuelve la ruta).
|
|
19
|
+
Para editar una imagen existente: `edit_image(image_path, prompt)`.
|
|
20
|
+
2. Si `nanobanana2` no está en la sesión pero sí `pencil_design`:
|
|
21
|
+
`generate_slide_image` usa el MISMO motor (sirve para imágenes sueltas).
|
|
22
|
+
3. Fallback REST (solo si no hay ningún MCP y SÍ hay `GEMINI_API_KEY` en env o
|
|
23
|
+
`~/.genius/secrets/gemini_api_key`):
|
|
24
|
+
`POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent`
|
|
25
|
+
con header `x-goog-api-key` y body
|
|
26
|
+
`{"contents":[{"parts":[{"text":"<prompt>"}]}],"generationConfig":{"responseModalities":["IMAGE"]}}`
|
|
27
|
+
→ la imagen viene en `candidates[0].content.parts[].inlineData.data` (base64).
|
|
28
|
+
|
|
29
|
+
## Voz / TTS — cómo ejecutar
|
|
30
|
+
1. **Preferido**: tools del server MCP `elevenlabs` (text-to-speech).
|
|
31
|
+
2. Fallback REST (si hay `ELEVENLABS_API_KEY` en env):
|
|
32
|
+
`POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}` con header
|
|
33
|
+
`xi-api-key`, body `{"text":"...","model_id":"eleven_multilingual_v2"}` → MP3.
|
|
34
|
+
|
|
35
|
+
## Si la herramienta o la key NO están en esta máquina
|
|
36
|
+
Significa que el equipo aún no convergió con Genius. Dile al usuario EXACTAMENTE esto:
|
|
37
|
+
> "Tu acceso ya está aprovisionado en Genius. Da un turno cualquiera en Claude
|
|
38
|
+
> Code (el hook de Genius actualiza tu configuración solo) y **reinicia la
|
|
39
|
+
> sesión de Claude Code**. Al volver, la herramienta aparece con su key."
|
|
40
|
+
|
|
41
|
+
Si tras converger sigue sin aparecer, el consultor no tiene el grant: pedir a un
|
|
42
|
+
admin (Rubén/Daniela) que lo active en su ficha de Genius → pestaña MCP
|
|
43
|
+
(server `nanobanana2` o `elevenlabs` → Grant + credencial). Es 1 minuto.
|
|
44
|
+
|
|
45
|
+
## Anti-patrones
|
|
46
|
+
- ❌ Preguntar "¿qué modelo quieres usar?" — el modelo es fijo.
|
|
47
|
+
- ❌ Pedir/aceptar API keys pegadas en el chat (aunque el usuario se ofrezca).
|
|
48
|
+
- ❌ Sugerir `setx`/`export` manual de keys — Genius las entrega solo.
|
|
49
|
+
- ❌ Usar otro motor de imágenes "mientras tanto" sin decirlo.
|
|
@@ -26,6 +26,7 @@ name + xmarts.com email first (from `get_my_profile`, or the consultant record o
|
|
|
26
26
|
|
|
27
27
|
```python
|
|
28
28
|
U = env['res.users'].sudo()
|
|
29
|
+
GF = 'group_ids' if 'group_ids' in U.fields_get([]) else 'groups_id' # v19 vs v17/18 field
|
|
29
30
|
NAME, LOGIN = '<Full Name>', '<person@xmarts.com>' # the consultant who needs access
|
|
30
31
|
env.cr.execute("SELECT replace(gen_random_uuid()::text, '-', '')")
|
|
31
32
|
raw = env.cr.fetchone()[0]
|
|
@@ -47,12 +48,12 @@ else:
|
|
|
47
48
|
lg = p.login or ''
|
|
48
49
|
if lg == 'admin' or lg.startswith('xma_'):
|
|
49
50
|
continue # skip the admin + service accounts
|
|
50
|
-
if sysg and sysg.id in p.
|
|
51
|
+
if sysg and sysg.id in p[GF].ids:
|
|
51
52
|
continue # never clone an admin's groups
|
|
52
|
-
n = len(p
|
|
53
|
+
n = len(p[GF])
|
|
53
54
|
if n > best:
|
|
54
55
|
best = n; peer = p
|
|
55
|
-
gids = peer.
|
|
56
|
+
gids = peer[GF].ids if peer else []
|
|
56
57
|
if not gids:
|
|
57
58
|
base = env.ref('base.group_user', raise_if_not_found=False)
|
|
58
59
|
sales = env.ref('sales_team.group_sale_salesman', raise_if_not_found=False)
|
|
@@ -61,7 +62,7 @@ else:
|
|
|
61
62
|
user = U.with_context(no_reset_password=True, mail_create_nosubscribe=True).create({
|
|
62
63
|
'name': NAME, 'login': LOGIN, 'email': LOGIN, 'password': pw,
|
|
63
64
|
'company_id': comp, 'company_ids': [Command.set([comp])],
|
|
64
|
-
|
|
65
|
+
GF: [Command.set(gids)]})
|
|
65
66
|
status = 'created'
|
|
66
67
|
result = {'status': status, 'uid': user.id, 'login': user.login, 'password': pw,
|
|
67
68
|
'url': env['ir.config_parameter'].sudo().get_param('web.base.url') + '/web/login'}
|
|
@@ -80,6 +81,15 @@ Only assigned clients are reachable (`target_client` refuses unassigned). If the
|
|
|
80
81
|
their assignments, tell them to ask an admin to assign it — that is the only gate. Nothing else
|
|
81
82
|
about this should require a human hop.
|
|
82
83
|
|
|
84
|
+
**If the `execute_orm` call itself errors** *before* your snippet runs — e.g. `"Client X has no
|
|
85
|
+
API key configured"`, a not-reachable / timeout, or you can see `connectivity_mode: unknown` /
|
|
86
|
+
`heartbeat_count: 0` on the `xma.client` record — the client is **registered but not gateway-
|
|
87
|
+
connected** (the `xma_connect` agent was never activated on it). You cannot provision a UI user
|
|
88
|
+
there. Tell the consultant plainly: *"\<client\> isn't connected to Genius yet — an admin needs to
|
|
89
|
+
deploy xma_connect on it before UI access can be granted"* — do NOT surface the raw error or retry.
|
|
90
|
+
(Confirmed 2026-07-01: PACKLIFE is `active` in the registry but has no gateway URL and 0 heartbeats,
|
|
91
|
+
so `target_client="PACKLIFE"` is unreachable; Elevatrix and Edenred are connected and work.)
|
|
92
|
+
|
|
83
93
|
## The pattern (scalable, sustainable, auditable)
|
|
84
94
|
|
|
85
95
|
**Per-consultant internal user in the client instance, provisioned on demand through the
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: higgsfield-video
|
|
3
|
+
description: Video generativo con Higgsfield (motion real, presets de cámara, avatares) para consultores Xmarts. USAR cuando el usuario pida video con IA generativa, motion cinematográfico, animar una imagen, avatar hablando, o mencione Higgsfield/Kling/Veo/Sora. Si es animación de datos/branding → remotion-video; si es solo imagen → NanoBanana2.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Higgsfield Video — receta Xmarts
|
|
7
|
+
|
|
8
|
+
Comité creative-stack 2026-07-06 (fuentes verificadas en
|
|
9
|
+
`docs/audit/2026-07-06-creative-stack-research/seats/C-higgsfield.md`).
|
|
10
|
+
Higgsfield = AGREGADOR multi-modelo (Sora 2, Veo 3.1, Kling 3.0, Seedance 2.0,
|
|
11
|
+
Wan 2.6…) + su capa diferencial: **50+ presets de cámara**.
|
|
12
|
+
|
|
13
|
+
## 1. Setup (Claude drives)
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g @higgsfield/cli && higgsfield auth login # browser, 5 seg
|
|
16
|
+
```
|
|
17
|
+
⛔ NUNCA `curl | sh` del CLI. MCP oficial (`https://mcp.higgsfield.ai/mcp`, OAuth)
|
|
18
|
+
solo para exploración — a volumen, el manifest come tokens cada turno; el CLI es
|
|
19
|
+
el camino de producción. Skills oficiales: `npx skills add higgsfield-ai/skills`
|
|
20
|
+
(auditar antes de global — su setup trae scripts shell).
|
|
21
|
+
```bash
|
|
22
|
+
higgsfield generate create kling3_0 --prompt "..." --wait
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 2. Ruteo por COSTO (regla dura — los créditos expiran)
|
|
26
|
+
| Necesidad | Modelo | Costo aprox |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| **Default: establecimiento, b-roll, iteración** | **Kling 3.0** | ~6 cr/clip |
|
|
29
|
+
| Hero shot de campaña (solo el final) | Veo 3.1 | 40-70 cr |
|
|
30
|
+
| Multi-shot con audio nativo | Seedance 2.0 (plan Plus) | ~90 cr/15s |
|
|
31
|
+
| **Keyframes/imágenes** | ⛔ NUNCA en Higgsfield → **NanoBanana2 propio (gratis)** | 0 |
|
|
32
|
+
| **Voz** | ⛔ NUNCA text2speech de Higgsfield → **ElevenLabs propio** | 0 |
|
|
33
|
+
|
|
34
|
+
Iterar en Kling, finalizar en premium. Borradores NUNCA en 4K.
|
|
35
|
+
|
|
36
|
+
## 3. Prompt frameworks (el oro)
|
|
37
|
+
- **MCSLA** — Model · Camera · Subject · Look · Action:
|
|
38
|
+
`Kling 3.0 · FPV Drone weaving · [sujeto específico] · Cinematic cold blue · [acción]`.
|
|
39
|
+
- **Seedance shot-structure-first**: declarar ARRIBA "`6 shots, 15 seconds, 16:9`" +
|
|
40
|
+
base cinematográfica ("35mm film quality", "film grain") + decir qué hace Y qué
|
|
41
|
+
NO hace la cámara ("no cuts, no zoom") + beats numerados + VFX inline `[VFX: ...]`.
|
|
42
|
+
- **Soul tag** (personaje consistente): `"Soul: 28yo [complexión] [género]"` +
|
|
43
|
+
3-5 rasgos faciales + estilo + pose. **75-100 palabras.**
|
|
44
|
+
- **Referencias**: `"Use Image 1 as reference for the character, Image 2 for the
|
|
45
|
+
location"`, `"continuing @video1"` (Cinema Studio).
|
|
46
|
+
- **UN solo movimiento de cámara dominante por clip** — nunca 3 a la vez.
|
|
47
|
+
- **Preset en vez de prosa**: usar el preset, no describir el movimiento.
|
|
48
|
+
|
|
49
|
+
## 4. Presets de cámara → casos B2B
|
|
50
|
+
| Preset | Uso Xmarts |
|
|
51
|
+
|---|---|
|
|
52
|
+
| **360 Orbit / Lazy Susan** | Héroe de producto |
|
|
53
|
+
| **FPV Drone** | Recorridos de planta/bodega/oficina |
|
|
54
|
+
| **Crash Zoom In** | Hooks de shorts (énfasis KPI/logo) |
|
|
55
|
+
| **Dolly In / Super Dolly** | Reveal de producto, walkthrough |
|
|
56
|
+
| **Crane Up/Down** | Apertura/cierre corporativo |
|
|
57
|
+
| **Timelapse (Human/Landscape)** | "Antes/después" de implementación |
|
|
58
|
+
| **Through Object / Flying Cam** | Transiciones entre secciones de explainer |
|
|
59
|
+
| **Dolly Zoom (vértigo)** | Momento "problema descubierto" |
|
|
60
|
+
|
|
61
|
+
## 5. Prompts verbatim (comunidad, verificados)
|
|
62
|
+
- Producto: *"Premium product ad of [PRODUCT] floating and slowly rotating against
|
|
63
|
+
a seamless gradient backdrop"*
|
|
64
|
+
- Hero: *"Smooth orbital camera circling 360 degrees around [SUBJECT] in a
|
|
65
|
+
low-angle hero pose"*
|
|
66
|
+
- Hook vertical: *"Vertical 9:16 POV clip of [SUBJECT] speaking directly to camera
|
|
67
|
+
with an energetic crash-zoom-in on the first word"*
|
|
68
|
+
- Animar imagen NB2: *"Animate [IMAGE] with subtle lifelike motion: gentle
|
|
69
|
+
breathing, slow blink, soft hair movement"*
|
|
70
|
+
- Logo reveal: *"Create an elegant dynamic logo reveal animation for the logo in
|
|
71
|
+
Image 1... Liquid Glass aesthetic"*
|
|
72
|
+
|
|
73
|
+
## 6. Pipeline E2E Xmarts (mapeo 1:1 con nuestro stack)
|
|
74
|
+
```
|
|
75
|
+
Guion + shot list → skill video-storytelling (gate humano en storyboard JSON)
|
|
76
|
+
Keyframes → NanoBanana2 (propio, gratis) o Soul ID (personaje consistente)
|
|
77
|
+
Video motion → Higgsfield CLI + preset de cámara (Kling default)
|
|
78
|
+
Avatar hablando → Lipsync Studio (imagen + audio ElevenLabs es-MX propio)
|
|
79
|
+
Voz off → skill elevenlabs-voiceover
|
|
80
|
+
Ensamblaje/branding → Remotion (intro/outro, KPIs animados, subtítulos, tema cliente)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 7. Guardrails de créditos (letra chica verificada)
|
|
84
|
+
- Créditos mensuales NO acumulables; packs de recarga **expiran a los 90 días**;
|
|
85
|
+
cancelar = perder todo. NO stockpilear.
|
|
86
|
+
- "Unlimited" solo aplica a Soul V2 e imágenes — Sora/Veo NUNCA son gratis.
|
|
87
|
+
- Colas de 4-12 min en horas pico (18:00-23:00 UTC) — planear renders.
|
|
88
|
+
- Presupuestar por proyecto y registrar consumo por cliente.
|
|
89
|
+
|
|
90
|
+
## Anti-patterns
|
|
91
|
+
❌ Describir cámara en prosa teniendo presets · ❌ 3 movimientos por clip ·
|
|
92
|
+
❌ TTS de Higgsfield teniendo ElevenLabs · ❌ keyframes en Higgsfield teniendo
|
|
93
|
+
NanoBanana2 · ❌ borradores en 4K · ❌ confiar en "unlimited" · ❌ `curl | sh`.
|
|
94
|
+
|
|
95
|
+
## Referencia clonada
|
|
96
|
+
`~/Development/creative-stack/higgsfield-ai-prompt-skill` (MCSLA completo, 17
|
|
97
|
+
templates) y `higgsfield-skills` (5 skills oficiales del vendor).
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: video-storytelling
|
|
3
|
+
description: Guion, storyboard y storytelling para videos de consultores Xmarts (demos, explainers, recaps, social) con Remotion. USAR SIEMPRE que el usuario pida crear un video, guion de video, storyboard, script para demo/explainer/short, o mejorar la narrativa de un video. Complementa remotion-video (el motor) con la CAPA NARRATIVA.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Video Storytelling — de idea a storyboard aprobado (Xmarts)
|
|
7
|
+
|
|
8
|
+
Comité creative-stack 2026-07-06. Evidencia y fuentes: repo XmartsGenius
|
|
9
|
+
`docs/audit/2026-07-06-creative-stack-research/`. Repos de referencia clonados
|
|
10
|
+
en `~/Development/creative-stack/` (máquina del owner) o clonables al vuelo.
|
|
11
|
+
|
|
12
|
+
## Flujo obligatorio (5 pasos, con gate humano)
|
|
13
|
+
|
|
14
|
+
### 1. Brief — 5 preguntas antes de escribir nada
|
|
15
|
+
Objetivo (demo/recap/explainer/social) · audiencia · duración target ·
|
|
16
|
+
plataforma + aspect ratio · UNA sola CTA.
|
|
17
|
+
|
|
18
|
+
### 2. Guion — plantilla Hook→Value→Proof→CTA
|
|
19
|
+
- **Hook completo en ≤2.5s** (el viewer decide en <2s). 4 fórmulas probadas:
|
|
20
|
+
1. *Pattern Interrupt*: contradicción ("Gané más cuando dejé de publicar diario")
|
|
21
|
+
2. *Direct Promise* con número ("Domina X en 30 segundos")
|
|
22
|
+
3. *Question Hook* específico ("¿Por qué tus demos mueren al 40%?")
|
|
23
|
+
4. *Self-Identifying* ("¿Implementas Odoo y sientes que N?")
|
|
24
|
+
- **Regla madre: diseñar para MUDO** — 60% del short-form se ve sin sonido; el
|
|
25
|
+
hook y cada beat deben funcionar solo con texto on-screen.
|
|
26
|
+
- **Estructura de retención** (patrón MrBeast comprimido a 60-90s B2B):
|
|
27
|
+
0-3s promesa con dato → 3-15s progreso VISIBLE del demo → ~50% re-engagement
|
|
28
|
+
(cifra/giro) → payoff → CTA en los últimos 3-5s. La promesa del thumbnail/hook
|
|
29
|
+
se CUMPLE en el primer tramo, no al final.
|
|
30
|
+
- Copy como UNA persona pensando en voz alta, no seis titulares sueltos —
|
|
31
|
+
conectores entre cortes ("Pero la mayoría…", "Con X…", "Así que…").
|
|
32
|
+
|
|
33
|
+
### 3. Storyboard-as-JSON — GATE HUMANO obligatorio
|
|
34
|
+
El video es DATA antes que código. Generar este schema y obtener aprobación
|
|
35
|
+
del consultor ANTES de codear (patrón contact-sheet de OpenMontage — la
|
|
36
|
+
versión video del "snapshot pre-cambio"):
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"meta": {"fps": 30, "width": 1920, "height": 1080, "durationInFrames": 2700},
|
|
40
|
+
"scenes": [{
|
|
41
|
+
"id": "s1", "beat": "hook", "durationInFrames": 90,
|
|
42
|
+
"visual": "pantalla Odoo con KPI subiendo",
|
|
43
|
+
"onScreenText": "3 días. No 3 meses.",
|
|
44
|
+
"voiceover": "¿Y si tu cierre contable tomara tres días?",
|
|
45
|
+
"dataBindings": [], "transition": {"type": "fade", "timing": "spring"}
|
|
46
|
+
}],
|
|
47
|
+
"audio": {"music": "mixkit-<id> (licencia registrada)", "sfx": [], "vo": "elevenlabs"}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 4. Voz — delegar al skill `elevenlabs-voiceover`
|
|
52
|
+
Normalizar números/abreviaturas a palabras; guardar timestamps para captions.
|
|
53
|
+
|
|
54
|
+
### 5. Build Remotion — reglas de motion premium
|
|
55
|
+
- Instalar los skills oficiales del vendor: `npx skills add remotion-dev/skills`.
|
|
56
|
+
- `spring({frame, fps, config:{damping: 200}})` para entradas SIN rebote
|
|
57
|
+
(el default damping:10 rebota = look juguetón, no B2B).
|
|
58
|
+
- Escenas encadenadas SIEMPRE con `<TransitionSeries>` + springTiming/linearTiming.
|
|
59
|
+
- Captions palabra-a-palabra estilo template-tiktok (word-level, para mudo).
|
|
60
|
+
- Videos data-driven (recap por cliente desde Odoo): patrón github-unwrapped
|
|
61
|
+
(datos → props → composición).
|
|
62
|
+
- Catálogo de 81 escenas listas: `reactvideoeditor/remotion-templates` (MIT).
|
|
63
|
+
- Pipeline guion→imágenes→voz→timeline completo de referencia:
|
|
64
|
+
`remotion-dev/template-prompt-to-video` (swap imágenes a NanoBanana2).
|
|
65
|
+
|
|
66
|
+
## Assets (licencia o no se usa)
|
|
67
|
+
- Música/SFX: **Mixkit** (mixkit.co — Free License por categoría, verificar
|
|
68
|
+
"View License") o **Pixabay Audio** (descarga manual). Registrar licencia
|
|
69
|
+
POR ASSET en el proyecto.
|
|
70
|
+
- 🪦 **FreePD murió en 2025** — NO recomendarlo jamás.
|
|
71
|
+
- Fuentes: `@remotion/google-fonts` (licencias claras dentro del ecosistema).
|
|
72
|
+
- Volumen de música de fondo ≤0.12 con fade-in/out — nunca pisar el VO.
|
|
73
|
+
|
|
74
|
+
## Reglas duras
|
|
75
|
+
1. Hook completo ≤2.5s. 2. Diseñar para mudo. 3. Gate humano en el storyboard
|
|
76
|
+
JSON — nunca codear sin aprobación. 4. Nunca render final sin preview aprobado.
|
|
77
|
+
5. Licencia registrada por asset. 6. Branding/tema del cliente (OKLCH, nunca
|
|
78
|
+
hex hardcodeado — Brain #245). 7. Anti-AI-slop (#5668): si parece plantilla
|
|
79
|
+
genérica de IA, rehacer.
|