@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.
- package/dist/http.js +12 -3
- package/dist/stdio.js +12 -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" =
|
|
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" (
|
|
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" =
|
|
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" (
|
|
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
|
+
"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": {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
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": {
|
|
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
|
+
}
|