@productmaker/mcp 0.3.0 → 0.4.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.
Files changed (3) hide show
  1. package/dist/http.js +12 -3
  2. package/dist/stdio.js +12 -3
  3. package/package.json +23 -14
package/dist/http.js CHANGED
@@ -507,7 +507,14 @@ var NarrativeStyleEnum = z.enum([
507
507
  "problem_product_cta",
508
508
  "product_showcase",
509
509
  "metaphor_product_cta",
510
- "wearable_showcase"
510
+ "wearable_showcase",
511
+ "animated_problem_pixar",
512
+ "sassy_product_pixar",
513
+ "ugc_unboxing_chaos",
514
+ "ugc_curiosity_reveal",
515
+ "ugc_listicle_3",
516
+ "ugc_skeptic_confession",
517
+ "ugc_demo_review"
511
518
  ]);
512
519
  var VideoModelEnum = z.enum([
513
520
  "veo",
@@ -813,9 +820,10 @@ var CreateProductTaskInput = z2.object({
813
820
  price: z2.string().optional().describe('Precio que se mostrar\xE1 en la landing y video. Formato libre \u2014 ej. "$89.900", "USD 29.99", "MXN 599". Opcional pero MUY IMPACTANTE: si el usuario no lo mencion\xF3, PREG\xDANTALE antes de invocar. Si te dice "t\xFA elige", om\xEDtelo y el backend sugiere uno.'),
814
821
  offer: z2.string().optional().describe('Oferta o promoci\xF3n a destacar. Ej. "2x1", "Env\xEDo gratis hoy", "50% OFF". Opcional pero MUY IMPACTANTE: si el usuario no lo mencion\xF3, PREG\xDANTALE antes de invocar (es v\xE1lido que diga "sin oferta"). Si te dice "t\xFA elige", om\xEDtelo.'),
815
822
  videoStyle: VideoStyleEnum.optional().describe('Opcional. Estilo visual del video. "ugc" = creador hablando a c\xE1mara (default, mejor CTR LATAM). "cartoon_3d" = animaci\xF3n 3D. "product_only" = sin actor. "ai_dynamic" = cinematogr\xE1fico AI. Si se omite, default "ugc".'),
816
- narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" = testimonial (default, alta conversi\xF3n). "problem_product_cta" = problema\u2192soluci\xF3n. "product_showcase" = features. "metaphor_product_cta" = met\xE1fora visual. "wearable_showcase" = para ropa/accesorios. Si se omite, default "review".'),
823
+ narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" = UGC cl\xE1sico multi-hook (default, alta conversi\xF3n). "problem_product_cta" = problema\u2192soluci\xF3n. "product_showcase" = features. "metaphor_product_cta" = met\xE1fora visual. "wearable_showcase" = para ropa/accesorios. "ugc_unboxing_chaos" = unboxing agresivo. "ugc_curiosity_reveal" = hook con producto oculto. "ugc_listicle_3" = 3 razones (30s recomendado). "ugc_skeptic_confession" = esc\xE9ptico\u2192conversi\xF3n (30s recomendado). "ugc_demo_review" = demo en uso a lo largo de d\xEDas. Si se omite, default "review".'),
817
824
  videoModel: VideoModelEnum.optional().describe('Opcional. Modelo de video. "veo" (default, calidad Google). "bytedance"/"seedance" = TikTok-style. "kling"/"wan" = alternativos. "infinitalk" = lipsync largo. "grok" = grok-imagine. Si se omite, el sistema escoge seg\xFAn costo/calidad.'),
818
825
  multiAngleVideos: z2.boolean().optional().describe("Opcional. Si true, genera m\xFAltiples \xE1ngulos de venta en paralelo (3-5 videos). Si false/omitido, genera 1 video del \xE1ngulo principal. Default false."),
826
+ angleNarratives: NarrativeStyleEnum.array().max(3).optional().describe('Opcional. Narrativa POR \xC1NGULO (posicional). angleNarratives[i] fuerza la narrativa del \xE1ngulo en la posici\xF3n i; usa los mismos valores que narrativeStyle. Si la lista es m\xE1s corta que la cantidad de \xE1ngulos, las posiciones restantes las elige la IA. Ej: ["animated_problem_pixar","review","ugc_skeptic_confession"] para 3 \xE1ngulos distintos. Requiere multiAngleVideos:true (o videoAngleCount>1) para que haya varios \xE1ngulos. Si se omite, todas las narrativas se auto-seleccionan.'),
819
827
  outputs: z2.array(z2.enum([
820
828
  "landing",
821
829
  "video",
@@ -862,6 +870,7 @@ function registerTaskTools(server, api, { proxyBaseUrl = null, transport = "http
862
870
  "options.offer": input.offer,
863
871
  "options.videoStyle": input.videoStyle,
864
872
  "options.narrativeStyle": input.narrativeStyle,
873
+ "options.angleNarratives": input.angleNarratives,
865
874
  "options.videoModel": input.videoModel,
866
875
  "options.multiAngleVideos": input.multiAngleVideos,
867
876
  "options.selectedOutputs": input.outputs,
@@ -962,7 +971,7 @@ var VideoInput = z3.object({
962
971
  "Auto"
963
972
  ]).describe('Relaci\xF3n de aspecto. "9:16" = vertical (TikTok/Reels \u2014 default recomendado para ads). "16:9" = horizontal (YouTube). "Auto" = decide la IA.'),
964
973
  durationSeconds: z3.number().int().min(5).max(60).optional().describe("Opcional. Duraci\xF3n del video en segundos (5-60). Default 15s. Para hooks cortos usa 8, para storytelling usa 30."),
965
- narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" (testimonial, default), "problem_product_cta", "product_showcase", "metaphor_product_cta", "wearable_showcase".'),
974
+ narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" (UGC cl\xE1sico multi-hook, default), "problem_product_cta", "product_showcase", "metaphor_product_cta", "wearable_showcase", "ugc_unboxing_chaos" (unboxing agresivo), "ugc_curiosity_reveal" (hook con producto oculto), "ugc_listicle_3" (3 razones numeradas, recomendado 30s), "ugc_skeptic_confession" (esc\xE9ptico\u2192conversi\xF3n, recomendado 30s), "ugc_demo_review" (demo en uso a lo largo de d\xEDas).'),
966
975
  videoStyle: VideoStyleEnum.optional().describe('Opcional. Estilo visual. "ugc" (creador hablando, default), "cartoon_3d", "product_only", "ai_dynamic".'),
967
976
  videoModel: VideoModelEnum.optional().describe('Opcional. Modelo de video. "veo" (default, calidad Google). Ver lista de valores v\xE1lidos.'),
968
977
  features: z3.array(z3.string()).optional().describe('Opcional. Lista de features/beneficios clave a mencionar. Ej. ["resistente al agua", "bater\xEDa 24h", "carga inal\xE1mbrica"].'),
package/dist/stdio.js CHANGED
@@ -504,7 +504,14 @@ var NarrativeStyleEnum = z.enum([
504
504
  "problem_product_cta",
505
505
  "product_showcase",
506
506
  "metaphor_product_cta",
507
- "wearable_showcase"
507
+ "wearable_showcase",
508
+ "animated_problem_pixar",
509
+ "sassy_product_pixar",
510
+ "ugc_unboxing_chaos",
511
+ "ugc_curiosity_reveal",
512
+ "ugc_listicle_3",
513
+ "ugc_skeptic_confession",
514
+ "ugc_demo_review"
508
515
  ]);
509
516
  var VideoModelEnum = z.enum([
510
517
  "veo",
@@ -769,9 +776,10 @@ var CreateProductTaskInput = z2.object({
769
776
  price: z2.string().optional().describe('Precio que se mostrar\xE1 en la landing y video. Formato libre \u2014 ej. "$89.900", "USD 29.99", "MXN 599". Opcional pero MUY IMPACTANTE: si el usuario no lo mencion\xF3, PREG\xDANTALE antes de invocar. Si te dice "t\xFA elige", om\xEDtelo y el backend sugiere uno.'),
770
777
  offer: z2.string().optional().describe('Oferta o promoci\xF3n a destacar. Ej. "2x1", "Env\xEDo gratis hoy", "50% OFF". Opcional pero MUY IMPACTANTE: si el usuario no lo mencion\xF3, PREG\xDANTALE antes de invocar (es v\xE1lido que diga "sin oferta"). Si te dice "t\xFA elige", om\xEDtelo.'),
771
778
  videoStyle: VideoStyleEnum.optional().describe('Opcional. Estilo visual del video. "ugc" = creador hablando a c\xE1mara (default, mejor CTR LATAM). "cartoon_3d" = animaci\xF3n 3D. "product_only" = sin actor. "ai_dynamic" = cinematogr\xE1fico AI. Si se omite, default "ugc".'),
772
- narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" = testimonial (default, alta conversi\xF3n). "problem_product_cta" = problema\u2192soluci\xF3n. "product_showcase" = features. "metaphor_product_cta" = met\xE1fora visual. "wearable_showcase" = para ropa/accesorios. Si se omite, default "review".'),
779
+ narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" = UGC cl\xE1sico multi-hook (default, alta conversi\xF3n). "problem_product_cta" = problema\u2192soluci\xF3n. "product_showcase" = features. "metaphor_product_cta" = met\xE1fora visual. "wearable_showcase" = para ropa/accesorios. "ugc_unboxing_chaos" = unboxing agresivo. "ugc_curiosity_reveal" = hook con producto oculto. "ugc_listicle_3" = 3 razones (30s recomendado). "ugc_skeptic_confession" = esc\xE9ptico\u2192conversi\xF3n (30s recomendado). "ugc_demo_review" = demo en uso a lo largo de d\xEDas. Si se omite, default "review".'),
773
780
  videoModel: VideoModelEnum.optional().describe('Opcional. Modelo de video. "veo" (default, calidad Google). "bytedance"/"seedance" = TikTok-style. "kling"/"wan" = alternativos. "infinitalk" = lipsync largo. "grok" = grok-imagine. Si se omite, el sistema escoge seg\xFAn costo/calidad.'),
774
781
  multiAngleVideos: z2.boolean().optional().describe("Opcional. Si true, genera m\xFAltiples \xE1ngulos de venta en paralelo (3-5 videos). Si false/omitido, genera 1 video del \xE1ngulo principal. Default false."),
782
+ angleNarratives: NarrativeStyleEnum.array().max(3).optional().describe('Opcional. Narrativa POR \xC1NGULO (posicional). angleNarratives[i] fuerza la narrativa del \xE1ngulo en la posici\xF3n i; usa los mismos valores que narrativeStyle. Si la lista es m\xE1s corta que la cantidad de \xE1ngulos, las posiciones restantes las elige la IA. Ej: ["animated_problem_pixar","review","ugc_skeptic_confession"] para 3 \xE1ngulos distintos. Requiere multiAngleVideos:true (o videoAngleCount>1) para que haya varios \xE1ngulos. Si se omite, todas las narrativas se auto-seleccionan.'),
775
783
  outputs: z2.array(z2.enum([
776
784
  "landing",
777
785
  "video",
@@ -818,6 +826,7 @@ function registerTaskTools(server, api, { proxyBaseUrl = null, transport = "http
818
826
  "options.offer": input.offer,
819
827
  "options.videoStyle": input.videoStyle,
820
828
  "options.narrativeStyle": input.narrativeStyle,
829
+ "options.angleNarratives": input.angleNarratives,
821
830
  "options.videoModel": input.videoModel,
822
831
  "options.multiAngleVideos": input.multiAngleVideos,
823
832
  "options.selectedOutputs": input.outputs,
@@ -918,7 +927,7 @@ var VideoInput = z3.object({
918
927
  "Auto"
919
928
  ]).describe('Relaci\xF3n de aspecto. "9:16" = vertical (TikTok/Reels \u2014 default recomendado para ads). "16:9" = horizontal (YouTube). "Auto" = decide la IA.'),
920
929
  durationSeconds: z3.number().int().min(5).max(60).optional().describe("Opcional. Duraci\xF3n del video en segundos (5-60). Default 15s. Para hooks cortos usa 8, para storytelling usa 30."),
921
- narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" (testimonial, default), "problem_product_cta", "product_showcase", "metaphor_product_cta", "wearable_showcase".'),
930
+ narrativeStyle: NarrativeStyleEnum.optional().describe('Opcional. Estructura narrativa. "review" (UGC cl\xE1sico multi-hook, default), "problem_product_cta", "product_showcase", "metaphor_product_cta", "wearable_showcase", "ugc_unboxing_chaos" (unboxing agresivo), "ugc_curiosity_reveal" (hook con producto oculto), "ugc_listicle_3" (3 razones numeradas, recomendado 30s), "ugc_skeptic_confession" (esc\xE9ptico\u2192conversi\xF3n, recomendado 30s), "ugc_demo_review" (demo en uso a lo largo de d\xEDas).'),
922
931
  videoStyle: VideoStyleEnum.optional().describe('Opcional. Estilo visual. "ugc" (creador hablando, default), "cartoon_3d", "product_only", "ai_dynamic".'),
923
932
  videoModel: VideoModelEnum.optional().describe('Opcional. Modelo de video. "veo" (default, calidad Google). Ver lista de valores v\xE1lidos.'),
924
933
  features: z3.array(z3.string()).optional().describe('Opcional. Lista de features/beneficios clave a mencionar. Ej. ["resistente al agua", "bater\xEDa 24h", "carga inal\xE1mbrica"].'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@productmaker/mcp",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Product Maker MCP server — connect Claude Desktop, Claude Code, ChatGPT, or Gemini to Product Maker AI to generate dropshipping landing pages, UGC videos, and ad creatives, and publish to Shopify and Meta Ads from your AI assistant.",
@@ -37,15 +37,15 @@
37
37
  },
38
38
  "author": "Product Maker AI <support@productmaker.ai> (https://productmaker.app)",
39
39
  "license": "MIT",
40
- "bin": { "productmaker-mcp": "./dist/stdio.js" },
41
- "files": ["dist", "README.md"],
42
- "engines": { "node": ">=20" },
43
- "scripts": {
44
- "build": "tsup",
45
- "dev:stdio": "tsx src/stdio.ts",
46
- "dev:http": "tsx src/http.ts",
47
- "test": "vitest run",
48
- "typecheck": "tsc --noEmit"
40
+ "bin": {
41
+ "productmaker-mcp": "./dist/stdio.js"
42
+ },
43
+ "files": [
44
+ "dist",
45
+ "README.md"
46
+ ],
47
+ "engines": {
48
+ "node": ">=20"
49
49
  },
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.29.0",
@@ -55,14 +55,23 @@
55
55
  "zod": "^3.23.8"
56
56
  },
57
57
  "devDependencies": {
58
- "@packages/types": "workspace:*",
59
58
  "@types/express": "^4.17.21",
60
59
  "@types/node": "^20.11.0",
61
60
  "msw": "^2.4.0",
62
61
  "tsup": "^8.3.0",
63
62
  "tsx": "^4.16.0",
64
63
  "typescript": "^5.4.5",
65
- "vitest": "^2.1.9"
64
+ "vitest": "^2.1.9",
65
+ "@packages/types": "0.1.0"
66
66
  },
67
- "publishConfig": { "access": "public" }
68
- }
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "scripts": {
71
+ "build": "tsup",
72
+ "dev:stdio": "tsx src/stdio.ts",
73
+ "dev:http": "tsx src/http.ts",
74
+ "test": "vitest run",
75
+ "typecheck": "tsc --noEmit"
76
+ }
77
+ }