sapiens-mcp 1.62.7 → 1.63.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/dist/skills.js CHANGED
@@ -230,6 +230,7 @@ Duração é o que pesa aqui, não o modelo: um take de 30s em 720p passa de 40
230
230
 
231
231
  ## Os outros modelos
232
232
 
233
+ - \`sapiens-video-h3\`: MiniMax H3, o mais barato por pixel da casa, com som nativo, texto ou imagem. A duração depende da resolução: \`2k\` vai até 10s, \`768p\` vai até 15s (o motor de 2K é lento demais pra 15s e o take se perderia no meio). Aceita até 9 imagens e 3 vídeos de referência, e é o caminho de take LONGO com personagem travada. Referência e frame inicial não vão juntos: escolha um. Sem \`resolution\` cai no 2k, que custa 40% mais por segundo.
233
234
  - \`sapiens-video-kling\`: Kling 3.0 Pro, anima imagem, 3 a 15s, som opcional.
234
235
  - \`sapiens-video-wan\`: WAN 2.5, imagem que fala ou canta, com lip-sync, 5 ou 10s.
235
236
  - \`sapiens-video-wan-3\`: WAN 3.0, texto ou imagem, som nativo, frame final e 1080p, 5 a 10s.
@@ -256,7 +257,7 @@ O \`brief\` aceita \`subject\`, \`persona\`, \`hook\` (\`line\` e \`emotion\`),
256
257
 
257
258
  ## Fluxo storyboard (o que dá o melhor resultado)
258
259
 
259
- Até 4 imagens de REFERÊNCIA via \`referenceImageIds\` / \`referenceImageUrls\` / \`referenceImagePaths\` guiam estilo, personagem e composição SEM virar o primeiro frame.
260
+ Imagens de REFERÊNCIA via \`referenceImageIds\` / \`referenceImageUrls\` / \`referenceImagePaths\` guiam estilo, personagem e composição SEM virar o primeiro frame. O teto é do motor: 4 no Seedance 2.0, 9 no H3.
260
261
 
261
262
  1. Gere a folha de key poses com \`sapiens_image templateSlug='storyboard-sapiens-v1'\`.
262
263
  2. Passe folha e personagem como refs num text-to-video.
@@ -136,6 +136,13 @@ export async function image(args) {
136
136
  .map((m) => ({
137
137
  id: m.id,
138
138
  label: m.label,
139
+ // Família + variante: várias entradas da lista são o MESMO motor em
140
+ // tempero ou geração diferente (Krea 2 Realism/Livre/Base, Gemini 3
141
+ // Pro/3.1 Flash). Sem estes dois campos o cliente vê ids soltos e trata
142
+ // como motores sem relação, que foi o mesmo problema que a prateleira
143
+ // do browser tinha antes de agrupar. Ausência = motor sozinho.
144
+ family: m.family ?? null,
145
+ variant: m.variantLabel ?? null,
139
146
  priceSinapses: m.effectivePriceSinapses,
140
147
  maxResolution: m.maxResolution ?? "4K",
141
148
  resolutionAdders: m.resolutionAdders,
@@ -143,12 +150,26 @@ export async function image(args) {
143
150
  degen: /^(civitai-|wavespeed-|fal-)/.test(String(m.id)),
144
151
  note: m.description ?? null,
145
152
  }));
153
+ // Índice por família, pro cliente escolher em dois passos como a tela faz:
154
+ // primeiro o motor, depois a versão. Só entra família com 2+ variantes.
155
+ const families = {};
156
+ for (const m of models) {
157
+ if (!m.family)
158
+ continue;
159
+ (families[m.family] ??= { variants: [] }).variants.push(m.id);
160
+ }
161
+ for (const key of Object.keys(families)) {
162
+ if (families[key].variants.length < 2)
163
+ delete families[key];
164
+ }
146
165
  return {
147
166
  count: models.length,
148
167
  default: "nano-banana-2",
149
168
  models,
169
+ families,
150
170
  note: "priceSinapses é o preço COBRADO em 1K (já com override admin). Acima de 1K some o adder de resolutionAdders[size], que vem clampado ao teto do motor: em modelo que para em 2K, a chave '4K' repete o valor de 2K porque é isso que a cobrança aplica quando você pede 4K nele. " +
151
- "Preço final = priceSinapses + resolutionAdders[size]. degen=+18 (gate na galeria).",
171
+ "Preço final = priceSinapses + resolutionAdders[size]. degen=+18 (gate na galeria). " +
172
+ "Modelos com a MESMA family são o mesmo motor em versão diferente (o variant diz qual): compare preço e nota entre eles antes de trocar de família.",
152
173
  };
153
174
  }
154
175
  const sessionToken = getSessionToken();
@@ -77,12 +77,17 @@ import { httpUrl } from "../schema.js";
77
77
  * Motor puro: SEM áudio, SEM referência, SEM frame final.
78
78
  * - sapiens-video-hailuo-pro Hailuo 2.3 Pro — o mesmo em 1080p, 5s fixo (duração não é param).
79
79
  * É o 1080p mais barato da casa depois do Seedance 1.0 Fast.
80
- * - sapiens-video-h3 MiniMax H3 — 2K (2560x1440) com ÁUDIO nativo, 5/6/8/10s (t2v/i2v),
81
- * frame final (role 'end'). O menor custo por pixel da prateleira.
82
- * Áudio vem sempre e já está no preço (não tem toggle). NÃO aceita
83
- * imagem de referência: no H3 isso é outro endpoint, ainda fora.
84
- * O provider faz até 15s; a casa para em 10 (o render de 5s leva
85
- * ~3min e o poll do backend morre em 8).
80
+ * - sapiens-video-h3 MiniMax H3 — ÁUDIO nativo, frame final (role 'end'), t2v/i2v. O
81
+ * menor custo por pixel da prateleira. Áudio vem sempre e já está
82
+ * no preço (não tem toggle). A DURAÇÃO DEPENDE DA RESOLUÇÃO: em
83
+ * '2k' (2560x1440) vai até 10s, em '768p' vai até 15s. Não é
84
+ * escolha de catálogo, é o poll do backend: 2K de 15s leva mais
85
+ * que os 8min e o kill não devolve Sinapse. Sem `resolution` cai
86
+ * no 2k, que custa 40% mais por segundo.
87
+ * ACEITA referência desde set/2026: até 9 imagens (role 'ref') e 3
88
+ * vídeos (role 'refvideo', somando 15s), que é o caminho de take
89
+ * longo com personagem travada. Referência e frame inicial são
90
+ * EXCLUSIVOS (endpoints diferentes no provider): mande um dos dois.
86
91
  * - sapiens-video-wan WAN 2.5 — imagem que fala/canta (áudio+lip-sync nativo), 5/10s (i2v)
87
92
  * - sapiens-video-kling-motion Kling Motion — transfere o movimento de um vídeo pra uma imagem
88
93
  * (PRECISA de pessoa com tronco visível na imagem E no vídeo;
@@ -289,15 +294,15 @@ export const videoSchema = z.object({
289
294
  durationSec: z
290
295
  .number()
291
296
  .optional()
292
- .describe("action=create e action=price: duração em segundos (Omni ignora). Seedance 2.0/Shot Mimic 4-15, Seedance 2.5 4-30 (o preço acompanha: confirme a duração com a pessoa antes de passar de 15), Seedance 1.5 4-12, Kling 3-15, WAN 5/10, H3 5/6/8/10. " +
297
+ .describe("action=create e action=price: duração em segundos (Omni ignora). Seedance 2.0/Shot Mimic 4-15, Seedance 2.5 4-30 (o preço acompanha: confirme a duração com a pessoa antes de passar de 15), Seedance 1.5 4-12, Kling 3-15, WAN 5/10, H3 5/6/8/10 em 2k e 5/6/8/10/12/15 em 768p. " +
293
298
  "O PREÇO ESCALA COM A DURAÇÃO. Omitir não é 'a config padrão da casa': duração ausente, ou fora do leque do motor, cai no PISO de duração do motor. " +
294
299
  "action=shadows: duração do vídeo-fonte, se souber (cobra 200/s; sem ela, flat ~2000)."),
295
300
  resolution: z
296
- .enum(["480p", "720p", "1080p"])
301
+ .enum(["480p", "720p", "1080p", "768p", "2k"])
297
302
  .optional()
298
- .describe("action=create e action=price: resolução (Seedance/WAN/Shot Mimic). NÃO existe default 720p aqui: resolução ausente, ou fora do que o motor aceita, cai no tier MAIS CARO do motor. " +
303
+ .describe("action=create e action=price: resolução (Seedance/WAN/Shot Mimic/H3). NÃO existe default 720p aqui: resolução ausente, ou fora do que o motor aceita, cai no tier MAIS CARO do motor. " +
299
304
  "É isso que faz um create sem este campo custar muito mais que o piso do catálogo (em sapiens-video-seedance vira 1080p, não 480p). Passe sempre a resolução que você quer pagar, e confira com action=price antes. " +
300
- "Kling e a linha Hailuo/H3 não usam este campo (resolução fixa pelo motor)."),
305
+ "O H3 usa '768p' ou '2k' (sem eles cai no 2k, que custa 40% mais por segundo). Kling e a linha Hailuo 2.3 não usam este campo (resolução fixa pelo motor)."),
301
306
  audio: z
302
307
  .boolean()
303
308
  .optional()
@@ -492,6 +497,12 @@ export async function video(args) {
492
497
  id: m.id,
493
498
  engine: m.engine,
494
499
  label: m.label,
500
+ // Família + variante: o Seedance sozinho tem SEIS entradas nesta lista
501
+ // (1.0 Fast, 1.5 Pro, 2.0, 2.0 Fast, 2.0 Mini, 2.5) e são o mesmo motor
502
+ // em geração/tier diferente. Sem os dois campos o cliente lê seis
503
+ // motores sem relação. Ausência = motor sozinho.
504
+ family: m.family ?? null,
505
+ variant: m.variantLabel ?? null,
495
506
  // "por-segundo" = o preço MUDA com duração, resolução e (no Kling) áudio.
496
507
  // "por-clipe" = preço fixo, config não mexe na conta.
497
508
  priceMode: m.priceMode ?? null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sapiens-mcp",
3
- "version": "1.62.7",
3
+ "version": "1.63.0",
4
4
  "mcpName": "com.sapiensinteticos/sapiens",
5
5
  "description": "MCP server pra operar o Sapiens Sintéticos (sapiensinteticos.com) pelo Claude Code: gerar imagem, escrever artigo, voz, música e mais, na sua conta. Login pelo código de sapiensinteticos.com/conectar-claude.",
6
6
  "type": "module",