gangvy 5 luni în urmă
părinte
comite
53eee08a2f
100 a modificat fișierele cu 12937 adăugiri și 348 ștergeri
  1. 0 1
      Untitled-2.txt
  2. 228 46
      competitor-analysis/competitor-bsr-tracking/api-config.json
  3. 208 57
      competitor-analysis/competitor-discovery/api-config.json
  4. 199 56
      competitor-analysis/competitor-pricing-analysis/api-config.json
  5. 243 52
      competitor-analysis/competitor-product-comparison/api-config.json
  6. 0 136
      deploy-to-openclaw.ps1
  7. 333 0
      dist/install.js
  8. BIN
      dist/openclaw-voc-skills.zip
  9. 301 0
      dist/skills-cdn-urls.json
  10. 60 0
      dist/skills/asin-reverse-keywords/SKILL.md
  11. 142 0
      dist/skills/asin-reverse-keywords/api-config.json
  12. 61 0
      dist/skills/asin-sales-volume/SKILL.md
  13. 144 0
      dist/skills/asin-sales-volume/api-config.json
  14. 273 0
      dist/skills/brand-context-builder/SKILL.md
  15. 140 0
      dist/skills/brand-context-builder/api-config.json
  16. 125 0
      dist/skills/brand-profile/SKILL.md
  17. 232 0
      dist/skills/brand-profile/api-config.json
  18. 131 0
      dist/skills/category-landscape/SKILL.md
  19. 275 0
      dist/skills/category-landscape/api-config.json
  20. 63 0
      dist/skills/category-products/SKILL.md
  21. 156 0
      dist/skills/category-products/api-config.json
  22. 57 0
      dist/skills/category-tree/SKILL.md
  23. 128 0
      dist/skills/category-tree/api-config.json
  24. 89 0
      dist/skills/competitor-bsr-tracking/SKILL.md
  25. 199 0
      dist/skills/competitor-bsr-tracking/api-config.json
  26. 96 0
      dist/skills/competitor-discovery/SKILL.md
  27. 257 0
      dist/skills/competitor-discovery/api-config.json
  28. 91 0
      dist/skills/competitor-pricing-analysis/SKILL.md
  29. 222 0
      dist/skills/competitor-pricing-analysis/api-config.json
  30. 97 0
      dist/skills/competitor-product-comparison/SKILL.md
  31. 209 0
      dist/skills/competitor-product-comparison/api-config.json
  32. 61 0
      dist/skills/douyin-comment-replies/SKILL.md
  33. 150 0
      dist/skills/douyin-comment-replies/api-config.json
  34. 96 0
      dist/skills/douyin-general-search/SKILL.md
  35. 234 0
      dist/skills/douyin-general-search/api-config.json
  36. 73 0
      dist/skills/douyin-hashtag-search/SKILL.md
  37. 192 0
      dist/skills/douyin-hashtag-search/api-config.json
  38. 60 0
      dist/skills/douyin-user-profile/SKILL.md
  39. 131 0
      dist/skills/douyin-user-profile/api-config.json
  40. 63 0
      dist/skills/douyin-user-search/SKILL.md
  41. 154 0
      dist/skills/douyin-user-search/api-config.json
  42. 65 0
      dist/skills/douyin-video-comments/SKILL.md
  43. 159 0
      dist/skills/douyin-video-comments/api-config.json
  44. 63 0
      dist/skills/douyin-video-detail/SKILL.md
  45. 132 0
      dist/skills/douyin-video-detail/api-config.json
  46. 137 0
      dist/skills/html-report-generator/SKILL.md
  47. 213 0
      dist/skills/html-report-generator/api-config.json
  48. 91 0
      dist/skills/instagram-brand-voc/SKILL.md
  49. 163 0
      dist/skills/instagram-brand-voc/api-config.json
  50. 63 0
      dist/skills/instagram-search/SKILL.md
  51. 188 0
      dist/skills/instagram-search/api-config.json
  52. 60 0
      dist/skills/instagram-user-info/SKILL.md
  53. 188 0
      dist/skills/instagram-user-info/api-config.json
  54. 63 0
      dist/skills/instagram-user-posts/SKILL.md
  55. 208 0
      dist/skills/instagram-user-posts/api-config.json
  56. 36 0
      dist/skills/jimeng-actor-v2/SKILL.md
  57. 177 0
      dist/skills/jimeng-actor-v2/api-config.json
  58. 34 0
      dist/skills/jimeng-actor/SKILL.md
  59. 167 0
      dist/skills/jimeng-actor/api-config.json
  60. 44 0
      dist/skills/jimeng-clothes-v2/SKILL.md
  61. 229 0
      dist/skills/jimeng-clothes-v2/api-config.json
  62. 36 0
      dist/skills/jimeng-img-v4-goods/SKILL.md
  63. 195 0
      dist/skills/jimeng-img-v4-goods/api-config.json
  64. 37 0
      dist/skills/jimeng-img-v4-pod/SKILL.md
  65. 199 0
      dist/skills/jimeng-img-v4-pod/api-config.json
  66. 81 0
      dist/skills/jimeng-img-v4/SKILL.md
  67. 234 0
      dist/skills/jimeng-img-v4/api-config.json
  68. 36 0
      dist/skills/jimeng-img2img-v3/SKILL.md
  69. 187 0
      dist/skills/jimeng-img2img-v3/api-config.json
  70. 34 0
      dist/skills/jimeng-inpaint/SKILL.md
  71. 172 0
      dist/skills/jimeng-inpaint/api-config.json
  72. 35 0
      dist/skills/jimeng-oh-detect/SKILL.md
  73. 166 0
      dist/skills/jimeng-oh-detect/api-config.json
  74. 40 0
      dist/skills/jimeng-oh-generate/SKILL.md
  75. 196 0
      dist/skills/jimeng-oh-generate/api-config.json
  76. 43 0
      dist/skills/jimeng-oh-identify/SKILL.md
  77. 162 0
      dist/skills/jimeng-oh-identify/api-config.json
  78. 47 0
      dist/skills/jimeng-oh-query/SKILL.md
  79. 220 0
      dist/skills/jimeng-oh-query/api-config.json
  80. 35 0
      dist/skills/jimeng-super-resolution/SKILL.md
  81. 181 0
      dist/skills/jimeng-super-resolution/api-config.json
  82. 79 0
      dist/skills/jimeng-task-query/SKILL.md
  83. 233 0
      dist/skills/jimeng-task-query/api-config.json
  84. 42 0
      dist/skills/jimeng-text2img-v3/SKILL.md
  85. 187 0
      dist/skills/jimeng-text2img-v3/api-config.json
  86. 39 0
      dist/skills/jimeng-text2img-v31/SKILL.md
  87. 182 0
      dist/skills/jimeng-text2img-v31/api-config.json
  88. 38 0
      dist/skills/jimeng-video-v3-1080p/SKILL.md
  89. 206 0
      dist/skills/jimeng-video-v3-1080p/api-config.json
  90. 66 0
      dist/skills/jimeng-video-v3-720p/SKILL.md
  91. 237 0
      dist/skills/jimeng-video-v3-720p/api-config.json
  92. 37 0
      dist/skills/jimeng-video-v3-pro/SKILL.md
  93. 197 0
      dist/skills/jimeng-video-v3-pro/api-config.json
  94. 40 0
      dist/skills/jimeng-work-result/SKILL.md
  95. 86 0
      dist/skills/jimeng-work-result/api-config.json
  96. 61 0
      dist/skills/keyword-product-ranking/SKILL.md
  97. 153 0
      dist/skills/keyword-product-ranking/api-config.json
  98. 59 0
      dist/skills/keyword-search-trend/SKILL.md
  99. 142 0
      dist/skills/keyword-search-trend/api-config.json
  100. 64 0
      dist/skills/keyword-search/SKILL.md

+ 0 - 1
Untitled-2.txt

@@ -1 +0,0 @@
-    

+ 228 - 46
competitor-analysis/competitor-bsr-tracking/api-config.json

@@ -1,4 +1,4 @@
-{
+{
   "name": "competitor-bsr-tracking",
   "displayName": "竞品BSR排名追踪",
   "description": "追踪竞品BSR/销量/价格变化趋势,生成增长路径分析和风险预警汇总",
@@ -8,7 +8,9 @@
   "parameters": {
     "competitorAsins": {
       "type": "array",
-      "items": { "type": "string" },
+      "items": {
+        "type": "string"
+      },
       "required": true,
       "description": "竞品ASIN列表"
     },
@@ -29,9 +31,15 @@
         "endpoint": "/api/MonitorQuery",
         "method": "POST",
         "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
-        "headers": { "Authorization": "Bearer {{vocToken}}" },
-        "requestBody": { "ASIN": "${asin}" },
-        "queryParams": { "domain": "${domain}" }
+        "headers": {
+          "Authorization": "Bearer {{vocToken}}"
+        },
+        "requestBody": {
+          "ASIN": "${asin}"
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "monitorData",
       "responseExtract": "{ PriceHistory, RankHistory, RatingHistory, ReviewCountHistory, SellerCount }"
@@ -45,9 +53,18 @@
         "endpoint": "/api/ProductRequest",
         "method": "POST",
         "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
-        "headers": { "Authorization": "Bearer {{vocToken}}" },
-        "requestBody": { "ASIN": "${asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
-        "queryParams": { "domain": "${domain}" }
+        "headers": {
+          "Authorization": "Bearer {{vocToken}}"
+        },
+        "requestBody": {
+          "ASIN": "${asin}",
+          "Trend": 1,
+          "QueryTrendStartDt": "",
+          "QueryTrendEndDt": ""
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "competitorDetails",
       "responseExtract": "{ Title, Brand, SalesPrice, Ratings, RatingsCount, BSR, MonthlySales, Category }"
@@ -103,32 +120,128 @@
         "items": {
           "type": "object",
           "properties": {
-            "asin": { "type": "string" },
-            "brand": { "type": "string" },
-            "currentBsr": { "type": "integer" },
-            "bsrTrend": { "type": "object", "properties": { "7d": { "type": "number" }, "14d": { "type": "number" }, "30d": { "type": "number" } } },
-            "salesTrend": { "type": "object", "properties": { "7d": { "type": "number" }, "14d": { "type": "number" }, "30d": { "type": "number" } } },
-            "priceChange": { "type": "object", "properties": { "current": { "type": "number" }, "previous": { "type": "number" }, "changePercent": { "type": "number" } } },
-            "ratingChange": { "type": "object", "properties": { "current": { "type": "number" }, "previous": { "type": "number" }, "newReviews": { "type": "integer" } } },
-            "alerts": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" }, "severity": { "type": "string" }, "message": { "type": "string" } } } }
+            "asin": {
+              "type": "string"
+            },
+            "brand": {
+              "type": "string"
+            },
+            "currentBsr": {
+              "type": "integer"
+            },
+            "bsrTrend": {
+              "type": "object",
+              "properties": {
+                "7d": {
+                  "type": "number"
+                },
+                "14d": {
+                  "type": "number"
+                },
+                "30d": {
+                  "type": "number"
+                }
+              }
+            },
+            "salesTrend": {
+              "type": "object",
+              "properties": {
+                "7d": {
+                  "type": "number"
+                },
+                "14d": {
+                  "type": "number"
+                },
+                "30d": {
+                  "type": "number"
+                }
+              }
+            },
+            "priceChange": {
+              "type": "object",
+              "properties": {
+                "current": {
+                  "type": "number"
+                },
+                "previous": {
+                  "type": "number"
+                },
+                "changePercent": {
+                  "type": "number"
+                }
+              }
+            },
+            "ratingChange": {
+              "type": "object",
+              "properties": {
+                "current": {
+                  "type": "number"
+                },
+                "previous": {
+                  "type": "number"
+                },
+                "newReviews": {
+                  "type": "integer"
+                }
+              }
+            },
+            "alerts": {
+              "type": "array",
+              "items": {
+                "type": "object",
+                "properties": {
+                  "type": {
+                    "type": "string"
+                  },
+                  "severity": {
+                    "type": "string"
+                  },
+                  "message": {
+                    "type": "string"
+                  }
+                }
+              }
+            }
           }
         }
       },
       "summary": {
         "type": "object",
         "properties": {
-          "mostActive": { "type": "string" },
-          "biggestThreat": { "type": "string" },
-          "opportunityWindow": { "type": "string" }
+          "mostActive": {
+            "type": "string"
+          },
+          "biggestThreat": {
+            "type": "string"
+          },
+          "opportunityWindow": {
+            "type": "string"
+          }
         }
       },
       "growthPath": {
         "type": "object",
         "properties": {
-          "currentTier": { "type": "string" },
-          "nextTierThreshold": { "type": "object", "properties": { "dailySales": { "type": "integer" }, "gap": { "type": "integer" } } },
-          "skuAdvice": { "type": "string" },
-          "keywordAdvice": { "type": "string" }
+          "currentTier": {
+            "type": "string"
+          },
+          "nextTierThreshold": {
+            "type": "object",
+            "properties": {
+              "dailySales": {
+                "type": "integer"
+              },
+              "gap": {
+                "type": "integer"
+              }
+            }
+          },
+          "skuAdvice": {
+            "type": "string"
+          },
+          "keywordAdvice": {
+            "type": "string"
+          }
         }
       },
       "riskAlerts": {
@@ -136,9 +249,20 @@
         "items": {
           "type": "object",
           "properties": {
-            "level": { "type": "string", "enum": ["high", "medium", "low"] },
-            "title": { "type": "string" },
-            "description": { "type": "string" }
+            "level": {
+              "type": "string",
+              "enum": [
+                "high",
+                "medium",
+                "low"
+              ]
+            },
+            "title": {
+              "type": "string"
+            },
+            "description": {
+              "type": "string"
+            }
           }
         }
       }
@@ -155,42 +279,100 @@
     "configFile": "~/.openclaw/voc-credentials.json",
     "tokenField": "vocToken",
     "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
-    "resolutionOrder": ["configFile", "currentToken"],
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "apigId": "Vo3ROWEvDy",
+    "paymentUrlResolution": {
+      "description": "动态构建充值URL:通过当前token查出用户objectId,拼接到充值页面",
+      "steps": [
+        "1. 从 voc-credentials.json 或 currentToken 获取当前 session token",
+        "2. 调用 GET https://server.fmode.cn/parse/users/me (Header: X-Parse-Application-Id: ncloudmaster, X-Parse-Session-Token: {token})获取用户 objectId",
+        "3. 拼接充值URL: https://pwa.fmode.cn/apig-pay.html?user={objectId}&apigid=Vo3ROWEvDy&fun_id=HOkkX72PMF",
+        "4. 将该URL展示给用户,引导扫码支付"
+      ],
+      "userResolveEndpoint": "https://server.fmode.cn/parse/users/me",
+      "userResolveHeaders": {
+        "X-Parse-Application-Id": "ncloudmaster",
+        "X-Parse-Session-Token": "{vocToken}"
+      },
+      "paymentBaseUrl": "https://pwa.fmode.cn/apig-pay.html",
+      "paymentParams": {
+        "user": "{resolvedUserId}",
+        "apigid": "Vo3ROWEvDy",
+        "fun_id": "HOkkX72PMF"
+      },
+      "balanceCheckEndpoint": "https://server.fmode.cn/api/apig/getApig"
+    },
     "onMissing": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "扫码开通 VOC-AI 数据服务",
-      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+      "message": "此 Skill 需要有效的 API Token。请按以下步骤操作:\n1. 如果你已有 Token,请告诉我,我会保存到 ~/.openclaw/voc-credentials.json\n2. 如果没有 Token,我会引导你扫码充值开通"
     },
     "onBalanceInsufficient": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "VOC-AI Token 余额不足,请扫码充值",
-      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+      "message": "当前 Token 余额不足,我将为你生成专属充值链接,扫码支付后即可继续使用。"
     }
   },
   "errorHandling": {
     "balanceInsufficient": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
-        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
-        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onBalanceInsufficient"
     },
     "unauthorized": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [401, 403] },
-        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onMissing"

+ 208 - 57
competitor-analysis/competitor-discovery/api-config.json

@@ -1,4 +1,4 @@
-{
+{
   "name": "competitor-discovery",
   "displayName": "竞品发现与筛选",
   "description": "根据品类关键词和自身品牌信息,自动发现并筛选直接竞品",
@@ -18,7 +18,9 @@
     },
     "ownAsins": {
       "type": "array",
-      "items": { "type": "string" },
+      "items": {
+        "type": "string"
+      },
       "required": false,
       "description": "自身品牌核心ASIN列表"
     },
@@ -38,8 +40,12 @@
       "type": "object",
       "required": false,
       "properties": {
-        "min": { "type": "number" },
-        "max": { "type": "number" }
+        "min": {
+          "type": "number"
+        },
+        "max": {
+          "type": "number"
+        }
       },
       "description": "价格带过滤范围,不传则自动按自身价格±30%"
     }
@@ -53,9 +59,18 @@
         "endpoint": "/api/ProductQuery",
         "method": "POST",
         "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
-        "headers": { "Authorization": "Bearer {{vocToken}}" },
-        "requestBody": { "Page": 1, "Query": "1", "QueryType": "7", "Pattern": "${categoryKeyword}" },
-        "queryParams": { "domain": "${domain}" }
+        "headers": {
+          "Authorization": "Bearer {{vocToken}}"
+        },
+        "requestBody": {
+          "Page": 1,
+          "Query": "1",
+          "QueryType": "7",
+          "Pattern": "${categoryKeyword}"
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "searchResults",
       "responseExtract": "extractProductList(resp) → Array<{ Asin, Title, Price, Rating, RatingsCount, MonthlySales, Brand, BSR, Photo }>"
@@ -68,8 +83,12 @@
         "service": "SorftimeApiService.getSimilarProducts",
         "endpoint": "/api/SimilarProductRealtimeRequest",
         "method": "POST",
-        "requestBody": { "ASIN": "${ownAsins[0]}" },
-        "queryParams": { "domain": "${domain}" },
+        "requestBody": {
+          "ASIN": "${ownAsins[0]}"
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        },
         "note": "异步任务:需后续调用 /api/SimilarProductRealtimeRequestStatusQuery 和 /api/SimilarProductRealtimeRequestCollection"
       },
       "output": "similarResults"
@@ -81,8 +100,12 @@
         "service": "SorftimeApiService.getKeywordProductRanking",
         "endpoint": "/api/KeywordProductRanking",
         "method": "POST",
-        "requestBody": { "keyword": "${categoryKeyword}" },
-        "queryParams": { "domain": "${domain}" }
+        "requestBody": {
+          "keyword": "${categoryKeyword}"
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "rankingResults",
       "responseExtract": "Array<{ Asin, Title, Rank, Price, Rating, RatingsCount, IsSponsored }>"
@@ -110,8 +133,15 @@
         "service": "SorftimeApiService.getProductDetail",
         "endpoint": "/api/ProductRequest",
         "method": "POST",
-        "requestBody": { "ASIN": "${competitor.asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
-        "queryParams": { "domain": "${domain}" }
+        "requestBody": {
+          "ASIN": "${competitor.asin}",
+          "Trend": 1,
+          "QueryTrendStartDt": "",
+          "QueryTrendEndDt": ""
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "competitorDetails",
       "responseExtract": "{ Title, Brand, SalesPrice, Ratings, RatingsCount, BSR, Category, Photo, Feature, Description, VariationASIN, MonthlySales }"
@@ -154,50 +184,113 @@
         "items": {
           "type": "object",
           "properties": {
-            "asin": { "type": "string" },
-            "title": { "type": "string" },
-            "brand": { "type": "string" },
-            "price": { "type": "number" },
-            "rating": { "type": "number" },
-            "ratingsCount": { "type": "integer" },
-            "monthlySales": { "type": "integer" },
-            "bsr": { "type": "integer" },
-            "category": { "type": "string" },
-            "matchScore": { "type": "number" },
-            "matchReasons": { "type": "array", "items": { "type": "string" } }
+            "asin": {
+              "type": "string"
+            },
+            "title": {
+              "type": "string"
+            },
+            "brand": {
+              "type": "string"
+            },
+            "price": {
+              "type": "number"
+            },
+            "rating": {
+              "type": "number"
+            },
+            "ratingsCount": {
+              "type": "integer"
+            },
+            "monthlySales": {
+              "type": "integer"
+            },
+            "bsr": {
+              "type": "integer"
+            },
+            "category": {
+              "type": "string"
+            },
+            "matchScore": {
+              "type": "number"
+            },
+            "matchReasons": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
           }
         }
       },
       "searchMeta": {
         "type": "object",
         "properties": {
-          "totalCandidates": { "type": "integer" },
-          "filteredCount": { "type": "integer" },
-          "filterCriteria": { "type": "object" }
+          "totalCandidates": {
+            "type": "integer"
+          },
+          "filteredCount": {
+            "type": "integer"
+          },
+          "filterCriteria": {
+            "type": "object"
+          }
         }
       },
       "competitiveLandscape": {
         "type": "object",
         "description": "竞争格局分析(来自computeCompetition算法)",
         "properties": {
-          "cr5": { "type": "number", "description": "Top5品牌销量集中度(0-100)" },
-          "monopolyLevel": { "type": "string", "enum": ["low", "medium", "high"] },
-          "monopolyLabel": { "type": "string" },
+          "cr5": {
+            "type": "number",
+            "description": "Top5品牌销量集中度(0-100)"
+          },
+          "monopolyLevel": {
+            "type": "string",
+            "enum": [
+              "low",
+              "medium",
+              "high"
+            ]
+          },
+          "monopolyLabel": {
+            "type": "string"
+          },
           "brandComparison": {
             "type": "array",
             "items": {
               "type": "object",
               "properties": {
-                "brand": { "type": "string" },
-                "skus": { "type": "integer" },
-                "avgSales": { "type": "integer" },
-                "avgPrice": { "type": "number" },
-                "avgRating": { "type": "number" }
+                "brand": {
+                  "type": "string"
+                },
+                "skus": {
+                  "type": "integer"
+                },
+                "avgSales": {
+                  "type": "integer"
+                },
+                "avgPrice": {
+                  "type": "number"
+                },
+                "avgRating": {
+                  "type": "number"
+                }
               }
             }
           },
-          "differentiationAdvice": { "type": "array", "items": { "type": "string" } },
-          "attackStrategy": { "type": "array", "items": { "type": "string" } }
+          "differentiationAdvice": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "attackStrategy": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          }
         }
       }
     }
@@ -213,42 +306,100 @@
     "configFile": "~/.openclaw/voc-credentials.json",
     "tokenField": "vocToken",
     "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
-    "resolutionOrder": ["configFile", "currentToken"],
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "apigId": "Vo3ROWEvDy",
+    "paymentUrlResolution": {
+      "description": "动态构建充值URL:通过当前token查出用户objectId,拼接到充值页面",
+      "steps": [
+        "1. 从 voc-credentials.json 或 currentToken 获取当前 session token",
+        "2. 调用 GET https://server.fmode.cn/parse/users/me (Header: X-Parse-Application-Id: ncloudmaster, X-Parse-Session-Token: {token})获取用户 objectId",
+        "3. 拼接充值URL: https://pwa.fmode.cn/apig-pay.html?user={objectId}&apigid=Vo3ROWEvDy&fun_id=HOkkX72PMF",
+        "4. 将该URL展示给用户,引导扫码支付"
+      ],
+      "userResolveEndpoint": "https://server.fmode.cn/parse/users/me",
+      "userResolveHeaders": {
+        "X-Parse-Application-Id": "ncloudmaster",
+        "X-Parse-Session-Token": "{vocToken}"
+      },
+      "paymentBaseUrl": "https://pwa.fmode.cn/apig-pay.html",
+      "paymentParams": {
+        "user": "{resolvedUserId}",
+        "apigid": "Vo3ROWEvDy",
+        "fun_id": "HOkkX72PMF"
+      },
+      "balanceCheckEndpoint": "https://server.fmode.cn/api/apig/getApig"
+    },
     "onMissing": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "扫码开通 VOC-AI 数据服务",
-      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+      "message": "此 Skill 需要有效的 API Token。请按以下步骤操作:\n1. 如果你已有 Token,请告诉我,我会保存到 ~/.openclaw/voc-credentials.json\n2. 如果没有 Token,我会引导你扫码充值开通"
     },
     "onBalanceInsufficient": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "VOC-AI Token 余额不足,请扫码充值",
-      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+      "message": "当前 Token 余额不足,我将为你生成专属充值链接,扫码支付后即可继续使用。"
     }
   },
   "errorHandling": {
     "balanceInsufficient": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
-        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
-        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onBalanceInsufficient"
     },
     "unauthorized": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [401, 403] },
-        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onMissing"

+ 199 - 56
competitor-analysis/competitor-pricing-analysis/api-config.json

@@ -1,4 +1,4 @@
-{
+{
   "name": "competitor-pricing-analysis",
   "displayName": "竞品定价策略分析",
   "description": "分析竞品定价策略,包括5分位价格带分布、黄金价格带评分、毛利估算、促销建议和盈亏平衡销量分析",
@@ -13,7 +13,9 @@
     },
     "competitorAsins": {
       "type": "array",
-      "items": { "type": "string" },
+      "items": {
+        "type": "string"
+      },
       "required": true,
       "description": "竞品ASIN列表"
     },
@@ -38,9 +40,18 @@
         "endpoint": "/api/ProductQuery",
         "method": "POST",
         "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
-        "headers": { "Authorization": "Bearer {{vocToken}}" },
-        "requestBody": { "Page": 1, "Query": "1", "QueryType": "7", "Pattern": "${categoryKeyword}" },
-        "queryParams": { "domain": "${domain}" }
+        "headers": {
+          "Authorization": "Bearer {{vocToken}}"
+        },
+        "requestBody": {
+          "Page": 1,
+          "Query": "1",
+          "QueryType": "7",
+          "Pattern": "${categoryKeyword}"
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "categoryProducts",
       "responseExtract": "Array<{ Asin, Title, Price, Rating, RatingsCount, MonthlySales, Brand, BSR }>"
@@ -54,9 +65,18 @@
         "endpoint": "/api/ProductRequest",
         "method": "POST",
         "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
-        "headers": { "Authorization": "Bearer {{vocToken}}" },
-        "requestBody": { "ASIN": "${asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
-        "queryParams": { "domain": "${domain}" }
+        "headers": {
+          "Authorization": "Bearer {{vocToken}}"
+        },
+        "requestBody": {
+          "ASIN": "${asin}",
+          "Trend": 1,
+          "QueryTrendStartDt": "",
+          "QueryTrendEndDt": ""
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "competitorDetails",
       "responseExtract": "{ Title, Brand, SalesPrice, ListPrice, CouponInfo, FBAFee, Ratings, RatingsCount, MonthlySales }"
@@ -70,9 +90,15 @@
         "endpoint": "/api/MonitorQuery",
         "method": "POST",
         "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
-        "headers": { "Authorization": "Bearer {{vocToken}}" },
-        "requestBody": { "ASIN": "${asin}" },
-        "queryParams": { "domain": "${domain}" }
+        "headers": {
+          "Authorization": "Bearer {{vocToken}}"
+        },
+        "requestBody": {
+          "ASIN": "${asin}"
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "priceHistory",
       "responseExtract": "{ PriceHistory, RankHistory }"
@@ -113,12 +139,24 @@
         "items": {
           "type": "object",
           "properties": {
-            "range": { "type": "string" },
-            "label": { "type": "string" },
-            "productCount": { "type": "integer" },
-            "avgRating": { "type": "number" },
-            "avgSales": { "type": "integer" },
-            "isGolden": { "type": "boolean" }
+            "range": {
+              "type": "string"
+            },
+            "label": {
+              "type": "string"
+            },
+            "productCount": {
+              "type": "integer"
+            },
+            "avgRating": {
+              "type": "number"
+            },
+            "avgSales": {
+              "type": "integer"
+            },
+            "isGolden": {
+              "type": "boolean"
+            }
           }
         }
       },
@@ -128,43 +166,90 @@
         "items": {
           "type": "object",
           "properties": {
-            "asin": { "type": "string" },
-            "brand": { "type": "string" },
-            "currentPrice": { "type": "number" },
-            "listPrice": { "type": "number" },
-            "coupon": { "type": "number" },
-            "pricingStrategy": { "type": "string" },
-            "priceHistory": { "type": "array" },
-            "estimatedMargin": { "type": "number" }
+            "asin": {
+              "type": "string"
+            },
+            "brand": {
+              "type": "string"
+            },
+            "currentPrice": {
+              "type": "number"
+            },
+            "listPrice": {
+              "type": "number"
+            },
+            "coupon": {
+              "type": "number"
+            },
+            "pricingStrategy": {
+              "type": "string"
+            },
+            "priceHistory": {
+              "type": "array"
+            },
+            "estimatedMargin": {
+              "type": "number"
+            }
           }
         }
       },
       "ownPricePosition": {
         "type": "object",
         "properties": {
-          "band": { "type": "string" },
-          "percentile": { "type": "number" },
-          "competitiveness": { "type": "string" }
+          "band": {
+            "type": "string"
+          },
+          "percentile": {
+            "type": "number"
+          },
+          "competitiveness": {
+            "type": "string"
+          }
         }
       },
       "recommendation": {
         "type": "object",
         "properties": {
-          "optimalRange": { "type": "array", "items": { "type": "number" } },
-          "goldenBand": { "type": "string" },
-          "strategy": { "type": "string" },
-          "reasons": { "type": "array", "items": { "type": "string" } }
+          "optimalRange": {
+            "type": "array",
+            "items": {
+              "type": "number"
+            }
+          },
+          "goldenBand": {
+            "type": "string"
+          },
+          "strategy": {
+            "type": "string"
+          },
+          "reasons": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          }
         }
       },
       "marginEstimate": {
         "type": "object",
         "properties": {
-          "currentMargin": { "type": "number" },
-          "suggestedMargin": { "type": "number" },
-          "breakEvenSales": { "type": "integer" }
+          "currentMargin": {
+            "type": "number"
+          },
+          "suggestedMargin": {
+            "type": "number"
+          },
+          "breakEvenSales": {
+            "type": "integer"
+          }
         }
       },
-      "promotionAdvice": { "type": "array", "items": { "type": "string" } }
+      "promotionAdvice": {
+        "type": "array",
+        "items": {
+          "type": "string"
+        }
+      }
     }
   },
   "timeout": 120000,
@@ -178,42 +263,100 @@
     "configFile": "~/.openclaw/voc-credentials.json",
     "tokenField": "vocToken",
     "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
-    "resolutionOrder": ["configFile", "currentToken"],
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "apigId": "Vo3ROWEvDy",
+    "paymentUrlResolution": {
+      "description": "动态构建充值URL:通过当前token查出用户objectId,拼接到充值页面",
+      "steps": [
+        "1. 从 voc-credentials.json 或 currentToken 获取当前 session token",
+        "2. 调用 GET https://server.fmode.cn/parse/users/me (Header: X-Parse-Application-Id: ncloudmaster, X-Parse-Session-Token: {token})获取用户 objectId",
+        "3. 拼接充值URL: https://pwa.fmode.cn/apig-pay.html?user={objectId}&apigid=Vo3ROWEvDy&fun_id=HOkkX72PMF",
+        "4. 将该URL展示给用户,引导扫码支付"
+      ],
+      "userResolveEndpoint": "https://server.fmode.cn/parse/users/me",
+      "userResolveHeaders": {
+        "X-Parse-Application-Id": "ncloudmaster",
+        "X-Parse-Session-Token": "{vocToken}"
+      },
+      "paymentBaseUrl": "https://pwa.fmode.cn/apig-pay.html",
+      "paymentParams": {
+        "user": "{resolvedUserId}",
+        "apigid": "Vo3ROWEvDy",
+        "fun_id": "HOkkX72PMF"
+      },
+      "balanceCheckEndpoint": "https://server.fmode.cn/api/apig/getApig"
+    },
     "onMissing": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "扫码开通 VOC-AI 数据服务",
-      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+      "message": "此 Skill 需要有效的 API Token。请按以下步骤操作:\n1. 如果你已有 Token,请告诉我,我会保存到 ~/.openclaw/voc-credentials.json\n2. 如果没有 Token,我会引导你扫码充值开通"
     },
     "onBalanceInsufficient": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "VOC-AI Token 余额不足,请扫码充值",
-      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+      "message": "当前 Token 余额不足,我将为你生成专属充值链接,扫码支付后即可继续使用。"
     }
   },
   "errorHandling": {
     "balanceInsufficient": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
-        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
-        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onBalanceInsufficient"
     },
     "unauthorized": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [401, 403] },
-        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onMissing"

+ 243 - 52
competitor-analysis/competitor-product-comparison/api-config.json

@@ -1,4 +1,4 @@
-{
+{
   "name": "competitor-product-comparison",
   "displayName": "竞品产品对比",
   "description": "对自身产品与竞品进行多维度横向对比,生成5维健康度仪表盘并标注机会/风险标签",
@@ -8,13 +8,17 @@
   "parameters": {
     "ownAsins": {
       "type": "array",
-      "items": { "type": "string" },
+      "items": {
+        "type": "string"
+      },
       "required": true,
       "description": "自身品牌ASIN列表"
     },
     "competitorAsins": {
       "type": "array",
-      "items": { "type": "string" },
+      "items": {
+        "type": "string"
+      },
       "required": true,
       "description": "竞品ASIN列表(来自 competitor-discovery 输出)"
     },
@@ -26,7 +30,9 @@
     },
     "dimensions": {
       "type": "array",
-      "items": { "type": "string" },
+      "items": {
+        "type": "string"
+      },
       "required": false,
       "description": "对比维度,默认全部"
     }
@@ -41,9 +47,18 @@
         "endpoint": "/api/ProductRequest",
         "method": "POST",
         "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
-        "headers": { "Authorization": "Bearer {{vocToken}}" },
-        "requestBody": { "ASIN": "${asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
-        "queryParams": { "domain": "${domain}" }
+        "headers": {
+          "Authorization": "Bearer {{vocToken}}"
+        },
+        "requestBody": {
+          "ASIN": "${asin}",
+          "Trend": 1,
+          "QueryTrendStartDt": "",
+          "QueryTrendEndDt": ""
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "allProductDetails",
       "responseExtract": "{ Title, Brand, SalesPrice, Ratings, RatingsCount, BSR, Category, Photo, Feature, Description, VariationASIN, MonthlySales }"
@@ -56,8 +71,12 @@
         "service": "SorftimeApiService.getAsinSalesVolume",
         "endpoint": "/api/AsinSalesVolume",
         "method": "POST",
-        "requestBody": { "ASIN": "${asin}" },
-        "queryParams": { "domain": "${domain}" }
+        "requestBody": {
+          "ASIN": "${asin}"
+        },
+        "queryParams": {
+          "domain": "${domain}"
+        }
       },
       "output": "salesData"
     },
@@ -107,48 +126,162 @@
         "items": {
           "type": "object",
           "properties": {
-            "asin": { "type": "string" },
-            "brand": { "type": "string" },
-            "isOwn": { "type": "boolean" },
+            "asin": {
+              "type": "string"
+            },
+            "brand": {
+              "type": "string"
+            },
+            "isOwn": {
+              "type": "boolean"
+            },
             "metrics": {
               "type": "object",
               "properties": {
-                "price": { "type": "object", "properties": { "value": { "type": "number" }, "score": { "type": "integer" } } },
-                "rating": { "type": "object", "properties": { "value": { "type": "number" }, "score": { "type": "integer" } } },
-                "monthlySales": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
-                "reviewCount": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
-                "bsr": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
-                "featureCount": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
-                "variantCount": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } }
+                "price": {
+                  "type": "object",
+                  "properties": {
+                    "value": {
+                      "type": "number"
+                    },
+                    "score": {
+                      "type": "integer"
+                    }
+                  }
+                },
+                "rating": {
+                  "type": "object",
+                  "properties": {
+                    "value": {
+                      "type": "number"
+                    },
+                    "score": {
+                      "type": "integer"
+                    }
+                  }
+                },
+                "monthlySales": {
+                  "type": "object",
+                  "properties": {
+                    "value": {
+                      "type": "integer"
+                    },
+                    "score": {
+                      "type": "integer"
+                    }
+                  }
+                },
+                "reviewCount": {
+                  "type": "object",
+                  "properties": {
+                    "value": {
+                      "type": "integer"
+                    },
+                    "score": {
+                      "type": "integer"
+                    }
+                  }
+                },
+                "bsr": {
+                  "type": "object",
+                  "properties": {
+                    "value": {
+                      "type": "integer"
+                    },
+                    "score": {
+                      "type": "integer"
+                    }
+                  }
+                },
+                "featureCount": {
+                  "type": "object",
+                  "properties": {
+                    "value": {
+                      "type": "integer"
+                    },
+                    "score": {
+                      "type": "integer"
+                    }
+                  }
+                },
+                "variantCount": {
+                  "type": "object",
+                  "properties": {
+                    "value": {
+                      "type": "integer"
+                    },
+                    "score": {
+                      "type": "integer"
+                    }
+                  }
+                }
               }
             },
-            "overallScore": { "type": "number" }
+            "overallScore": {
+              "type": "number"
+            }
           }
         }
       },
-      "advantages": { "type": "array", "items": { "type": "string" } },
-      "gaps": { "type": "array", "items": { "type": "string" } },
-      "recommendation": { "type": "string" },
+      "advantages": {
+        "type": "array",
+        "items": {
+          "type": "string"
+        }
+      },
+      "gaps": {
+        "type": "array",
+        "items": {
+          "type": "string"
+        }
+      },
+      "recommendation": {
+        "type": "string"
+      },
       "healthDashboard": {
         "type": "object",
         "description": "5维健康度仪表盘,key为ASIN",
         "additionalProperties": {
           "type": "object",
           "properties": {
-            "overallScore": { "type": "number" },
+            "overallScore": {
+              "type": "number"
+            },
             "dimensions": {
               "type": "object",
               "properties": {
-                "pricingCompetitiveness": { "type": "integer" },
-                "ratingHealth": { "type": "integer" },
-                "trafficRank": { "type": "integer" },
-                "salesEfficiency": { "type": "integer" },
-                "growthPotential": { "type": "integer" }
+                "pricingCompetitiveness": {
+                  "type": "integer"
+                },
+                "ratingHealth": {
+                  "type": "integer"
+                },
+                "trafficRank": {
+                  "type": "integer"
+                },
+                "salesEfficiency": {
+                  "type": "integer"
+                },
+                "growthPotential": {
+                  "type": "integer"
+                }
               }
             },
-            "opportunityTags": { "type": "array", "items": { "type": "string" } },
-            "riskTags": { "type": "array", "items": { "type": "string" } },
-            "coreShortcoming": { "type": "string" }
+            "opportunityTags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "riskTags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "coreShortcoming": {
+              "type": "string"
+            }
           }
         }
       }
@@ -165,42 +298,100 @@
     "configFile": "~/.openclaw/voc-credentials.json",
     "tokenField": "vocToken",
     "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
-    "resolutionOrder": ["configFile", "currentToken"],
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "apigId": "Vo3ROWEvDy",
+    "paymentUrlResolution": {
+      "description": "动态构建充值URL:通过当前token查出用户objectId,拼接到充值页面",
+      "steps": [
+        "1. 从 voc-credentials.json 或 currentToken 获取当前 session token",
+        "2. 调用 GET https://server.fmode.cn/parse/users/me (Header: X-Parse-Application-Id: ncloudmaster, X-Parse-Session-Token: {token})获取用户 objectId",
+        "3. 拼接充值URL: https://pwa.fmode.cn/apig-pay.html?user={objectId}&apigid=Vo3ROWEvDy&fun_id=HOkkX72PMF",
+        "4. 将该URL展示给用户,引导扫码支付"
+      ],
+      "userResolveEndpoint": "https://server.fmode.cn/parse/users/me",
+      "userResolveHeaders": {
+        "X-Parse-Application-Id": "ncloudmaster",
+        "X-Parse-Session-Token": "{vocToken}"
+      },
+      "paymentBaseUrl": "https://pwa.fmode.cn/apig-pay.html",
+      "paymentParams": {
+        "user": "{resolvedUserId}",
+        "apigid": "Vo3ROWEvDy",
+        "fun_id": "HOkkX72PMF"
+      },
+      "balanceCheckEndpoint": "https://server.fmode.cn/api/apig/getApig"
+    },
     "onMissing": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "扫码开通 VOC-AI 数据服务",
-      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+      "message": "此 Skill 需要有效的 API Token。请按以下步骤操作:\n1. 如果你已有 Token,请告诉我,我会保存到 ~/.openclaw/voc-credentials.json\n2. 如果没有 Token,我会引导你扫码充值开通"
     },
     "onBalanceInsufficient": {
-      "action": "showPaymentQR",
-      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
-      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
-      "pollingIntervalMs": 3000,
-      "pollingTimeoutMs": 300000,
-      "onPaymentSuccess": "retrySkillWithNewToken",
+      "action": "resolveUserThenShowPayment",
       "title": "VOC-AI Token 余额不足,请扫码充值",
-      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+      "message": "当前 Token 余额不足,我将为你生成专属充值链接,扫码支付后即可继续使用。"
     }
   },
   "errorHandling": {
     "balanceInsufficient": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
-        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
-        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onBalanceInsufficient"
     },
     "unauthorized": {
       "conditions": [
-        { "responseField": "code", "operator": "in", "value": [401, 403] },
-        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
       ],
       "matchMode": "any",
       "trigger": "tokenConfig.onMissing"

+ 0 - 136
deploy-to-openclaw.ps1

@@ -1,136 +0,0 @@
-# OpenClaw Skill Deploy Script v1.3.0
-# Flatten 41 skills into ~/.openclaw/skills/
-# 批量将voc技能部署在龙虾skills目录下脚本
-# 需要将.openclaw的路径更换后使用
-# Usage:
-#   .\deploy-to-openclaw.ps1 -DryRun        # Preview only
-#   .\deploy-to-openclaw.ps1                 # Actual deploy
-#   .\deploy-to-openclaw.ps1 -SkillsRoot "D:\custom\skills"
-
-param(
-    [string]$SkillsRoot = "$env:USERPROFILE\.openclaw\skills",
-    [string]$SourceRoot = $PSScriptRoot,
-    [switch]$DryRun
-)
-
-$ErrorActionPreference = "Stop"
-
-$categories = @(
-    "voc",
-    "social-media",
-    "competitor-analysis",
-    "review-analysis",
-    "synthesis",
-    "social-voc",
-    "douyin",
-    "video-creation",
-    "jimeng",
-    "test"
-)
-
-Write-Host "========================================"
-Write-Host "  OpenClaw Skill Deploy v1.3.0"
-Write-Host "========================================"
-Write-Host ""
-Write-Host "Source:  $SourceRoot"
-Write-Host "Target:  $SkillsRoot"
-if ($DryRun) { Write-Host "[DRY RUN] Preview only, no files copied" -ForegroundColor Yellow }
-Write-Host ""
-
-if (-not $DryRun) {
-    if (-not (Test-Path $SkillsRoot)) {
-        New-Item -ItemType Directory -Path $SkillsRoot -Force | Out-Null
-        Write-Host "Created target dir: $SkillsRoot" -ForegroundColor Green
-    }
-}
-
-$deployed = 0
-$skipped = 0
-$errors = 0
-
-foreach ($cat in $categories) {
-    $catPath = Join-Path $SourceRoot $cat
-    if (-not (Test-Path $catPath)) {
-        Write-Host "SKIP category (not found): $cat" -ForegroundColor DarkGray
-        continue
-    }
-
-    Write-Host "--- $cat ---" -ForegroundColor Cyan
-    $skillDirs = Get-ChildItem -Directory -Path $catPath
-    foreach ($skillDir in $skillDirs) {
-        $skillName = $skillDir.Name
-        $skillMd = Join-Path $skillDir.FullName "SKILL.md"
-        $apiConfig = Join-Path $skillDir.FullName "api-config.json"
-
-        if (-not (Test-Path $skillMd)) {
-            Write-Host "  [SKIP] $skillName - missing SKILL.md" -ForegroundColor DarkYellow
-            $skipped++
-            continue
-        }
-        if (-not (Test-Path $apiConfig)) {
-            Write-Host "  [SKIP] $skillName - missing api-config.json" -ForegroundColor DarkYellow
-            $skipped++
-            continue
-        }
-
-        $mdContent = Get-Content $skillMd -Raw -Encoding UTF8
-        if ($mdContent -notmatch "^---\s*\r?\n") {
-            Write-Host "  [WARN] $skillName - SKILL.md missing YAML frontmatter" -ForegroundColor Yellow
-        }
-
-        try {
-            $null = Get-Content $apiConfig -Raw -Encoding UTF8 | ConvertFrom-Json
-        } catch {
-            Write-Host "  [ERROR] $skillName - invalid JSON in api-config.json" -ForegroundColor Red
-            $errors++
-            continue
-        }
-
-        $destDir = Join-Path $SkillsRoot $skillName
-
-        if ($DryRun) {
-            $tag = if (Test-Path $destDir) { "UPDATE" } else { "NEW" }
-            Write-Host "  [$tag] $skillName" -ForegroundColor White
-        } else {
-            if (Test-Path $destDir) {
-                Remove-Item -Recurse -Force $destDir
-            }
-            New-Item -ItemType Directory -Path $destDir -Force | Out-Null
-
-            Get-ChildItem -File -Path $skillDir.FullName | ForEach-Object {
-                Copy-Item $_.FullName -Destination $destDir
-            }
-
-            Write-Host "  [OK] $skillName" -ForegroundColor Green
-        }
-
-        $deployed++
-    }
-}
-
-Write-Host ""
-Write-Host "========================================"
-Write-Host "  Result: $deployed deployed, $skipped skipped, $errors errors"
-Write-Host "========================================"
-
-if ($DryRun) {
-    Write-Host "Remove -DryRun to execute actual deployment." -ForegroundColor Yellow
-} else {
-    # 复制凭证模板(不覆盖已有凭证文件)
-    $credTemplate = Join-Path $SourceRoot "__config\voc-credentials.template.json"
-    $credTarget   = Join-Path (Split-Path $SkillsRoot -Parent) "voc-credentials.template.json"
-    $credFile     = Join-Path (Split-Path $SkillsRoot -Parent) "voc-credentials.json"
-    if (Test-Path $credTemplate) {
-        Copy-Item $credTemplate -Destination $credTarget -Force
-        Write-Host ""
-        Write-Host "Credentials template: $credTarget" -ForegroundColor Cyan
-        if (-not (Test-Path $credFile)) {
-            Write-Host "  → No voc-credentials.json found. Copy template and fill in vocToken to enable per-user tokens." -ForegroundColor Yellow
-        } else {
-            Write-Host "  → voc-credentials.json already exists, not overwritten." -ForegroundColor Green
-        }
-    }
-    Write-Host ""
-    Write-Host "Done! Refresh OpenClaw skill list to verify." -ForegroundColor Green
-    Write-Host "  openclaw skills list"
-}

+ 333 - 0
dist/install.js

@@ -0,0 +1,333 @@
+#!/usr/bin/env node
+/**
+ * OpenClaw VOC Skills 一键部署脚本
+ * 
+ * 功能:将 skills 文件夹中的所有技能部署到 OpenClaw 的 skills 目录
+ * 兼容:Windows / macOS / Linux
+ * 依赖:仅需 Node.js(OpenClaw 已自带)
+ * 
+ * 使用方法:
+ *   node install.js                    # 部署所有技能
+ *   node install.js --list             # 仅列出技能,不部署
+ *   node install.js --only a,b,c       # 仅部署指定技能
+ *   node install.js --skip a,b,c       # 跳过指定技能
+ *   node install.js --target /path     # 指定目标目录(默认 ~/.openclaw/skills)
+ *   node install.js --clean            # 部署前清空目标目录
+ *   node install.js --dry-run          # 预览模式,不实际写入
+ */
+
+const fs = require('fs');
+const path = require('path');
+const os = require('os');
+
+// ============================================
+// 配置
+// ============================================
+const VERSION = '1.0.0';
+const SKILLS_SUBDIR = 'skills'; // zip 包内的技能目录名
+
+// ============================================
+// 参数解析
+// ============================================
+function parseArgs() {
+    const args = process.argv.slice(2);
+    const opts = {
+        list: false,
+        only: [],
+        skip: [],
+        target: '',
+        clean: false,
+        dryRun: false,
+        help: false
+    };
+
+    for (let i = 0; i < args.length; i++) {
+        switch (args[i]) {
+            case '--list':
+            case '-l':
+                opts.list = true;
+                break;
+            case '--only':
+                opts.only = (args[++i] || '').split(',').filter(Boolean);
+                break;
+            case '--skip':
+                opts.skip = (args[++i] || '').split(',').filter(Boolean);
+                break;
+            case '--target':
+            case '-t':
+                opts.target = args[++i] || '';
+                break;
+            case '--clean':
+                opts.clean = true;
+                break;
+            case '--dry-run':
+                opts.dryRun = true;
+                break;
+            case '--help':
+            case '-h':
+                opts.help = true;
+                break;
+        }
+    }
+
+    return opts;
+}
+
+// ============================================
+// 工具函数
+// ============================================
+function getOpenClawSkillsDir() {
+    const home = os.homedir();
+    return path.join(home, '.openclaw', 'skills');
+}
+
+function ensureDir(dir) {
+    if (!fs.existsSync(dir)) {
+        fs.mkdirSync(dir, { recursive: true });
+    }
+}
+
+function copyFileSync(src, dest) {
+    ensureDir(path.dirname(dest));
+    fs.copyFileSync(src, dest);
+}
+
+function removeDir(dir) {
+    if (fs.existsSync(dir)) {
+        fs.rmSync(dir, { recursive: true, force: true });
+    }
+}
+
+function getFileSize(filePath) {
+    try {
+        return fs.statSync(filePath).size;
+    } catch {
+        return 0;
+    }
+}
+
+function formatSize(bytes) {
+    if (bytes < 1024) return bytes + ' B';
+    if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';
+    return (bytes / 1024 / 1024).toFixed(1) + ' MB';
+}
+
+// ============================================
+// 核心逻辑
+// ============================================
+function discoverSkills(sourceDir) {
+    if (!fs.existsSync(sourceDir)) {
+        return [];
+    }
+
+    return fs.readdirSync(sourceDir)
+        .filter(name => {
+            const fullPath = path.join(sourceDir, name);
+            return fs.statSync(fullPath).isDirectory()
+                && fs.existsSync(path.join(fullPath, 'SKILL.md'));
+        })
+        .map(name => {
+            const skillDir = path.join(sourceDir, name);
+            const files = [];
+            let totalSize = 0;
+
+            for (const fileName of fs.readdirSync(skillDir)) {
+                const filePath = path.join(skillDir, fileName);
+                if (fs.statSync(filePath).isFile()) {
+                    const size = getFileSize(filePath);
+                    files.push({ name: fileName, path: filePath, size });
+                    totalSize += size;
+                }
+            }
+
+            return { name, dir: skillDir, files, totalSize };
+        })
+        .sort((a, b) => a.name.localeCompare(b.name));
+}
+
+function filterSkills(skills, opts) {
+    let filtered = skills;
+
+    if (opts.only.length > 0) {
+        filtered = filtered.filter(s => opts.only.includes(s.name));
+    }
+
+    if (opts.skip.length > 0) {
+        filtered = filtered.filter(s => !opts.skip.includes(s.name));
+    }
+
+    return filtered;
+}
+
+function showHelp() {
+    console.log(`
+OpenClaw VOC Skills Installer v${VERSION}
+
+Usage:
+  node install.js [options]
+
+Options:
+  --list, -l          List available skills without installing
+  --only a,b,c        Install only specified skills
+  --skip a,b,c        Skip specified skills
+  --target, -t PATH   Custom target directory (default: ~/.openclaw/skills)
+  --clean             Remove existing skills before installing
+  --dry-run           Preview what would be installed
+  --help, -h          Show this help
+
+Examples:
+  node install.js                               # Install all skills
+  node install.js --list                         # List skills
+  node install.js --only tiktok-video-search     # Install one skill
+  node install.js --skip test-billing,test-skill # Skip test skills
+  node install.js --target ./my-skills           # Custom directory
+`);
+}
+
+function listSkills(skills) {
+    console.log(`\n  Found ${skills.length} skills:\n`);
+
+    let totalSize = 0;
+    let totalFiles = 0;
+
+    for (const skill of skills) {
+        const fileNames = skill.files.map(f => f.name).join(', ');
+        console.log(`  ${skill.name.padEnd(35)} ${formatSize(skill.totalSize).padStart(8)}   [${fileNames}]`);
+        totalSize += skill.totalSize;
+        totalFiles += skill.files.length;
+    }
+
+    console.log(`\n  Total: ${skills.length} skills, ${totalFiles} files, ${formatSize(totalSize)}\n`);
+}
+
+function installSkills(skills, targetDir, opts) {
+    const prefix = opts.dryRun ? '[DRY-RUN] ' : '';
+
+    console.log(`\n${prefix}Installing ${skills.length} skills to:`);
+    console.log(`  ${targetDir}\n`);
+
+    if (opts.clean && !opts.dryRun) {
+        console.log(`${prefix}Cleaning target directory...`);
+        for (const skill of skills) {
+            const dest = path.join(targetDir, skill.name);
+            if (fs.existsSync(dest)) {
+                removeDir(dest);
+            }
+        }
+    }
+
+    let installed = 0;
+    let skipped = 0;
+    let errors = 0;
+
+    for (const skill of skills) {
+        const destDir = path.join(targetDir, skill.name);
+
+        try {
+            if (!opts.dryRun) {
+                ensureDir(destDir);
+            }
+
+            for (const file of skill.files) {
+                const destFile = path.join(destDir, file.name);
+                
+                // Check if file already exists and is identical
+                if (fs.existsSync(destFile)) {
+                    const existingContent = fs.readFileSync(destFile);
+                    const newContent = fs.readFileSync(file.path);
+                    if (existingContent.equals(newContent)) {
+                        skipped++;
+                        continue;
+                    }
+                }
+
+                if (!opts.dryRun) {
+                    copyFileSync(file.path, destFile);
+                }
+                installed++;
+            }
+
+            process.stdout.write(`  ✅ ${skill.name}\n`);
+        } catch (err) {
+            process.stdout.write(`  ❌ ${skill.name}: ${err.message}\n`);
+            errors++;
+        }
+    }
+
+    console.log(`\n${'─'.repeat(50)}`);
+    console.log(`${prefix}Done!`);
+    console.log(`  Installed: ${installed} files`);
+    console.log(`  Unchanged: ${skipped} files`);
+    if (errors > 0) console.log(`  Errors:    ${errors}`);
+    console.log(`  Target:    ${targetDir}`);
+    console.log('');
+
+    if (!opts.dryRun && errors === 0) {
+        console.log('  Skills are ready. Restart OpenClaw gateway to load them.');
+        console.log('');
+    }
+}
+
+// ============================================
+// 主入口
+// ============================================
+function main() {
+    const opts = parseArgs();
+
+    if (opts.help) {
+        showHelp();
+        return;
+    }
+
+    console.log('');
+    console.log('  ╔══════════════════════════════════════════════╗');
+    console.log(`  ║   OpenClaw VOC Skills Installer  v${VERSION}     ║`);
+    console.log('  ╚══════════════════════════════════════════════╝');
+
+    // Determine source directory (skills/ next to this script)
+    const scriptDir = __dirname;
+    const sourceDir = path.join(scriptDir, SKILLS_SUBDIR);
+
+    if (!fs.existsSync(sourceDir)) {
+        console.error(`\n  ❌ Skills directory not found: ${sourceDir}`);
+        console.error('  Make sure the "skills" folder is in the same directory as this script.\n');
+        process.exit(1);
+    }
+
+    // Discover skills
+    const allSkills = discoverSkills(sourceDir);
+
+    if (allSkills.length === 0) {
+        console.error(`\n  ❌ No skills found in: ${sourceDir}\n`);
+        process.exit(1);
+    }
+
+    // Filter
+    const skills = filterSkills(allSkills, opts);
+
+    if (opts.list) {
+        listSkills(skills);
+        return;
+    }
+
+    if (skills.length === 0) {
+        console.log('\n  No skills matched the filter.\n');
+        return;
+    }
+
+    // Target directory
+    const targetDir = opts.target || getOpenClawSkillsDir();
+
+    // Pre-flight check
+    const openclawDir = path.join(os.homedir(), '.openclaw');
+    if (!opts.target && !fs.existsSync(openclawDir)) {
+        console.error(`\n  ⚠️  OpenClaw directory not found: ${openclawDir}`);
+        console.error('  Is OpenClaw installed? You can specify a custom target with --target PATH\n');
+        process.exit(1);
+    }
+
+    listSkills(skills);
+    installSkills(skills, targetDir, opts);
+}
+
+main();

BIN
dist/openclaw-voc-skills.zip


+ 301 - 0
dist/skills-cdn-urls.json

@@ -0,0 +1,301 @@
+{
+  "asin-reverse-keywords": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/asin-reverse-keywords/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/asin-reverse-keywords/api-config.json"
+  },
+  "asin-sales-volume": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/asin-sales-volume/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/asin-sales-volume/api-config.json"
+  },
+  "brand-context-builder": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/brand-context-builder/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/brand-context-builder/api-config.json"
+  },
+  "brand-profile": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/brand-profile/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/brand-profile/api-config.json"
+  },
+  "category-landscape": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/category-landscape/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/category-landscape/api-config.json"
+  },
+  "category-products": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/category-products/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/category-products/api-config.json"
+  },
+  "category-tree": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/category-tree/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/category-tree/api-config.json"
+  },
+  "competitor-bsr-tracking": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/competitor-bsr-tracking/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/competitor-bsr-tracking/api-config.json"
+  },
+  "competitor-discovery": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/competitor-discovery/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/competitor-discovery/api-config.json"
+  },
+  "competitor-pricing-analysis": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/competitor-pricing-analysis/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/competitor-pricing-analysis/api-config.json"
+  },
+  "competitor-product-comparison": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/competitor-product-comparison/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/competitor-product-comparison/api-config.json"
+  },
+  "douyin-comment-replies": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/douyin-comment-replies/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/douyin-comment-replies/api-config.json"
+  },
+  "douyin-general-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/douyin-general-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/douyin-general-search/api-config.json"
+  },
+  "douyin-hashtag-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/douyin-hashtag-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/douyin-hashtag-search/api-config.json"
+  },
+  "douyin-user-profile": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/douyin-user-profile/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/douyin-user-profile/api-config.json"
+  },
+  "douyin-user-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/douyin-user-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/douyin-user-search/api-config.json"
+  },
+  "douyin-video-comments": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/douyin-video-comments/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/douyin-video-comments/api-config.json"
+  },
+  "douyin-video-detail": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/douyin-video-detail/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/douyin-video-detail/api-config.json"
+  },
+  "html-report-generator": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/html-report-generator/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/html-report-generator/api-config.json"
+  },
+  "instagram-brand-voc": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/instagram-brand-voc/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/instagram-brand-voc/api-config.json"
+  },
+  "instagram-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/instagram-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/instagram-search/api-config.json"
+  },
+  "instagram-user-info": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/instagram-user-info/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/instagram-user-info/api-config.json"
+  },
+  "instagram-user-posts": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/instagram-user-posts/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/instagram-user-posts/api-config.json"
+  },
+  "jimeng-actor": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-actor/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-actor/api-config.json"
+  },
+  "jimeng-actor-v2": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-actor-v2/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-actor-v2/api-config.json"
+  },
+  "jimeng-clothes-v2": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-clothes-v2/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-clothes-v2/api-config.json"
+  },
+  "jimeng-img-v4": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img-v4/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img-v4/api-config.json"
+  },
+  "jimeng-img-v4-goods": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img-v4-goods/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img-v4-goods/api-config.json"
+  },
+  "jimeng-img-v4-pod": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img-v4-pod/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img-v4-pod/api-config.json"
+  },
+  "jimeng-img2img-v3": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img2img-v3/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-img2img-v3/api-config.json"
+  },
+  "jimeng-inpaint": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-inpaint/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-inpaint/api-config.json"
+  },
+  "jimeng-oh-detect": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-detect/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-detect/api-config.json"
+  },
+  "jimeng-oh-generate": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-generate/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-generate/api-config.json"
+  },
+  "jimeng-oh-identify": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-identify/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-identify/api-config.json"
+  },
+  "jimeng-oh-query": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-query/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-oh-query/api-config.json"
+  },
+  "jimeng-super-resolution": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-super-resolution/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-super-resolution/api-config.json"
+  },
+  "jimeng-task-query": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-task-query/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-task-query/api-config.json"
+  },
+  "jimeng-text2img-v3": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-text2img-v3/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-text2img-v3/api-config.json"
+  },
+  "jimeng-text2img-v31": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-text2img-v31/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-text2img-v31/api-config.json"
+  },
+  "jimeng-video-v3-1080p": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-video-v3-1080p/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-video-v3-1080p/api-config.json"
+  },
+  "jimeng-video-v3-720p": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-video-v3-720p/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-video-v3-720p/api-config.json"
+  },
+  "jimeng-video-v3-pro": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-video-v3-pro/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-video-v3-pro/api-config.json"
+  },
+  "jimeng-work-result": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/jimeng-work-result/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/jimeng-work-result/api-config.json"
+  },
+  "keyword-product-ranking": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/keyword-product-ranking/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/keyword-product-ranking/api-config.json"
+  },
+  "keyword-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/keyword-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/keyword-search/api-config.json"
+  },
+  "keyword-search-trend": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/keyword-search-trend/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/keyword-search-trend/api-config.json"
+  },
+  "product-deep-analysis": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/product-deep-analysis/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/product-deep-analysis/api-config.json"
+  },
+  "product-detail-query": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/product-detail-query/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/product-detail-query/api-config.json"
+  },
+  "product-monitor": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/product-monitor/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/product-monitor/api-config.json"
+  },
+  "product-reviews-query": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/product-reviews-query/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/product-reviews-query/api-config.json"
+  },
+  "product-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/product-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/product-search/api-config.json"
+  },
+  "quickly-video-create": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/quickly-video-create/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/quickly-video-create/api-config.json"
+  },
+  "quickly-video-library": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/quickly-video-library/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/quickly-video-library/api-config.json"
+  },
+  "quickly-video-query": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/quickly-video-query/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/quickly-video-query/api-config.json"
+  },
+  "review-batch-collection": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/review-batch-collection/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/review-batch-collection/api-config.json"
+  },
+  "review-highlight-extraction": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/review-highlight-extraction/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/review-highlight-extraction/api-config.json"
+  },
+  "review-keyword-cloud": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/review-keyword-cloud/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/review-keyword-cloud/api-config.json"
+  },
+  "review-pain-point-extraction": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/review-pain-point-extraction/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/review-pain-point-extraction/api-config.json"
+  },
+  "review-sentiment-analysis": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/review-sentiment-analysis/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/review-sentiment-analysis/api-config.json"
+  },
+  "similar-products": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/similar-products/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/similar-products/api-config.json"
+  },
+  "social-trend-analysis": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/social-trend-analysis/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/social-trend-analysis/api-config.json"
+  },
+  "test-billing": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/test-billing/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/test-billing/api-config.json"
+  },
+  "test-skill": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/test-skill/SKILL.md"
+  },
+  "tiktok-brand-voc": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-brand-voc/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-brand-voc/api-config.json"
+  },
+  "tiktok-category-voc": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-category-voc/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-category-voc/api-config.json"
+  },
+  "tiktok-hashtag-detail": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-hashtag-detail/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-hashtag-detail/api-config.json"
+  },
+  "tiktok-hashtag-videos": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-hashtag-videos/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-hashtag-videos/api-config.json"
+  },
+  "tiktok-user-posts": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-user-posts/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-user-posts/api-config.json"
+  },
+  "tiktok-user-profile": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-user-profile/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-user-profile/api-config.json"
+  },
+  "tiktok-user-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-user-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-user-search/api-config.json"
+  },
+  "tiktok-video-comments": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-video-comments/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-video-comments/api-config.json"
+  },
+  "tiktok-video-detail": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-video-detail/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-video-detail/api-config.json"
+  },
+  "tiktok-video-search": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/tiktok-video-search/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/tiktok-video-search/api-config.json"
+  },
+  "user-persona": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/user-persona/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/user-persona/api-config.json"
+  },
+  "voc-proposal": {
+    "SKILL.md": "https://repos.fmode.cn/x/openclaw-skills/voc-proposal/SKILL.md",
+    "api-config.json": "https://repos.fmode.cn/x/openclaw-skills/voc-proposal/api-config.json"
+  }
+}

+ 60 - 0
dist/skills/asin-reverse-keywords/SKILL.md

@@ -0,0 +1,60 @@
+---
+name: asin-reverse-keywords
+description: 根据 ASIN 反向查询该产品关联的搜索关键词列表,包括搜索排名、搜索量等。适用于竞品 SEO 关键词策略破解、选品广告词挖掘、报告词云图基础数据采集。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# asin-reverse-keywords
+
+## 功能用途
+
+输入竞品 ASIN,反向获取该产品所关联的全部搜索关键词及其排名和搜索量。
+
+**核心业务场景:**
+- 竞品 SEO 关键词策略破解(竞品 Top ASIN 用了哪些词)
+- 广告关键词挖掘(搜索量高、排名靠前的词优先投放)
+- 报告词云图基础数据(Slide 关键词热度词云)
+
+## 调用链(Workflow)
+
+```
+上游: product-search(Pattern=品类词) → 获取 Top 产品 ASIN 列表
+本步: asin-reverse-keywords(ASIN) → 反查竞品关键词及搜索量
+下游: keyword-search(Keyword) → 深挖单个词的搜索趋势和竞争度
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| ASIN | string | ✅ | Amazon 产品 ASIN(10位大写字母数字,如 B0B24QJ217) |
+| domain | integer | ❌ | 站点 ID: 1=amazon.com 2=amazon.co.uk 3=amazon.de(默认 1) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-ecom/forward`
+
+```json
+{
+  "path": "/api/ASINRequestKeyword",
+  "method": "POST",
+  "query": { "domain": 1 },
+  "body": { "ASIN": "B0B24QJ217" }
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| Keyword | 关键词 → 广告词候选、SEO 词表 |
+| SearchVolume | 月搜索量 → **流量价值评估核心指标** |
+| Rank | 该 ASIN 在此词下的排名 → 竞品 SEO 优势词识别 |
+| CompetitorCount | 竞争产品数 → 词的竞争激烈程度 |
+
+## 依赖要求
+
+- 通过 `https://server.fmode.cn/api/voc-ecom/forward` 统一转发,认证已内置
+- ASIN 参数必须大写,`domain` 必须为整数

+ 142 - 0
dist/skills/asin-reverse-keywords/api-config.json

@@ -0,0 +1,142 @@
+{
+  "name": "asin-reverse-keywords",
+  "displayName": "ASIN 反查关键词",
+  "description": "根据 ASIN 反向查询该产品关联的搜索关键词列表,包括搜索排名、搜索量等。用于竞品关键词策略分析、广告关键词挖掘。",
+  "category": "voc",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-ecom/forward",
+    "headers": {
+      "Content-Type": "application/json",
+    "Authorization": "Bearer {{vocToken}}"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "ASIN"
+    ],
+    "properties": {
+      "ASIN": {
+        "type": "string",
+        "description": "Amazon 产品 ASIN(10位大写字母数字)",
+        "pattern": "^[A-Z0-9]{10}$"
+      },
+      "domain": {
+        "type": "integer",
+        "description": "Amazon 站点 ID: 1=amazon.com",
+        "default": 1
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "path": "/api/ASINRequestKeyword",
+      "method": "POST",
+      "query": {
+        "domain": "{{domain}}"
+      },
+      "body": {
+        "ASIN": "{{ASIN}}"
+      }
+    }
+  },
+  "response": {
+    "type": "array",
+    "description": "关键词列表",
+    "items": {
+      "type": "object",
+      "properties": {
+        "Keyword": {
+          "type": "string",
+          "description": "关键词"
+        },
+        "SearchVolume": {
+          "type": "integer",
+          "description": "月搜索量"
+        },
+        "Rank": {
+          "type": "integer",
+          "description": "该ASIN在此关键词下的排名"
+        },
+        "CompetitorCount": {
+          "type": "integer",
+          "description": "竞争产品数"
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "反查竞品关键词",
+      "input": {
+        "ASIN": "B0B24QJ217",
+        "domain": 1
+      },
+      "description": "查看 COCORRINA Reed Diffuser 排名靠前的搜索关键词"
+    }
+  ],
+  "reportMapping": {
+    "slides": [
+      "广告关键词引擎(Slide15)"
+    ],
+    "dataPoints": [
+      "竞品关键词列表",
+      "搜索排名",
+      "搜索量"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 61 - 0
dist/skills/asin-sales-volume/SKILL.md

@@ -0,0 +1,61 @@
+---
+name: asin-sales-volume
+description: 查询指定 ASIN 的日/周/月销量及收入估算。适用于单品市场规模计算、品类 Top 产品销售额汇总、竞品销售力对标。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# asin-sales-volume
+
+## 功能用途
+
+获取单个 ASIN 的销量和收入估算数据,量化产品的市场规模。
+
+**核心业务场景:**
+- 单品市场规模计算(月销量 × 售价 = 月流水)
+- 品类 Top 产品销售额汇总(报告 Slide 品类市场规模)
+- 竞品销售力对标(自身 vs 竞品月销量对比)
+
+## 调用链(Workflow)
+
+```
+上游: product-search(Pattern) 或 category-products(NodeId) → 获取 ASIN 列表
+本步: asin-sales-volume(ASIN) → 获取单品月销量和收入
+汇总: 对 Top 20 ASIN 批量调用 → 计算品类总规模
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| ASIN | string | ✅ | Amazon 产品 ASIN(10位大写字母数字,如 B0CSVRWJ1H) |
+| domain | integer | ❌ | 站点 ID: 1=amazon.com 2=amazon.co.uk 3=amazon.de(默认 1) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-ecom/forward`
+
+```json
+{
+  "path": "/api/AsinSalesVolume",
+  "method": "POST",
+  "query": { "domain": 1 },
+  "body": { "ASIN": "B0CSVRWJ1H" }
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| MonthlySales | 月均销量 → **品类规模计算核心指标** |
+| Revenue | 估算月收入(美元) → 单品市场规模 |
+| DailySales | 日均销量 → 短期趋势判断 |
+| WeeklySales | 周均销量 |
+| SalesTrend | 销量趋势数组 → 季节性分析 |
+
+## 依赖要求
+
+- 通过 `https://server.fmode.cn/api/voc-ecom/forward` 统一转发,认证已内置
+- ASIN 参数必须大写,`domain` 必须为整数

+ 144 - 0
dist/skills/asin-sales-volume/api-config.json

@@ -0,0 +1,144 @@
+{
+  "name": "asin-sales-volume",
+  "displayName": "ASIN 销量查询",
+  "description": "查询指定 ASIN 的销量数据,包括日销量、周销量、月销量趋势。用于市场规模估算、品类销售额计算。",
+  "category": "voc",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-ecom/forward",
+    "headers": {
+      "Content-Type": "application/json",
+    "Authorization": "Bearer {{vocToken}}"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "ASIN"
+    ],
+    "properties": {
+      "ASIN": {
+        "type": "string",
+        "description": "Amazon 产品 ASIN(10位大写字母数字)",
+        "pattern": "^[A-Z0-9]{10}$"
+      },
+      "domain": {
+        "type": "integer",
+        "description": "Amazon 站点 ID: 1=amazon.com",
+        "default": 1
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "path": "/api/AsinSalesVolume",
+      "method": "POST",
+      "query": {
+        "domain": "{{domain}}"
+      },
+      "body": {
+        "ASIN": "{{ASIN}}"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "销量数据",
+    "properties": {
+      "DailySales": {
+        "type": "integer",
+        "description": "日均销量"
+      },
+      "WeeklySales": {
+        "type": "integer",
+        "description": "周均销量"
+      },
+      "MonthlySales": {
+        "type": "integer",
+        "description": "月均销量"
+      },
+      "Revenue": {
+        "type": "number",
+        "description": "估算收入(美元)"
+      },
+      "SalesTrend": {
+        "type": "array",
+        "description": "销量趋势数据点"
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "查询产品销量",
+      "input": {
+        "ASIN": "B0CSVRWJ1H",
+        "domain": 1
+      },
+      "description": "查询该产品的日/周/月销量和收入估算"
+    }
+  ],
+  "reportMapping": {
+    "slides": [
+      "市场全景(Slide3)",
+      "品类矩阵(Slide6)"
+    ],
+    "dataPoints": [
+      "周均销量",
+      "周均销售额",
+      "销量趋势"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 273 - 0
dist/skills/brand-context-builder/SKILL.md

@@ -0,0 +1,273 @@
+---
+name: brand-context-builder
+description: VOC工作坊建档技能,支持两种模式:品牌研究模式(采集品牌信息)和产品分析模式(采集产品列表+分析维度)。验证输入格式,生成并持久化上下文文件,供后续所有分析技能引用。
+version: 2.0.0
+author: nkkj-BrainHack
+---
+
+# 品牌/产品上下文建档 (Brand & Product Context Builder)
+
+## 技能名称
+brand-context-builder
+
+## 技能目的
+作为 VOC 工作坊的**第一个环节**,通过结构化对话采集客户信息。支持两种模式:
+- **品牌研究模式 (brand-research)**:采集品牌核心信息,驱动完整5阶段工作坊
+- **产品分析模式 (product-analysis)**:采集具体产品列表+分析维度,按产品生成VOC报告
+
+后续所有分析技能从记忆文件读取上下文,避免重复询问。
+
+## 核心业务场景
+- **工作坊开场建档**:新客户首次启动时,引导式采集信息
+- **产品级VOC分析**:客户提供具体产品(Amazon/天猫链接),按产品跑分析
+- **增量补充**:已有建档但进入新阶段需要补充信息
+- **多客户管理**:为不同客户维护独立的上下文
+
+## 输入参数
+
+### 通用参数
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| analysisMode | string | 否 | `"brand-research"`(品牌模式) / `"product-analysis"`(产品模式) / `"auto"`(自动识别,默认) |
+| mode | string | 否 | `"full"`(完整建档,默认) / `"update"`(增量更新) |
+
+### 品牌研究模式参数
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| brandName | string | 条件 | 品牌英文名,brand-research模式必填 |
+| categoryKeywords | string[] | 条件 | 品类核心关键词,brand-research模式必填,至少1个 |
+| amazonDomain | integer | 否 | Amazon站点 1=US 2=UK 3=DE 4=JP,默认1 |
+| brandAsins | string[] | 条件 | 品牌代表ASIN,brand-research模式必填,3-5个 |
+| knownCompetitors | string[] | 否 | 已知竞品品牌名 |
+| competitorAsins | string[] | 否 | 已知竞品ASIN |
+| tiktokKeywords | string[] | 否 | TikTok搜索关键词(Session 4 补充) |
+| douyinKeywords | string[] | 否 | 抖音搜索关键词(Session 4 补充) |
+| workshopGoal | string | 条件 | 分析目标,brand-research模式必填 |
+
+### 产品分析模式参数
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| products | array | 条件 | 产品列表,product-analysis模式必填 |
+| products[].input | string | ✅ | 用户原始输入(URL/ASIN/产品名) |
+| products[].platform | string | 否 | 自动识别: `"amazon"` / `"tmall"` / `"taobao"` / `"name"` |
+| selectedDimensions | string[] | 否 | 选中的分析维度编号,默认["3"](评论VOC) |
+| vocSubDimensions | string[] | 否 | VOC子维度,默认全部 |
+
+## 验证规则
+
+### ASIN 格式验证
+- 必须以 `B0` 开头
+- 长度为 10 个字符
+- 仅含大写字母和数字
+- 验证失败时提示:`"ASIN格式不正确,应为B0开头的10位字母数字组合,如 B0CJ5K1234"`
+
+### 关键词验证
+- 非空字符串
+- 建议为英文(Amazon站点对应语言)
+- 去除首尾空格
+
+### 站点验证
+- 必须是 1/2/3/4 之一
+- 自动映射标签:1→"amazon.com" 2→"amazon.co.uk" 3→"amazon.de" 4→"amazon.co.jp"
+
+## 执行流程
+
+### 品牌研究模式 (brand-research) — Full 建档
+1. 检查是否已有 `brand-context.json`,如有则提示"已有建档,是否覆盖?"
+2. 按顺序采集 7 个字段(分步对话,不要一次性要求全部)
+3. 每个字段采集后立即验证
+4. 验证失败则友好提示并要求重新输入
+5. 全部采集完成后生成摘要请用户确认
+6. 用户确认后写入 `memory/brand-context.json`
+7. 设置 `memory/analysis-request.json` → `mode: "brand-research"`, 所有维度开启
+8. 初始化 `memory/workshop-progress.json`
+9. 初始化 `memory/calibration-notes.json`
+
+### 产品分析模式 (product-analysis)
+1. 接收用户提供的产品列表(URL/ASIN/产品名混合输入)
+2. 逐个解析产品:
+   - **Amazon URL/ASIN**:提取ASIN,调用 `product-detail-query` 获取标题和品类
+   - **天猫/淘宝 URL**:提取产品中文名,Agent翻译为英文关键词,调用 `product-search` 搜索Amazon对标产品,请用户确认选择
+   - **纯产品名**:同天猫逻辑
+3. 自动按品类分组(相似产品归入同一组)
+4. 展示产品清单+分组,请用户确认
+5. 引导用户选择分析维度(1-6选择,默认推荐3=评论VOC)
+6. 如选了维度3,询问VOC子维度偏好(默认全部)
+7. 将全部信息写入 `memory/analysis-request.json`
+8. 为每个品类组生成对应的 `memory/brand-context.json`(categoryKeywords = 组关键词)
+9. 初始化 `memory/workshop-progress.json`
+
+### Update 模式(增量更新)
+1. 读取现有 `analysis-request.json` 或 `brand-context.json`
+2. 仅更新传入的非空字段
+3. 重新验证更新后的完整数据
+4. 展示变更差异,请用户确认
+5. 写入更新
+
+### 产品输入自动识别规则
+
+| 输入格式 | 识别规则 | 处理方式 |
+|---------|---------|---------|
+| `https://www.amazon.com/dp/B0XXXXXXXX` | URL含 `amazon.com/dp/` | 提取ASIN,直接查询 |
+| `B0XXXXXXXX` | 正则 `^B0[A-Z0-9]{8}$` | 直接作为ASIN查询 |
+| `https://detail.tmall.com/item.htm?id=xxx` | URL含 `tmall.com` | 提取产品名→翻译→Amazon搜索桥接 |
+| `https://item.taobao.com/item.htm?id=xxx` | URL含 `taobao.com` | 同天猫逻辑 |
+| `https://detail.1688.com/offer/xxx.html` | URL含 `1688.com` | 同天猫逻辑 |
+| `全身气动按摩床垫` | 中文文本 | 翻译为英文→Amazon搜索桥接 |
+| `massage gun` | 英文文本 | 直接用于Amazon搜索 |
+
+## 对话引导规范
+
+### 语气
+- 自称"虾"或"AI情报实习生"
+- 称呼用户"老板"
+- 专业但亲切,不刻板
+
+### 分步采集原则
+- **每次只问一个问题**,不要一次性列出所有需要的信息
+- 收到回答后先确认,再问下一个
+- 对可选字段明确告知"可以跳过"
+- 提供输入示例降低认知门槛
+
+### 错误处理
+- ASIN 格式错误:给出正确格式示例,要求重新输入
+- 关键词为空:解释为什么需要,给出品类示例
+- 用户说"不知道"竞品:回复"没关系,后面虾会帮你发现竞品"
+
+## 输出格式
+
+### 品牌研究模式输出
+
+```json
+{
+  "success": true,
+  "analysisMode": "brand-research",
+  "brandContext": {
+    "clientId": "自动生成UUID",
+    "brandName": "COCORRINA",
+    "categoryKeywords": ["reed diffuser", "aroma diffuser"],
+    "amazonDomain": 1,
+    "amazonDomainLabel": "amazon.com",
+    "brandAsins": ["B0CJ5KXXXX", "B0DJ6LYYYY"],
+    "knownCompetitors": ["NEST New York"],
+    "competitorAsins": [],
+    "confirmedCompetitors": [],
+    "tiktokKeywords": [],
+    "douyinKeywords": [],
+    "workshopGoal": "想了解品类机会和用户真正在意什么",
+    "createdAt": "2025-06-15T09:00:00Z",
+    "updatedAt": "2025-06-15T09:00:00Z",
+    "completeness": {
+      "brandName": true,
+      "categoryKeywords": true,
+      "amazonDomain": true,
+      "brandAsins": true,
+      "workshopGoal": true
+    }
+  },
+  "readyForSession1": true,
+  "missingFields": []
+}
+```
+
+### 产品分析模式输出
+
+```json
+{
+  "success": true,
+  "analysisMode": "product-analysis",
+  "analysisRequest": {
+    "clientId": "自动生成UUID",
+    "clientName": "健衡康复",
+    "mode": "product-analysis",
+    "products": [
+      {
+        "productId": "p1",
+        "platform": "tmall",
+        "originalName": "全身气动按摩床垫",
+        "bridgedAsin": "B0DRYQTZNM",
+        "bridgedSearchKeyword": "air pressure massage mattress",
+        "title": "RENPHO Air Pressure Massage Mat...",
+        "category": "Massage Equipment",
+        "status": "ready"
+      },
+      {
+        "productId": "p2",
+        "platform": "amazon",
+        "asin": "B0DRYQTZNM",
+        "title": "...",
+        "category": "Massage Equipment",
+        "status": "ready"
+      }
+    ],
+    "productGroups": [
+      {
+        "groupId": "g1",
+        "categoryKeyword": "massage mattress",
+        "categoryLabel": "按摩床垫",
+        "productIds": ["p1", "p2"]
+      }
+    ],
+    "selectedDimensions": {
+      "categoryLandscape": false,
+      "competitorComparison": true,
+      "reviewVoc": true,
+      "socialMedia": false,
+      "userPersona": false,
+      "fullReport": true
+    },
+    "vocSubDimensions": {
+      "voiceClassification": true,
+      "painPointInsight": true,
+      "featureSatisfaction": true,
+      "scenarioDashboard": true
+    }
+  },
+  "readyForAnalysis": true,
+  "totalProducts": 6,
+  "totalGroups": 3
+}
+```
+
+## 与其他技能的关系
+
+### 品牌研究模式
+```
+brand-context-builder (本技能)
+  ↓ 输出 brand-context.json + analysis-request.json(mode=brand-research)
+  ├→ category-landscape   (读取 categoryKeywords, amazonDomain)
+  ├→ brand-profile        (读取 brandName, brandAsins, categoryKeywords)
+  ├→ competitor-discovery  (读取 brandName, brandAsins, knownCompetitors)
+  ├→ review-batch-collection (读取 brandAsins + competitorAsins)
+  ├→ tiktok-category-voc  (读取 tiktokKeywords / categoryKeywords)
+  ├→ user-persona         (读取 categoryKeywords)
+  ├→ voc-proposal         (读取 brandName, categoryKeywords)
+  └→ html-report-generator(读取 brandName)
+```
+
+### 产品分析模式
+```
+brand-context-builder (本技能)
+  ↓ 输出 analysis-request.json(mode=product-analysis) + brand-context.json(per group)
+  │
+  ├→ [per product] product-detail-query (获取产品详情, Amazon产品)
+  ├→ [per tmall]   product-search       (跨平台桥接搜索, 天猫/淘宝产品)
+  │
+  ├→ [per group, if dim1] category-landscape (读取 group.categoryKeyword)
+  ├→ [per group, if dim2] competitor-discovery + comparison
+  ├→ [per product, if dim3] review-batch-collection → VOC分析链
+  │   ├→ review-sentiment-analysis → Prompt 3A → voiceClassification
+  │   ├→ review-pain-point-extraction → Prompt 3B → painPointInsight
+  │   ├→ [Agent合成] Prompt 3C → featureSatisfaction
+  │   └→ [Agent合成] Prompt 3D → scenarioDashboard
+  ├→ [per group, if dim4] tiktok/instagram 社媒技能
+  ├→ [per group, if dim5] user-persona
+  └→ [if dim6] voc-proposal + html-report-generator
+```
+
+## 对应工作坊环节
+阶段零「需求收集+建档」— 工作坊启动后的第一件事,在任何分析开始之前完成。
+支持品牌研究和产品分析两种入口。

+ 140 - 0
dist/skills/brand-context-builder/api-config.json

@@ -0,0 +1,140 @@
+{
+  "name": "brand-context-builder",
+  "displayName": "品牌上下文建档",
+  "description": "VOC工作坊品牌建档技能,通过结构化问答采集客户品牌信息,验证格式,生成并持久化品牌上下文文件供后续分析技能引用。",
+  "category": "workshop",
+  "version": "1.0.0",
+  "type": "conversational",
+  "parameters": {
+    "type": "object",
+    "required": [],
+    "properties": {
+      "mode": {
+        "type": "string",
+        "description": "建档模式: full=完整建档(默认), update=增量更新",
+        "enum": ["full", "update"],
+        "default": "full"
+      },
+      "brandName": {
+        "type": "string",
+        "description": "品牌英文名称"
+      },
+      "categoryKeywords": {
+        "type": "array",
+        "items": { "type": "string" },
+        "description": "品类核心英文关键词,至少1个,建议2-3个"
+      },
+      "amazonDomain": {
+        "type": "integer",
+        "description": "Amazon站点: 1=US(默认) 2=UK 3=DE 4=JP",
+        "default": 1,
+        "enum": [1, 2, 3, 4]
+      },
+      "brandAsins": {
+        "type": "array",
+        "items": { "type": "string", "pattern": "^B0[A-Z0-9]{8}$" },
+        "description": "品牌代表性ASIN列表,3-5个,B0开头10位"
+      },
+      "knownCompetitors": {
+        "type": "array",
+        "items": { "type": "string" },
+        "description": "已知竞品品牌名(可选)"
+      },
+      "competitorAsins": {
+        "type": "array",
+        "items": { "type": "string" },
+        "description": "已知竞品ASIN(可选)"
+      },
+      "tiktokKeywords": {
+        "type": "array",
+        "items": { "type": "string" },
+        "description": "TikTok搜索关键词(可选,Session 4补充)"
+      },
+      "douyinKeywords": {
+        "type": "array",
+        "items": { "type": "string" },
+        "description": "抖音搜索关键词(可选,Session 4补充)"
+      },
+      "workshopGoal": {
+        "type": "string",
+        "description": "客户希望通过分析解决的核心问题"
+      }
+    }
+  },
+  "validation": {
+    "asinFormat": {
+      "pattern": "^B0[A-Z0-9]{8}$",
+      "errorMessage": "ASIN格式不正确,应为B0开头的10位字母数字组合,如 B0CJ5K1234"
+    },
+    "domainMapping": {
+      "1": "amazon.com",
+      "2": "amazon.co.uk",
+      "3": "amazon.de",
+      "4": "amazon.co.jp"
+    }
+  },
+  "output": {
+    "type": "object",
+    "description": "品牌上下文对象,写入 memory/brand-context.json",
+    "properties": {
+      "success": { "type": "boolean" },
+      "brandContext": { "type": "object" },
+      "readyForSession1": { "type": "boolean" },
+      "missingFields": { "type": "array" }
+    }
+  },
+  "memoryFiles": {
+    "write": [
+      "memory/brand-context.json",
+      "memory/workshop-progress.json",
+      "memory/calibration-notes.json"
+    ],
+    "read": []
+  },
+  "usageExamples": [
+    {
+      "name": "完整建档",
+      "input": {
+        "mode": "full",
+        "brandName": "COCORRINA",
+        "categoryKeywords": ["reed diffuser", "aroma diffuser"],
+        "amazonDomain": 1,
+        "brandAsins": ["B0CJ5KXXXX", "B0DJ6LYYYY", "B0EK7MZZZZ"],
+        "workshopGoal": "想了解品类机会和用户真正在意什么"
+      },
+      "description": "新客户首次建档,采集全部必要信息"
+    },
+    {
+      "name": "增量更新-补充竞品",
+      "input": {
+        "mode": "update",
+        "knownCompetitors": ["NEST New York", "Yankee Candle"],
+        "competitorAsins": ["B0AAAA1111", "B0BBBB2222"]
+      },
+      "description": "Session 2 后补充确认的竞品信息"
+    },
+    {
+      "name": "增量更新-补充社媒关键词",
+      "input": {
+        "mode": "update",
+        "tiktokKeywords": ["reed diffuser", "#homedecor"],
+        "douyinKeywords": ["香薰", "无火香薰"]
+      },
+      "description": "Session 4 前补充社媒搜索关键词"
+    }
+  ],
+  "reportMapping": {
+    "brandName": "品牌名称",
+    "categoryKeywords": "品类关键词",
+    "amazonDomain": "Amazon站点",
+    "brandAsins": "品牌ASIN",
+    "workshopGoal": "分析目标",
+    "completeness": "建档完整度"
+  },
+  "tokenConfig": {
+    "required": false
+  },
+  "errorHandling": {
+    "conditions": []
+  }
+}

+ 125 - 0
dist/skills/brand-profile/SKILL.md

@@ -0,0 +1,125 @@
+---
+name: brand-profile
+description: 生成品牌六维量化画像,标注机会/风险标签、识别核心短板、输出竞争定位建议和《品牌认知校准卡》
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# 品牌六维画像 (Brand Profile Builder)
+
+## 技能名称
+brand-profile
+
+## 技能目的
+生成品牌六维量化画像,标注**机会/风险标签**、识别**核心短板**、输出**竞争定位建议**,输出《品牌认知校准卡》。
+
+## 输入参数
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| brandName | string | 是 | 品牌名称 |
+| brandAsins | string[] | 是 | 品牌核心ASIN列表 |
+| categoryKeyword | string | 是 | 品类关键词(用于品类基准对比) |
+| categoryLandscape | object | 否 | category-landscape 输出(如有则跳过重复查询) |
+| domain | integer | 否 | Amazon站点,默认1 |
+
+## 执行流程
+1. 批量调用 `product-detail-query` 获取品牌全部产品详情
+2. 批量调用 `asin-sales-volume` 获取各产品销量
+3. 采样调用 `product-reviews-query`(每个ASIN 1-2 页)获取评论概况
+4. 若无 categoryLandscape 输入,调用 `product-search` 获取品类基准数据
+5. 计算六维得分(0-100):
+   - **定价竞争力** (权重20%): 品牌均价 vs 品类中位价的偏离度
+   - **评分健康度** (权重20%): 平均评分 + 差评率(1-2星占比)
+   - **流量排名** (权重15%): BSR 中位数在品类中的百分位
+   - **销售效率** (权重15%): 品牌月销量 vs 品类均值
+   - **增长潜力** (权重15%): 新品比例 + 销量趋势 + 品类CR5位置
+   - **VOC口碑** (权重15%): 好评率 + 评论增速 + Helpful 比例
+6. 计算综合得分和品牌定位(四象限图坐标)
+7. **竞争定位建议**(新增):
+   - 机会标签: 从每个维度评分提取优势机会
+   - 风险标签: 识别低分维度作为风险点
+   - 核心短板: 最低分维度的具体诊断和改进建议
+   - 优先行动: 按紧迫度排序的改进任务
+8. 输出《品牌认知校准卡》
+
+## 调用的底层 Skill
+- `voc/product-detail-query` — 产品详情
+- `voc/asin-sales-volume` — 销量数据
+- `voc/product-reviews-query` — 评论概况采样
+- `voc/product-search` — 品类基准数据(如未传入categoryLandscape)
+
+## 返回格式
+```json
+{
+  "brandName": "COCORRINA",
+  "dimensions": {
+    "pricing": { "score": 78, "label": "贴合市场", "detail": "均价$24.99,品类中位价$27.99" },
+    "rating": { "score": 85, "label": "评分健康", "detail": "平均4.5分,差评率8.2%" },
+    "traffic": { "score": 70, "label": "排名中上", "detail": "BSR中位数2300" },
+    "salesEfficiency": { "score": 72, "label": "销量中等", "detail": "品牌月销3200,品类均值2800" },
+    "growthPotential": { "score": 65, "label": "有增长空间", "detail": "CR5=35.2%,品类分散" },
+    "vocReputation": { "score": 80, "label": "口碑良好", "detail": "好评率72%,评论月增56条" }
+  },
+  "overallScore": 75.2,
+  "positioning": {
+    "quadrant": "中价高质",
+    "x": 0.35,
+    "y": 0.72,
+    "xLabel": "价格(低→高)",
+    "yLabel": "评分(低→高)"
+  },
+  "strengths": ["评分健康,用户认可度高", "定价策略得当"],
+  "weaknesses": ["流量排名有提升空间", "增长潜力受限于品类分散"],
+  "opportunityTags": ["评分优秀(85分)", "口碑良好(80分)", "定价合理(78分)"],
+  "riskTags": ["增长势头放缓(65分)", "流量排名中等(70分)"],
+  "coreShortcoming": {
+    "dimension": "增长潜力",
+    "score": 65,
+    "diagnosis": "品类CR5=35.2%分散市场,增长主要受限于缺乏爆款SKU",
+    "advice": "聚焦核心SKU打爆款,配合PPC提升BSR排名"
+  },
+  "priorityActions": [
+    { "action": "核心SKU加大PPC投入提升流量", "priority": 1 },
+    { "action": "优化Listing关键词+主图提升转化", "priority": 2 },
+    { "action": "开发礼盒装变体拓展场景", "priority": 3 }
+  ],
+  "calibrationCard": "## COCORRINA 品牌认知校准卡\n| 维度 | 得分 | 判断 |\n..."
+}
+```
+
+## 核心业务场景
+- 品牌认知校准卡生成(6 维评分 + 四象限定位图 → 报告直接可用)
+- 自身品牌短板诊断(识别最低分维度 + 具体改进建议)
+- 竞争定位策略输出(机会标签 + 风险标签 + 优先行动清单)
+
+## 依赖
+- Amazon VOC API: `https://server.fmode.cn/api/voc-ecom/forward`(统一转发,认证已内置)
+- 内置 6 维评分算法(定价/评分/流量/销售/增长/口碑),每维 0-100 分加权求总分
+
+## 工作坊记忆集成
+
+当处于 VOC 工作坊流程中时,本技能支持从记忆文件自动读取参数:
+
+| 参数 | 记忆来源 | 字段路径 |
+|------|---------|---------|
+| brandName | `memory/brand-context.json` | `.brandName` |
+| brandAsins | `memory/brand-context.json` | `.brandAsins` |
+| categoryKeyword | `memory/brand-context.json` | `.categoryKeywords[0]` |
+| categoryLandscape | `memory/stage-1-output.json` | `.categoryLandscape` |
+| domain | `memory/brand-context.json` | `.amazonDomain` |
+
+**执行完毕后**,将输出写入 `memory/stage-2-output.json`(v2 schema),需填充:
+- `brandProfile.overallScore` — 品牌综合得分(0-100)
+- `brandProfile.dimensions` — 六维画像 { pricing, rating, traffic, sales, growth, reputation },每维含 score/rank/detail
+- `brandProfile.positioning` — 竞争定位描述
+- `brandProfile.strengths` / `weaknesses` — 品牌优劣势
+- `productDiagnosis` — 主力ASIN深度诊断(listing/图片/定价/评论健康度)
+- `competitorComparison.vulnerabilities` — 竞品漏洞列表
+- `competitorComparison.threats` — 竞品威胁列表
+- `pricingAnalysis` — 定价分析(弹性/推荐区间/毛利估算)
+- `competitorHealthComparison` — 品牌vs竞品健康度对比
+
+参考规范:`workshop/voc-report-schema-spec.md` Stage 2 章节。
+
+## 对应工作坊环节
+Day1 下午 13:30-14:30「教虾认品牌」— 输出《品牌六维画像》+《品牌认知校准卡》

+ 232 - 0
dist/skills/brand-profile/api-config.json

@@ -0,0 +1,232 @@
+{
+  "name": "brand-profile",
+  "displayName": "品牌六维画像",
+  "description": "生成品牌六维量化画像,标注机会/风险标签、识别核心短板、输出竞争定位建议和《品牌认知校准卡》",
+  "category": "synthesis",
+  "version": "1.3.0",
+  "type": "orchestration",
+  "parameters": {
+    "brandName": {
+      "type": "string",
+      "required": true,
+      "description": "品牌名称"
+    },
+    "brandAsins": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": true,
+      "description": "品牌核心ASIN列表"
+    },
+    "categoryKeyword": {
+      "type": "string",
+      "required": true,
+      "description": "品类关键词(用于品类基准对比)"
+    },
+    "categoryLandscape": {
+      "type": "object",
+      "required": false,
+      "description": "category-landscape 输出(如有则跳过重复查询)"
+    },
+    "domain": {
+      "type": "integer",
+      "required": false,
+      "default": 1,
+      "description": "Amazon站点(1=美国)"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "批量获取品牌产品详情",
+      "forEach": "brandAsins",
+      "api": {
+        "service": "SorftimeApiService.getProductDetail",
+        "endpoint": "/api/ProductRequest",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "ASIN": "${asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "productDetails",
+      "responseExtract": "{ Title, Brand, SalesPrice, Ratings, RatingsCount, BSR, Category, MonthlySales, fiveStartRatings, fourStartRatings, threeStartRatings, twoStartRatings, oneStartRatings }"
+    },
+    {
+      "step": 2,
+      "name": "批量获取销量数据",
+      "forEach": "brandAsins",
+      "api": {
+        "service": "SorftimeApiService.getAsinSalesVolume",
+        "endpoint": "/api/AsinSalesVolume",
+        "method": "POST",
+        "requestBody": { "ASIN": "${asin}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "salesData"
+    },
+    {
+      "step": 3,
+      "name": "采样获取评论概况",
+      "forEach": "brandAsins",
+      "api": {
+        "service": "SorftimeApiService.getProductReviews",
+        "endpoint": "/api/ProductReviewsQuery",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "ASIN": "${asin}", "PageIndex": "1" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "reviewSamples"
+    },
+    {
+      "step": 4,
+      "name": "获取品类基准数据(如未传入categoryLandscape)",
+      "condition": "!categoryLandscape",
+      "api": {
+        "service": "SorftimeApiService.searchProductsByQuery",
+        "endpoint": "/api/ProductQuery",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "Page": 1, "Query": "1", "QueryType": "7", "Pattern": "${categoryKeyword}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "categoryBaseline"
+    },
+    {
+      "step": 5,
+      "name": "六维评分计算",
+      "type": "compute",
+      "logic": "calcSixDimensions(productDetails, salesData, reviewSamples, categoryBaseline || categoryLandscape)",
+      "algorithm": {
+        "pricing": { "weight": 0.20, "method": "品牌均价 vs 品类中位价的偏离度" },
+        "rating": { "weight": 0.20, "method": "平均评分 + 差评率(1-2星占比)" },
+        "traffic": { "weight": 0.15, "method": "BSR中位数在品类中的百分位" },
+        "salesEfficiency": { "weight": 0.15, "method": "品牌月销量 vs 品类均值" },
+        "growthPotential": { "weight": 0.15, "method": "新品比例 + 销量趋势 + 品类CR5位置" },
+        "vocReputation": { "weight": 0.15, "method": "好评率 + 评论增速 + Helpful比例" }
+      },
+      "output": "dimensions"
+    },
+    {
+      "step": 6,
+      "name": "竞争定位+标签+建议",
+      "type": "compute",
+      "logic": "generatePositioning(dimensions, productDetails, brandName)",
+      "algorithm": {
+        "quadrant": "四象限图坐标(价格-评分)",
+        "opportunityTags": "从每个维度评分提取优势机会",
+        "riskTags": "识别低分维度作为风险点",
+        "coreShortcoming": "最低分维度的具体诊断和改进建议",
+        "priorityActions": "按紧迫度排序的改进任务"
+      },
+      "output": "positioning"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "brandName": { "type": "string" },
+      "dimensions": {
+        "type": "object",
+        "description": "六维评分",
+        "properties": {
+          "pricing": { "type": "object", "properties": { "score": { "type": "integer" }, "label": { "type": "string" }, "detail": { "type": "string" } } },
+          "rating": { "type": "object", "properties": { "score": { "type": "integer" }, "label": { "type": "string" }, "detail": { "type": "string" } } },
+          "traffic": { "type": "object", "properties": { "score": { "type": "integer" }, "label": { "type": "string" }, "detail": { "type": "string" } } },
+          "salesEfficiency": { "type": "object", "properties": { "score": { "type": "integer" }, "label": { "type": "string" }, "detail": { "type": "string" } } },
+          "growthPotential": { "type": "object", "properties": { "score": { "type": "integer" }, "label": { "type": "string" }, "detail": { "type": "string" } } },
+          "vocReputation": { "type": "object", "properties": { "score": { "type": "integer" }, "label": { "type": "string" }, "detail": { "type": "string" } } }
+        }
+      },
+      "overallScore": { "type": "number" },
+      "positioning": {
+        "type": "object",
+        "properties": {
+          "quadrant": { "type": "string" },
+          "x": { "type": "number" },
+          "y": { "type": "number" },
+          "xLabel": { "type": "string" },
+          "yLabel": { "type": "string" }
+        }
+      },
+      "strengths": { "type": "array", "items": { "type": "string" } },
+      "weaknesses": { "type": "array", "items": { "type": "string" } },
+      "opportunityTags": { "type": "array", "items": { "type": "string" } },
+      "riskTags": { "type": "array", "items": { "type": "string" } },
+      "coreShortcoming": {
+        "type": "object",
+        "properties": {
+          "dimension": { "type": "string" },
+          "score": { "type": "integer" },
+          "diagnosis": { "type": "string" },
+          "advice": { "type": "string" }
+        }
+      },
+      "priorityActions": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "properties": {
+            "action": { "type": "string" },
+            "priority": { "type": "integer" }
+          }
+        }
+      },
+      "calibrationCard": { "type": "string", "description": "品牌认知校准卡(Markdown格式)" }
+    }
+  },
+  "timeout": 300000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 2000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 131 - 0
dist/skills/category-landscape/SKILL.md

@@ -0,0 +1,131 @@
+---
+name: category-landscape
+description: 品类全景分析,计算CR5/HHI市场集中度,生成风险预警汇总和优先行动清单,输出《品类认知校准表》
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# 品类格局分析 (Category Landscape Analysis)
+
+## 技能名称
+category-landscape
+
+## 技能目的
+品类全景分析,计算CR5/HHI市场集中度,生成**风险预警汇总**和**优先行动清单**,输出《品类认知校准表》。
+
+## 输入参数
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| keywords | string[] | 是 | 品类核心关键词列表(如 ["reed diffuser", "aroma diffuser"]) |
+| domain | integer | 否 | Amazon站点,默认1(美国站) |
+| topN | integer | 否 | 分析的产品数量,默认100 |
+
+## 执行流程
+1. 对每个关键词调用 `product-search` 搜索 Top N 产品
+2. 批量调用 `asin-sales-volume` 获取各产品月销量
+3. 调用 `category-tree` 定位品类类目ID
+4. 调用 `keyword-search` 获取核心关键词搜索量和竞争度
+5. 调用 `keyword-search-trend` 获取关键词趋势(判断品类增长/衰退)
+6. 数据计算:
+   - **CR5**: 前5品牌销售额占品类总销售额的比例
+   - **HHI**: 赫芬达尔-赫希曼指数(各品牌市场份额平方和 × 10000)
+   - **市场规模**: 品类月销量总和、月销售额总和
+   - **价格带分布**: 按价格区间统计产品数量和销量占比
+   - **品牌集中度**: Top 10 品牌的市场份额
+   - **评分分布**: 品类整体评分水平
+   - **增长判断**: 基于搜索趋势判断品类处于增长/成熟/衰退期
+7. **风险预警汇总**(新增):
+   - 品牌集中度风险 / 低销量风险 / 评分风险 / 价格战风险 / 库存风险 / 合规风险
+   - 每项风险标注级别(high/medium/low)和具体描述
+8. **优先行动清单**(新增):
+   - 条件触发式优先级: Listing优化→SKU聚焦→促销→产品迭代→库存→差异化
+9. 输出《品类认知校准表》
+
+## 调用的底层 Skill
+- `voc/product-search` — 产品搜索
+- `voc/asin-sales-volume` — 销量数据
+- `voc/category-tree` — 类目定位
+- `voc/keyword-search` — 关键词搜索量
+- `voc/keyword-search-trend` — 关键词趋势
+
+## 返回格式
+```json
+{
+  "marketOverview": {
+    "totalProducts": 100,
+    "totalMonthlySales": 125000,
+    "totalMonthlyRevenue": 3750000,
+    "avgPrice": 30.0,
+    "medianPrice": 27.99,
+    "avgRating": 4.3,
+    "categoryStage": "成长期"
+  },
+  "concentration": {
+    "cr5": 35.2,
+    "cr10": 52.8,
+    "hhi": 850,
+    "interpretation": "品类集中度较低,市场分散,新品牌有进入机会"
+  },
+  "topBrands": [
+    { "brand": "NEST", "marketShare": 12.5, "productCount": 8, "avgPrice": 42.00, "avgRating": 4.6 },
+    { "brand": "Paddywax", "marketShare": 8.3, "productCount": 6, "avgPrice": 28.00, "avgRating": 4.4 }
+  ],
+  "priceBands": [
+    { "range": "$10-$20", "productCount": 20, "salesShare": 15, "avgRating": 4.0 },
+    { "range": "$20-$30", "productCount": 35, "salesShare": 40, "avgRating": 4.3 },
+    { "range": "$30-$50", "productCount": 30, "salesShare": 35, "avgRating": 4.5 },
+    { "range": "$50+", "productCount": 15, "salesShare": 10, "avgRating": 4.6 }
+  ],
+  "searchTrend": {
+    "mainKeyword": "reed diffuser",
+    "monthlySearchVolume": 45000,
+    "trendDirection": "rising",
+    "growthRate": 18.5
+  },
+  "calibrationTable": "| 指标 | 数值 | 解读 |\n|------|------|------|\n| CR5 | 35.2% | 集中度低,竞争分散 |\n| HHI | 850 | 非垄断市场 |\n| ...",
+  "riskAlerts": [
+    { "level": "medium", "title": "价格战风险", "description": "低价带产品占比20%且增速快,可能引发价格战" },
+    { "level": "low", "title": "品牌集中度低", "description": "CR5=35.2%,市场分散,新品牌有进入机会但竞争激烈" }
+  ],
+  "priorityActions": [
+    { "action": "优化Listing关键词布局", "priority": 1, "trigger": "品类增长期+搜索量上升" },
+    { "action": "聚焦黄金价格带SKU", "priority": 2, "trigger": "黄金带销量占比>35%" },
+    { "action": "设置多件折扣替代降价", "priority": 3, "trigger": "价格战风险检测" }
+  ]
+}
+```
+
+## 核心业务场景
+- 品类认知校准表生成(CR5/HHI + 价格带分布 + 增长趋势 → 报告直接可用)
+- 市场规模量化(月销量总和 × 均价 = 品类月销售额)
+- 风险预警汇总(价格战风险/集中度风险/增长衰退风险自动检测)
+
+## 依赖
+- Amazon VOC API: `https://server.fmode.cn/api/voc-ecom/forward`(统一转发,认证已内置)
+- 内置 CR5/HHI 集中度算法 + 价格带五分位划分
+
+## 工作坊记忆集成
+
+当处于 VOC 工作坊流程中时,本技能支持从记忆文件自动读取参数:
+
+| 参数 | 记忆来源 | 字段路径 |
+|------|---------|---------|
+| keywords | `memory/brand-context.json` | `.categoryKeywords` |
+| domain | `memory/brand-context.json` | `.amazonDomain` |
+
+**执行完毕后**,将完整输出写入 `memory/stage-1-output.json`(v2 schema),需填充:
+- `categoryLandscape.marketOverview` — 市场规模全量指标
+- `categoryLandscape.concentration` — CR5/CR10/HHI + topBrands
+- `categoryLandscape.priceBands` — 价格带分布 + 黄金价格带 + 空白机会
+- `categoryLandscape.searchTrend` — 搜索趋势 + 季节性 + YoY增长
+- `categoryLandscape.competitiveLandscape` — 进入壁垒/成熟度/FBA率/视频率/A+率
+- `categoryLandscape.healthScore` — 四维健康度评分(0-100)
+- `categoryLandscape.riskAlerts` — 风险预警列表
+- `categoryLandscape.priorityActions` — 优先行动建议
+
+同时更新 `memory/workshop-progress.json` 中 `session-1.status = "completed"`。
+
+参考规范:`workshop/voc-report-schema-spec.md` Stage 1 章节。
+
+## 对应工作坊环节
+Day1 上午 09:00-12:00「教虾认品类」— 输出《品类健康度评分》+《品类认知校准表》

+ 275 - 0
dist/skills/category-landscape/api-config.json

@@ -0,0 +1,275 @@
+{
+  "name": "category-landscape",
+  "displayName": "品类格局分析",
+  "description": "品类全景分析,计算CR5/HHI市场集中度,生成风险预警汇总和优先行动清单,输出《品类认知校准表》",
+  "category": "synthesis",
+  "version": "1.3.0",
+  "type": "orchestration",
+  "parameters": {
+    "keywords": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": true,
+      "description": "品类核心关键词列表"
+    },
+    "domain": {
+      "type": "integer",
+      "required": false,
+      "default": 1,
+      "description": "Amazon站点(1=美国)"
+    },
+    "topN": {
+      "type": "integer",
+      "required": false,
+      "default": 100,
+      "description": "分析的产品数量"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "搜索品类Top N产品",
+      "forEach": "keywords",
+      "api": {
+        "service": "SorftimeApiService.searchProductsByQuery",
+        "endpoint": "/api/ProductQuery",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "Page": 1, "Query": "1", "QueryType": "7", "Pattern": "${keyword}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "searchResults",
+      "responseExtract": "Array<{ Asin, Title, Price, Rating, RatingsCount, MonthlySales, Brand, BSR, Photo }>"
+    },
+    {
+      "step": 2,
+      "name": "批量获取销量数据",
+      "forEach": "searchResults[].Asin (去重)",
+      "api": {
+        "service": "SorftimeApiService.getAsinSalesVolume",
+        "endpoint": "/api/AsinSalesVolume",
+        "method": "POST",
+        "requestBody": { "ASIN": "${asin}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "salesData"
+    },
+    {
+      "step": 3,
+      "name": "定位品类类目",
+      "api": {
+        "service": "SorftimeApiService.getCategoryTree",
+        "endpoint": "/api/CategoryTree",
+        "method": "POST",
+        "requestBody": { "keyword": "${keywords[0]}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "categoryTree"
+    },
+    {
+      "step": 4,
+      "name": "获取核心关键词搜索量和竞争度",
+      "forEach": "keywords",
+      "api": {
+        "service": "SorftimeApiService.searchKeywords",
+        "endpoint": "/api/KeywordQuery",
+        "method": "POST",
+        "requestBody": { "Keyword": "${keyword}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "keywordData"
+    },
+    {
+      "step": 5,
+      "name": "获取关键词趋势",
+      "forEach": "keywords",
+      "api": {
+        "service": "SorftimeApiService.getKeywordTrend",
+        "endpoint": "/api/KeywordSearchTrend",
+        "method": "POST",
+        "requestBody": { "Keyword": "${keyword}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "keywordTrend"
+    },
+    {
+      "step": 6,
+      "name": "市场集中度+价格带+增长判断计算",
+      "type": "compute",
+      "logic": "analyzeMarket(searchResults, salesData, keywordData, keywordTrend)",
+      "algorithm": {
+        "cr5": "前5品牌销售额占品类总销售额的比例",
+        "cr10": "前10品牌销售额占比",
+        "hhi": "赫芬达尔-赫希曼指数(各品牌市场份额平方和 × 10000)",
+        "marketSize": "品类月销量总和、月销售额总和",
+        "priceBands": "按价格区间统计产品数量和销量占比",
+        "brandConcentration": "Top 10 品牌的市场份额",
+        "ratingDistribution": "品类整体评分水平",
+        "growthStage": "基于搜索趋势判断品类处于增长/成熟/衰退期"
+      },
+      "output": "marketAnalysis"
+    },
+    {
+      "step": 7,
+      "name": "风险预警汇总",
+      "type": "compute",
+      "logic": "generateRiskAlerts(marketAnalysis)",
+      "algorithm": {
+        "brandConcentrationRisk": "品牌集中度风险",
+        "lowSalesRisk": "低销量风险",
+        "ratingRisk": "评分风险",
+        "priceWarRisk": "价格战风险",
+        "inventoryRisk": "库存风险",
+        "complianceRisk": "合规风险",
+        "levelLabels": "每项风险标注级别(high/medium/low)和具体描述"
+      },
+      "output": "riskAlerts"
+    },
+    {
+      "step": 8,
+      "name": "优先行动清单",
+      "type": "compute",
+      "logic": "generatePriorityActions(marketAnalysis, riskAlerts)",
+      "algorithm": {
+        "triggers": "条件触发式优先级: Listing优化→SKU聚焦→促销→产品迭代→库存→差异化"
+      },
+      "output": "priorityActions"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "marketOverview": {
+        "type": "object",
+        "properties": {
+          "totalProducts": { "type": "integer" },
+          "totalMonthlySales": { "type": "integer" },
+          "totalMonthlyRevenue": { "type": "number" },
+          "avgPrice": { "type": "number" },
+          "medianPrice": { "type": "number" },
+          "avgRating": { "type": "number" },
+          "categoryStage": { "type": "string" }
+        }
+      },
+      "concentration": {
+        "type": "object",
+        "properties": {
+          "cr5": { "type": "number" },
+          "cr10": { "type": "number" },
+          "hhi": { "type": "integer" },
+          "interpretation": { "type": "string" }
+        }
+      },
+      "topBrands": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "properties": {
+            "brand": { "type": "string" },
+            "marketShare": { "type": "number" },
+            "productCount": { "type": "integer" },
+            "avgPrice": { "type": "number" },
+            "avgRating": { "type": "number" }
+          }
+        }
+      },
+      "priceBands": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "properties": {
+            "range": { "type": "string" },
+            "productCount": { "type": "integer" },
+            "salesShare": { "type": "number" },
+            "avgRating": { "type": "number" }
+          }
+        }
+      },
+      "searchTrend": {
+        "type": "object",
+        "properties": {
+          "mainKeyword": { "type": "string" },
+          "monthlySearchVolume": { "type": "integer" },
+          "trendDirection": { "type": "string" },
+          "growthRate": { "type": "number" }
+        }
+      },
+      "calibrationTable": { "type": "string", "description": "品类认知校准表(Markdown格式)" },
+      "riskAlerts": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "properties": {
+            "level": { "type": "string", "enum": ["high", "medium", "low"] },
+            "title": { "type": "string" },
+            "description": { "type": "string" }
+          }
+        }
+      },
+      "priorityActions": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "properties": {
+            "action": { "type": "string" },
+            "priority": { "type": "integer" },
+            "trigger": { "type": "string" }
+          }
+        }
+      }
+    }
+  },
+  "timeout": 300000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 2000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 63 - 0
dist/skills/category-products/SKILL.md

@@ -0,0 +1,63 @@
+---
+name: category-products
+description: 根据类目 NodeId 获取该 Amazon 类目下的产品列表,含 BSR、价格、评分、品牌等。适用于品类 Top 产品竞争格局分析、品牌分布统计、中国卖家占比计算。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# category-products
+
+## 功能用途
+
+根据类目节点 ID 获取该类目下的产品列表,是品类全景分析的核心数据来源。
+
+**核心业务场景:**
+- 品类竞争格局分析(Top 产品品牌分布、价格区间分布)
+- 中国卖家占比统计(报告 Slide 市场格局)
+- BSR 排名竞争态势(哪些品牌占据 Top 10)
+
+## 调用链(Workflow)
+
+```
+上游: category-tree(domain) → 获取类目树 → 找到目标品类 NodeId
+本步: category-products(NodeId) → 获取类目 Top 产品列表
+下游: product-detail-query(ASIN) → 获取具体产品完整数据
+下游: asin-sales-volume(ASIN) → 获取产品销量估算品类总规模
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| NodeId | string | ✅ | Amazon 类目节点 ID(从 category-tree 的 NodeId 字段获取) |
+| domain | integer | ❌ | 站点 ID: 1=amazon.com 2=amazon.co.uk 3=amazon.de(默认 1) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-ecom/forward`
+
+```json
+{
+  "path": "/api/CategoryProducts",
+  "method": "POST",
+  "query": { "domain": 1 },
+  "body": { "NodeId": "3734931" }
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| Asin | 产品 ASIN → **传入 product-detail-query / asin-sales-volume** |
+| BSR | BSR 排名 → 类目竞争格局分析 |
+| Brand | 品牌名 → **品牌分布统计,识别中国卖家** |
+| Price | 售价 → 品类价格区间分布 |
+| Rating | 评分 |
+| RatingsCount | 评论数 → 产品成熟度判断 |
+
+## 依赖要求
+
+- 通过 `https://server.fmode.cn/api/voc-ecom/forward` 统一转发,认证已内置
+- NodeId 需从 category-tree 返回结果中获取

+ 156 - 0
dist/skills/category-products/api-config.json

@@ -0,0 +1,156 @@
+{
+  "name": "category-products",
+  "displayName": "Amazon 类目产品查询",
+  "description": "根据类目 ID 获取该类目下的产品列表。用于获取品类 Top 产品、分析品类竞争格局、统计品牌分布和中国卖家占比。",
+  "category": "voc",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-ecom/forward",
+    "headers": {
+      "Content-Type": "application/json",
+    "Authorization": "Bearer {{vocToken}}"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "NodeId"
+    ],
+    "properties": {
+      "NodeId": {
+        "type": "string",
+        "description": "Amazon 类目节点 ID,可通过 category_tree 接口获取"
+      },
+      "domain": {
+        "type": "integer",
+        "description": "Amazon 站点 ID: 1=amazon.com",
+        "default": 1
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "path": "/api/CategoryProducts",
+      "method": "POST",
+      "query": {
+        "domain": "{{domain}}"
+      },
+      "body": {
+        "NodeId": "{{NodeId}}"
+      }
+    }
+  },
+  "response": {
+    "type": "array",
+    "description": "类目下的产品列表",
+    "items": {
+      "type": "object",
+      "properties": {
+        "Asin": {
+          "type": "string",
+          "description": "产品 ASIN"
+        },
+        "Title": {
+          "type": "string",
+          "description": "产品标题"
+        },
+        "Price": {
+          "type": "number",
+          "description": "售价"
+        },
+        "Rating": {
+          "type": "number",
+          "description": "评分"
+        },
+        "RatingsCount": {
+          "type": "integer",
+          "description": "评论数"
+        },
+        "BSR": {
+          "type": "integer",
+          "description": "BSR 排名"
+        },
+        "Brand": {
+          "type": "string",
+          "description": "品牌"
+        }
+      }
+    }
+  },
+  "relatedSkills": [
+    "category_tree"
+  ],
+  "usageExamples": [
+    {
+      "name": "获取类目产品列表",
+      "input": {
+        "NodeId": "3734931",
+        "domain": 1
+      },
+      "description": "获取指定类目下的产品列表"
+    }
+  ],
+  "reportMapping": {
+    "slides": [
+      "市场全景(Slide3)"
+    ],
+    "dataPoints": [
+      "品类产品列表",
+      "品牌分布",
+      "价格带分析"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 57 - 0
dist/skills/category-tree/SKILL.md

@@ -0,0 +1,57 @@
+---
+name: category-tree
+description: 获取 Amazon 完整类目层级树结构,用于定位目标品类的 NodeId。适用于品类定位、竞品所在子类目发现、BSR 类目分析起点。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# category-tree
+
+## 功能用途
+
+获取 Amazon 类目层级树,找到目标品类的 NodeId 以支持后续品类分析。
+
+**核心业务场景:**
+- 品类定位(找到 'Reed Diffusers' 或 'Candle Warmers' 的精确 NodeId)
+- 竞品子类目发现(确认竞品 BSR 所在的二级/三级类目)
+- 类目层级关系梳理(报告品类结构 Slide)
+
+## 调用链(Workflow)
+
+```
+本步: category-tree() → 获取全类目树 → 找到目标品类 NodeId
+下游: category-products(NodeId) → 获取该类目下 Top 产品列表
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| domain | integer | ❌ | 站点 ID: 1=amazon.com 2=amazon.co.uk 3=amazon.de(默认 1) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-ecom/forward`
+
+```json
+{
+  "path": "/api/CategoryTree",
+  "method": "POST",
+  "query": { "domain": 1 },
+  "body": {}
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| NodeId | 类目节点 ID → **传入 category-products 的 NodeId** |
+| Name | 类目名称 → 定位目标品类 |
+| Children | 子类目列表 → 递归查找精确子类目 |
+
+## 依赖要求
+
+- 通过 `https://server.fmode.cn/api/voc-ecom/forward` 统一转发,认证已内置
+- 返回完整类目树,需在结果中查找目标类目名称对应的 NodeId

+ 128 - 0
dist/skills/category-tree/api-config.json

@@ -0,0 +1,128 @@
+{
+  "name": "category-tree",
+  "displayName": "Amazon 类目树查询",
+  "description": "获取 Amazon 类目层级树结构,用于定位目标品类的类目 ID,再通过 category_products 获取该类目下的产品列表。",
+  "category": "voc",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-ecom/forward",
+    "headers": {
+      "Content-Type": "application/json",
+    "Authorization": "Bearer {{vocToken}}"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "properties": {
+      "domain": {
+        "type": "integer",
+        "description": "Amazon 站点 ID: 1=amazon.com",
+        "default": 1
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "path": "/api/CategoryTree",
+      "method": "POST",
+      "query": {
+        "domain": "{{domain}}"
+      },
+      "body": {}
+    }
+  },
+  "response": {
+    "type": "array",
+    "description": "类目树节点数组",
+    "items": {
+      "type": "object",
+      "properties": {
+        "NodeId": {
+          "type": "string",
+          "description": "类目节点 ID"
+        },
+        "Name": {
+          "type": "string",
+          "description": "类目名称"
+        },
+        "Children": {
+          "type": "array",
+          "description": "子类目列表"
+        }
+      }
+    }
+  },
+  "relatedSkills": [
+    "category_products"
+  ],
+  "usageExamples": [
+    {
+      "name": "获取美国站类目树",
+      "input": {
+        "domain": 1
+      },
+      "description": "获取 amazon.com 的完整类目层级结构"
+    }
+  ],
+  "reportMapping": {
+    "slides": [
+      "市场全景(Slide3)"
+    ],
+    "dataPoints": [
+      "品类类目定位"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 89 - 0
dist/skills/competitor-bsr-tracking/SKILL.md

@@ -0,0 +1,89 @@
+---
+name: competitor-bsr-tracking
+description: 追踪竞品BSR/销量/价格变化趋势,生成增长路径分析和风险预警汇总
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# 竞品BSR排名追踪 (Competitor BSR Tracking)
+
+## 技能名称
+competitor-bsr-tracking
+
+## 技能目的
+追踪竞品BSR/销量/价格变化趋势,生成**增长路径分析**(层级定位/日销差距/SKU聚焦)和**风险预警汇总**。
+
+## 输入参数
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| competitorAsins | string[] | 是 | 竞品ASIN列表 |
+| domain | integer | 否 | Amazon站点,默认1 |
+
+## 执行流程
+1. 批量调用 `product-monitor` 获取竞品的历史监控数据
+2. 批量调用 `product-detail-query` 获取竞品当前状态
+3. 分析计算:
+   - **BSR趋势**: 近7/14/30天BSR变化方向和幅度
+   - **销量趋势**: 日销量/月销量趋势,环比增减
+   - **价格变动**: 价格调整记录,是否在做促销
+   - **评分变化**: 评分和评论数的变化趋势
+   - **预警信号**: 识别异常变化(如BSR大幅下降=销量暴涨、突然降价=促销战)
+4. **增长路径分析**(新增):
+   - 层级定位: 头部(Top10%)/腰部(10-40%)/尾部(40%+)
+   - 日销差距: 距上一层级门槛还差多少日销
+   - SKU聚焦建议 + 关键词建议
+5. **风险预警汇总**(新增):
+   - BSR连续下降/评分下滑/价格战/库存/合规多维检测
+6. 生成竞品动态报告
+
+## 调用的底层 Skill
+- `voc/product-monitor` — BSR/价格/评分历史数据
+- `voc/product-detail-query` — 当前产品状态
+
+## 返回格式
+```json
+{
+  "tracking": [
+    {
+      "asin": "B0CSVRWJ1H",
+      "brand": "NEST",
+      "currentBsr": 1200,
+      "bsrTrend": { "7d": -15, "14d": -22, "30d": -8 },
+      "salesTrend": { "7d": 18, "14d": 25, "30d": 10 },
+      "priceChange": { "current": 38.00, "previous": 42.00, "changePercent": -9.5 },
+      "ratingChange": { "current": 4.5, "previous": 4.4, "newReviews": 56 },
+      "alerts": [
+        { "type": "price_drop", "severity": "medium", "message": "近14天降价9.5%" },
+        { "type": "bsr_surge", "severity": "high", "message": "BSR 7天下降15%,销量可能暴涨" }
+      ]
+    }
+  ],
+  "summary": {
+    "mostActive": "B0CSVRWJ1H",
+    "biggestThreat": "NEST品牌正在积极降价抢量",
+    "opportunityWindow": "竞品A评分下降,可针对其差评痛点发力"
+  },
+  "growthPath": {
+    "currentTier": "腰部(Top25%)",
+    "nextTierThreshold": { "dailySales": 150, "gap": 45 },
+    "skuAdvice": "聚焦核心SKU打爆款,避免资源分散",
+    "keywordAdvice": "主攻“reed diffuser long lasting”等长尾词提升排名"
+  },
+  "riskAlerts": [
+    { "level": "high", "title": "BSR连续下降", "description": "7天BSR下降15%,销量可能被竞品赶超" },
+    { "level": "medium", "title": "价格战风险", "description": "竞品A近14天降价9.5%" }
+  ]
+}
+```
+
+## 核心业务场景
+- 竞品动态追踪(日常监控竞品 BSR/价格/评分变化)
+- 价格战预警(检测竞品降价或 BSR 暴涨信号)
+- 增长路径定位(判断自身处于头部/腰部/尾部并量化差距)
+
+## 依赖
+- Amazon VOC API: `https://server.fmode.cn/api/voc-ecom/forward`(统一转发,认证已内置)
+- 需要 competitor-discovery 输出的竞品 ASIN 列表
+
+## 对应工作坊环节
+Day2 上午 竞品VOC深度分析 辅助数据

+ 199 - 0
dist/skills/competitor-bsr-tracking/api-config.json

@@ -0,0 +1,199 @@
+{
+  "name": "competitor-bsr-tracking",
+  "displayName": "竞品BSR排名追踪",
+  "description": "追踪竞品BSR/销量/价格变化趋势,生成增长路径分析和风险预警汇总",
+  "category": "competitor-analysis",
+  "version": "1.3.0",
+  "type": "orchestration",
+  "parameters": {
+    "competitorAsins": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": true,
+      "description": "竞品ASIN列表"
+    },
+    "domain": {
+      "type": "integer",
+      "required": false,
+      "default": 1,
+      "description": "Amazon站点(1=美国)"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "批量获取竞品监控数据",
+      "forEach": "competitorAsins",
+      "api": {
+        "service": "SorftimeApiService.getMonitorData",
+        "endpoint": "/api/MonitorQuery",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "ASIN": "${asin}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "monitorData",
+      "responseExtract": "{ PriceHistory, RankHistory, RatingHistory, ReviewCountHistory, SellerCount }"
+    },
+    {
+      "step": 2,
+      "name": "批量获取竞品当前状态",
+      "forEach": "competitorAsins",
+      "api": {
+        "service": "SorftimeApiService.getProductDetail",
+        "endpoint": "/api/ProductRequest",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "ASIN": "${asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "competitorDetails",
+      "responseExtract": "{ Title, Brand, SalesPrice, Ratings, RatingsCount, BSR, MonthlySales, Category }"
+    },
+    {
+      "step": 3,
+      "name": "BSR/销量/价格趋势分析",
+      "type": "compute",
+      "logic": "analyzeTrends(monitorData, competitorDetails)",
+      "algorithm": {
+        "bsrTrend": "近7/14/30天BSR变化方向和幅度百分比",
+        "salesTrend": "日销量/月销量趋势,环比增减百分比",
+        "priceChange": "价格调整记录,是否在做促销",
+        "ratingChange": "评分和评论数的变化趋势",
+        "alerts": "识别异常变化: BSR大幅下降=销量暴涨, 突然降价=促销战"
+      },
+      "output": "tracking"
+    },
+    {
+      "step": 4,
+      "name": "增长路径分析",
+      "type": "compute",
+      "logic": "analyzeGrowthPath(tracking, competitorDetails)",
+      "algorithm": {
+        "tierClassification": "头部(Top10%)/腰部(10-40%)/尾部(40%+)",
+        "dailySalesGap": "距上一层级门槛还差多少日销",
+        "skuAdvice": "聚焦核心SKU打爆款建议",
+        "keywordAdvice": "主攻长尾词提升排名建议"
+      },
+      "output": "growthPath"
+    },
+    {
+      "step": 5,
+      "name": "风险预警汇总",
+      "type": "compute",
+      "logic": "generateRiskAlerts(tracking, competitorDetails)",
+      "algorithm": {
+        "bsrRisk": "BSR连续下降检测",
+        "ratingRisk": "评分下滑检测",
+        "priceWarRisk": "价格战风险检测",
+        "inventoryRisk": "库存风险推断",
+        "complianceRisk": "合规风险检测"
+      },
+      "output": "riskAlerts"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "tracking": {
+        "type": "array",
+        "description": "竞品追踪数据列表",
+        "items": {
+          "type": "object",
+          "properties": {
+            "asin": { "type": "string" },
+            "brand": { "type": "string" },
+            "currentBsr": { "type": "integer" },
+            "bsrTrend": { "type": "object", "properties": { "7d": { "type": "number" }, "14d": { "type": "number" }, "30d": { "type": "number" } } },
+            "salesTrend": { "type": "object", "properties": { "7d": { "type": "number" }, "14d": { "type": "number" }, "30d": { "type": "number" } } },
+            "priceChange": { "type": "object", "properties": { "current": { "type": "number" }, "previous": { "type": "number" }, "changePercent": { "type": "number" } } },
+            "ratingChange": { "type": "object", "properties": { "current": { "type": "number" }, "previous": { "type": "number" }, "newReviews": { "type": "integer" } } },
+            "alerts": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" }, "severity": { "type": "string" }, "message": { "type": "string" } } } }
+          }
+        }
+      },
+      "summary": {
+        "type": "object",
+        "properties": {
+          "mostActive": { "type": "string" },
+          "biggestThreat": { "type": "string" },
+          "opportunityWindow": { "type": "string" }
+        }
+      },
+      "growthPath": {
+        "type": "object",
+        "properties": {
+          "currentTier": { "type": "string" },
+          "nextTierThreshold": { "type": "object", "properties": { "dailySales": { "type": "integer" }, "gap": { "type": "integer" } } },
+          "skuAdvice": { "type": "string" },
+          "keywordAdvice": { "type": "string" }
+        }
+      },
+      "riskAlerts": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "properties": {
+            "level": { "type": "string", "enum": ["high", "medium", "low"] },
+            "title": { "type": "string" },
+            "description": { "type": "string" }
+          }
+        }
+      }
+    }
+  },
+  "timeout": 120000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 2000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 96 - 0
dist/skills/competitor-discovery/SKILL.md

@@ -0,0 +1,96 @@
+---
+name: competitor-discovery
+description: 根据品类关键词和自身品牌信息,自动发现并筛选直接竞品
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# 竞品发现与筛选 (Competitor Discovery)
+
+## 技能名称
+competitor-discovery
+
+## 技能目的
+根据品类关键词和自身品牌信息,自动发现并筛选出 3-5 家直接竞品,输出竞品基础档案并生成竞争格局分析报告。
+
+## 输入参数
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| categoryKeyword | string | 是 | 品类核心关键词(如 "reed diffuser") |
+| ownBrand | string | 是 | 自身品牌名称 |
+| ownAsins | string[] | 否 | 自身品牌核心ASIN列表 |
+| competitorCount | integer | 否 | 需要筛选的竞品数量,默认5 |
+| domain | integer | 否 | Amazon站点,默认1(美国站) |
+| priceRange | object | 否 | 价格带过滤 {min, max},不传则自动按自身价格±30% |
+
+## 执行流程
+1. 调用 `product-search` 搜索品类关键词,获取 Top100 产品
+2. 调用 `similar-products` 基于自身ASIN查找相似产品
+3. 调用 `keyword-product-ranking` 获取核心关键词下的产品排名
+4. 对搜索结果按以下规则评分筛选:
+   - 价格带接近(±30%):权重 30%
+   - 品类相同/相近:权重 25%
+   - 评分相当(±0.5星):权重 20%
+   - 月销量在同一量级:权重 25%
+5. 排除自身品牌产品
+6. 按综合得分排序,取 Top N 作为直接竞品
+7. 批量调用 `product-detail-query` 获取竞品详情
+8. **竞争格局分析**(新增):
+   - CR5 计算(top5品牌销量占比)→ 垄断度分级(low/medium/high)
+   - 品牌对比矩阵: 各品牌SKU数/均价/均评分/市占率
+   - 差异化进攻策略 + 防守策略建议
+
+## 调用的底层 Skill
+- `voc/product-search` — 关键词搜索产品列表
+- `voc/similar-products` — ASIN相似产品发现
+- `voc/keyword-product-ranking` — 关键词下产品排名
+- `voc/product-detail-query` — 产品详情获取
+
+## 返回格式
+```json
+{
+  "competitors": [
+    {
+      "asin": "B0CSVRWJ1H",
+      "title": "...",
+      "brand": "...",
+      "price": 29.99,
+      "rating": 4.5,
+      "ratingsCount": 1234,
+      "monthlySales": 5600,
+      "bsr": 1200,
+      "category": "Home Fragrance",
+      "matchScore": 92.5,
+      "matchReasons": ["价格带接近", "品类相同", "评分相当"]
+    }
+  ],
+  "searchMeta": {
+    "totalCandidates": 100,
+    "filteredCount": 5,
+    "filterCriteria": { "priceRange": [20, 40], "ratingRange": [4.0, 5.0] }
+  },
+  "competitiveLandscape": {
+    "cr5": 42.3,
+    "monopolyLevel": "medium",
+    "monopolyLabel": "中等集中",
+    "brandComparison": [
+      { "brand": "NEST", "skuCount": 12, "avgPrice": 38.5, "avgRating": 4.5, "marketShare": 15.2 }
+    ],
+    "differentiationStrategy": "竞品均在高价段,可切入中价高质定位",
+    "attackStrategy": "针对竞品A的差评痛点(reed quality)发力",
+    "defenseStrategy": "强化自身好评亮点(scent quality)作为护城河"
+  }
+}
+```
+
+## 核心业务场景
+- 工作坊 Day1 竞品初筛(品类关键词 → 自动筛选 3-5 家直接竞品)
+- 定价对标(找到价格带/评分相近的竞品组)
+- 市场格局报告(CR5 垄断度分级)
+
+## 依赖
+- Amazon VOC API: `https://server.fmode.cn/api/voc-ecom/forward`(统一转发,认证已内置)
+- 需要先确定自身品牌 ASIN 和品类关键词
+
+## 对应工作坊环节
+Day1 下午 16:00-17:00「竞品初筛」

+ 257 - 0
dist/skills/competitor-discovery/api-config.json

@@ -0,0 +1,257 @@
+{
+  "name": "competitor-discovery",
+  "displayName": "竞品发现与筛选",
+  "description": "根据品类关键词和自身品牌信息,自动发现并筛选直接竞品",
+  "category": "competitor-analysis",
+  "version": "1.3.0",
+  "type": "orchestration",
+  "parameters": {
+    "categoryKeyword": {
+      "type": "string",
+      "required": true,
+      "description": "品类核心关键词"
+    },
+    "ownBrand": {
+      "type": "string",
+      "required": true,
+      "description": "自身品牌名称"
+    },
+    "ownAsins": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": false,
+      "description": "自身品牌核心ASIN列表"
+    },
+    "competitorCount": {
+      "type": "integer",
+      "required": false,
+      "default": 5,
+      "description": "需要筛选的竞品数量"
+    },
+    "domain": {
+      "type": "integer",
+      "required": false,
+      "default": 1,
+      "description": "Amazon站点(1=美国)"
+    },
+    "priceRange": {
+      "type": "object",
+      "required": false,
+      "properties": {
+        "min": { "type": "number" },
+        "max": { "type": "number" }
+      },
+      "description": "价格带过滤范围,不传则自动按自身价格±30%"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "搜索品类产品",
+      "api": {
+        "service": "SorftimeApiService.searchProductsByQuery",
+        "endpoint": "/api/ProductQuery",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "Page": 1, "Query": "1", "QueryType": "7", "Pattern": "${categoryKeyword}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "searchResults",
+      "responseExtract": "extractProductList(resp) → Array<{ Asin, Title, Price, Rating, RatingsCount, MonthlySales, Brand, BSR, Photo }>"
+    },
+    {
+      "step": 2,
+      "name": "查找相似产品",
+      "condition": "ownAsins.length > 0",
+      "api": {
+        "service": "SorftimeApiService.getSimilarProducts",
+        "endpoint": "/api/SimilarProductRealtimeRequest",
+        "method": "POST",
+        "requestBody": { "ASIN": "${ownAsins[0]}" },
+        "queryParams": { "domain": "${domain}" },
+        "note": "异步任务:需后续调用 /api/SimilarProductRealtimeRequestStatusQuery 和 /api/SimilarProductRealtimeRequestCollection"
+      },
+      "output": "similarResults"
+    },
+    {
+      "step": 3,
+      "name": "关键词排名产品",
+      "api": {
+        "service": "SorftimeApiService.getKeywordProductRanking",
+        "endpoint": "/api/KeywordProductRanking",
+        "method": "POST",
+        "requestBody": { "keyword": "${categoryKeyword}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "rankingResults",
+      "responseExtract": "Array<{ Asin, Title, Rank, Price, Rating, RatingsCount, IsSponsored }>"
+    },
+    {
+      "step": 4,
+      "name": "合并去重+竞品评分筛选",
+      "type": "compute",
+      "logic": "mergeAndScore(searchResults, similarResults, rankingResults, { ownBrand, priceRange, competitorCount })",
+      "algorithm": {
+        "merge": "按ASIN去重合并三个来源的产品",
+        "exclude": "排除ownBrand的产品",
+        "filter": "价格在ownPrice±30%范围内 && 评分>=3.5 && 同品类",
+        "score": "matchScore = priceProximity*0.3 + ratingProximity*0.2 + salesProximity*0.2 + rankInKeyword*0.15 + isSimilar*0.15",
+        "sort": "按matchScore降序,取top competitorCount个",
+        "brandGrouping": "按Brand字段分组,统计每个品牌的SKU数和总销量,用于排除自有品牌和识别竞品品牌"
+      },
+      "output": "filteredCompetitors"
+    },
+    {
+      "step": 5,
+      "name": "批量获取竞品详情",
+      "forEach": "filteredCompetitors",
+      "api": {
+        "service": "SorftimeApiService.getProductDetail",
+        "endpoint": "/api/ProductRequest",
+        "method": "POST",
+        "requestBody": { "ASIN": "${competitor.asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "competitorDetails",
+      "responseExtract": "{ Title, Brand, SalesPrice, Ratings, RatingsCount, BSR, Category, Photo, Feature, Description, VariationASIN, MonthlySales }"
+    },
+    {
+      "step": 6,
+      "name": "竞争格局分析",
+      "type": "compute",
+      "logic": "analyzeCompetitiveLandscape(filteredCompetitors, competitorDetails)",
+      "algorithm": {
+        "cr5": {
+          "method": "按品牌汇总销量 → top5品牌销量占比 = top5Sales/totalSales*100",
+          "fallback": "品牌数据不足时默认CR5=30(中等)"
+        },
+        "monopolyLevel": {
+          "low": "CR5<30 → '垄断度低,新卖家突围机会充足'",
+          "medium": "CR5 30-60 → '中等垄断,需差异化策略'",
+          "high": "CR5>60 → '垄断严重,不建议正面硬刚'"
+        },
+        "brandComparison": {
+          "method": "按Brand分组 → 统计skus/totalSales/totalPrice/totalRating → 取top5品牌",
+          "output": "Array<{ brand, skus, avgSales, avgPrice, avgRating }>"
+        },
+        "differentiationAdvice": {
+          "highMonopoly": "切入细分人群赛道,避开头部正面竞争",
+          "lowMonopoly": "新品有充足突围空间",
+          "always": "打造独家设计款,注册外观专利,构建长期溢价能力"
+        },
+        "attackStrategy": "针对TOP竞品的核心差评痛点打造本店独家卖点; 在Listing/主图中做直接对标,抢夺竞品精准用户"
+      },
+      "output": "competitiveLandscape"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "competitors": {
+        "type": "array",
+        "description": "筛选出的直接竞品列表",
+        "items": {
+          "type": "object",
+          "properties": {
+            "asin": { "type": "string" },
+            "title": { "type": "string" },
+            "brand": { "type": "string" },
+            "price": { "type": "number" },
+            "rating": { "type": "number" },
+            "ratingsCount": { "type": "integer" },
+            "monthlySales": { "type": "integer" },
+            "bsr": { "type": "integer" },
+            "category": { "type": "string" },
+            "matchScore": { "type": "number" },
+            "matchReasons": { "type": "array", "items": { "type": "string" } }
+          }
+        }
+      },
+      "searchMeta": {
+        "type": "object",
+        "properties": {
+          "totalCandidates": { "type": "integer" },
+          "filteredCount": { "type": "integer" },
+          "filterCriteria": { "type": "object" }
+        }
+      },
+      "competitiveLandscape": {
+        "type": "object",
+        "description": "竞争格局分析(来自computeCompetition算法)",
+        "properties": {
+          "cr5": { "type": "number", "description": "Top5品牌销量集中度(0-100)" },
+          "monopolyLevel": { "type": "string", "enum": ["low", "medium", "high"] },
+          "monopolyLabel": { "type": "string" },
+          "brandComparison": {
+            "type": "array",
+            "items": {
+              "type": "object",
+              "properties": {
+                "brand": { "type": "string" },
+                "skus": { "type": "integer" },
+                "avgSales": { "type": "integer" },
+                "avgPrice": { "type": "number" },
+                "avgRating": { "type": "number" }
+              }
+            }
+          },
+          "differentiationAdvice": { "type": "array", "items": { "type": "string" } },
+          "attackStrategy": { "type": "array", "items": { "type": "string" } }
+        }
+      }
+    }
+  },
+  "timeout": 120000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 2000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 91 - 0
dist/skills/competitor-pricing-analysis/SKILL.md

@@ -0,0 +1,91 @@
+---
+name: competitor-pricing-analysis
+description: 分析竞品定价策略,包括5分位价格带分布、黄金价格带评分、毛利估算、促销建议和盈亏平衡销量分析
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# 竞品定价策略分析 (Competitor Pricing Analysis)
+
+## 技能名称
+competitor-pricing-analysis
+
+## 技能目的
+分析竞品定价策略,包括**5分位价格带**分布、黄金价格带评分、毛利估算、促销建议和盈亏平衡销量分析。
+
+## 输入参数
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| categoryKeyword | string | 是 | 品类关键词 |
+| competitorAsins | string[] | 是 | 竞品ASIN列表 |
+| ownPrice | number | 否 | 自身产品当前价格,用于对比定位 |
+| domain | integer | 否 | Amazon站点,默认1 |
+
+## 执行流程
+1. 调用 `product-search` 获取品类 Top100 产品价格数据
+2. 批量调用 `product-detail-query` 获取竞品详细定价信息(售价、标价、优惠券、FBA费用)
+3. 调用 `product-monitor` 获取竞品历史价格趋势
+4. 分析计算:
+   - **5分位价格带**: 按P20/P40/P60/P80划分为低价带/中低/黄金中价/中高/高价带,每带统计SKU数/均销量/均评分
+   - **黄金价格带评分**: bandScore = avgSales×0.5 + avgRating×20 + (skuCount>0?10:0),最高分为量利平衡最优带
+   - **竞品定价策略**: 每个竞品的定价模式(渗透定价/溢价定价/跟随定价)
+   - **毛利估算**: 15%佣金+$5FBA+30%采购成本 → grossMargin%, 盈亏平衡销量
+   - **促销建议**: 价格战风险检测,优先多件折扣/满减替代降价
+5. 推荐自身最优定价区间及策略
+
+## 调用的底层 Skill
+- `voc/product-search` — 品类产品列表(含价格)
+- `voc/product-detail-query` — 详细定价信息
+- `voc/product-monitor` — 历史价格趋势
+
+## 返回格式
+```json
+{
+  "priceBands": [
+    { "range": "$10-$20", "label": "低价带", "productCount": 25, "avgRating": 4.1, "avgSales": 1200 },
+    { "range": "$20-$30", "label": "中价带", "productCount": 40, "avgRating": 4.3, "avgSales": 2800 },
+    { "range": "$30-$50", "label": "高价带", "productCount": 20, "avgRating": 4.5, "avgSales": 1500 }
+  ],
+  "competitorPricing": [
+    {
+      "asin": "B0CSVRWJ1H",
+      "brand": "NEST",
+      "currentPrice": 38.00,
+      "listPrice": 48.00,
+      "coupon": 5.00,
+      "pricingStrategy": "溢价定价",
+      "priceHistory": [{ "date": "2026-01", "price": 42.00 }, { "date": "2026-03", "price": 38.00 }],
+      "estimatedMargin": 0.42
+    }
+  ],
+  "ownPricePosition": {
+    "band": "中价带",
+    "percentile": 65,
+    "competitiveness": "中等偏上"
+  },
+  "recommendation": {
+    "optimalRange": [22, 28],
+    "goldenBand": "黄金中价带($20-$30)",
+    "strategy": "在黄金带内定价,配合多件折扣提升连带率",
+    "reasons": ["品类黄金带销量最大且评分最高", "当前价格具备利润空间"]
+  },
+  "marginEstimate": {
+    "currentMargin": 42.5,
+    "suggestedMargin": 45.0,
+    "breakEvenSales": 85
+  },
+  "promotionAdvice": ["不建议直接降价,优先「2件9折」套装折扣", "旺季前配合Coupon+Deal提升转化"]
+}
+```
+
+## 核心业务场景
+- 品类黄金价格带识别(量利平衡最优定价区间)
+- 竞品定价策略破解(渗透定价/溢价定价/跟随定价识别)
+- 毛利率估算(15%佣金+FBA 费用+采购成本推算)
+
+## 依赖
+- Amazon VOC API: `https://server.fmode.cn/api/voc-ecom/forward`(统一转发,认证已内置)
+- 需要 competitor-discovery 输出的竞品列表
+
+## 对应工作坊环节
+Day1 下午 品牌认知 + Day2 上午 竞品深度分析

+ 222 - 0
dist/skills/competitor-pricing-analysis/api-config.json

@@ -0,0 +1,222 @@
+{
+  "name": "competitor-pricing-analysis",
+  "displayName": "竞品定价策略分析",
+  "description": "分析竞品定价策略,包括5分位价格带分布、黄金价格带评分、毛利估算、促销建议和盈亏平衡销量分析",
+  "category": "competitor-analysis",
+  "version": "1.3.0",
+  "type": "orchestration",
+  "parameters": {
+    "categoryKeyword": {
+      "type": "string",
+      "required": true,
+      "description": "品类关键词"
+    },
+    "competitorAsins": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": true,
+      "description": "竞品ASIN列表"
+    },
+    "ownPrice": {
+      "type": "number",
+      "required": false,
+      "description": "自身产品当前价格,用于对比定位"
+    },
+    "domain": {
+      "type": "integer",
+      "required": false,
+      "default": 1,
+      "description": "Amazon站点(1=美国)"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "搜索品类Top100产品价格数据",
+      "api": {
+        "service": "SorftimeApiService.searchProductsByQuery",
+        "endpoint": "/api/ProductQuery",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "Page": 1, "Query": "1", "QueryType": "7", "Pattern": "${categoryKeyword}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "categoryProducts",
+      "responseExtract": "Array<{ Asin, Title, Price, Rating, RatingsCount, MonthlySales, Brand, BSR }>"
+    },
+    {
+      "step": 2,
+      "name": "批量获取竞品详细定价信息",
+      "forEach": "competitorAsins",
+      "api": {
+        "service": "SorftimeApiService.getProductDetail",
+        "endpoint": "/api/ProductRequest",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "ASIN": "${asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "competitorDetails",
+      "responseExtract": "{ Title, Brand, SalesPrice, ListPrice, CouponInfo, FBAFee, Ratings, RatingsCount, MonthlySales }"
+    },
+    {
+      "step": 3,
+      "name": "获取竞品历史价格趋势",
+      "forEach": "competitorAsins",
+      "api": {
+        "service": "SorftimeApiService.getMonitorData",
+        "endpoint": "/api/MonitorQuery",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "ASIN": "${asin}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "priceHistory",
+      "responseExtract": "{ PriceHistory, RankHistory }"
+    },
+    {
+      "step": 4,
+      "name": "5分位价格带分析",
+      "type": "compute",
+      "logic": "analyzePriceBands(categoryProducts)",
+      "algorithm": {
+        "quintile": "按P20/P40/P60/P80划分为低价带/中低/黄金中价/中高/高价带",
+        "perBand": "每带统计: skuCount, avgSales, avgRating, avgBsr",
+        "goldenBandScore": "bandScore = avgSales×0.5 + avgRating×20 + (skuCount>0?10:0),最高分为量利平衡最优带"
+      },
+      "output": "priceBands"
+    },
+    {
+      "step": 5,
+      "name": "竞品定价策略识别+毛利估算",
+      "type": "compute",
+      "logic": "analyzeCompetitorPricing(competitorDetails, priceHistory, priceBands, ownPrice)",
+      "algorithm": {
+        "pricingStrategy": "渗透定价(低于P20)/跟随定价(黄金带内)/溢价定价(高于P80)",
+        "marginEstimate": "15%佣金+$5FBA+30%采购成本 → grossMargin%, 盈亏平衡销量",
+        "ownPosition": "自身价格在哪个价格带的哪个百分位",
+        "optimalPrice": "goldenBandMin + (goldenBandMax-goldenBandMin)*0.6 * min(1.15, max(0.85, selfRating/bandAvgRating))",
+        "promotionAdvice": "价格战风险检测,优先多件折扣/满减替代降价"
+      },
+      "output": "pricingAnalysis"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "priceBands": {
+        "type": "array",
+        "description": "5分位价格带分布",
+        "items": {
+          "type": "object",
+          "properties": {
+            "range": { "type": "string" },
+            "label": { "type": "string" },
+            "productCount": { "type": "integer" },
+            "avgRating": { "type": "number" },
+            "avgSales": { "type": "integer" },
+            "isGolden": { "type": "boolean" }
+          }
+        }
+      },
+      "competitorPricing": {
+        "type": "array",
+        "description": "竞品定价详情",
+        "items": {
+          "type": "object",
+          "properties": {
+            "asin": { "type": "string" },
+            "brand": { "type": "string" },
+            "currentPrice": { "type": "number" },
+            "listPrice": { "type": "number" },
+            "coupon": { "type": "number" },
+            "pricingStrategy": { "type": "string" },
+            "priceHistory": { "type": "array" },
+            "estimatedMargin": { "type": "number" }
+          }
+        }
+      },
+      "ownPricePosition": {
+        "type": "object",
+        "properties": {
+          "band": { "type": "string" },
+          "percentile": { "type": "number" },
+          "competitiveness": { "type": "string" }
+        }
+      },
+      "recommendation": {
+        "type": "object",
+        "properties": {
+          "optimalRange": { "type": "array", "items": { "type": "number" } },
+          "goldenBand": { "type": "string" },
+          "strategy": { "type": "string" },
+          "reasons": { "type": "array", "items": { "type": "string" } }
+        }
+      },
+      "marginEstimate": {
+        "type": "object",
+        "properties": {
+          "currentMargin": { "type": "number" },
+          "suggestedMargin": { "type": "number" },
+          "breakEvenSales": { "type": "integer" }
+        }
+      },
+      "promotionAdvice": { "type": "array", "items": { "type": "string" } }
+    }
+  },
+  "timeout": 120000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 2000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 97 - 0
dist/skills/competitor-product-comparison/SKILL.md

@@ -0,0 +1,97 @@
+---
+name: competitor-product-comparison
+description: 对自身产品与竞品进行多维度横向对比,生成5维健康度仪表盘并标注机会/风险标签
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# 竞品产品对比 (Competitor Product Comparison)
+
+## 技能名称
+competitor-product-comparison
+
+## 技能目的
+对自身产品与竞品进行多维度横向对比,生成5维健康度仪表盘(定价/评分/流量/销量/增长)并标注机会/风险标签。
+
+## 输入参数
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| ownAsins | string[] | 是 | 自身品牌ASIN列表 |
+| competitorAsins | string[] | 是 | 竞品ASIN列表(来自 competitor-discovery 输出) |
+| domain | integer | 否 | Amazon站点,默认1 |
+| dimensions | string[] | 否 | 对比维度,默认全部 |
+
+## 执行流程
+1. 批量调用 `product-detail-query` 获取所有ASIN的产品详情
+2. 批量调用 `asin-sales-volume` 获取销量数据
+3. 按以下维度生成对比矩阵:
+   - **价格**: 售价、历史价格趋势、折扣力度
+   - **评分**: 平均分、评论数、星级分布(1-5星占比)
+   - **销量**: 月销量、日销量趋势、BSR排名
+   - **产品**: 标题关键词、卖点Feature、图片数量、A+页面
+   - **品牌**: 品牌店铺、FBA/FBM、发货地
+   - **变体**: 变体数量、尺寸/颜色选项
+4. 计算各维度的竞争力得分(0-100)
+5. 标注自身产品的优势维度和劣势维度
+6. **5维健康度评估**(新增):
+   - 定价竞争力(0.2) + 评分健康度(0.25) + 流量排名(0.2) + 销售效率(0.15) + 增长潜力(0.2)
+   - 每个产品生成机会标签 + 风险标签
+   - 识别核心短板(最低分维度)
+
+## 调用的底层 Skill
+- `voc/product-detail-query` — 产品详情
+- `voc/asin-sales-volume` — 销量数据
+- `voc/product-monitor` — 历史趋势数据
+
+## 返回格式
+```json
+{
+  "comparisonMatrix": [
+    {
+      "asin": "B0B24QJ217",
+      "brand": "COCORRINA",
+      "isOwn": true,
+      "metrics": {
+        "price": { "value": 24.99, "score": 78 },
+        "rating": { "value": 4.5, "score": 85 },
+        "monthlySales": { "value": 3200, "score": 72 },
+        "reviewCount": { "value": 1456, "score": 68 },
+        "bsr": { "value": 2300, "score": 75 },
+        "featureCount": { "value": 5, "score": 80 },
+        "variantCount": { "value": 8, "score": 70 }
+      },
+      "overallScore": 75.4
+    }
+  ],
+  "advantages": ["评分高于竞品均值", "价格有竞争力"],
+  "gaps": ["评论数量不足", "变体数量偏少"],
+  "recommendation": "建议增加变体数量并加强评论获取策略",
+  "healthDashboard": {
+    "B0B24QJ217": {
+      "overallScore": 75.4,
+      "dimensions": {
+        "pricingCompetitiveness": 78,
+        "ratingHealth": 85,
+        "trafficRank": 70,
+        "salesEfficiency": 72,
+        "growthPotential": 68
+      },
+      "opportunityTags": ["评分优秀", "定价合理"],
+      "riskTags": ["增长势头放缓"],
+      "coreShortcoming": "增长潜力得分68,需关注销量趋势"
+    }
+  }
+}
+```
+
+## 核心业务场景
+- 竞品五维健康度仪表盘(定价/评分/流量/销量/增长 0-100 评分)
+- 自身产品短板识别(找出得分最低维度作为优先改进方向)
+- 竞品机会/风险标签生成(报告直接可用)
+
+## 依赖
+- Amazon VOC API: `https://server.fmode.cn/api/voc-ecom/forward`(统一转发,认证已内置)
+- 需要先通过 competitor-discovery 获取竞品 ASIN 列表
+
+## 对应工作坊环节
+Day1 下午 16:00-17:00「竞品初筛」后续深度对比

+ 209 - 0
dist/skills/competitor-product-comparison/api-config.json

@@ -0,0 +1,209 @@
+{
+  "name": "competitor-product-comparison",
+  "displayName": "竞品产品对比",
+  "description": "对自身产品与竞品进行多维度横向对比,生成5维健康度仪表盘并标注机会/风险标签",
+  "category": "competitor-analysis",
+  "version": "1.3.0",
+  "type": "orchestration",
+  "parameters": {
+    "ownAsins": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": true,
+      "description": "自身品牌ASIN列表"
+    },
+    "competitorAsins": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": true,
+      "description": "竞品ASIN列表(来自 competitor-discovery 输出)"
+    },
+    "domain": {
+      "type": "integer",
+      "required": false,
+      "default": 1,
+      "description": "Amazon站点(1=美国)"
+    },
+    "dimensions": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": false,
+      "description": "对比维度,默认全部"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "批量获取所有ASIN产品详情",
+      "forEach": "ownAsins + competitorAsins",
+      "api": {
+        "service": "SorftimeApiService.getProductDetail",
+        "endpoint": "/api/ProductRequest",
+        "method": "POST",
+        "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
+        "headers": { "Authorization": "Bearer {{vocToken}}" },
+        "requestBody": { "ASIN": "${asin}", "Trend": 1, "QueryTrendStartDt": "", "QueryTrendEndDt": "" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "allProductDetails",
+      "responseExtract": "{ Title, Brand, SalesPrice, Ratings, RatingsCount, BSR, Category, Photo, Feature, Description, VariationASIN, MonthlySales }"
+    },
+    {
+      "step": 2,
+      "name": "批量获取销量数据",
+      "forEach": "ownAsins + competitorAsins",
+      "api": {
+        "service": "SorftimeApiService.getAsinSalesVolume",
+        "endpoint": "/api/AsinSalesVolume",
+        "method": "POST",
+        "requestBody": { "ASIN": "${asin}" },
+        "queryParams": { "domain": "${domain}" }
+      },
+      "output": "salesData"
+    },
+    {
+      "step": 3,
+      "name": "多维度对比矩阵计算",
+      "type": "compute",
+      "logic": "buildComparisonMatrix(allProductDetails, salesData, ownAsins)",
+      "algorithm": {
+        "dimensions": {
+          "price": "售价、历史价格趋势、折扣力度",
+          "rating": "平均分、评论数、星级分布(1-5星占比)",
+          "sales": "月销量、日销量趋势、BSR排名",
+          "product": "标题关键词、卖点Feature、图片数量、A+页面",
+          "brand": "品牌店铺、FBA/FBM、发货地",
+          "variant": "变体数量、尺寸/颜色选项"
+        },
+        "scoring": "各维度竞争力得分(0-100)"
+      },
+      "output": "comparisonMatrix"
+    },
+    {
+      "step": 4,
+      "name": "5维健康度评估",
+      "type": "compute",
+      "logic": "calcHealthDashboard(comparisonMatrix, ownAsins)",
+      "algorithm": {
+        "weights": {
+          "pricingCompetitiveness": 0.2,
+          "ratingHealth": 0.25,
+          "trafficRank": 0.2,
+          "salesEfficiency": 0.15,
+          "growthPotential": 0.2
+        },
+        "tags": "每个产品生成机会标签 + 风险标签",
+        "coreShortcoming": "识别最低分维度作为核心短板"
+      },
+      "output": "healthDashboard"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "comparisonMatrix": {
+        "type": "array",
+        "description": "对比矩阵",
+        "items": {
+          "type": "object",
+          "properties": {
+            "asin": { "type": "string" },
+            "brand": { "type": "string" },
+            "isOwn": { "type": "boolean" },
+            "metrics": {
+              "type": "object",
+              "properties": {
+                "price": { "type": "object", "properties": { "value": { "type": "number" }, "score": { "type": "integer" } } },
+                "rating": { "type": "object", "properties": { "value": { "type": "number" }, "score": { "type": "integer" } } },
+                "monthlySales": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
+                "reviewCount": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
+                "bsr": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
+                "featureCount": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } },
+                "variantCount": { "type": "object", "properties": { "value": { "type": "integer" }, "score": { "type": "integer" } } }
+              }
+            },
+            "overallScore": { "type": "number" }
+          }
+        }
+      },
+      "advantages": { "type": "array", "items": { "type": "string" } },
+      "gaps": { "type": "array", "items": { "type": "string" } },
+      "recommendation": { "type": "string" },
+      "healthDashboard": {
+        "type": "object",
+        "description": "5维健康度仪表盘,key为ASIN",
+        "additionalProperties": {
+          "type": "object",
+          "properties": {
+            "overallScore": { "type": "number" },
+            "dimensions": {
+              "type": "object",
+              "properties": {
+                "pricingCompetitiveness": { "type": "integer" },
+                "ratingHealth": { "type": "integer" },
+                "trafficRank": { "type": "integer" },
+                "salesEfficiency": { "type": "integer" },
+                "growthPotential": { "type": "integer" }
+              }
+            },
+            "opportunityTags": { "type": "array", "items": { "type": "string" } },
+            "riskTags": { "type": "array", "items": { "type": "string" } },
+            "coreShortcoming": { "type": "string" }
+          }
+        }
+      }
+    }
+  },
+  "timeout": 120000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 2000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 61 - 0
dist/skills/douyin-comment-replies/SKILL.md

@@ -0,0 +1,61 @@
+---
+name: douyin-comment-replies
+description: 获取抖音指定视频中某条评论的全部回复,适用于深度舆情追踪、争议点分析、用户回复习惯研究。常配合 douyin-video-comments 使用。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# douyin-comment-replies
+
+## 功能用途
+
+获取某条评论下的全部回复,挖掘用户在热评话题下的深度互动内容。
+
+**核心业务场景:**
+- 热评争议点深度分析(高赞评论引发的讨论)
+- 用户购买决策追踪("在哪买/求链接"类回复)
+- 舆情追踪(评论串中的情绪升级路径)
+- 竞品用户反馈深挖
+
+## 调用链(Workflow)
+
+```
+上游: douyin-video-comments(aweme_id) → 获取评论列表 → 找高赞热评(digg_count 最高)
+本步: douyin-comment-replies(item_id=aweme_id, comment_id=cid) → 获取该热评全部回复
+分析: 对回复内容做情感分类,发现用户争议点和购买意向信号
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| item_id | string | ✅ | 视频 ID(等同于 aweme_id) |
+| comment_id | string | ✅ | 评论 ID(从 douyin-video-comments 返回的 comments[].cid 获取) |
+| cursor | integer | ❌ | 翻页游标,首次传 0(默认 0) |
+| count | integer | ❌ | 每页数量,**请保持默认 20** |
+
+## 接口调用方式
+
+- **请求方法**: GET
+- **接口地址**: `https://server.fmode.cn/api/voc-social/douyin/app/v3/fetch_video_comment_replies`
+
+```
+GET ?item_id=7354666303006723354&comment_id=7354669356632638218&cursor=0&count=20
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| comments[].text | 回复内容 → 用户深度表达 |
+| comments[].digg_count | 回复点赞数 → 高赞回复最具代表性 |
+| comments[].create_time | 回复时间戳 |
+| comments[].user.nickname | 回复者昵称 |
+| has_more | 是否还有更多回复 |
+| cursor | 下一页游标 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法 GET,参数作为查询参数传递
+- item_id 与 comment_id 均来自 douyin-video-comments 的响应

+ 150 - 0
dist/skills/douyin-comment-replies/api-config.json

@@ -0,0 +1,150 @@
+{
+  "name": "douyin-comment-replies",
+  "displayName": "抖音评论回复查询",
+  "description": "获取抖音指定视频中某条评论的全部回复,适用于深度舆情追踪、争议点分析、用户回复习惯研究。常配合 douyin-video-comments 使用。",
+  "category": "douyin",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/api/voc-social/douyin/app/v3/fetch_video_comment_replies",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "item_id",
+      "comment_id"
+    ],
+    "properties": {
+      "item_id": {
+        "type": "string",
+        "description": "抖音作品 ID"
+      },
+      "comment_id": {
+        "type": "string",
+        "description": "评论 ID"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "分页游标,首次传 0",
+        "default": 0
+      },
+      "count": {
+        "type": "integer",
+        "description": "每页数量,请保持默认 20",
+        "default": 20
+      }
+    }
+  },
+  "requestTransform": {
+    "queryParams": {
+      "item_id": "{{item_id}}",
+      "comment_id": "{{comment_id}}",
+      "cursor": "{{cursor}}",
+      "count": "{{count}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "评论回复列表",
+    "properties": {
+      "comments": {
+        "type": "array",
+        "description": "回复列表"
+      },
+      "has_more": {
+        "type": "boolean",
+        "description": "是否有更多回复"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "下一页游标"
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "热评争议点深度分析",
+      "input": {
+        "item_id": "7354666303006723354",
+        "comment_id": "7354669356632638218",
+        "cursor": 0,
+        "count": 20
+      },
+      "description": "获取高赞热评下的回复,分析用户争议点和进一步讨论的内容"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "上游: douyin-video-comments(aweme_id) → 获取评论列表 → 找到高赞热评(digg_count 最高)",
+      "本步: douyin-comment-replies(item_id, comment_id) → 获取热评下的回复",
+      "分析: 对回复内容做情感分类,发现用户争议点"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "社媒聆听(Slide14)"
+    ],
+    "dataPoints": [
+      "用户争议点内容",
+      "热评下用户情感深度",
+      "购买决策影响因素(对话式评论)"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 96 - 0
dist/skills/douyin-general-search/SKILL.md

@@ -0,0 +1,96 @@
+---
+name: douyin-general-search
+description: 按关键词在抖音综合搜索,获取相关视频列表及作者/互动数据。适用于品类内容趋势分析、竞品视频监控、VOC素材采集、爆款选题发现。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# douyin-general-search
+
+## 功能用途
+
+按关键词在抖音综合搜索,获取视频列表及互动数据(点赞/播放/评论/分享)、作者信息、话题标签等。
+
+**核心业务场景:**
+- 品类爆款内容发现(sort_type=1 最多点赞)
+- 竞品品牌视频监控(搜索竞品名 + publish_time=1 最新)
+- 用户痛点 VOC 素材采集(搜索 "产品名+踩雷/差评")
+- 趋势话题内容研究(sort_type=2 最新发布)
+
+## 调用链(Workflow)
+
+```
+1. douyin-general-search(keyword) → 获取相关视频列表
+2. douyin-video-detail(aweme_id) → 获取单视频完整数据
+3. douyin-video-comments(aweme_id) → 获取该视频评论
+4. douyin-comment-replies(item_id, comment_id) → 获取热评回复
+5. douyin-user-profile(author.sec_uid) → 获取高互动视频作者详情
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 枚举值 | 说明 |
+|------|------|------|--------|------|
+| keyword | string | ✅ | — | 搜索关键词,支持品类词/品牌词/话题词,如 '香薰蜡烛'、'户外露营' |
+| cursor | integer | ❌ | — | 翻页游标,首次传 0,下一页用上次响应的 cursor |
+| sort_type | string | ❌ | '0'=综合 '1'=最多点赞 '2'=最新发布 | 排序方式(默认 '0') |
+| publish_time | string | ❌ | '0'=不限 '1'=一天 '7'=一周 '180'=半年 | 发布时间范围(默认 '0') |
+| filter_duration | string | ❌ | '0'=不限 '0-1'=1分钟内 '1-5'=1-5分钟 '5-10000'=5分钟以上 | 视频时长(默认 '0') |
+| content_type | string | ❌ | '0'=不限 '1'=视频 '2'=图文 '3'=文章 | 内容类型(默认 '0') |
+| search_id | string | ❌ | — | 翻页搜索会话ID,首次传 '',翻页时从上次响应获取 |
+| backtrace | string | ❌ | — | 翻页回溯标识,首次传 '',翻页时从上次响应获取 |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-social/douyin/search/fetch_general_search_v2`
+
+**业务场景示例 1 - 爆款内容发现:**
+```json
+{
+  "keyword": "香薰蜡烛",
+  "cursor": 0,
+  "sort_type": "1",
+  "publish_time": "7",
+  "content_type": "1",
+  "filter_duration": "0",
+  "search_id": "",
+  "backtrace": ""
+}
+```
+
+**业务场景示例 2 - 竞品监控:**
+```json
+{
+  "keyword": "竞品品牌名",
+  "cursor": 0,
+  "sort_type": "2",
+  "publish_time": "1",
+  "content_type": "0",
+  "filter_duration": "0",
+  "search_id": "",
+  "backtrace": ""
+}
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| data[].aweme_id | 视频 ID → 传入 douyin-video-detail 获取完整数据 |
+| data[].desc | 视频文案/标题 → 爆款标题规律分析 |
+| data[].author.sec_uid | 作者 ID → 传入 douyin-user-profile 获取 KOL 详情 |
+| data[].statistics.digg_count | 点赞数 → 爆款判断指标 |
+| data[].statistics.comment_count | 评论数 → 用 douyin-video-comments 获取评论内容 |
+| data[].statistics.play_count | 播放量 → 曝光力指标 |
+| data[].statistics.share_count | 分享数 → 传播力指标 |
+| data[].text_extra | 话题标签列表 → 内容标签策略分析 |
+| cursor | 下一页游标 |
+| search_id | 翻页时传回 |
+| backtrace | 翻页时传回 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法为 POST,参数通过 JSON body 传递
+- **timeout 建议 45000ms**(后端响应较慢)

+ 234 - 0
dist/skills/douyin-general-search/api-config.json

@@ -0,0 +1,234 @@
+{
+  "name": "douyin-general-search",
+  "displayName": "抖音综合搜索 V2",
+  "description": "按关键词在抖音综合搜索,获取相关视频列表及作者/互动数据。适用于品类内容趋势分析、竞品视频监控、VOC素材采集、爆款选题发现。",
+  "category": "douyin",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-social/douyin/search/fetch_general_search_v2",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Content-Type": "application/json",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "keyword"
+    ],
+    "properties": {
+      "keyword": {
+        "type": "string",
+        "description": "搜索关键词,支持品类词/品牌词/话题词/人群词,如 '香薰蜡烛'、'户外露营'、'skincare'"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "翻页游标,首次请求传 0,下一页使用上次响应返回的 cursor 值",
+        "default": 0
+      },
+      "sort_type": {
+        "type": "string",
+        "description": "排序方式:'0'=综合排序(推荐优先);'1'=最多点赞(爆款优先);'2'=最新发布(时效优先)",
+        "enum": ["0", "1", "2"],
+        "default": "0"
+      },
+      "publish_time": {
+        "type": "string",
+        "description": "发布时间范围筛选:'0'=不限;'1'=最近一天;'7'=最近一周;'180'=最近半年",
+        "enum": ["0", "1", "7", "180"],
+        "default": "0"
+      },
+      "filter_duration": {
+        "type": "string",
+        "description": "视频时长筛选:'0'=不限;'0-1'=1分钟以内(短片/种草);'1-5'=1-5分钟(中视频);'5-10000'=5分钟以上(深度内容)",
+        "enum": ["0", "0-1", "1-5", "5-10000"],
+        "default": "0"
+      },
+      "content_type": {
+        "type": "string",
+        "description": "内容类型筛选:'0'=不限;'1'=视频;'2'=图文/图片;'3'=文章",
+        "enum": ["0", "1", "2", "3"],
+        "default": "0"
+      },
+      "search_id": {
+        "type": "string",
+        "description": "搜索会话ID,首次请求传空字符串,翻页时从上次响应的 search_id 字段获取",
+        "default": ""
+      },
+      "backtrace": {
+        "type": "string",
+        "description": "翻页回溯标识,首次请求传空字符串,翻页时从上次响应的 backtrace 字段获取",
+        "default": ""
+      }
+    }
+  },
+  "requestTransform": {
+    "body": {
+      "keyword": "{{keyword}}",
+      "cursor": "{{cursor}}",
+      "sort_type": "{{sort_type}}",
+      "publish_time": "{{publish_time}}",
+      "filter_duration": "{{filter_duration}}",
+      "content_type": "{{content_type}}",
+      "search_id": "{{search_id}}",
+      "backtrace": "{{backtrace}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "综合搜索结果,包含视频列表及互动数据",
+    "properties": {
+      "data": {
+        "type": "array",
+        "description": "搜索结果列表(aweme_info 数组),每项包含:aweme_id(视频ID)、desc(标题/文案)、author(作者信息)、statistics(互动数据)、video(播放地址)、text_extra(话题标签列表)"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "下一页游标,翻页时作为 cursor 参数传入"
+      },
+      "has_more": {
+        "type": "integer",
+        "description": "是否有更多数据(1=有,0=无)"
+      },
+      "search_id": {
+        "type": "string",
+        "description": "翻页搜索会话ID,翻页时原样传回"
+      },
+      "backtrace": {
+        "type": "string",
+        "description": "翻页回溯标识,翻页时原样传回"
+      }
+    },
+    "keyFields": {
+      "aweme_id": "视频唯一ID,可传入 douyin-video-detail 获取完整数据",
+      "desc": "视频文案/标题,含核心卖点和话题标签",
+      "author.uid": "作者用户ID",
+      "author.nickname": "作者昵称",
+      "author.sec_uid": "可传入 douyin-user-profile 获取作者详情",
+      "statistics.digg_count": "点赞数(爆款指标)",
+      "statistics.comment_count": "评论数,可用 douyin-video-comments 获取详情",
+      "statistics.share_count": "分享数(传播力指标)",
+      "statistics.play_count": "播放量(曝光力指标)"
+    }
+  },
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "1. douyin-general-search(keyword) → 获取相关视频列表",
+      "2. douyin-video-detail(aweme_id) → 获取单视频完整数据",
+      "3. douyin-video-comments(aweme_id) → 获取该视频评论",
+      "4. douyin-comment-replies(item_id, comment_id) → 获取热评回复",
+      "5. douyin-user-profile(sec_uid) → 获取高互动视频作者详情"
+    ]
+  },
+  "usageExamples": [
+    {
+      "name": "品类爆款内容发现",
+      "input": {
+        "keyword": "香薰蜡烛",
+        "cursor": 0,
+        "sort_type": "1",
+        "publish_time": "7",
+        "content_type": "1"
+      },
+      "description": "搜索近一周点赞最多的香薰蜡烛视频,发现爆款内容规律,用于选品和内容策略参考"
+    },
+    {
+      "name": "竞品品牌内容监控",
+      "input": {
+        "keyword": "竞品品牌名",
+        "cursor": 0,
+        "sort_type": "2",
+        "publish_time": "1"
+      },
+      "description": "搜索竞品品牌最新发布内容,监控其内容策略动向"
+    },
+    {
+      "name": "用户痛点VOC素材采集",
+      "input": {
+        "keyword": "香薰蜡烛 踩雷",
+        "cursor": 0,
+        "sort_type": "0",
+        "filter_duration": "0-1"
+      },
+      "description": "搜索用户发布的短视频评测/踩雷内容,结合 douyin-video-comments 提取用户真实痛点"
+    },
+    {
+      "name": "趋势话题内容研究",
+      "input": {
+        "keyword": "露营神器",
+        "cursor": 0,
+        "sort_type": "2",
+        "publish_time": "7"
+      },
+      "description": "发现最新趋势话题下的内容形式,辅助新品上市内容策略规划"
+    }
+  ],
+  "reportMapping": {
+    "slides": [
+      "社媒聆听(Slide14)",
+      "竞品社媒策略(Slide15)"
+    ],
+    "dataPoints": [
+      "品类热词视频列表",
+      "视频互动率(点赞/播放比)",
+      "爆款内容文案模式",
+      "活跃 KOL 账号发现",
+      "用户痛点关键词(结合评论分析)"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 73 - 0
dist/skills/douyin-hashtag-search/SKILL.md

@@ -0,0 +1,73 @@
+---
+name: douyin-hashtag-search
+description: 按关键词搜索抖音话题(挑战/#标签),返回话题浏览量、参与人数、话题描述等。适用于品类话题热度分析、竞品话题监控、内容营销切入点发现。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# douyin-hashtag-search
+
+## 功能用途
+
+按关键词搜索抖音话题/挑战/#标签,量化品类在抖音的话题流量规模,发现内容营销切入口。
+
+**核心业务场景:**
+- 品类话题热度排名(哪个话题浏览量最大)
+- 新兴趋势话题发现(sort_type=2 最新发布)
+- 竞品话题曝光监控(搜索竞品品牌相关话题)
+- 内容营销切入点(找高浏览低竞争话题)
+
+## 调用链(Workflow)
+
+```
+本步: douyin-hashtag-search(keyword) → 获取话题列表
+     → 按 view_count 排序,找最大流量话题的 cha_name
+下游: douyin-general-search(cha_name) → 获取该话题下的具体视频内容
+下游: 结合 view_count + user_count 评估话题营销价值
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 枚举值 | 说明 |
+|------|------|------|--------|------|
+| keyword | string | ✅ | — | 搜索关键词,如 '香薰蜡烛'、'户外露营' |
+| cursor | integer | ❌ | — | 翻页游标,首次传 0(默认 0) |
+| sort_type | string | ❌ | '0'=综合 '1'=最多点赞 '2'=最新发布 | 排序方式(默认 '0') |
+| publish_time | string | ❌ | '0'=不限 '1'=一天 '7'=一周 '180'=半年 | 发布时间(默认 '0') |
+| filter_duration | string | ❌ | '0'=不限 '0-1' '1-5' '5-10000' | 视频时长(默认 '0') |
+| content_type | string | ❌ | '0'=不限 '1'=视频 '2'=图文 '3'=文章 | 内容类型(默认 '0') |
+| search_id | string | ❌ | — | 翻页搜索ID,首次传 '',翻页时从上次响应获取 |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-social/douyin/search/fetch_challenge_search_v2`
+- **timeout 建议 45000ms**
+
+**场景示例 - 品类话题热度排名:**
+```json
+{ "keyword": "香薰蜡烛", "cursor": 0, "sort_type": "1", "search_id": "" }
+```
+
+**场景示例 - 新兴趋势话题:**
+```json
+{ "keyword": "露营神器", "cursor": 0, "sort_type": "2", "publish_time": "7", "search_id": "" }
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| business_data[].data.challenge_info.cid | 话题 ID |
+| business_data[].data.challenge_info.cha_name | 话题名称 → 可用于 douyin-general-search |
+| business_data[].data.challenge_info.desc | 话题描述 |
+| business_data[].data.challenge_info.view_count | 话题浏览量 → 流量规模评估核心指标 |
+| business_data[].data.challenge_info.user_count | 参与人数 → 内容创作者数量 |
+| cursor | 下一页游标 |
+| has_more | 是否有更多话题 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法为 POST,参数通过 JSON body 传递
+- **timeout 建议 45000ms**(后端响应较慢)

+ 192 - 0
dist/skills/douyin-hashtag-search/api-config.json

@@ -0,0 +1,192 @@
+{
+  "name": "douyin-hashtag-search",
+  "displayName": "抖音话题搜索 V2",
+  "description": "按关键词搜索抖音话题(挑战/#标签),返回话题浏览量、参与人数、话题描述等。适用于品类话题热度分析、竞品话题监控、内容营销切入点发现。",
+  "category": "douyin",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-social/douyin/search/fetch_challenge_search_v2",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Content-Type": "application/json",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "keyword"
+    ],
+    "properties": {
+      "keyword": {
+        "type": "string",
+        "description": "搜索关键词,如 '游戏'、'美食'"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "翻页游标,首次请求传 0",
+        "default": 0
+      },
+      "sort_type": {
+        "type": "string",
+        "description": "排序方式:'0'=综合排序;'1'=最多点赞(爆款话题);'2'=最新发布(新兴话题)",
+        "enum": ["0", "1", "2"],
+        "default": "0"
+      },
+      "publish_time": {
+        "type": "string",
+        "description": "发布时间范围:'0'=不限;'1'=最近一天;'7'=最近一周;'180'=最近半年",
+        "enum": ["0", "1", "7", "180"],
+        "default": "0"
+      },
+      "filter_duration": {
+        "type": "string",
+        "description": "视频时长:'0'=不限;'0-1'=1分钟以内;'1-5'=1-5分钟;'5-10000'=5分钟以上",
+        "enum": ["0", "0-1", "1-5", "5-10000"],
+        "default": "0"
+      },
+      "content_type": {
+        "type": "string",
+        "description": "内容类型:'0'=不限;'1'=视频;'2'=图文/图片;'3'=文章",
+        "enum": ["0", "1", "2", "3"],
+        "default": "0"
+      },
+      "search_id": {
+        "type": "string",
+        "description": "搜索ID,首次请求传空,翻页时使用上次返回值",
+        "default": ""
+      }
+    }
+  },
+  "requestTransform": {
+    "body": {
+      "keyword": "{{keyword}}",
+      "cursor": "{{cursor}}",
+      "sort_type": "{{sort_type}}",
+      "publish_time": "{{publish_time}}",
+      "filter_duration": "{{filter_duration}}",
+      "content_type": "{{content_type}}",
+      "search_id": "{{search_id}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "话题搜索结果",
+    "properties": {
+      "business_data": {
+        "type": "array",
+        "description": "话题列表,包含 challenge_info(cid, cha_name, desc, user_count, view_count 等)"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "下一页游标"
+      },
+      "has_more": {
+        "type": "integer",
+        "description": "是否有更多数据"
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "品类话题热度排名",
+      "input": {
+        "keyword": "香薰蜡烛",
+        "cursor": 0,
+        "sort_type": "1"
+      },
+      "description": "搜索香薰蜡烛相关话题,按浏览量排名,分析平台热门话题与流量入口"
+    },
+    {
+      "name": "新兴话题发现",
+      "input": {
+        "keyword": "露营神器",
+        "cursor": 0,
+        "sort_type": "2",
+        "publish_time": "7"
+      },
+      "description": "搜索最新白应话题,判断新兴趋势方向及内容营销切入机会"
+    },
+    {
+      "name": "竞品品牌话题监控",
+      "input": {
+        "keyword": "竞品品牌名或标志性话题",
+        "cursor": 0,
+        "sort_type": "0"
+      },
+      "description": "搜索竞品相关话题,了解其话题流量规模和平台曝光程度"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "本步: douyin-hashtag-search(keyword) → 获取话题列表 → 得到 cha_name、view_count、user_count",
+      "分析: 按 view_count 排序找到最大流量话题,评估内容营销切入横杆价値",
+      "下游: 使用 douyin-general-search(话题名) 获取话题下的具体视频内容"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "社媒聆听(Slide14)"
+    ],
+    "dataPoints": [
+      "品类话题热度排名",
+      "话题浏览量与参与人数(规模评估)",
+      "新兴趋势话题发现",
+      "竞品话题曝光对比"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 60 - 0
dist/skills/douyin-user-profile/SKILL.md

@@ -0,0 +1,60 @@
+---
+name: douyin-user-profile
+description: 根据 sec_user_id 获取抖音用户完整主页数据,包括粉丝数、总获赞数、作品数、个人简介、认证信息等。适用于KOL档案建立、竞品品牌账号分析、达人粉丝画像评估。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# douyin-user-profile
+
+## 功能用途
+
+根据 sec_user_id 获取抖音账号完整主页数据,量化 KOL/品牌的影响力规模。
+
+**核心业务场景:**
+- KOL 达人档案建立(粉丝规模、获赞总量、发布频率)
+- 竞品品牌账号分析(账号认证状态、粉丝增长分析)
+- 达人商业价值评估(粉丝量 + 获赞量综合评估)
+- 竞品代言人/合作达人盘点
+
+## 调用链(Workflow)
+
+```
+上游: douyin-user-search(keyword) → 搜索达人 → 取 sec_uid
+上游: douyin-general-search(keyword) → 视频列表 → 从 author.sec_uid 获取
+本步: douyin-user-profile(sec_user_id) → 获取完整账号数据
+下游: 结合粉丝数/获赞数/作品数 评估 KOL 商业价值
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| sec_user_id | string | ✅ | 抖音用户 sec_user_id(从搜索结果或视频作者信息中获取) |
+
+## 接口调用方式
+
+- **请求方法**: GET
+- **接口地址**: `https://server.fmode.cn/api/voc-social/douyin/app/v3/handler_user_profile`
+
+```
+GET ?sec_user_id=MS4wLjABAAAAW9FWcqS7RdQAWPd2AA5fL_ilmqsIFUCQ_Iym6Yh9_cUa6ZRqVLjVQSUjlHrfXY1Y
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| data.user.nickname | 用户昵称 |
+| data.user.unique_id | 抖音号 |
+| data.user.follower_count | 粉丝数 → KOL 规模评级(头部/腰部/尾部) |
+| data.user.total_favorited | 总获赞数 → 内容影响力综合指标 |
+| data.user.aweme_count | 发布作品数 → 内容产出频率 |
+| data.user.signature | 个人简介 → 达人定位分析 |
+| data.user.verify_info | 认证信息 → 品牌/个人/机构认证类型 |
+| data.user.avatar_thumb | 头像缩略图 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法 GET,sec_user_id 作为查询参数传递

+ 131 - 0
dist/skills/douyin-user-profile/api-config.json

@@ -0,0 +1,131 @@
+{
+  "name": "douyin-user-profile",
+  "displayName": "抖音用户信息查询",
+  "description": "根据 sec_user_id 获取抖音用户完整主页数据,包括粉丝数、总获赞数、作品数、个人简介、认证信息等。适用于KOL档案建立、竞品品牌账号分析、达人粉丝画像评估。",
+  "category": "douyin",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/api/voc-social/douyin/app/v3/handler_user_profile",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "sec_user_id"
+    ],
+    "properties": {
+      "sec_user_id": {
+        "type": "string",
+        "description": "抖音用户 sec_user_id"
+      }
+    }
+  },
+  "requestTransform": {
+    "queryParams": {
+      "sec_user_id": "{{sec_user_id}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "用户完整资料",
+    "properties": {
+      "data": {
+        "type": "object",
+        "description": "用户信息,包括昵称、粉丝数、获赞数、作品数、个人简介、头像等"
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "KOL达人档案建立",
+      "input": {
+        "sec_user_id": "MS4wLjABAAAAW9FWcqS7RdQAWPd2AA5fL_ilmqsIFUCQ_Iym6Yh9_cUa6ZRqVLjVQSUjlHrfXY1Y"
+      },
+      "description": "获取达人完整主页数据,建立KOL档案:粉丝规模、获赞总量、内容数量、个人定位"
+    },
+    {
+      "name": "竞品品牌账号分析",
+      "input": {
+        "sec_user_id": "竞品品牌抖音sec_user_id"
+      },
+      "description": "分析竞品品牌抖音账号的粉丝规模、内容体量、账号认证状态"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "上游: douyin-user-search(keyword) → 搜索达人 → 取 sec_uid",
+      "上游: douyin-general-search(keyword) → 获取视频列表 → 从 author.sec_uid 获取",
+      "本步: douyin-user-profile(sec_user_id) → 获取完整账号数据",
+      "下游: 结合粉丝数/获赞数评估KOL商业价值"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "社媒聆听(Slide14)"
+    ],
+    "dataPoints": [
+      "KOL粉丝规模",
+      "账号总获赞(影响力指标)",
+      "作品发布频率(活跃度)",
+      "账号认证类型(品牌/个人/机构)",
+      "达人个人定位(简介分析)"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 63 - 0
dist/skills/douyin-user-search/SKILL.md

@@ -0,0 +1,63 @@
+---
+name: douyin-user-search
+description: 按关键词搜索抖音达人/用户,返回匹配的账号列表及基础数据。适用于红人库建设、品类达人批量筛选、竞品代言人定位。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# douyin-user-search
+
+## 功能用途
+
+按关键词搜索抖音达人/用户账号,快速批量获取候选人基础信息(粉丝数、抖音号、简介等)。
+
+**核心业务场景:**
+- 品类达人批量筛选(如 "香薰蜡烛达人"、"户外露营博主")
+- 竞品品牌官方账号定位(搜索 "竞品名+旗舰店")
+- KOL 候选人初筛(按 follower_count 快速过滤规模)
+- 行业 KOC 挖掘(腰尾部达人发现)
+
+## 调用链(Workflow)
+
+```
+本步: douyin-user-search(keyword) → 搜索达人/品牌
+     → 得到 uid、nickname、sec_uid、follower_count 初筛列表
+下游: douyin-user-profile(sec_user_id) → 获取账号完整数据和统计
+筛选: 按 follower_count 筛选符合粉丝规模要求的达人
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| keyword | string | ✅ | 搜索关键词,支持品类词/达人方向/品牌名,如 '香薰蜡烛达人'、'美食博主' |
+| cursor | integer | ❌ | 翻页游标,首次传 0,下一页用上次返回的 cursor(默认 0) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-social/douyin/search/fetch_user_search_v2`
+- **timeout 建议 45000ms**
+
+```json
+{ "keyword": "香薰蜡烛达人", "cursor": 0 }
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| user_list[].user_info.uid | 用户 ID |
+| user_list[].user_info.nickname | 用户昵称 |
+| user_list[].user_info.unique_id | 抖音号 |
+| user_list[].user_info.sec_uid | 安全 UID → 传入 douyin-user-profile 获取完整数据 |
+| user_list[].user_info.follower_count | 粉丝数 → 初筛 KOL 规模的核心字段 |
+| user_list[].user_info.signature | 个性签名 → 达人定位判断 |
+| cursor | 下一页游标 |
+| has_more | 是否有更多数据(1=有,0=无) |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法为 POST,参数通过 JSON body 传递
+- **timeout 建议 45000ms**(后端响应较慢)

+ 154 - 0
dist/skills/douyin-user-search/api-config.json

@@ -0,0 +1,154 @@
+{
+  "name": "douyin-user-search",
+  "displayName": "抖音用户搜索 V2",
+  "description": "按关键词搜索抖音达人/用户,返回匹配的账号列表及基础数据。适用于红人库建设、品类达人批量筛选、竞品代言人定位。",
+  "category": "douyin",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-social/douyin/search/fetch_user_search_v2",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Content-Type": "application/json",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "keyword"
+    ],
+    "properties": {
+      "keyword": {
+        "type": "string",
+        "description": "搜索关键词,如 '人工智能'、'美妆'"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "翻页游标,首次请求传 0",
+        "default": 0
+      }
+    }
+  },
+  "requestTransform": {
+    "body": {
+      "keyword": "{{keyword}}",
+      "cursor": "{{cursor}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "用户搜索结果",
+    "properties": {
+      "cursor": {
+        "type": "integer",
+        "description": "下一页游标"
+      },
+      "has_more": {
+        "type": "integer",
+        "description": "是否有更多数据(1=有,0=无)"
+      },
+      "user_list": {
+        "type": "array",
+        "description": "用户列表",
+        "items": {
+          "type": "object",
+          "properties": {
+            "user_info": {
+              "type": "object",
+              "description": "用户信息(uid, nickname, unique_id, sec_uid, follower_count, signature 等)"
+            }
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "品类达人批量筛选",
+      "input": {
+        "keyword": "香薰蜡烛达人",
+        "cursor": 0
+      },
+      "description": "搜索香薰蜡烛品类达人,得到候选名单后用 douyin-user-profile 获取粉丝数评估化"
+    },
+    {
+      "name": "竞品品牌账号搜索",
+      "input": {
+        "keyword": "竞品品牌名+官方旗舰店",
+        "cursor": 0
+      },
+      "description": "搜索竞品品牌在抖音的官方账号,用于监控其运营动态"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "本步: douyin-user-search(keyword) → 搜索达人/品牌 → 得到 uid、nickname、sec_uid、follower_count",
+      "下游: douyin-user-profile(sec_user_id) → 获取账号完整数据和统计",
+      "筛选: 按 follower_count 筛选符合粉丝规模要求的达人"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "社媒聆听(Slide14)"
+    ],
+    "dataPoints": [
+      "品类达人候选列表",
+      "粉丝规模分布(头部/腰部/尾部达人)",
+      "竞品代言人定位"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 65 - 0
dist/skills/douyin-video-comments/SKILL.md

@@ -0,0 +1,65 @@
+---
+name: douyin-video-comments
+description: 获取抖音视频的用户评论列表,支持翻页。直接反映用户对产品/内容的真实评价,是VOC情感分析、痛点挖掘、需求发现的核心数据源。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# douyin-video-comments
+
+## 功能用途
+
+获取抖音视频的用户评论列表,支持翻页批量采集。评论是用户自发性表达,是最直接的 VOC 数据来源。
+
+**核心业务场景:**
+- 爆款视频用户声音采集(提取产品真实评价)
+- 痛点/需求关键词挖掘(高频词统计)
+- 情感分析素材获取(正向/负向情感分类)
+- 热评识别(按 digg_count 排序找最具代表性评论)
+
+## 调用链(Workflow)
+
+```
+上游: douyin-general-search(keyword, sort_type='1') → 找到高点赞爆款视频
+上游: douyin-video-detail(aweme_id) → 确认视频互动数据
+本步: douyin-video-comments(aweme_id, cursor=0) → 采集用户评论
+本步: douyin-video-comments(aweme_id, cursor=N) → 翻页采集更多
+下游: douyin-comment-replies(item_id, comment_id) → 获取高赞热评的回复
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| aweme_id | string | ✅ | 抖音作品 ID,如 '7448118827402972455' |
+| cursor | integer | ❌ | 翻页游标,首次传 0,下一页用上次返回的 cursor(默认 0) |
+| count | integer | ❌ | 每页数量,**请保持默认 20**,改动会导致 BUG |
+
+## 接口调用方式
+
+- **请求方法**: GET
+- **接口地址**: `https://server.fmode.cn/api/voc-social/douyin/app/v3/fetch_video_comments`
+
+```
+GET ?aweme_id=7448118827402972455&cursor=0&count=20
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| comments[].cid | 评论 ID → 传入 douyin-comment-replies 的 comment_id |
+| comments[].text | 评论内容 → VOC 文本分析核心字段 |
+| comments[].digg_count | 评论点赞数 → 热评识别(越高越有代表性) |
+| comments[].reply_comment_total | 该评论的回复数 |
+| comments[].create_time | 评论发布时间戳 |
+| comments[].user.nickname | 评论者昵称 |
+| comments[].user.uid | 评论者 UID |
+| has_more | 是否还有更多评论(1=有,0=无) |
+| cursor | 下一页游标 |
+| total | 评论总数 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法 GET,参数作为查询参数传递

+ 159 - 0
dist/skills/douyin-video-comments/api-config.json

@@ -0,0 +1,159 @@
+{
+  "name": "douyin-video-comments",
+  "displayName": "抖音视频评论查询",
+  "description": "获取抖音视频的用户评论列表,支持翻页。直接反映用户对产品/内容的真实评价,是VOC情感分析、痛点挖掘、需求发现的核心数据源。",
+  "category": "douyin",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/api/voc-social/douyin/app/v3/fetch_video_comments",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "aweme_id"
+    ],
+    "properties": {
+      "aweme_id": {
+        "type": "string",
+        "description": "抖音作品 ID"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "分页游标,首次传 0,后续使用上次返回的 cursor 值",
+        "default": 0
+      },
+      "count": {
+        "type": "integer",
+        "description": "每页数量,请保持默认值 20",
+        "default": 20
+      }
+    }
+  },
+  "requestTransform": {
+    "queryParams": {
+      "aweme_id": "{{aweme_id}}",
+      "cursor": "{{cursor}}",
+      "count": "{{count}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "评论数据列表",
+    "properties": {
+      "comments": {
+        "type": "array",
+        "description": "评论列表"
+      },
+      "has_more": {
+        "type": "boolean",
+        "description": "是否有更多评论"
+      },
+      "cursor": {
+        "type": "integer",
+        "description": "下一页游标"
+      },
+      "total": {
+        "type": "integer",
+        "description": "评论总数"
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "爆款视频用户声音采集",
+      "input": {
+        "aweme_id": "7448118827402972455",
+        "cursor": 0,
+        "count": 20
+      },
+      "description": "获取爆款视频前20条评论,提取用户对产品的真实评价和购买意愿"
+    },
+    {
+      "name": "翻页采集更多评论",
+      "input": {
+        "aweme_id": "7448118827402972455",
+        "cursor": 20,
+        "count": 20
+      },
+      "description": "使用上次返回的 cursor 值翻页,累计采集更多用户评论"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "上游: douyin-general-search(keyword, sort_type='1') → 找到高点赞爆款视频",
+      "上游: douyin-video-detail(aweme_id) → 确认视频互动数据",
+      "本步: douyin-video-comments(aweme_id) → 批量采集用户评论",
+      "下游: douyin-comment-replies(item_id, comment_id) → 获取热评下的回复"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "社媒聆听(Slide14)"
+    ],
+    "dataPoints": [
+      "用户痛点关键词",
+      "正向/负向情感分布",
+      "高频需求词提取",
+      "评论点赞数(热评识别)",
+      "用户购买意向信号"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 63 - 0
dist/skills/douyin-video-detail/SKILL.md

@@ -0,0 +1,63 @@
+---
+name: douyin-video-detail
+description: 根据视频ID获取抖音单个作品完整数据(播放量/点赞/评论/分享/作者/话题标签等),V3版本无版权限制。适用于爆款视频深度分析、竞品内容解析、KOL内容效果评估。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# douyin-video-detail
+
+## 功能用途
+
+根据 aweme_id 获取抖音单个作品的完整数据,包括播放量、点赞数、评论数、分享数、话题标签、作者信息等。
+
+**核心业务场景:**
+- 爆款视频深度分析(互动率、标签策略、文案结构)
+- 竞品内容数据解析(竞品视频的量化表现)
+- KOL 内容效果评估(达人单视频效果量化)
+- 话题标签策略研究(text_extra 标签列表)
+
+## 调用链(Workflow)
+
+```
+上游: douyin-general-search(keyword, sort_type='1') → 找到高点赞爆款 → 取 aweme_id
+本步: douyin-video-detail(aweme_id) → 获取完整视频数据
+下游: douyin-video-comments(aweme_id) → 分析用户评论
+下游: douyin-user-profile(author.sec_uid) → 获取作者档案
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| aweme_id | string | ✅ | 抖音视频 ID,如 '7592116912205630761' |
+
+## 接口调用方式
+
+- **请求方法**: GET
+- **接口地址**: `https://server.fmode.cn/api/voc-social/douyin/app/v3/fetch_one_video_v3`
+
+```
+GET ?aweme_id=7592116912205630761
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| data.aweme_id | 视频 ID |
+| data.desc | 视频文案/标题 → 爆款标题规律分析 |
+| data.statistics.play_count | 播放量 → 曝光力指标 |
+| data.statistics.digg_count | 点赞数 → 爆款程度 |
+| data.statistics.comment_count | 评论数 → 用 douyin-video-comments 获取详情 |
+| data.statistics.share_count | 分享数 → 传播力 |
+| data.author.sec_uid | 作者 ID → 传入 douyin-user-profile |
+| data.author.nickname | 作者昵称 |
+| data.text_extra | 话题标签列表 → 内容标签策略 |
+| data.video.duration | 视频时长 |
+| data.create_time | 发布时间戳 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法 GET,aweme_id 作为查询参数传递

+ 132 - 0
dist/skills/douyin-video-detail/api-config.json

@@ -0,0 +1,132 @@
+{
+  "name": "douyin-video-detail",
+  "displayName": "抖音单个作品数据查询 V3",
+  "description": "根据视频ID获取抖音单个作品完整数据(播放量/点赞/评论/分享/作者/话题标签等),V3版本无版权限制。适用于爆款视频深度分析、竞品内容解析、KOL内容效果评估。",
+  "category": "douyin",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/api/voc-social/douyin/app/v3/fetch_one_video_v3",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "aweme_id"
+    ],
+    "properties": {
+      "aweme_id": {
+        "type": "string",
+        "description": "抖音作品或文章 ID"
+      }
+    }
+  },
+  "requestTransform": {
+    "queryParams": {
+      "aweme_id": "{{aweme_id}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "作品详细数据",
+    "properties": {
+      "data": {
+        "type": "object",
+        "description": "作品数据,包括标题、描述、播放量、点赞数、评论数、分享数、作者信息等"
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "爆款视频数据分析",
+      "input": {
+        "aweme_id": "7592116912205630761"
+      },
+      "description": "获取爆款视频的完整数据,包括播放量、互动率、话题标签,用于总结爆款规律"
+    },
+    {
+      "name": "竞品内容深度解析",
+      "input": {
+        "aweme_id": "竞品视频ID"
+      },
+      "description": "分析竞品爆款视频的内容结构、标签策略、互动数据,对标自身内容体系"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "上游: douyin-general-search(keyword) → 获取视频列表 → 取 aweme_id",
+      "本步: douyin-video-detail(aweme_id) → 获取完整视频数据",
+      "下游: douyin-video-comments(aweme_id) → 获取该视频评论分析用户反馈",
+      "下游: douyin-user-profile(sec_uid) → 获取视频作者资料"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "社媒聆听(Slide14)",
+      "竞品社媒策略(Slide15)"
+    ],
+    "dataPoints": [
+      "视频播放量与互动率(点赞/播放比)",
+      "视频话题标签策略",
+      "内容发布时间与互动表现",
+      "KOL内容效果量化",
+      "爆款内容文案与卖点分析"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 137 - 0
dist/skills/html-report-generator/SKILL.md

@@ -0,0 +1,137 @@
+---
+name: html-report-generator
+description: 整合所有前置 Skill 输出,AI 生成结构化 REPORT_DATA JSON,注入 report_template.html 模板,输出完整可渲染的 13 屏幻灯片 HTML VOC分析报告。
+version: 2.1.0
+author: nkkj-BrainHack
+---
+
+# html-report-generator
+
+## 功能用途
+
+将品类分析、竞品分析、VOC 洞察、社媒数据整合,AI 生成与 `report_template.html` 完全匹配的 `REPORT_DATA` JSON,并填充模板 `{{placeholder}}` 变量,输出可直接在浏览器打开的 13 屏幻灯片 HTML 报告。
+
+**核心业务场景:**
+- 工作坊成果交付(一键生成可演示的 HTML 报告取代手动 PPT)
+- B端客户线索分析报告(竞品对标 + 品类机会矩阵 + VOC 洞察)
+- 品牌内部经营复盘报告(定期数据注入模板自动生成)
+
+## 调用链(Workflow)
+
+```
+上游: category-landscape → 市场全景数据
+上游: competitor-discovery / competitor-pricing-analysis → 竞品数据
+上游: review-pain-point-extraction / review-highlight-extraction → VOC 数据
+上游: social-trend-analysis / tiktok-category-voc → 社媒数据
+上游: user-persona → 用户画像数据
+本步: html-report-generator(all inputs) → 生成 REPORT_DATA JSON + 填充 placeholders → 输出 HTML
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| industryName | string | ✅ | 行业名称,如「香薰家居」「宠物用品」 |
+| coverBrandEnglish | string | ✅ | 封面英文品牌标识,如「HOME FRAGRANCE」 |
+| reportDate | string | ✅ | 报告日期,格式 'YYYY年MM月' |
+| categoryLandscape | object | ✅ | category-landscape 输出 |
+| competitorData | object | ✅ | competitor-discovery + pricing + comparison 汇总输出 |
+| reviewAnalysis | object | ✅ | review-pain-point-extraction + highlight-extraction 汇总输出 |
+| socialVocData | object | ❌ | social-trend-analysis + tiktok-category-voc 汇总输出 |
+| userPersona | object | ❌ | user-persona 输出 |
+| strategyData | object | ❌ | 短/中/长期策略建议(可手动补充或由 voc-proposal 输出提取) |
+
+## 模板文件
+
+**模板路径**: `workflows/templates/report_template.html`
+
+### 需填充的 `{{placeholder}}` 变量
+
+| 占位符 | 说明 |
+|--------|------|
+| `{{industryName}}` | 行业名称 |
+| `{{coverBrandEnglish}}` | 英文品牌标识 |
+| `{{totalReviews}}` | 分析的评论总条数 |
+| `{{categoryCount}}` | 品类数量 |
+| `{{competitorCount}}` | 竞品品牌数量 |
+| `{{competitorNames}}` | 竞品品牌名称(逗号分隔) |
+| `{{reportDate}}` | 报告日期 |
+| `{{REPORT_DATA_JSON}}` | 完整 REPORT_DATA JSON 对象 |
+
+### REPORT_DATA JSON 结构(AI 生成目标)
+
+```json
+{
+  "metrics": [{"value": 125000, "prefix": "$", "suffix": "", "label": "品类月销售额", "sub": "美元/月"}],
+  "coreFindings": [{"text": "品类处于高速成长期", "highlight": "增长率+35%", "highlightClass": "text-sage"}],
+  "coreValues": ["6大核心品类全面扫描", "竞品定价策略深度拆解"],
+  "categories": [{"name": "Reed Diffuser", "weeklySales": "3.2万件", "weeklyRevenue": "$96万", "avgPrice": "$29.9", "brands": "245", "growth": "+35%", "chinaRatio": "62%", "highlight": true, "revenueNum": 960000, "growthNum": 35}],
+  "competitors": [{"name": "NEST", "positioning": "高端溢价", "positionBadge": "badge-gold", "priceRange": "$35-68", "igFollowers": "28万", "tiktokFollowers": "12.5万", "skuNote": "12款", "strategyNote": "礼品定位", "pros": "✅ 品牌溢价强", "cons": "❌ 价格偏高", "radarData": [90,85,80,75,60]}],
+  "vocAnalysis": {"totalReviews": 1500, "painPoints": [{"icon": "🌸", "name": "香味持续时间短", "pct": 32, "gradient": "linear-gradient(90deg,#C4868B,#a06066)", "quote": "Scent fades after 3 days..."}], "highlights": [{"name": "香味品质好", "pct": 68, "color": "#8FA68A"}], "scenes": [{"name": "客厅日常", "pct": 40}]},
+  "categoryMatrix": [{"name": "Reed Diffuser", "marketSize": "大", "growth": "⬆️高", "socialHeat": "🔥高", "competition": "中等", "chinaRatio": "62%", "recommendation": "优先布局", "badgeClass": "badge-sage"}],
+  "tiktokHeat": [{"name": "#reeeddiffuser", "plays": 125000000}],
+  "seasonalNotes": [{"icon": "🎄", "title": "Q4旺季", "desc": "11-12月圣诞/新年送礼需求激增2.5倍"}],
+  "strategy": {"shortTerm": [{"title": "Listing优化", "desc": "核心关键词植入标题+bullet前2条"}], "midTerm": [{"title": "PPC广告", "desc": "核心词精准投放,ACOS目标<30%"}], "longTerm": [{"title": "产品迭代", "desc": "基于VOC痛点开发长效缓释配方"}]},
+  "vocPriorities": [{"text": "香味持续性改良", "badgeClass": "badge-rose"}, {"text": "礼品包装升级", "badgeClass": "badge-gold"}],
+  "conclusion": {"topCategory": {"emoji": "🏆", "title": "最优先品类", "name": "Reed Diffuser", "desc": "高增长 + 高社媒热度 + 中等竞争强度"}, "socialDividend": {"emoji": "📱", "title": "社媒红利", "name": "TikTok测评内容", "desc": "对比评测视频互动率最高但产出最少"}, "differentiator": {"title": "差异化突破口", "subtitle": "长效缓释技术 + 礼品化包装", "desc": "覆盖品类80%用户痛点,建立技术护城河"}, "keyActions": [{"emoji": "🎯", "title": "精准卡位", "desc": "Reed Diffuser 黄金价格带"}, {"emoji": "📝", "title": "VOC驱动", "desc": "差评痛点驱动产品迭代"}, {"emoji": "📱", "title": "社媒种草", "desc": "TikTok对比测评内容"}]}
+}
+```
+
+## 输出格式
+
+返回对象包含:
+- `htmlContent`: 完整 HTML 字符串(直接写入 `.html` 文件即可使用)
+- `reportDataJson`: 纯 REPORT_DATA JSON(可调试复查)
+- `templateVars`: 填充后的 `{{placeholder}}` 变量表
+- `reportStats`: 报告统计 `{totalSlides, dataCompleteness, generatedAt}`
+
+## 依赖要求
+
+- 纯 AI 综合生成,无外部 API 调用
+- 模板文件: `workflows/templates/report_template.html`(部署时需同步模板)
+- 依赖全部前置 Skill 的输出数据
+
+## 工作坊记忆集成
+
+当处于 VOC 工作坊流程中时,本技能支持从记忆文件自动读取参数(v2 schema):
+
+| 参数 | 记忆来源 | 字段路径 |
+|------|---------|---------|
+| industryName | `memory/brand-context.json` | 从 `.categoryKeywords` 推断 |
+| coverBrandEnglish | `memory/brand-context.json` | `.brandName` |
+| reportDate | 自动生成 | 当前日期 |
+| categoryLandscape | `memory/stage-1-output.json` | `.categoryLandscape`(含healthScore) |
+| competitorData | `memory/stage-2-output.json` | `.{competitorDiscovery, competitorComparison, pricingAnalysis}` |
+| voiceClassification | `memory/stage-3-output.json` | `.voiceClassification`(三维情感) |
+| brandVsCompetitor | `memory/stage-3-output.json` | `.brandVsCompetitor` |
+| keywordCloud | `memory/stage-3-output.json` | `.keywordCloud` |
+| painPointInsight | `memory/stage-4-output.json` | `.painPointInsight`(显性+隐性+权重) |
+| highlightInsight | `memory/stage-4-output.json` | `.highlightInsight`(亮点+Listing建议) |
+| featureSatisfaction | `memory/stage-4-output.json` | `.featureSatisfaction`(四象限+缺口) |
+| scenarioDashboard | `memory/stage-4-output.json` | `.scenarioDashboard`(高频+失败+新兴) |
+| socialVocData | `memory/stage-4-output.json` | `.{socialTrend, competitorBsr, crossChannelInsight}`(可选) |
+| userPersona | `memory/stage-4-output.json` | `.userPersona` |
+| actionableInsights | `memory/stage-5-output.json` | `.actionableInsights`(来自voc-proposal) |
+| overallHealthScore | `memory/stage-5-output.json` | `.overallHealthScore`(来自voc-proposal) |
+
+**HTML报告需包含13屏**(升级自原9屏):
+1. 封面
+2. 执行摘要 + 综合健康度评分(五维雷达图)
+3. 品类全景(市场规模+健康度+价格带)
+4. 品牌六维画像(雷达图)
+5. 竞品对比矩阵(多维表格+漏洞卡片)
+6. 用户声音分类(情感分布条+三栏明细)
+7. 痛点深度洞察(权重排行表+痛点卡片)
+8. 卖点植入方案(亮点→Listing建议+竞品对比)
+9. 功能满足度(四象限矩阵+缺口卡片)
+10. 使用场景看板(场景卡片+满意度排行)
+11. 用户画像(3-5个画像卡片)
+12. 行动计划(P0/P1/P2优先级+30天时间线)
+13. ROI估算(投入产出对比表)
+
+**执行完毕后**,将 HTML 文件路径写入 `memory/stage-5-output.json`(htmlReport 部分)。
+
+参考规范:`workshop/voc-report-schema-spec.md` 全文。
+
+## 对应工作坊环节
+Day2 下午 14:00-14:30「虾做报告」— 输出《HTML可演示报告》(13屏完整报告)

+ 213 - 0
dist/skills/html-report-generator/api-config.json

@@ -0,0 +1,213 @@
+{
+  "name": "html-report-generator",
+  "displayName": "HTML竞品分析报告生成器",
+  "description": "整合所有前置Skill输出,AI生成REPORT_DATA JSON,注入report_template.html模板,输出完整可渲染的13屏HTML VOC分析报告",
+  "category": "synthesis",
+  "version": "2.1.0",
+  "type": "analysis",
+  "templateRef": "workflows/templates/report_template.html",
+  "parameters": {
+    "industryName": {
+      "type": "string",
+      "required": true,
+      "description": "行业名称,如「香薰家居」「宠物用品」「母婴护理」"
+    },
+    "coverBrandEnglish": {
+      "type": "string",
+      "required": true,
+      "description": "封面英文品牌标识,如「HOME FRAGRANCE」「PET CARE」"
+    },
+    "reportDate": {
+      "type": "string",
+      "required": true,
+      "description": "报告日期,格式 'YYYY年MM月'"
+    },
+    "categoryLandscape": {
+      "type": "object",
+      "required": true,
+      "description": "synthesis/category-landscape 输出(市场全景数据)"
+    },
+    "competitorData": {
+      "type": "object",
+      "required": true,
+      "description": "competitor-analysis 汇总输出(竞品发现+对比+定价+追踪)"
+    },
+    "reviewAnalysis": {
+      "type": "object",
+      "required": true,
+      "description": "review-analysis 汇总输出(痛点+亮点+情感+关键词云)"
+    },
+    "socialVocData": {
+      "type": "object",
+      "required": false,
+      "description": "social-voc 汇总输出(TikTok+Instagram趋势数据)"
+    },
+    "userPersona": {
+      "type": "object",
+      "required": false,
+      "description": "synthesis/user-persona 输出"
+    },
+    "strategyData": {
+      "type": "object",
+      "required": false,
+      "description": "短/中/长期策略建议,可从voc-proposal输出中提取或手动补充"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "提取模板变量",
+      "type": "compute",
+      "logic": "extractTemplateVars(inputs)",
+      "algorithm": {
+        "placeholders": {
+          "industryName": "直接取 inputs.industryName",
+          "coverBrandEnglish": "直接取 inputs.coverBrandEnglish",
+          "reportDate": "直接取 inputs.reportDate",
+          "totalReviews": "从 reviewAnalysis.stats.totalReviews 提取,格式化为 '1,500条'",
+          "categoryCount": "从 categoryLandscape.topBrands 或 categories 数组长度提取",
+          "competitorCount": "从 competitorData.competitors 数组长度提取",
+          "competitorNames": "从 competitorData.competitors 数组提取 brand 字段,逗号分隔"
+        }
+      },
+      "output": "templateVars"
+    },
+    {
+      "step": 2,
+      "name": "AI生成REPORT_DATA JSON",
+      "type": "ai",
+      "logic": "generateReportData(categoryLandscape, competitorData, reviewAnalysis, socialVocData, userPersona, strategyData, templateVars)",
+      "aiConfig": {
+        "systemPrompt": "你是跨境电商数据分析专家。请严格按照指定JSON Schema生成REPORT_DATA对象,用于注入HTML幻灯片报告模板。只输出纯JSON,不要有任何注释或额外文字。",
+        "userPromptTemplate": "请根据以下分析数据生成完整的REPORT_DATA JSON对象:\n\n行业: ${industryName}\n品牌: ${coverBrandEnglish}\n\n【市场全景数据】\n${categoryLandscapeJson}\n\n【竞品数据】\n${competitorDataJson}\n\n【VOC评论分析】\n${reviewAnalysisJson}\n\n【社媒数据】\n${socialVocDataJson}\n\n【用户画像】\n${userPersonaJson}\n\n【策略建议】\n${strategyDataJson}\n\n请严格按照以下Schema生成REPORT_DATA:\n- metrics: 6个核心KPI指标卡片 [{value数字, prefix, suffix, label, sub}]\n- coreFindings: 5条核心发现 [{text, highlight, highlightClass}] highlightClass选'text-sage'(正向)/'text-rose'(负向)/'text-gold'(关键)\n- coreValues: 5条核心价值 [string]\n- categories: 各品类市场数据 [{name,weeklySales,weeklyRevenue,avgPrice,brands,growth,chinaRatio,highlight(bool),revenueNum(数字),growthNum(数字)}]\n- competitors: 竞品卡片数据 [{name,positioning,positionBadge('badge-gold'/'badge-sage'/'badge-rose'/'badge-blue'),priceRange,igFollowers,tiktokFollowers,skuNote,strategyNote,pros,cons,radarData:[5个0-100分值]}]\n- vocAnalysis: {totalReviews,painPoints:[{icon(emoji),name,pct(1-35),gradient('linear-gradient(90deg,...)'),quote}],highlights:[{name,pct(1-100),color('#...')}],scenes:[{name,pct}]}\n- categoryMatrix: [{name,marketSize,growth,socialHeat,competition,chinaRatio,recommendation,badgeClass}]\n- tiktokHeat: [{name(#话题名),plays(数字)}]\n- seasonalNotes: [{icon(emoji),title,desc}]\n- strategy: {shortTerm:[{title,desc}],midTerm:[{title,desc}],longTerm:[{title,desc}]} 每期3-4条\n- vocPriorities: [{text,badgeClass}] 6-8条VOC驱动的优化优先级\n- conclusion: {topCategory:{emoji,title,name,desc},socialDividend:{emoji,title,name,desc},differentiator:{title,subtitle,desc},keyActions:[{emoji,title,desc}]} keyActions 恰好3条",
+        "outputFormat": "{\"metrics\":[],\"coreFindings\":[],\"coreValues\":[],\"categories\":[],\"competitors\":[],\"vocAnalysis\":{},\"categoryMatrix\":[],\"tiktokHeat\":[],\"seasonalNotes\":[],\"strategy\":{},\"vocPriorities\":[],\"conclusion\":{}}",
+        "temperature": 0.3,
+        "maxTokens": 12000,
+        "promptPattern": "system约束JSON-only输出 + user按模块注入真实数据 + outputFormat示例引导结构"
+      },
+      "output": "reportDataJson"
+    },
+    {
+      "step": 3,
+      "name": "填充模板生成HTML",
+      "type": "compute",
+      "logic": "injectIntoTemplate(reportDataJson, templateVars, templateRef)",
+      "algorithm": {
+        "templateLoad": "读取 templateRef 路径的 report_template.html 文件内容",
+        "placeholderReplace": "将模板中所有 {{key}} 替换为 templateVars[key] 对应的值",
+        "dataInjection": "将 {{REPORT_DATA_JSON}} 替换为 JSON.stringify(reportDataJson, null, 2)",
+        "output": "完整HTML字符串,可直接写入 .html 文件并在浏览器打开"
+      },
+      "output": "htmlContent"
+    },
+    {
+      "step": 4,
+      "name": "生成报告统计",
+      "type": "compute",
+      "logic": "buildReportStats(reportDataJson, templateVars)",
+      "algorithm": {
+        "totalSlides": "固定9屏(封面/目录/执行摘要/市场全景/竞品对标/用户VOC/线索清单/执行策略/总结展望)",
+        "dataCompleteness": "检查reportDataJson各字段非空率,计算0-100数据完整度",
+        "generatedAt": "生成时间戳 ISO 8601"
+      },
+      "output": "reportStats"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "htmlContent": {
+        "type": "string",
+        "description": "完整HTML字符串,可直接写入 .html 文件在浏览器打开"
+      },
+      "reportDataJson": {
+        "type": "object",
+        "description": "生成的 REPORT_DATA JSON 对象(可调试复查)",
+        "properties": {
+          "metrics": { "type": "array" },
+          "coreFindings": { "type": "array" },
+          "categories": { "type": "array" },
+          "competitors": { "type": "array" },
+          "vocAnalysis": { "type": "object" },
+          "categoryMatrix": { "type": "array" },
+          "strategy": { "type": "object" },
+          "conclusion": { "type": "object" }
+        }
+      },
+      "templateVars": {
+        "type": "object",
+        "description": "填充后的 {{placeholder}} 变量表",
+        "properties": {
+          "industryName": { "type": "string" },
+          "coverBrandEnglish": { "type": "string" },
+          "totalReviews": { "type": "string" },
+          "categoryCount": { "type": "string" },
+          "competitorCount": { "type": "string" },
+          "competitorNames": { "type": "string" },
+          "reportDate": { "type": "string" }
+        }
+      },
+      "reportStats": {
+        "type": "object",
+        "description": "报告生成统计",
+        "properties": {
+          "totalSlides": { "type": "integer" },
+          "dataCompleteness": { "type": "number", "description": "0-100数据完整度百分比" },
+          "generatedAt": { "type": "string", "description": "生成时间戳" }
+        }
+      }
+    }
+  },
+  "timeout": 300000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 3000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 91 - 0
dist/skills/instagram-brand-voc/SKILL.md

@@ -0,0 +1,91 @@
+---
+name: instagram-brand-voc
+description: 搜索竞品品牌Instagram账号,采集帖子和互动数据,分析品牌IG策略
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# Instagram品牌VOC采集 (Instagram Brand VOC)
+
+## 技能名称
+instagram-brand-voc
+
+## 技能目的
+搜索并采集竞品品牌在 Instagram 上的账号信息、发布内容和粉丝互动数据,分析品牌IG策略和用户反馈。
+
+## 输入参数
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| brandNames | string[] | 是 | 竞品品牌名称列表 |
+| postsPerBrand | integer | 否 | 每个品牌采集的帖子数,默认12 |
+
+## 执行流程
+1. 对每个品牌名称调用 `instagram-search` 搜索品牌账号
+2. 对匹配的品牌账号调用 `instagram-user-info` 获取详情(粉丝数、帖子数、简介)
+3. 调用 `instagram-user-posts` 获取品牌最近发布的帖子
+4. 分析品牌IG画像:
+   - **账号概况**: 粉丝数、关注数、帖子总数、简介关键词
+   - **内容策略**: 图片/视频/Reels比例、发布频率、标题风格
+   - **互动表现**: 平均点赞/评论、互动率趋势
+   - **视觉风格**: 主色调、图片风格一致性(需人工判断)
+   - **标签策略**: 常用 Hashtag 列表
+
+## 调用的底层 Skill
+- `social-media/instagram-search` — 搜索IG账号
+- `social-media/instagram-user-info` — IG用户详情
+- `social-media/instagram-user-posts` — IG用户帖子列表
+
+## 返回格式
+```json
+{
+  "brands": [
+    {
+      "brandName": "NEST New York",
+      "instagramAccount": {
+        "username": "nestfragrances",
+        "fullName": "NEST New York",
+        "followers": 280000,
+        "following": 450,
+        "postCount": 2300,
+        "bio": "Luxury home fragrances...",
+        "isVerified": true,
+        "profilePicUrl": "..."
+      },
+      "contentStrategy": {
+        "postFrequency": "5-6/week",
+        "contentMix": { "image": 45, "video": 20, "reels": 30, "carousel": 5 },
+        "avgLikes": 3200,
+        "avgComments": 85,
+        "engagementRate": 1.2
+      },
+      "recentPosts": [
+        {
+          "postId": "...",
+          "type": "image",
+          "caption": "...",
+          "likes": 5600,
+          "comments": 120,
+          "hashtags": ["#nestnewyork", "#homefragrance"]
+        }
+      ],
+      "hashtagStrategy": ["#homefragrance", "#candles", "#homedecor", "#luxuryliving"]
+    }
+  ],
+  "crossBrandComparison": {
+    "followerRanking": ["NEST New York", "Paddywax", "COCORRINA"],
+    "engagementRanking": ["Paddywax", "COCORRINA", "NEST New York"],
+    "visualStyleDiff": "NEST偏高端极简,Paddywax偏手工温馨,COCORRINA偏清新自然"
+  }
+}
+```
+
+## 核心业务场景
+- 竞品品牌 IG 社媒策略分析(内容类型分布/发帖频率/互动率)
+- 竞品视觉风格对比(高端极简 vs 手工温馨 vs 清新自然)
+- 跨品牌 IG 影响力排名(粉丝数/互动率对比)
+
+## 依赖
+- Social Media API: `https://server.fmode.cn/api/voc-social/`(统一转发,认证已内置)
+
+## 对应工作坊环节
+Day2 上午 09:00-09:50「社媒VOC采集 — Instagram品牌声音」

+ 163 - 0
dist/skills/instagram-brand-voc/api-config.json

@@ -0,0 +1,163 @@
+{
+  "name": "instagram-brand-voc",
+  "displayName": "Instagram品牌VOC采集",
+  "description": "搜索竞品品牌Instagram账号,采集帖子和互动数据,分析品牌IG策略",
+  "category": "social-voc",
+  "version": "1.3.0",
+  "type": "orchestration",
+  "parameters": {
+    "brandNames": {
+      "type": "array",
+      "items": { "type": "string" },
+      "required": true,
+      "description": "竞品品牌名称列表"
+    },
+    "postsPerBrand": {
+      "type": "integer",
+      "required": false,
+      "default": 12,
+      "description": "每个品牌采集的帖子数"
+    }
+  },
+  "pipeline": [
+    {
+      "step": 1,
+      "name": "搜索品牌Instagram账号",
+      "forEach": "brandNames",
+      "api": {
+        "skill": "social-media/instagram-search",
+        "endpoint": "https://server.fmode.cn/api/voc-social/instagram/v1/fetch_search",
+        "method": "GET",
+        "headers": { "Authorization": "Bearer ${TIKHUB_TOKEN}" },
+        "queryParams": { "query": "${brandName}", "select": "users" }
+      },
+      "output": "searchResults",
+      "responseExtract": "users[] → { user: { pk, username, full_name, is_verified, profile_pic_url, follower_count, is_private } }",
+      "postProcess": "每个品牌取follower_count最高且is_verified的账号作topMatch"
+    },
+    {
+      "step": 2,
+      "name": "获取品牌账号详细资料",
+      "forEach": "searchResults.topMatch",
+      "api": {
+        "skill": "social-media/instagram-user-info",
+        "endpoint": "https://server.fmode.cn/api/voc-social/instagram/v1/fetch_user_info_by_username",
+        "method": "GET",
+        "headers": { "Authorization": "Bearer ${TIKHUB_TOKEN}" },
+        "queryParams": { "username": "${account.username}" }
+      },
+      "output": "brandProfiles",
+      "responseExtract": "{ user: { pk, username, full_name, biography, follower_count, following_count, media_count, is_verified, profile_pic_url } }"
+    },
+    {
+      "step": 3,
+      "name": "采集品牌帖子",
+      "forEach": "brandProfiles",
+      "api": {
+        "skill": "social-media/instagram-user-posts",
+        "endpoint": "https://server.fmode.cn/api/voc-social/instagram/v1/fetch_user_posts",
+        "method": "GET",
+        "headers": { "Authorization": "Bearer ${TIKHUB_TOKEN}" },
+        "queryParams": { "user_id": "${profile.user.pk}", "count": "${postsPerBrand}" }
+      },
+      "output": "brandPosts",
+      "responseExtract": "items[] → { id, caption:{text}, like_count, comment_count, media_type, taken_at, image_versions2 }"
+    },
+    {
+      "step": 4,
+      "name": "Instagram品牌VOC分析",
+      "type": "compute",
+      "logic": "analyzeInstagramBrandVoc(brandProfiles, brandPosts)",
+      "algorithm": {
+        "brandMetrics": "{ followerCount, mediaCount, avgLikeCount, avgCommentCount, avgEngagementRate, postFrequency }",
+        "engagementRate": "(like_count + comment_count) / follower_count * 100",
+        "contentAnalysis": "仌caption.text提取高频hashtag和内容主题",
+        "postingPattern": "分析发布频率和最佳发布时间",
+        "crossBrand": "多品牌横向对比: 粉丝数/互动率/发布频率/内容类型"
+      },
+      "output": "igBrandAnalysis"
+    }
+  ],
+  "response": {
+    "type": "object",
+    "properties": {
+      "brands": {
+        "type": "array",
+        "description": "各品牌IG画像",
+        "items": {
+          "type": "object",
+          "properties": {
+            "brandName": { "type": "string" },
+            "username": { "type": "string" },
+            "followerCount": { "type": "integer" },
+            "mediaCount": { "type": "integer" },
+            "avgEngagementRate": { "type": "number" },
+            "topHashtags": { "type": "array" },
+            "contentThemes": { "type": "array" }
+          }
+        }
+      },
+      "crossBrandComparison": {
+        "type": "object",
+        "description": "品牌间横向对比",
+        "properties": {
+          "followerRanking": { "type": "array" },
+          "engagementRanking": { "type": "array" },
+          "contentStrategyComparison": { "type": "object" }
+        }
+      }
+    }
+  },
+  "timeout": 120000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 2000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 63 - 0
dist/skills/instagram-search/SKILL.md

@@ -0,0 +1,63 @@
+---
+name: instagram-search
+description: 按关键词搜索 Instagram 用户账号或话题标签,返回匹配的用户列表或标签列表。适用于竞品品牌 Instagram 账号定位、KOL 初筛、品类话题标签发现。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# instagram-search
+
+## 功能用途
+
+按关键词搜索 Instagram 用户账号或话题标签,获取初始候选列表。
+
+**核心业务场景:**
+- 竞品品牌 IG 账号定位(搜索竞品名获取官方账号 username/pk)
+- 品类 KOL 初筛(搜索品类词找相关创作者)
+- 品类话题标签发现(select='hashtags' 搜索相关标签)
+
+## 调用链(Workflow)
+
+```
+本步: instagram-search(query, select='users') → 搜索用户 → 得到 username、pk、follower_count
+下游: instagram-user-info(username) → 获取账号完整数据(帖子数/简介等)
+下游: instagram-user-posts(user_id=pk) → 获取帖子列表
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 枚举值 | 说明 |
+|------|------|------|--------|------|
+| query | string | ✅ | — | 搜索关键词,如 'NEST New York'、'Paddywax'、'candle maker' |
+| select | string | ❌ | 'users'=搜索用户 'hashtags'=搜索标签 | 搜索类型(默认 'users') |
+
+## 接口调用方式
+
+- **请求方法**: GET
+- **接口地址**: `https://server.fmode.cn/api/voc-social/instagram/v1/fetch_search`
+
+**搜索竞品品牌账号:**
+```
+GET ?query=NEST+New+York&select=users
+```
+
+**搜索品类话题标签:**
+```
+GET ?query=aromatherapy&select=hashtags
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| users[].user.pk | 用户数字 ID → **传入 instagram-user-posts 的 user_id** |
+| users[].user.username | 用户名 → **传入 instagram-user-info 的 username** |
+| users[].user.full_name | 显示名称 |
+| users[].user.follower_count | 粉丝数 → KOL 规模初判 |
+| users[].user.is_verified | 是否认证 → 品牌官方账号识别 |
+| users[].user.is_private | 是否私密账号 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法 GET,参数作为查询参数传递

+ 188 - 0
dist/skills/instagram-search/api-config.json

@@ -0,0 +1,188 @@
+{
+  "name": "instagram-search",
+  "displayName": "Instagram 搜索",
+  "description": "按关键词搜索 Instagram 用户账号或话颒标签,返回匹配的用户列表或标签列表。适用于竞品品牌 Instagram 账号定位、KOL 初筛、品类 话颒标签发现。",
+  "category": "social-media",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/api/voc-social/instagram/v1/fetch_search",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "query"
+    ],
+    "properties": {
+      "query": {
+        "type": "string",
+        "description": "搜索关键词,如品牌名 'NEST New York'、'Paddywax'、'SpaRoom'"
+      },
+      "select": {
+        "type": "string",
+        "description": "搜索类型: 'users'=搜索用户, 'hashtags'=搜索标签",
+        "default": "users",
+        "enum": [
+          "users",
+          "hashtags"
+        ]
+      }
+    }
+  },
+  "requestTransform": {
+    "queryParams": {
+      "query": "{{query}}",
+      "select": "{{select}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "搜索结果",
+    "properties": {
+      "users": {
+        "type": "array",
+        "description": "匹配的用户列表",
+        "items": {
+          "type": "object",
+          "properties": {
+            "user": {
+              "type": "object",
+              "properties": {
+                "pk": {
+                  "type": "string",
+                  "description": "用户数字 ID(用于获取帖子)"
+                },
+                "username": {
+                  "type": "string",
+                  "description": "用户名"
+                },
+                "full_name": {
+                  "type": "string",
+                  "description": "显示名称"
+                },
+                "is_verified": {
+                  "type": "boolean",
+                  "description": "是否认证"
+                },
+                "profile_pic_url": {
+                  "type": "string",
+                  "description": "头像 URL"
+                },
+                "follower_count": {
+                  "type": "integer",
+                  "description": "粉丝数"
+                },
+                "is_private": {
+                  "type": "boolean",
+                  "description": "是否私密账号"
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "notes": "搜索结果中的 user.pk 可用于 instagram_user_posts 接口获取帖子列表。username 可用于 instagram_user_info 获取详细资料。",
+  "usageExamples": [
+    {
+      "name": "竞品品牌 IG 账号定位",
+      "input": {
+        "query": "NEST New York",
+        "select": "users"
+      },
+      "description": "搜索 NEST New York 的 Instagram 品牌账号,获取 username 和 pk 用于后续分析"
+    },
+    {
+      "name": "品类 KOL 搜索",
+      "input": {
+        "query": "candle maker",
+        "select": "users"
+      },
+      "description": "搜索 candle maker 相关 Instagram KOL,初筛候选达人列表"
+    },
+    {
+      "name": "品类话颒标签搜索",
+      "input": {
+        "query": "aromatherapy",
+        "select": "hashtags"
+      },
+      "description": "搜索 aromatherapy 相关 IG 标签,发现品类相关话颒"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "本步: instagram-search(query, select='users') → 搜索用户 → 得到 username、pk、follower_count",
+      "下游: instagram-user-info(username) → 获取账号完整数据(帖子数/简介等)",
+      "下游: instagram-user-posts(user_id=pk) → 获取用户帖子列表"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "竞品对标(Slide4)",
+      "知识中心(Slide11)"
+    ],
+    "dataPoints": [
+      "竞品品牌 IG 账号发现",
+      "品类 KOL 候选列表",
+      "品类话颒标签热度分布"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 60 - 0
dist/skills/instagram-user-info/SKILL.md

@@ -0,0 +1,60 @@
+---
+name: instagram-user-info
+description: 根据用户名获取 Instagram 账号完整资料,包括粉丝数、帖子数、个人简介、认证状态、商业账号类型等。适用于竞品品牌 IG 影响力画像建立、KOL 资质评估、达人商业价值分析。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# instagram-user-info
+
+## 功能用途
+
+根据 username 获取 Instagram 账号完整主页数据,量化品牌/KOL 的影响力规模。
+
+**核心业务场景:**
+- 竞品品牌 IG 影响力画像建立(粉丝规模、帖子活跃度、认证状态)
+- KOL 资质评估(粉丝数/帖子数/是否商业账号)
+- 竞品组批量数据采集(报告中 Slide4 竞品 IG 数据)
+
+## 调用链(Workflow)
+
+```
+上游: instagram-search(query, select='users') → 搜索用户 → 取 username
+本步: instagram-user-info(username) → 获取完整账号数据(pk/follower_count/media_count)
+下游: instagram-user-posts(user_id=pk) → 获取帖子列表分析内容策略
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| username | string | ✅ | Instagram 用户名(不含@),如 'nestnewyork'、'paddywax' |
+
+## 接口调用方式
+
+- **请求方法**: GET
+- **接口地址**: `https://server.fmode.cn/api/voc-social/instagram/v1/fetch_user_info_by_username_v3`
+
+```
+GET ?username=nestnewyork
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| user.pk | 用户数字 ID → **传入 instagram-user-posts 的 user_id** |
+| user.username | 用户名 |
+| user.full_name | 显示名称 |
+| user.biography | 个人简介 → 品牌定位分析 |
+| user.follower_count | 粉丝数 → KOL 规模评级 |
+| user.media_count | 帖子总数 → 内容活跃度指标 |
+| user.is_verified | 是否蓝V认证 → 官方账号识别 |
+| user.is_business | 是否商业账号 → 品牌/达人性质判断 |
+| user.category | 账号类别 |
+| user.external_url | 外部链接 → 品牌官网入口 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法 GET,username 作为查询参数传递

+ 188 - 0
dist/skills/instagram-user-info/api-config.json

@@ -0,0 +1,188 @@
+{
+  "name": "instagram-user-info",
+  "displayName": "Instagram 用户详情",
+  "description": "根据用户名获取 Instagram 账号完整资料,包括粉丝数、帖子数、个人简介、认证状态、商业账号类型等。适用于竞品品牌 IG 影响力画像建立、KOL 资质评估、达人商业价弹分析。",
+  "category": "social-media",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/api/voc-social/instagram/v1/fetch_user_info_by_username_v3",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "username"
+    ],
+    "properties": {
+      "username": {
+        "type": "string",
+        "description": "Instagram 用户名(不含@),如 'nestnewyork'、'paddywax'"
+      }
+    }
+  },
+  "requestTransform": {
+    "queryParams": {
+      "username": "{{username}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "用户详细资料",
+    "properties": {
+      "user": {
+        "type": "object",
+        "properties": {
+          "pk": {
+            "type": "string",
+            "description": "用户数字 ID"
+          },
+          "username": {
+            "type": "string",
+            "description": "用户名"
+          },
+          "full_name": {
+            "type": "string",
+            "description": "显示名称"
+          },
+          "biography": {
+            "type": "string",
+            "description": "个人简介"
+          },
+          "follower_count": {
+            "type": "integer",
+            "description": "粉丝数"
+          },
+          "following_count": {
+            "type": "integer",
+            "description": "关注数"
+          },
+          "media_count": {
+            "type": "integer",
+            "description": "帖子总数"
+          },
+          "is_verified": {
+            "type": "boolean",
+            "description": "是否蓝V认证"
+          },
+          "is_business": {
+            "type": "boolean",
+            "description": "是否商业账号"
+          },
+          "category": {
+            "type": "string",
+            "description": "账号类别"
+          },
+          "external_url": {
+            "type": "string",
+            "description": "外部链接(如品牌官网)"
+          },
+          "profile_pic_url_hd": {
+            "type": "string",
+            "description": "高清头像 URL"
+          }
+        }
+      }
+    }
+  },
+  "notes": "返回的 pk(用户数字 ID)可用于 instagram-user-posts 接口获取帖子列表。media_count 对应报告中的帖子数(如 Paddywax 3,095 条)。",
+  "usageExamples": [
+    {
+      "name": "竞品品牌 IG 影响力画像",
+      "input": {
+        "username": "nestnewyork"
+      },
+      "description": "获取 NEST New York 的 IG 粉丝数、帖子数、认证状态,建立竞品 IG 影响力画像"
+    },
+    {
+      "name": "竞品组对标数据采集",
+      "input": {
+        "username": "paddywax"
+      },
+      "description": "获取 Paddywax 的 IG 数据,用于报告中竞品 Instagram 对标数据填充"
+    },
+    {
+      "name": "KOL 资质评估",
+      "input": {
+        "username": "达人用户名"
+      },
+      "description": "获取 KOL 的粉丝数、帖子数、是否商业账号等,评估带货商业指标"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "上游: instagram-search(query, select='users') → 搜索用户 → 取 username",
+      "本步: instagram-user-info(username) → 获取完整账号数据(pk/follower_count/media_count)",
+      "下游: instagram-user-posts(user_id=pk) → 获取帖子列表分析内容策略"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "竞品对标(Slide4)",
+      "知识中心(Slide11)"
+    ],
+    "dataPoints": [
+      "IG 粉丝规模",
+      "帖子总量(内容活跃度)",
+      "认证状态(蓝 V/商业账号)",
+      "品牌简介分析(biography)",
+      "外部链接(官网入口)"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 63 - 0
dist/skills/instagram-user-posts/SKILL.md

@@ -0,0 +1,63 @@
+---
+name: instagram-user-posts
+description: 获取指定 Instagram 用户发布的帖子列表,包括点赞数、评论数、帖子文案等。适用于竞品品牌 IG 内容策略分析、KOL 帖子互动表现评估、品牌运营频率分析。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# instagram-user-posts
+
+## 功能用途
+
+获取 Instagram 用户发布的帖子列表,分析内容策略、发帖规律和互动表现。
+
+**核心业务场景:**
+- 竞品品牌 IG 内容策略分析(发帖频率、内容主题、帖子互动率)
+- KOL 帖子互动表现评估(单帖平均互动率计算)
+- 品牌视觉内容风格分析(内容类型分布:图片/视频/轮播)
+
+## 调用链(Workflow)
+
+```
+上游: instagram-search(query, select='users') → 搜索品牌/KOL → 取 username
+上游: instagram-user-info(username) → 获取 pk 字段和粉丝数
+本步: instagram-user-posts(user_id=pk) → 获取帖子列表
+分析: 互动率 = (like_count + comment_count) / follower_count
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| user_id | string | ✅ | Instagram 用户数字 ID(pk),从 instagram-user-info 的 user.pk 字段获取 |
+| count | integer | ❌ | 每页帖子数量,最大 50(默认 12) |
+| end_cursor | string | ❌ | 翻页游标,首次不传,后续传上次返回的 end_cursor |
+
+## 接口调用方式
+
+- **请求方法**: GET
+- **接口地址**: `https://server.fmode.cn/api/voc-social/instagram/v1/fetch_user_posts_v2`
+
+```
+GET ?user_id=12345678&count=12
+```
+
+## 关键响应字段
+
+| 字段路径 | 业务用途 |
+|----------|---------|
+| items[].id | 帖子 ID |
+| items[].caption.text | 帖子文案 → 内容主题分析 |
+| items[].like_count | 点赞数 → 互动率计算分子 |
+| items[].comment_count | 评论数 → 互动率计算分子 |
+| items[].taken_at | 发布时间戳 → 发帖频率分析 |
+| items[].media_type | 媒体类型(1=图片 2=视频 8=轮播) → 内容类型分布 |
+| items[].view_count | 视频观看次数(仅视频帖子) |
+| has_more | 是否还有更多帖子 |
+| end_cursor | 下一页游标 |
+
+## 依赖要求
+
+- 统一代理: `https://server.fmode.cn/api/voc-social/`
+- 请求方法 GET,参数作为查询参数传递
+- **user_id 必须从 instagram-user-info 的 user.pk 字段获取**

+ 208 - 0
dist/skills/instagram-user-posts/api-config.json

@@ -0,0 +1,208 @@
+{
+  "name": "instagram-user-posts",
+  "displayName": "Instagram 用户帖子列表",
+  "description": "获取指定 Instagram 用户发布的帖子列表,包括点赞数、评论数、帖子文案等。适用于竞品品牌 IG 内容策略分析、KOL 帖子互动表现评估、品牌运营频率分析。",
+  "category": "social-media",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/api/voc-social/instagram/v1/fetch_user_posts_v2",
+    "headers": {
+      "Authorization": "Bearer r:a5a19ea9868043b15d9b10423234ca43",
+      "Accept": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "user_id"
+    ],
+    "properties": {
+      "user_id": {
+        "type": "string",
+        "description": "Instagram 用户数字 ID(pk),需先通过 instagram_user_info 或 instagram_search 接口获取"
+      },
+      "count": {
+        "type": "integer",
+        "description": "每页帖子数量",
+        "default": 12,
+        "maximum": 50
+      },
+      "end_cursor": {
+        "type": "string",
+        "description": "分页游标,首次不传,后续传上次返回的 end_cursor"
+      }
+    }
+  },
+  "requestTransform": {
+    "queryParams": {
+      "user_id": "{{user_id}}",
+      "count": "{{count}}",
+      "end_cursor": "{{end_cursor}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "帖子列表",
+    "properties": {
+      "items": {
+        "type": "array",
+        "description": "帖子数组",
+        "items": {
+          "type": "object",
+          "properties": {
+            "id": {
+              "type": "string",
+              "description": "帖子 ID"
+            },
+            "code": {
+              "type": "string",
+              "description": "帖子短码(URL 用)"
+            },
+            "caption": {
+              "type": "object",
+              "properties": {
+                "text": {
+                  "type": "string",
+                  "description": "帖子文案"
+                }
+              }
+            },
+            "like_count": {
+              "type": "integer",
+              "description": "点赞数"
+            },
+            "comment_count": {
+              "type": "integer",
+              "description": "评论数"
+            },
+            "taken_at": {
+              "type": "integer",
+              "description": "发布时间戳"
+            },
+            "media_type": {
+              "type": "integer",
+              "description": "媒体类型: 1=图片, 2=视频, 8=轮播"
+            },
+            "image_versions2": {
+              "type": "object",
+              "description": "图片版本列表"
+            },
+            "video_versions": {
+              "type": "array",
+              "description": "视频版本列表(仅视频帖子)"
+            },
+            "view_count": {
+              "type": "integer",
+              "description": "视频观看次数(仅视频帖子)"
+            }
+          }
+        }
+      },
+      "has_more": {
+        "type": "boolean",
+        "description": "是否有更多帖子"
+      },
+      "end_cursor": {
+        "type": "string",
+        "description": "下一页游标"
+      }
+    }
+  },
+  "notes": "user_id 需先通过 instagram-user-info 接口获取 pk 字段。互动率公式:(like_count + comment_count) / follower_count。",
+  "relatedSkills": [
+    "instagram-user-info",
+    "instagram-search"
+  ],
+  "usageExamples": [
+    {
+      "name": "竞品品牌 IG 内容策略分析",
+      "input": {
+        "user_id": "12345678",
+        "count": 12
+      },
+      "description": "获取竞品品牌最近 12 条帖子,分析发帖频率、内容主题、帖子互动率"
+    },
+    {
+      "name": "KOL 帖子评估",
+      "input": {
+        "user_id": "达人 pk",
+        "count": 20
+      },
+      "description": "获取达人近期 20 条帖子,计算帖子平均互动率(点赞+评论)/粉丝数"
+    }
+  ],
+  "workflow": {
+    "description": "推荐调用链",
+    "steps": [
+      "上游: instagram-search(query, select='users') → 搜索品牌/KOL → 取 username",
+      "上游: instagram-user-info(username) → 获取 pk 字段和粉丝数",
+      "本步: instagram-user-posts(user_id=pk) → 获取帖子列表",
+      "分析: 计算互动率 = (like_count+comment_count)/follower_count"
+    ]
+  },
+  "reportMapping": {
+    "slides": [
+      "竞品对标(Slide4)",
+      "社媒聆听(Slide14)"
+    ],
+    "dataPoints": [
+      "帖子平均互动率对比",
+      "品牌发帖频率和内容规律",
+      "内容类型分布(1=图片 2=视频 8=轮播)",
+      "品牌视觉风格分析"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1500,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 36 - 0
dist/skills/jimeng-actor-v2/SKILL.md

@@ -0,0 +1,36 @@
+---
+name: jimeng-actor-v2
+description: 动作模仿2.0,新一代视频动作模仿大模型,支持多人驱动和非真人驱动视频,更好保持图片画幅、原始姿态、特征等信息。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-actor-v2
+
+## 功能用途
+
+动作模仿2.0,新一代视频动作模仿大模型,效果更好,适用场景更多。
+
+**核心业务场景:**
+- 多人驱动(2.0新增)
+- 非真人驱动视频(2.0新增,支持动漫等角色)
+- 更好地保持图片画幅、原始姿态、特征信息
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| image_url | string | ✅ | 图片URL |
+| video_url | string | ✅ | 模版视频URL |
+| cut_result_first_second_switch | boolean | ❌ | 是否裁剪结果视频第1秒,默认true |
+| callback_url | string | ❌ | 回调接口URL |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getActorV2`
+
+## 费用
+
+动作模仿2.0: **0.4元/秒**

+ 177 - 0
dist/skills/jimeng-actor-v2/api-config.json

@@ -0,0 +1,177 @@
+{
+  "name": "jimeng-actor-v2",
+  "displayName": "动作模仿2.0",
+  "description": "新一代视频动作模仿大模型,支持多人驱动和非真人驱动视频。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getActorV2",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "image_url",
+      "video_url",
+      "token"
+    ],
+    "properties": {
+      "image_url": {
+        "type": "string",
+        "description": "图片URL"
+      },
+      "video_url": {
+        "type": "string",
+        "description": "模版视频URL"
+      },
+      "cut_result_first_second_switch": {
+        "type": "boolean",
+        "description": "是否裁剪结果视频第1秒,默认true",
+        "default": true
+      },
+      "callback_url": {
+        "type": "string",
+        "description": "回调接口URL"
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "人物动作模仿v2",
+      "input": {
+        "image_url": "https://example.com/person.jpg",
+        "video_url": "https://example.com/dance.mp4",
+        "cut_result_first_second_switch": false,
+        "token": "Bearer r:xxx"
+      },
+      "description": "使用2.0模型驱动图片人物按视频动作运动"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-actor"
+  ],
+  "pricing": {
+    "unit": "秒",
+    "price": 0.4,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/2205633"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 34 - 0
dist/skills/jimeng-actor/SKILL.md

@@ -0,0 +1,34 @@
+---
+name: jimeng-actor
+description: 动作模仿1.0,输入一张图片和一段模版视频,将图片中的人物按照视频的动作/表情/口型驱动起来。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-actor
+
+## 功能用途
+
+即梦动作模仿(生动模式),主体及背景特征与输入图片保持一致。
+
+**核心业务场景:**
+- 人物动作/表情/口型驱动
+- 各种画幅、比例视频均能高度还原
+- 支持多种风格角色,具备运镜还原能力
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| video_url | string | ✅ | 模版视频URL |
+| image_url | string | ✅ | 图片URL |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getActor`
+
+## 费用
+
+动作模仿1.0: **0.5元/秒**

+ 167 - 0
dist/skills/jimeng-actor/api-config.json

@@ -0,0 +1,167 @@
+{
+  "name": "jimeng-actor",
+  "displayName": "动作模仿1.0",
+  "description": "输入一张图片和一段模版视频,将图片中的人物按照视频的动作/表情/口型驱动起来。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getActor",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "video_url",
+      "image_url",
+      "token"
+    ],
+    "properties": {
+      "video_url": {
+        "type": "string",
+        "description": "模版视频URL"
+      },
+      "image_url": {
+        "type": "string",
+        "description": "图片URL"
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "人物动作模仿",
+      "input": {
+        "video_url": "https://example.com/dance.mp4",
+        "image_url": "https://example.com/person.jpg",
+        "token": "Bearer r:xxx"
+      },
+      "description": "让图片中的人物按照视频模版动作运动起来"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-actor-v2"
+  ],
+  "pricing": {
+    "unit": "秒",
+    "price": 0.5,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/1544715"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 44 - 0
dist/skills/jimeng-clothes-v2/SKILL.md

@@ -0,0 +1,44 @@
+---
+name: jimeng-clothes-v2
+description: 图片换装V2,输入模特图和上装/下装图URL,智能完成虚拟换装,支持多项推理配置参数。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-clothes-v2
+
+## 功能用途
+
+虚拟换装,将指定服装穿在模特图上。
+
+**核心业务场景:**
+- 电商模特换装(上装/下装独立或组合换装)
+- 服装展示图批量生成
+- 支持保持头/手/足等细节控制
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| model | string | ✅ | 模特图URL |
+| upper | string | ❌ | 上装图URL(与bottom至少提供一个) |
+| bottom | string | ❌ | 下装图URL(与upper至少提供一个) |
+| inference_config | object | ❌ | 推理配置参数 |
+| inference_config.do_sr | boolean | ❌ | 是否超分处理,默认false |
+| inference_config.seed | number | ❌ | 随机种子,默认-1 |
+| inference_config.keep_head | boolean | ❌ | 保持原图头部,默认true |
+| inference_config.keep_hand | boolean | ❌ | 保持原图手部,默认false |
+| inference_config.keep_foot | boolean | ❌ | 保持原图足部,默认false |
+| inference_config.num_steps | number | ❌ | 推理步数,默认16,范围[8,50] |
+| inference_config.keep_upper | boolean | ❌ | 保持原图上装,默认false |
+| inference_config.keep_lower | boolean | ❌ | 保持原图下装,默认false |
+| inference_config.tight_mask | string | ❌ | 遮挡范围,默认"loose",支持tight/loose/bbox |
+| inference_config.p_bbox_iou_ratio | number | ❌ | 多人时bbox相交比例,默认0.3 |
+| inference_config.p_bbox_expand_ratio | number | ❌ | bbox扩大比例,默认1.1 |
+| inference_config.max_process_side_length | number | ❌ | 最大边长,默认1920 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getClothesV2`

+ 229 - 0
dist/skills/jimeng-clothes-v2/api-config.json

@@ -0,0 +1,229 @@
+{
+  "name": "jimeng-clothes-v2",
+  "displayName": "图片换装V2",
+  "description": "输入模特图和上装/下装图URL,智能完成虚拟换装。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getClothesV2",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "model",
+      "token"
+    ],
+    "properties": {
+      "model": {
+        "type": "string",
+        "description": "模特图URL"
+      },
+      "upper": {
+        "type": "string",
+        "description": "上装图URL(与bottom至少提供一个)"
+      },
+      "bottom": {
+        "type": "string",
+        "description": "下装图URL(与upper至少提供一个)"
+      },
+      "inference_config": {
+        "type": "object",
+        "description": "推理配置参数",
+        "properties": {
+          "do_sr": {
+            "type": "boolean",
+            "default": false
+          },
+          "seed": {
+            "type": "number",
+            "default": -1
+          },
+          "keep_head": {
+            "type": "boolean",
+            "default": true
+          },
+          "keep_hand": {
+            "type": "boolean",
+            "default": false
+          },
+          "keep_foot": {
+            "type": "boolean",
+            "default": false
+          },
+          "num_steps": {
+            "type": "number",
+            "default": 16
+          },
+          "keep_upper": {
+            "type": "boolean",
+            "default": false
+          },
+          "keep_lower": {
+            "type": "boolean",
+            "default": false
+          },
+          "tight_mask": {
+            "type": "string",
+            "default": "loose",
+            "enum": [
+              "tight",
+              "loose",
+              "bbox"
+            ]
+          },
+          "p_bbox_iou_ratio": {
+            "type": "number",
+            "default": 0.3
+          },
+          "p_bbox_expand_ratio": {
+            "type": "number",
+            "default": 1.1
+          },
+          "max_process_side_length": {
+            "type": "number",
+            "default": 1920
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "模特换上装+下装",
+      "input": {
+        "model": "https://example.com/model.jpg",
+        "upper": "https://example.com/shirt.png",
+        "bottom": "https://example.com/pants.jpg",
+        "inference_config": {
+          "keep_head": true,
+          "num_steps": 16,
+          "tight_mask": "loose"
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "为模特换上新的上装和下装"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-img-v4-goods"
+  ],
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 36 - 0
dist/skills/jimeng-img-v4-goods/SKILL.md

@@ -0,0 +1,36 @@
+---
+name: jimeng-img-v4-goods
+description: 图片生成4.0-商品提取,智能提取商品主体并匹配最佳展示视角,支持服装、鞋包、饰品、家具、日用品核心品类。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-img-v4-goods
+
+## 功能用途
+
+智能提取商品主体并匹配最佳展示视角,一键生成专业商品展示图。
+
+**核心业务场景:**
+- 提取全身衣服生成平铺图
+- 提取鞋子/包包/饰品生成白底正视图
+- 电商商品主图制作
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| image_url | string | ✅ | 图片文件URL |
+| instruction | number | ❌ | 编辑指令,默认1。1:全身衣服 2:鞋子 3:包包 4:沙发 5:日用品 6:饰品 |
+| sizeDate | object | ❌ | 图片尺寸,默认2048×2048 |
+| prompt | string | ❌ | 提示词 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getImgV4_goods`
+
+## 费用
+
+图片生成v4 商品提取: **0.22元/张**

+ 195 - 0
dist/skills/jimeng-img-v4-goods/api-config.json

@@ -0,0 +1,195 @@
+{
+  "name": "jimeng-img-v4-goods",
+  "displayName": "图片生成4.0-商品提取",
+  "description": "智能提取商品主体并匹配最佳展示视角,支持服装、鞋包、饰品、家具、日用品。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getImgV4_goods",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "image_url",
+      "token"
+    ],
+    "properties": {
+      "image_url": {
+        "type": "string",
+        "description": "图片文件URL"
+      },
+      "instruction": {
+        "type": "integer",
+        "description": "编辑指令: 1全身衣服 2鞋子 3包包 4沙发 5日用品 6饰品",
+        "default": 1,
+        "enum": [
+          1,
+          2,
+          3,
+          4,
+          5,
+          6
+        ]
+      },
+      "sizeDate": {
+        "type": "object",
+        "properties": {
+          "width": {
+            "type": "integer"
+          },
+          "height": {
+            "type": "integer"
+          }
+        }
+      },
+      "prompt": {
+        "type": "string",
+        "description": "提示词"
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "提取模特全身衣服",
+      "input": {
+        "image_url": "https://example.com/model.jpg",
+        "instruction": 1,
+        "sizeDate": {
+          "width": 2560,
+          "height": 1440
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "从模特照片提取全身衣服生成白底平铺图"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-img-v4-pod",
+    "jimeng-clothes-v2"
+  ],
+  "pricing": {
+    "unit": "张",
+    "price": 0.22,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/1544714"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 37 - 0
dist/skills/jimeng-img-v4-pod/SKILL.md

@@ -0,0 +1,37 @@
+---
+name: jimeng-img-v4-pod
+description: 图片生成4.0-素材提取(POD按需定制),从实物商品中精准提取并矢量化核心图案,生成平面设计图。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-img-v4-pod
+
+## 功能用途
+
+从实物商品中智能提取图案/包装/logo/纹理,生成平面设计图。
+
+**核心业务场景:**
+- 提取产品图案生成平面图
+- 提取包装图案/logo/纹理
+- 电商POD按需定制场景
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| image_url | string | ✅ | 图片文件URL |
+| instruction | number | ❌ | 编辑指令,默认1。1:提取图案 2:提取包装 3:提取logo 4:提取纹理 |
+| prompt | string | ❌ | 提示词 |
+| lora_weight | number | ❌ | lora权重,范围[0,1],默认1.0 |
+| sizeDate | object | ❌ | 图片尺寸,默认2048×2048 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getImgV4_pod`
+
+## 费用
+
+图片生成v4 POD素材提取: **0.22元/张**

+ 199 - 0
dist/skills/jimeng-img-v4-pod/api-config.json

@@ -0,0 +1,199 @@
+{
+  "name": "jimeng-img-v4-pod",
+  "displayName": "图片生成4.0-素材提取(POD)",
+  "description": "从实物商品中精准提取并矢量化核心图案,生成平面设计图,适用于电商POD场景。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getImgV4_pod",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "image_url",
+      "token"
+    ],
+    "properties": {
+      "image_url": {
+        "type": "string",
+        "description": "图片文件URL"
+      },
+      "instruction": {
+        "type": "integer",
+        "description": "编辑指令: 1提取图案 2提取包装 3提取logo 4提取纹理",
+        "default": 1,
+        "enum": [
+          1,
+          2,
+          3,
+          4
+        ]
+      },
+      "prompt": {
+        "type": "string",
+        "description": "提示词"
+      },
+      "lora_weight": {
+        "type": "number",
+        "description": "lora权重,范围[0,1],默认1.0",
+        "default": 1
+      },
+      "sizeDate": {
+        "type": "object",
+        "properties": {
+          "width": {
+            "type": "integer"
+          },
+          "height": {
+            "type": "integer"
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "提取刺绣图案并调色",
+      "input": {
+        "image_url": "https://example.com/embroidery.jpg",
+        "instruction": 1,
+        "prompt": "改成淡紫色的花朵,深绿色的枝叶",
+        "lora_weight": 0.5,
+        "sizeDate": {
+          "width": 2048,
+          "height": 2048
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "从刺绣图片提取图案并修改颜色"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-img-v4-goods"
+  ],
+  "pricing": {
+    "unit": "张",
+    "price": 0.22,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/1544714"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 81 - 0
dist/skills/jimeng-img-v4/SKILL.md

@@ -0,0 +1,81 @@
+---
+name: jimeng-img-v4
+description: 即梦图片生成4.0,支持文生图、图像编辑及多图组合生成,单次输入最多10张图像,支持4K超高清输出,一次性输出最多15张内容关联图像。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-img-v4
+
+## 功能用途
+
+即梦4.0图片生成,统一框架集成文生图、图像编辑及多图组合生成功能。
+
+**核心业务场景:**
+- 根据提示词文生图(支持中文提示词,准确率高)
+- 多图组合编辑(最多10张输入图 → 最多15张输出图)
+- 4K超高清图像输出(1K~4K分辨率)
+
+## 调用链(Workflow)
+
+```
+本步: jimeng-img-v4(prompt, image_urls?) → 提交生成任务,获取 workId
+下游: jimeng-task-query(workId, routerName='getImgV4') → 轮询任务状态
+下游: 查询 ImagineWork 表(objectId=workId) → 获取 images 字段(永久URL)
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| prompt | string | ✅ | 提示词 |
+| image_urls | string[] | ❌ | 图片文件URL,支持0至10张 |
+| sizeDate | object | ❌ | 图片尺寸数据(不传则使用默认2048×2048) |
+| sizeDate.width | number | ❌ | 图片宽 |
+| sizeDate.height | number | ❌ | 图片高 |
+| scale | float | ❌ | 文本影响程度,范围[0,1],默认0.5 |
+| force_single | boolean | ❌ | 是否强制生成单图,默认false |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+**推荐尺寸搭配:**
+- 1K: 1024×1024
+- 2K: 2048×2048、2304×1728(4:3)、2496×1664(3:2)、2560×1440(16:9)
+- 4K: 4096×4096、4992×3328(3:2)、5404×3040(16:9)
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getImgV4`
+
+```json
+{
+  "prompt": "帮我生成一个可爱日漫风格的图片",
+  "image_urls": [],
+  "sizeDate": { "width": 2048, "height": 2048 },
+  "scale": 0.6,
+  "force_single": false,
+  "token": "Bearer r:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| code | 200 表示成功 |
+| data.workId | 任务ID → **传入 jimeng-task-query 轮询结果** |
+
+## 获取结果
+
+提交任务后需调用 `getDataByTask02` 接口轮询,workId 对应 ImagineWork 表记录:
+- `images`: 图片URL列表(已转存,永久有效)
+
+## 费用
+
+图片生成v4: **0.22元/张**
+
+## 依赖要求
+
+- 接口地址: `https://server.fmode.cn/api/volcengine/jimeng/getImgV4`
+- 需携带 token 参数(body 内传递)
+- 宽高乘积范围: [1024×1024, 4096×4096]

+ 234 - 0
dist/skills/jimeng-img-v4/api-config.json

@@ -0,0 +1,234 @@
+{
+  "name": "jimeng-img-v4",
+  "displayName": "即梦图片生成4.0",
+  "description": "即梦4.0图片生成,支持文生图、图像编辑及多图组合生成,单次输入最多10张图像,支持4K超高清输出,一次性输出最多15张内容关联图像。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getImgV4",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "prompt",
+      "token"
+    ],
+    "properties": {
+      "prompt": {
+        "type": "string",
+        "description": "提示词,支持中文,描述期望生成的图像内容"
+      },
+      "image_urls": {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "description": "图片文件URL列表,支持0至10张图,用于多图组合编辑",
+        "default": []
+      },
+      "sizeDate": {
+        "type": "object",
+        "description": "图片尺寸数据,不传则使用默认2048×2048",
+        "properties": {
+          "width": {
+            "type": "integer",
+            "description": "图片宽,推荐: 1024/2048/2304/2496/2560/4096"
+          },
+          "height": {
+            "type": "integer",
+            "description": "图片高,推荐: 1024/2048/1728/1664/1440/4096"
+          }
+        }
+      },
+      "scale": {
+        "type": "number",
+        "description": "文本描述影响程度,范围[0,1],默认0.5",
+        "default": 0.5
+      },
+      "force_single": {
+        "type": "boolean",
+        "description": "是否强制生成单图,默认false",
+        "default": false
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token,格式: Bearer r:xxxxxxxx"
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "prompt": "{{prompt}}",
+      "image_urls": "{{image_urls}}",
+      "sizeDate": "{{sizeDate}}",
+      "scale": "{{scale}}",
+      "force_single": "{{force_single}}",
+      "token": "{{token}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer",
+        "description": "响应状态码,200表示成功"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string",
+            "description": "任务ID,用于后续查询任务状态和获取生成结果"
+          }
+        }
+      }
+    }
+  },
+  "notes": "提交任务后需调用 jimeng-task-query (getDataByTask02) 轮询任务状态。生成结果存储在 ImagineWork 表的 images 字段中,URL已转存永久有效。费用: 0.22元/张。",
+  "usageExamples": [
+    {
+      "name": "纯文生图-2K分辨率",
+      "input": {
+        "prompt": "帮我生成一个涵盖友情、独特、文化底蕴、科技的可爱日漫风但人物为中国人的图片",
+        "sizeDate": {
+          "width": 2048,
+          "height": 2048
+        },
+        "scale": 0.6,
+        "force_single": false,
+        "token": "Bearer r:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+      },
+      "description": "使用文本提示词生成2K分辨率的日漫风格图片"
+    },
+    {
+      "name": "多图组合编辑",
+      "input": {
+        "prompt": "将模特穿上这件衣服",
+        "image_urls": [
+          "https://example.com/model.jpg",
+          "https://example.com/clothes.png"
+        ],
+        "sizeDate": {
+          "width": 2048,
+          "height": 2048
+        },
+        "token": "Bearer r:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+      },
+      "description": "输入模特图+衣服图,通过提示词描述编辑意图"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-text2img-v3",
+    "jimeng-img2img-v3"
+  ],
+  "pricing": {
+    "unit": "张",
+    "price": 0.22,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/1544714"
+  },
+  "timeout": 30000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 36 - 0
dist/skills/jimeng-img2img-v3/SKILL.md

@@ -0,0 +1,36 @@
+---
+name: jimeng-img2img-v3
+description: 即梦图生图3.0智能参考,支持基于文本指令进行图像编辑,在精准执行编辑指令和保持图像内容完整性方面表现卓越。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-img2img-v3
+
+## 功能用途
+
+即梦图生图3.0智能参考,基于输入图片+文本指令进行图像编辑。
+
+**核心业务场景:**
+- 图像背景替换/修改
+- 海报/平面设计场景编辑(建议提示词加入「海报」「平面设计」等词)
+- 保持人物特征的图像编辑
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| image_url | string | ✅ | 图片文件URL,需输入1张 |
+| prompt | string | ✅ | 提示词,建议<=120字符,最长800字符 |
+| scale | number | ❌ | 文本描述影响程度,范围[0,1],默认0.5 |
+| sizeDate | object | ❌ | 图片尺寸,默认1328×1328 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getImg2ImgV3`
+
+## 费用
+
+即梦图生图v3.0: **0.2元/次**

+ 187 - 0
dist/skills/jimeng-img2img-v3/api-config.json

@@ -0,0 +1,187 @@
+{
+  "name": "jimeng-img2img-v3",
+  "displayName": "即梦图生图3.0智能参考",
+  "description": "基于输入图片+文本指令进行图像编辑,精准执行编辑指令,保持图像内容完整性。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getImg2ImgV3",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "image_url",
+      "prompt",
+      "token"
+    ],
+    "properties": {
+      "image_url": {
+        "type": "string",
+        "description": "图片文件URL,需输入1张"
+      },
+      "prompt": {
+        "type": "string",
+        "description": "提示词,建议<=120字符,最长800字符"
+      },
+      "scale": {
+        "type": "number",
+        "description": "文本描述影响程度,范围[0,1],默认0.5",
+        "default": 0.5
+      },
+      "sizeDate": {
+        "type": "object",
+        "properties": {
+          "width": {
+            "type": "integer"
+          },
+          "height": {
+            "type": "integer"
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "背景替换",
+      "input": {
+        "image_url": "https://example.com/photo.png",
+        "prompt": "背景换成秋天落叶",
+        "scale": 0.5,
+        "sizeDate": {
+          "width": 1328,
+          "height": 1328
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "将图片背景替换为秋天落叶场景"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-img-v4"
+  ],
+  "pricing": {
+    "unit": "次",
+    "price": 0.2,
+    "currency": "CNY"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 34 - 0
dist/skills/jimeng-inpaint/SKILL.md

@@ -0,0 +1,34 @@
+---
+name: jimeng-inpaint
+description: 交互编辑(局部重绘/消除笔),通过涂抹选区建立重绘区域,支持涂抹消除和涂抹编辑场景。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-inpaint
+
+## 功能用途
+
+即梦「局部重绘」「消除笔」同款图像编辑功能。
+
+**核心业务场景:**
+- 局部重绘(涂抹区域+提示词 → 重新生成局部内容)
+- 消除笔(涂抹区域+prompt="删除" → 消除指定内容)
+- 文字内容修改(修改后的文字放在""内提升准确率)
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| image_urls | string[] | ✅ | 图片文件URL,需输入2张(原图+mask图) |
+| prompt | string | ✅ | 提示词,消除场景输入"删除" |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getInpaint`
+
+## 费用
+
+交互编辑: **0.2元/次**

+ 172 - 0
dist/skills/jimeng-inpaint/api-config.json

@@ -0,0 +1,172 @@
+{
+  "name": "jimeng-inpaint",
+  "displayName": "交互编辑(局部重绘/消除笔)",
+  "description": "通过涂抹选区建立重绘区域,支持局部重绘和消除笔功能。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getInpaint",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "image_urls",
+      "prompt",
+      "token"
+    ],
+    "properties": {
+      "image_urls": {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "description": "图片文件URL,需输入2张(原图+mask图)"
+      },
+      "prompt": {
+        "type": "string",
+        "description": "提示词,消除场景输入\"删除\",文字修改放在\"\"内"
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "局部重绘-替换人物",
+      "input": {
+        "image_urls": [
+          "https://example.com/original.png",
+          "https://example.com/mask.png"
+        ],
+        "prompt": "将小女孩换成古风仙子",
+        "token": "Bearer r:xxx"
+      },
+      "description": "使用mask标记区域,重绘为古风仙子"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query"
+  ],
+  "pricing": {
+    "unit": "次",
+    "price": 0.2,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/86081/1660170"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 35 - 0
dist/skills/jimeng-oh-detect/SKILL.md

@@ -0,0 +1,35 @@
+---
+name: jimeng-oh-detect
+description: 数字人v1.5 步骤2:主体检测,检测图片中的主体并返回mask图,可选步骤(可跳过直接进行视频生成)。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-oh-detect
+
+## 功能用途
+
+数字人v1.5流程步骤2:主体检测,返回主体对应的mask图。
+
+**核心业务场景:**
+- 检测图片中的主体并返回mask图
+- 前端可展示mask图供用户选择指定主体
+- 此步骤可跳过,直接进行步骤3视频生成
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| workId | string | ✅ (二选一) | 步骤1的workId |
+| taskId | string | ✅ (二选一) | 任务ID |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getOhDetectMain`
+
+## 获取结果
+
+查询 ImagineWork 表(objectId=workId)获取 `maskUrls` 字段:
+- maskUrls: mask图URL列表(**未转存,有效期仅1小时**)

+ 166 - 0
dist/skills/jimeng-oh-detect/api-config.json

@@ -0,0 +1,166 @@
+{
+  "name": "jimeng-oh-detect",
+  "displayName": "数字人v1.5-主体检测",
+  "description": "数字人v1.5步骤2:检测图片中的主体并返回mask图(可选步骤)。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getOhDetectMain",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "token"
+    ],
+    "properties": {
+      "workId": {
+        "type": "string",
+        "description": "步骤1的workId,与taskId二选一"
+      },
+      "taskId": {
+        "type": "string",
+        "description": "任务ID,与workId二选一"
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "tip": {
+            "type": "string"
+          },
+          "isContinue": {
+            "type": "boolean"
+          },
+          "isFinish": {
+            "type": "boolean"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "检测主体",
+      "input": {
+        "workId": "qH58sm1wMr",
+        "token": "Bearer r:xxx"
+      },
+      "description": "检测步骤1中图片的主体,获取mask图"
+    }
+  ],
+  "notes": "mask图URL有效期仅1小时。此步骤可跳过,直接进行步骤3视频生成。",
+  "relatedSkills": [
+    "jimeng-oh-identify",
+    "jimeng-oh-generate",
+    "jimeng-oh-query"
+  ],
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 40 - 0
dist/skills/jimeng-oh-generate/SKILL.md

@@ -0,0 +1,40 @@
+---
+name: jimeng-oh-generate
+description: 数字人v1.5 步骤3:视频生成(OmniHuman1.5),根据单张图片+音频生成高质量数字人视频,支持人物、动漫、宠物等形象。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-oh-generate
+
+## 功能用途
+
+数字人v1.5流程步骤3:视频生成,OmniHuman1.5即梦同源数字人模型。
+
+**核心业务场景:**
+- 单张图片+音频 → 数字人视频
+- 人物的情绪、动作与音频强关联
+- 支持通过prompt调整画面、动作、运镜
+- 支持人物、动漫、宠物等多种形象
+- 可广泛应用于剧情对话、唱歌、表演、商品交互、漫剧等
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| workId | string | ✅ (二选一) | 步骤1的workId |
+| taskId | string | ✅ (二选一) | 任务ID |
+| audio_url | string | ✅ | 音频URL |
+| prompt | string | ❌ | 提示词,调整画面/动作/运镜 |
+| pe_fast_mode | boolean | ❌ | 快速模式,默认false |
+| mask_url | string[] | ❌ | 掩码图URL列表(指定主体) |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getOmniHuman`
+
+## 费用
+
+数字人v1.5: **1元/秒**

+ 196 - 0
dist/skills/jimeng-oh-generate/api-config.json

@@ -0,0 +1,196 @@
+{
+  "name": "jimeng-oh-generate",
+  "displayName": "数字人v1.5-视频生成",
+  "description": "OmniHuman1.5数字人模型,根据单张图片+音频生成高质量数字人视频。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getOmniHuman",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "audio_url",
+      "token"
+    ],
+    "properties": {
+      "workId": {
+        "type": "string",
+        "description": "步骤1的workId,与taskId二选一"
+      },
+      "taskId": {
+        "type": "string",
+        "description": "任务ID,与workId二选一"
+      },
+      "audio_url": {
+        "type": "string",
+        "description": "音频URL"
+      },
+      "prompt": {
+        "type": "string",
+        "description": "提示词,调整画面/动作/运镜"
+      },
+      "pe_fast_mode": {
+        "type": "boolean",
+        "description": "快速模式,默认false",
+        "default": false
+      },
+      "mask_url": {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "description": "掩码图URL列表,指定讲话主体"
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "tip": {
+            "type": "string"
+          },
+          "isContinue": {
+            "type": "boolean"
+          },
+          "isFinish": {
+            "type": "boolean"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "数字人朗读",
+      "input": {
+        "workId": "qH58sm1wMr",
+        "audio_url": "https://example.com/speech.mp3",
+        "prompt": "数字人朗读测试",
+        "pe_fast_mode": false,
+        "mask_url": [],
+        "token": "Bearer r:xxx"
+      },
+      "description": "驱动图片中的人物按音频朗读"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-oh-identify",
+    "jimeng-oh-detect",
+    "jimeng-oh-query"
+  ],
+  "pricing": {
+    "unit": "秒",
+    "price": 1,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/1834143"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 43 - 0
dist/skills/jimeng-oh-identify/SKILL.md

@@ -0,0 +1,43 @@
+---
+name: jimeng-oh-identify
+description: 数字人v1.5 步骤1:主体识别,识别图片中是否包含人、类人、拟人等主体,是数字人生成流程的第一步。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-oh-identify
+
+## 功能用途
+
+数字人v1.5流程步骤1:主体识别,判断图片中是否存在可驱动的主体。
+
+**核心业务场景:**
+- 识别图片中的人/类人/拟人主体
+- 数字人生成流程的入口步骤
+- 返回workId用于后续步骤
+
+## 调用链(Workflow)
+
+```
+本步: jimeng-oh-identify(image_url) → 提交主体识别任务,获取 workId
+步骤1.1: jimeng-oh-query(workId, routerName='getOhIdentifyMain') → 轮询识别结果
+步骤2: jimeng-oh-detect(workId) → 主体检测(可跳过)
+步骤3: jimeng-oh-generate(workId, audio_url) → 视频生成
+步骤3.1: jimeng-oh-query(workId, routerName='getOmniHuman') → 轮询生成结果
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| image_url | string | ✅ | 图片URL |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getOhIdentifyMain`
+
+## 费用
+
+数字人v1.5: **1元/秒**(整体流程费用)

+ 162 - 0
dist/skills/jimeng-oh-identify/api-config.json

@@ -0,0 +1,162 @@
+{
+  "name": "jimeng-oh-identify",
+  "displayName": "数字人v1.5-主体识别",
+  "description": "数字人v1.5步骤1:识别图片中是否包含人、类人、拟人等主体。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getOhIdentifyMain",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "image_url",
+      "token"
+    ],
+    "properties": {
+      "image_url": {
+        "type": "string",
+        "description": "图片URL"
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "识别人物主体",
+      "input": {
+        "image_url": "https://example.com/person.jpg",
+        "token": "Bearer r:xxx"
+      },
+      "description": "识别图片中是否存在可驱动的主体"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-oh-query",
+    "jimeng-oh-detect",
+    "jimeng-oh-generate"
+  ],
+  "pricing": {
+    "unit": "秒",
+    "price": 1,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/1834143"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 47 - 0
dist/skills/jimeng-oh-query/SKILL.md

@@ -0,0 +1,47 @@
+---
+name: jimeng-oh-query
+description: 数字人任务查询,查询数字人流程中步骤1(主体识别)和步骤3(视频生成)的任务状态。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-oh-query
+
+## 功能用途
+
+查询数字人流程的任务状态,支持查询主体识别和视频生成两个阶段。
+
+**核心业务场景:**
+- 轮询步骤1主体识别结果(routerName='getOhIdentifyMain')
+- 轮询步骤3视频生成结果(routerName='getOmniHuman')
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| workId | string | ✅ (二选一) | 作品ID |
+| taskId | string | ✅ (二选一) | 任务ID |
+| routerName | string | ✅ | 查询接口名称: getOhIdentifyMain 或 getOmniHuman |
+| logo_info | object | ❌ | 水印信息(仅routerName=getOmniHuman时生效) |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getOhDateByTask`
+
+## 响应说明
+
+**主体识别查询(routerName=getOhIdentifyMain):**
+- data.tip: "存在主体" / "不存在主体" / "生成中,请等待..."
+- data.isContinue: true表示可继续后续步骤
+- data.isFinish: false
+
+**视频生成查询(routerName=getOmniHuman):**
+- data.tip: "生成成功" / 状态文案
+- data.isFinish: true表示视频生成完成
+
+## 获取最终结果
+
+视频生成完成后,查询 ImagineWork 表(objectId=workId):
+- videos: 视频URL列表(已转存,永久有效)

+ 220 - 0
dist/skills/jimeng-oh-query/api-config.json

@@ -0,0 +1,220 @@
+{
+  "name": "jimeng-oh-query",
+  "displayName": "数字人任务查询",
+  "description": "查询数字人流程中主体识别和视频生成的任务状态。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getOhDateByTask",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "routerName",
+      "token"
+    ],
+    "properties": {
+      "workId": {
+        "type": "string",
+        "description": "作品ID,与taskId二选一"
+      },
+      "taskId": {
+        "type": "string",
+        "description": "任务ID,与workId二选一"
+      },
+      "routerName": {
+        "type": "string",
+        "description": "查询接口名称",
+        "enum": [
+          "getOhIdentifyMain",
+          "getOmniHuman"
+        ]
+      },
+      "logo_info": {
+        "type": "object",
+        "description": "水印信息,仅routerName=getOmniHuman时生效",
+        "properties": {
+          "add_logo": {
+            "type": "boolean",
+            "default": false
+          },
+          "position": {
+            "type": "integer",
+            "default": 0
+          },
+          "language": {
+            "type": "integer",
+            "default": 0
+          },
+          "opacity": {
+            "type": "number",
+            "default": 1
+          },
+          "logo_text_content": {
+            "type": "string"
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "tip": {
+            "type": "string",
+            "description": "状态提示文字"
+          },
+          "isContinue": {
+            "type": "boolean",
+            "description": "是否可继续后续步骤"
+          },
+          "isFinish": {
+            "type": "boolean",
+            "description": "是否生成完成"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "查询主体识别结果",
+      "input": {
+        "workId": "qH58sm1wMr",
+        "routerName": "getOhIdentifyMain",
+        "token": "Bearer r:xxx"
+      },
+      "description": "查询步骤1主体识别是否完成"
+    },
+    {
+      "name": "查询视频生成结果",
+      "input": {
+        "workId": "qH58sm1wMr",
+        "routerName": "getOmniHuman",
+        "token": "Bearer r:xxx"
+      },
+      "description": "查询步骤3数字人视频是否生成完成"
+    }
+  ],
+  "pollingConfig": {
+    "intervalMs": 3000,
+    "maxAttempts": 120,
+    "completionCondition": {
+      "getOhIdentifyMain": "data.isContinue === true",
+      "getOmniHuman": "data.isFinish === true"
+    }
+  },
+  "relatedSkills": [
+    "jimeng-oh-identify",
+    "jimeng-oh-detect",
+    "jimeng-oh-generate"
+  ],
+  "timeout": 15000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 35 - 0
dist/skills/jimeng-super-resolution/SKILL.md

@@ -0,0 +1,35 @@
+---
+name: jimeng-super-resolution
+description: 智能超清,基于seedream基模将图像超清到4K/8K,在保证全局结构和语义一致性的前提下生成更多细节内容。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-super-resolution
+
+## 功能用途
+
+即梦「智能超清」同款图像编辑功能,全面提升画面质感。
+
+**核心业务场景:**
+- AIGC生成图像的超清处理(4K/8K)
+- 低质量图像的质感提升
+- 保持全局结构的细节增强
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| image_urls | string[] | ✅ | 图片文件URL,需输入1张 |
+| resolution | string | ❌ | 图片分辨率,默认'4k',可选'4k'或'8k' |
+| scale | number | ❌ | 细节生成程度,默认50,范围[0,100] |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getSuperResolution`
+
+## 费用
+
+智能超清: **0.4元/次**

+ 181 - 0
dist/skills/jimeng-super-resolution/api-config.json

@@ -0,0 +1,181 @@
+{
+  "name": "jimeng-super-resolution",
+  "displayName": "智能超清",
+  "description": "基于seedream基模将图像超清到4K/8K,全面提升画面质感。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getSuperResolution",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "image_urls",
+      "token"
+    ],
+    "properties": {
+      "image_urls": {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "description": "图片文件URL,需输入1张"
+      },
+      "resolution": {
+        "type": "string",
+        "description": "分辨率,默认4k",
+        "default": "4k",
+        "enum": [
+          "4k",
+          "8k"
+        ]
+      },
+      "scale": {
+        "type": "number",
+        "description": "细节生成程度,默认50,范围[0,100]",
+        "default": 50
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "超清到4K",
+      "input": {
+        "image_urls": [
+          "https://example.com/photo.jpg"
+        ],
+        "resolution": "4k",
+        "scale": 100,
+        "token": "Bearer r:xxx"
+      },
+      "description": "将图片超清处理到4K分辨率"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query"
+  ],
+  "pricing": {
+    "unit": "次",
+    "price": 0.4,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/86081/1660170"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 79 - 0
dist/skills/jimeng-task-query/SKILL.md

@@ -0,0 +1,79 @@
+---
+name: jimeng-task-query
+description: 查询即梦AI生成任务状态,轮询获取图片/视频生成结果,支持所有即梦生成接口的结果查询。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-task-query
+
+## 功能用途
+
+查询即梦AI生成任务的执行状态和结果,是所有即梦生成类skill的下游必备skill。
+
+**核心业务场景:**
+- 轮询生成任务状态(提交任务后需等待生成完成)
+- 获取生成结果(图片/视频URL,已转存永久有效)
+- 支持所有即梦生成接口的结果查询
+
+## 调用链(Workflow)
+
+```
+上游: jimeng-img-v4 / jimeng-text2img-v3 / 其他生成skill → 获得 workId
+本步: jimeng-task-query(workId, routerName) → 轮询直到 isFinish=true
+下游: jimeng-work-result(workId) → 获取 images/videos URL
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| workId | string | ✅ (二选一) | ImagineWork数据id |
+| taskId | string | ✅ (二选一) | 任务ID,与workId二选一 |
+| routerName | string | ✅ | 对应接口名称(首次获取资源必填) |
+| logo_info | object | ❌ | 水印信息 |
+| logo_info.add_logo | boolean | ❌ | 是否添加水印,默认false |
+| logo_info.position | integer | ❌ | 水印位置: 0右下/1左下/2左上/3右上 |
+| logo_info.language | integer | ❌ | 0中文/1英文 |
+| logo_info.opacity | float | ❌ | 不透明度[0,1],默认1 |
+| logo_info.logo_text_content | string | ❌ | 自定义水印文本 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+**routerName 可选值:**
+`getClothesV2`、`getImgByImg`、`getImgV4`、`getText2ImgV3`、`getText2ImgV31`、`getImg2ImgV3`、`getImgV4_pod`、`getImgV4_goods`、`getInpaint`、`getSuperResolution`、`getVideoV3_720p`、`getVideoV3_1080p`、`getVideoV3_Pro`、`getActor`、`getActorV2`
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getDataByTask02`
+
+```json
+{
+  "workId": "82CC78HNl6",
+  "routerName": "getImgV4",
+  "token": "Bearer r:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| code | 200 表示成功 |
+| data.tip | 状态提示文字(如"生成成功") |
+| data.isFinish | true表示任务完成,可查询ImagineWork表获取结果 |
+
+## 轮询策略
+
+建议每3-5秒轮询一次,直到 `data.isFinish === true`。图片生成通常10-30秒,视频生成可能需要1-5分钟。
+
+## 获取最终结果
+
+任务完成后,调用 **jimeng-work-result** skill(传入 workId)获取最终图片/视频 URL:
+- `images`: 图片URL数组(永久有效)
+- `videos`: 视频URL数组(永久有效)
+
+## 依赖要求
+
+- 接口地址: `https://server.fmode.cn/api/volcengine/jimeng/getDataByTask02`
+- 需携带 token 参数(body 内传递)

+ 233 - 0
dist/skills/jimeng-task-query/api-config.json

@@ -0,0 +1,233 @@
+{
+  "name": "jimeng-task-query",
+  "displayName": "即梦任务结果查询",
+  "description": "查询即梦AI生成任务状态,轮询获取图片/视频生成结果,支持所有即梦生成接口的结果查询。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getDataByTask02",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "routerName",
+      "token"
+    ],
+    "properties": {
+      "workId": {
+        "type": "string",
+        "description": "ImagineWork数据id,与taskId二选一"
+      },
+      "taskId": {
+        "type": "string",
+        "description": "任务ID,与workId二选一"
+      },
+      "routerName": {
+        "type": "string",
+        "description": "对应接口名称,首次获取资源必填",
+        "enum": [
+          "getClothesV2",
+          "getImgByImg",
+          "getImgV4",
+          "getText2ImgV3",
+          "getText2ImgV31",
+          "getImg2ImgV3",
+          "getImgV4_pod",
+          "getImgV4_goods",
+          "getInpaint",
+          "getSuperResolution",
+          "getVideoV3_720p",
+          "getVideoV3_1080p",
+          "getVideoV3_Pro",
+          "getActor",
+          "getActorV2"
+        ]
+      },
+      "logo_info": {
+        "type": "object",
+        "description": "水印信息(选填)",
+        "properties": {
+          "add_logo": {
+            "type": "boolean",
+            "description": "是否添加水印",
+            "default": false
+          },
+          "position": {
+            "type": "integer",
+            "description": "水印位置: 0右下/1左下/2左上/3右上",
+            "default": 0
+          },
+          "language": {
+            "type": "integer",
+            "description": "0中文/1英文",
+            "default": 0
+          },
+          "opacity": {
+            "type": "number",
+            "description": "不透明度[0,1]",
+            "default": 1
+          },
+          "logo_text_content": {
+            "type": "string",
+            "description": "自定义水印文本"
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token,格式: Bearer r:xxxxxxxx"
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "workId": "{{workId}}",
+      "taskId": "{{taskId}}",
+      "routerName": "{{routerName}}",
+      "logo_info": "{{logo_info}}",
+      "token": "{{token}}"
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer",
+        "description": "响应状态码,200表示成功"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "tip": {
+            "type": "string",
+            "description": "状态提示文字"
+          },
+          "isFinish": {
+            "type": "boolean",
+            "description": "true表示任务完成"
+          }
+        }
+      }
+    }
+  },
+  "notes": "轮询策略:每3-5秒调用一次,直到 data.isFinish=true。任务完成后查询 ImagineWork 表获取 images/videos 字段。",
+  "usageExamples": [
+    {
+      "name": "查询图片生成任务状态",
+      "input": {
+        "workId": "82CC78HNl6",
+        "routerName": "getImgV4",
+        "token": "Bearer r:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+      },
+      "description": "查询 getImgV4 图片生成任务的完成状态"
+    }
+  ],
+  "pollingConfig": {
+    "intervalMs": 3000,
+    "maxAttempts": 60,
+    "completionCondition": "data.isFinish === true"
+  },
+  "timeout": 15000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 42 - 0
dist/skills/jimeng-text2img-v3/SKILL.md

@@ -0,0 +1,42 @@
+---
+name: jimeng-text2img-v3
+description: 即梦文生图3.0,文字响应准确度高,支持艺术字体和不同字重,人像质感逼真,支持高清大图输出。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-text2img-v3
+
+## 功能用途
+
+即梦文生图3.0,在文字响应准确度、图文排版、层次美感和语义理解能力上表现优异。
+
+**核心业务场景:**
+- 文字响应精准的图片生成(支持大小字、艺术字体、不同字重)
+- 人像质感逼真的图片生成
+- 高清大图输出(标清1K / 高清2K)
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| prompt | string | ✅ | 提示词,建议<=120字符,最长800字符 |
+| use_pre_llm | boolean | ❌ | 是否开启文本扩写,默认true |
+| sizeDate | object | ❌ | 图片尺寸,默认1328×1328 |
+| sizeDate.width | number | ❌ | 图片宽 |
+| sizeDate.height | number | ❌ | 图片高 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+**推荐尺寸:**
+- 标清1K: 1328×1328(1:1)、1472×1104(4:3)、1584×1056(3:2)、1664×936(16:9)
+- 高清2K: 2048×2048(1:1)、2304×1728(4:3)、2496×1664(3:2)、2560×1440(16:9)
+- 约束:宽高比1:3到3:1,宽高乘积[512×512, 2048×2048]
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getText2ImgV3`
+
+## 费用
+
+即梦文生图3.0: **0.2元/次**

+ 187 - 0
dist/skills/jimeng-text2img-v3/api-config.json

@@ -0,0 +1,187 @@
+{
+  "name": "jimeng-text2img-v3",
+  "displayName": "即梦文生图3.0",
+  "description": "即梦文生图3.0,文字响应准确度高,支持艺术字体和不同字重,人像质感逼真,支持高清大图输出。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getText2ImgV3",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "prompt",
+      "token"
+    ],
+    "properties": {
+      "prompt": {
+        "type": "string",
+        "description": "提示词,建议<=120字符,最长800字符"
+      },
+      "use_pre_llm": {
+        "type": "boolean",
+        "description": "是否开启文本扩写,默认true",
+        "default": true
+      },
+      "sizeDate": {
+        "type": "object",
+        "description": "图片尺寸,默认1328×1328",
+        "properties": {
+          "width": {
+            "type": "integer",
+            "description": "图片宽"
+          },
+          "height": {
+            "type": "integer",
+            "description": "图片高"
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer",
+        "description": "200表示成功"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string",
+            "description": "任务ID"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "文生图-古风人像",
+      "input": {
+        "prompt": "芙蓉面美如远山秀,杏仁眼灵性儿透。",
+        "use_pre_llm": true,
+        "sizeDate": {
+          "width": 599,
+          "height": 1328
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "生成古风人像图片"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-text2img-v31",
+    "jimeng-img-v4"
+  ],
+  "pricing": {
+    "unit": "次",
+    "price": 0.2,
+    "currency": "CNY"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 39 - 0
dist/skills/jimeng-text2img-v31/SKILL.md

@@ -0,0 +1,39 @@
+---
+name: jimeng-text2img-v31
+description: 即梦文生图3.1,画面效果升级版,画面美感塑造、风格精准多样及画面细节丰富度方面大幅提升,兼具文字响应效果。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-text2img-v31
+
+## 功能用途
+
+即梦文生图3.1,相比3.0重点提升画面效果,在美感塑造、风格多样性及细节丰富度方面显著提升。
+
+**核心业务场景:**
+- 高美感画面生成(风格精准多样)
+- 画面细节丰富的图片生成
+- 兼具文字响应效果
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| prompt | string | ✅ | 提示词,建议<=120字符,最长800字符 |
+| use_pre_llm | boolean | ❌ | 是否开启文本扩写,默认true |
+| sizeDate | object | ❌ | 图片尺寸,默认1328×1328 |
+| sizeDate.width | number | ❌ | 图片宽 |
+| sizeDate.height | number | ❌ | 图片高 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+**尺寸约束同 text2img-v3。**
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getText2ImgV31`
+
+## 费用
+
+即梦文生图3.1: **0.2元/次**

+ 182 - 0
dist/skills/jimeng-text2img-v31/api-config.json

@@ -0,0 +1,182 @@
+{
+  "name": "jimeng-text2img-v31",
+  "displayName": "即梦文生图3.1",
+  "description": "即梦文生图3.1,画面效果升级版,画面美感塑造、风格精准多样及画面细节丰富度方面大幅提升。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getText2ImgV31",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "prompt",
+      "token"
+    ],
+    "properties": {
+      "prompt": {
+        "type": "string",
+        "description": "提示词,建议<=120字符,最长800字符"
+      },
+      "use_pre_llm": {
+        "type": "boolean",
+        "description": "是否开启文本扩写,默认true",
+        "default": true
+      },
+      "sizeDate": {
+        "type": "object",
+        "description": "图片尺寸,默认1328×1328",
+        "properties": {
+          "width": {
+            "type": "integer"
+          },
+          "height": {
+            "type": "integer"
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "文生图-花卉艺术字",
+      "input": {
+        "prompt": "淡蓝紫的冷清感,一束小雏菊,右下角展示一串小的艺术字\"手捧一束小雏菊赠与你\"",
+        "use_pre_llm": true,
+        "sizeDate": {
+          "width": 599,
+          "height": 1328
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "生成带艺术字的花卉图片"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-text2img-v3"
+  ],
+  "pricing": {
+    "unit": "次",
+    "price": 0.2,
+    "currency": "CNY"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 38 - 0
dist/skills/jimeng-video-v3-1080p/SKILL.md

@@ -0,0 +1,38 @@
+---
+name: jimeng-video-v3-1080p
+description: 即梦视频生成3.0(1080p),支持文生视频、图生视频(首帧/首尾帧),最高1080P高清渲染,多元艺术风格。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-video-v3-1080p
+
+## 功能用途
+
+即梦视频3.0 1080P高清版本,视觉表达流畅一致。
+
+**核心业务场景:**
+- 文生视频(输入提示词 → 高清1080P视频)
+- 图生视频-首帧(首帧图片+提示词 → 1080P视频)
+- 图生视频-首尾帧(首帧+尾帧+提示词 → 1080P视频)
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| prompt | string | ✅ | 提示词,建议<=400字 |
+| frames | number | ❌ | 帧数,范围[121,241],默认121 |
+| method | string | ✅ | 生成方式: 1文生视频 2首帧 3首尾帧 |
+| config | object | ❌ | 配置参数(同720p的method 1/2/3) |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+> 注意:1080p版本不支持 method=4(运镜),如需运镜请使用 720p 版本。
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getVideoV3_1080p`
+
+## 费用
+
+视频生成3.0 1080p: **0.63元/秒**

+ 206 - 0
dist/skills/jimeng-video-v3-1080p/api-config.json

@@ -0,0 +1,206 @@
+{
+  "name": "jimeng-video-v3-1080p",
+  "displayName": "视频生成3.0(1080p)",
+  "description": "即梦视频3.0 1080P,支持文生视频、图生视频(首帧/首尾帧),最高1080P高清渲染。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getVideoV3_1080p",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "prompt",
+      "method",
+      "token"
+    ],
+    "properties": {
+      "prompt": {
+        "type": "string",
+        "description": "提示词,建议<=400字"
+      },
+      "frames": {
+        "type": "integer",
+        "description": "帧数,范围[121,241],默认121",
+        "default": 121
+      },
+      "method": {
+        "type": "string",
+        "description": "生成方式: 1文生视频 2首帧 3首尾帧",
+        "enum": [
+          "1",
+          "2",
+          "3"
+        ]
+      },
+      "config": {
+        "type": "object",
+        "properties": {
+          "aspect_ratio": {
+            "type": "string",
+            "description": "长宽比(method=1)",
+            "enum": [
+              "16:9",
+              "4:3",
+              "1:1",
+              "3:4",
+              "9:16",
+              "21:9"
+            ]
+          },
+          "image_urls": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "图片URL(method=2需1张, method=3需2张)"
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "文生1080P视频",
+      "input": {
+        "prompt": "表达友情、信任、尊重、合作,一种二次元+可爱风格",
+        "frames": 121,
+        "method": "1",
+        "config": {
+          "aspect_ratio": "16:9"
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "文本生成1080P高清视频"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-video-v3-720p",
+    "jimeng-video-v3-pro"
+  ],
+  "pricing": {
+    "unit": "秒",
+    "price": 0.63,
+    "currency": "CNY",
+    "reference": "https://www.volcengine.com/docs/85621/1544715"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 66 - 0
dist/skills/jimeng-video-v3-720p/SKILL.md

@@ -0,0 +1,66 @@
+---
+name: jimeng-video-v3-720p
+description: 即梦视频生成3.0(720p),支持文生视频、图生视频(首帧/首尾帧/运镜),准确遵循复杂指令,视觉表达流畅一致。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-video-v3-720p
+
+## 功能用途
+
+即梦视频3.0 720P,专业级视频生成引擎,生成效果与速度兼备的高性价比之选。
+
+**核心业务场景:**
+- 文生视频(输入提示词 → 生成视频)
+- 图生视频-首帧(首帧图片+提示词 → 生成视频)
+- 图生视频-首尾帧(首帧+尾帧+提示词 → 生成视频)
+- 图生视频-运镜(首帧+运镜模板+强度 → 运镜视频)
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| prompt | string | ✅ | 提示词,建议<=400字,最长800字 |
+| frames | number | ❌ | 帧数,范围[121,241],默认121(5s=121帧, 10s=241帧) |
+| method | string | ✅ | 生成方式: 1文生视频 2首帧 3首尾帧 4运镜 |
+| config | object | ❌ | 其他配置参数 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+### method=1 文生视频 config参数
+| 参数 | 类型 | 说明 |
+|------|------|------|
+| aspect_ratio | string | 长宽比,默认"16:9",可选"16:9","4:3","1:1","3:4","9:16","21:9" |
+
+### method=2 图生视频-首帧 config参数
+| 参数 | 类型 | 说明 |
+|------|------|------|
+| image_urls | string[] | 首帧图片URL,仅支持1张 |
+
+### method=3 图生视频-首尾帧 config参数
+| 参数 | 类型 | 说明 |
+|------|------|------|
+| image_urls | string[] | 图片URL,需输入2张(首帧+尾帧) |
+
+### method=4 图生视频-运镜 config参数
+| 参数 | 类型 | 说明 |
+|------|------|------|
+| image_urls | string[] | 首帧图片URL,仅支持1张 |
+| template_id | string | 运镜模板ID |
+| camera_strength | string | 强度: weak/medium/strong |
+
+**运镜模板ID列表:**
+- hitchcock_dolly_in(希区柯克推进) / hitchcock_dolly_out(拉远)
+- robo_arm(机械臂) / dynamic_orbit(动感环绕) / central_orbit(中心环绕)
+- crane_push(起重机) / quick_pull_back(超级拉远)
+- counterclockwise_swivel(逆时针回旋) / clockwise_swivel(顺时针回旋)
+- handheld(手持运镜) / rapid_push_pull(快速推拉)
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getVideoV3_720p`
+
+## 费用
+
+视频生成3.0 720p: **0.28元/秒**

+ 237 - 0
dist/skills/jimeng-video-v3-720p/api-config.json

@@ -0,0 +1,237 @@
+{
+  "name": "jimeng-video-v3-720p",
+  "displayName": "视频生成3.0(720p)",
+  "description": "即梦视频3.0 720P,支持文生视频、图生视频(首帧/首尾帧/运镜),高性价比之选。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getVideoV3_720p",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "prompt",
+      "method",
+      "token"
+    ],
+    "properties": {
+      "prompt": {
+        "type": "string",
+        "description": "提示词,建议<=400字,最长800字"
+      },
+      "frames": {
+        "type": "integer",
+        "description": "帧数,范围[121,241],默认121",
+        "default": 121
+      },
+      "method": {
+        "type": "string",
+        "description": "生成方式: 1文生视频 2首帧 3首尾帧 4运镜",
+        "enum": [
+          "1",
+          "2",
+          "3",
+          "4"
+        ]
+      },
+      "config": {
+        "type": "object",
+        "description": "配置参数,根据method不同而不同",
+        "properties": {
+          "aspect_ratio": {
+            "type": "string",
+            "description": "长宽比(method=1)",
+            "enum": [
+              "16:9",
+              "4:3",
+              "1:1",
+              "3:4",
+              "9:16",
+              "21:9"
+            ]
+          },
+          "image_urls": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "图片URL(method=2/3/4)"
+          },
+          "template_id": {
+            "type": "string",
+            "description": "运镜模板ID(method=4)"
+          },
+          "camera_strength": {
+            "type": "string",
+            "description": "运镜强度(method=4)",
+            "enum": [
+              "weak",
+              "medium",
+              "strong"
+            ]
+          }
+        }
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "文生视频-16:9",
+      "input": {
+        "prompt": "一只小猫在草地上奔跑",
+        "frames": 121,
+        "method": "1",
+        "config": {
+          "aspect_ratio": "16:9"
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "文本生成16:9 720p视频"
+    },
+    {
+      "name": "图生视频-运镜",
+      "input": {
+        "prompt": "运镜拉远效果",
+        "frames": 121,
+        "method": "4",
+        "config": {
+          "image_urls": [
+            "https://example.com/photo.jpg"
+          ],
+          "template_id": "quick_pull_back",
+          "camera_strength": "medium"
+        },
+        "token": "Bearer r:xxx"
+      },
+      "description": "首帧图+超级拉远运镜模板生成视频"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-video-v3-1080p",
+    "jimeng-video-v3-pro"
+  ],
+  "pricing": {
+    "unit": "秒",
+    "price": 0.28,
+    "currency": "CNY"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 37 - 0
dist/skills/jimeng-video-v3-pro/SKILL.md

@@ -0,0 +1,37 @@
+---
+name: jimeng-video-v3-pro
+description: 即梦视频生成3.0Pro,具备多镜头叙事能力,更精准遵循指令,支持1080P高清专业级质感视频。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# jimeng-video-v3-pro
+
+## 功能用途
+
+即梦视频3.0Pro,视频生成效果飞跃,各维度均表现优异。
+
+**核心业务场景:**
+- 文生视频(多镜头叙事能力)
+- 图生视频-首帧(1080P专业级质感)
+- 丰富多元的风格化表达
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| prompt | string | ❌ | 提示词(文生视频必填,图生视频可不传) |
+| image_url | string | ❌ | 首帧图片URL(图生视频必填) |
+| image_urls | string/string[] | ❌ | 首帧图片URL(允许传数组或单值) |
+| frames | number | ❌ | 帧数,范围[121,241],默认121 |
+| aspect_ratio | number | ❌ | 比例编号: 1=16:9 2=4:3 3=1:1 4=3:4 5=9:16 6=21:9 |
+| token | string | ❌ | 认证token(已内置默认值,无需提供) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/volcengine/jimeng/getVideoV3_Pro`
+
+## 费用
+
+即梦视频生成3.0Pro: **1元/秒**

+ 197 - 0
dist/skills/jimeng-video-v3-pro/api-config.json

@@ -0,0 +1,197 @@
+{
+  "name": "jimeng-video-v3-pro",
+  "displayName": "即梦视频生成3.0Pro",
+  "description": "即梦视频3.0Pro,具备多镜头叙事能力,1080P专业级质感视频。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/volcengine/jimeng/getVideoV3_Pro",
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "token"
+    ],
+    "properties": {
+      "prompt": {
+        "type": "string",
+        "description": "提示词(文生视频必填,图生视频可不传)"
+      },
+      "image_url": {
+        "type": "string",
+        "description": "首帧图片URL(图生视频必填)"
+      },
+      "image_urls": {
+        "description": "首帧图片URL,允许传数组或单值"
+      },
+      "frames": {
+        "type": "integer",
+        "description": "帧数,范围[121,241],默认121",
+        "default": 121
+      },
+      "aspect_ratio": {
+        "type": "integer",
+        "description": "比例编号: 1=16:9 2=4:3 3=1:1 4=3:4 5=9:16 6=21:9",
+        "enum": [
+          1,
+          2,
+          3,
+          4,
+          5,
+          6
+        ]
+      },
+      "token": {
+        "type": "string",
+        "description": "认证token"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "properties": {
+      "code": {
+        "type": "integer"
+      },
+      "data": {
+        "type": "object",
+        "properties": {
+          "workId": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "文生视频Pro",
+      "input": {
+        "prompt": "两个q版小女孩笑着面向镜头慢慢地跑",
+        "frames": 121,
+        "aspect_ratio": 5,
+        "token": "Bearer r:xxx"
+      },
+      "description": "文本生成9:16竖屏Pro级视频"
+    },
+    {
+      "name": "图生视频Pro",
+      "input": {
+        "prompt": "人物缓缓转头微笑",
+        "image_url": "https://example.com/photo.png",
+        "frames": 121,
+        "aspect_ratio": 5,
+        "token": "Bearer r:xxx"
+      },
+      "description": "首帧图片驱动生成Pro级视频"
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-video-v3-720p",
+    "jimeng-video-v3-1080p"
+  ],
+  "pricing": {
+    "unit": "秒",
+    "price": 1,
+    "currency": "CNY"
+  },
+  "timeout": 30000,
+  "tokenConfig": {
+    "type": "body",
+    "tokenField": "token",
+    "format": "Bearer r:{{jimengToken}}",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "currentToken": "r:f0333969e312a40e4703e8fe4ed1c600",
+    "resolutionOrder": [
+      "configFile",
+      "currentToken"
+    ],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通即梦AI生成服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "即梦AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            -2,
+            -3,
+            -10,
+            402,
+            429
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance",
+            "quota"
+          ]
+        },
+        {
+          "responseField": "message",
+          "operator": "contains",
+          "value": [
+            "余额不足",
+            "insufficient",
+            "balance"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        {
+          "responseField": "code",
+          "operator": "in",
+          "value": [
+            401,
+            403
+          ]
+        },
+        {
+          "responseField": "msg",
+          "operator": "contains",
+          "value": [
+            "unauthorized",
+            "token",
+            "invalid",
+            "auth"
+          ]
+        }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 40 - 0
dist/skills/jimeng-work-result/SKILL.md

@@ -0,0 +1,40 @@
+---
+name: jimeng-work-result
+description: 根据 workId 查询 ImagineWork 表,获取生成的图片/视频 URL。
+version: 1.0.0
+author: nkkj-BrainHack
+---
+
+# 即梦作品结果查询
+
+## 功能
+根据 workId 查询 ImagineWork 表,获取生成的图片/视频 URL。
+
+## 使用场景
+当 `jimeng-task-query`(getDataByTask02)返回 `isFinish: true` 后,调用此 skill 获取最终的图片或视频下载链接。
+
+## 调用链
+1. 提交生成任务(如 jimeng-text2img-v31)→ 获取 workId
+2. 轮询任务状态(jimeng-task-query)→ isFinish: true
+3. **获取作品结果(本 skill)→ 返回 images / videos URL 列表**
+
+## 参数
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| workId | string | ✅ | 生成任务返回的 workId(即 ImagineWork 表的 objectId) |
+
+## 响应字段
+
+| 字段 | 类型 | 说明 |
+|------|------|------|
+| images | array\<string\> | 图片 URL 列表(已转存,永久有效) |
+| videos | array\<string\> | 视频 URL 列表(已转存,永久有效) |
+| prompt | string | 原始提示词 |
+| progress | number | 进度,1 表示完成 |
+
+## 注意事项
+- images 和 videos 中的 URL 已转存至华为云 OBS,永久有效
+- 图片生成类 skill 结果在 images 字段
+- 视频生成类 skill 结果在 videos 字段
+- 如果 images/videos 为空,说明任务尚未完成,需要先等 jimeng-task-query 返回 isFinish: true

+ 86 - 0
dist/skills/jimeng-work-result/api-config.json

@@ -0,0 +1,86 @@
+{
+  "name": "jimeng-work-result",
+  "displayName": "即梦作品结果查询",
+  "description": "根据 workId 查询 ImagineWork 表,获取生成的图片/视频 URL。在 jimeng-task-query 返回 isFinish:true 后调用此接口获取最终结果。",
+  "category": "jimeng",
+  "version": "1.0.0",
+  "endpoint": {
+    "method": "GET",
+    "url": "https://server.fmode.cn/parse/classes/ImagineWork/{{workId}}",
+    "headers": {
+      "X-Parse-Application-Id": "ncloudmaster"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": ["workId"],
+    "properties": {
+      "workId": {
+        "type": "string",
+        "description": "生成任务返回的 workId(即 ImagineWork 表的 objectId),来自提交任务接口的响应"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "ImagineWork 记录,包含生成结果",
+    "properties": {
+      "objectId": {
+        "type": "string",
+        "description": "记录ID(即 workId)"
+      },
+      "images": {
+        "type": "array",
+        "items": { "type": "string" },
+        "description": "图片 URL 列表(已转存华为云OBS,永久有效)。图片生成类任务的结果在此字段"
+      },
+      "videos": {
+        "type": "array",
+        "items": { "type": "string" },
+        "description": "视频 URL 列表(已转存,永久有效)。视频生成类任务的结果在此字段"
+      },
+      "prompt": {
+        "type": "string",
+        "description": "原始提示词"
+      },
+      "progress": {
+        "type": "number",
+        "description": "生成进度,1 表示完成"
+      },
+      "usage": {
+        "type": "object",
+        "description": "扣费详情"
+      }
+    }
+  },
+  "notes": "此接口通过 Parse REST API 直接查询 LeanCloud 的 ImagineWork 表。images/videos 中的 URL 已转存至华为云 OBS,永久有效。图片生成类 skill(text2img、img2img、img-v4 等)结果在 images 字段;视频生成类 skill(video-v3、actor 等)结果在 videos 字段。",
+  "usageExamples": [
+    {
+      "name": "查询文生图结果",
+      "input": {
+        "workId": "WCAMhCMpG4"
+      },
+      "description": "查询 workId 对应的图片生成结果,返回 images 数组",
+      "expectedOutput": {
+        "objectId": "WCAMhCMpG4",
+        "images": ["https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/storage/aigc/imagine/WCAMhCMpG4-0.png"],
+        "videos": null,
+        "prompt": "一只可爱的橘猫在阳光下打盹,水彩画风格",
+        "progress": 1
+      }
+    }
+  ],
+  "relatedSkills": [
+    "jimeng-task-query",
+    "jimeng-text2img-v3",
+    "jimeng-text2img-v31",
+    "jimeng-img-v4",
+    "jimeng-video-v3-720p"
+  ],
+  "timeout": 10000,
+  "retry": {
+    "maxAttempts": 2,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  }
+}

+ 61 - 0
dist/skills/keyword-product-ranking/SKILL.md

@@ -0,0 +1,61 @@
+---
+name: keyword-product-ranking
+description: 查询指定 Amazon 关键词下的产品自然排名和广告排名列表。适用于竞品关键词占位分析、广告投放效果验证、搜索结果竞争态势研判。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# keyword-product-ranking
+
+## 功能用途
+
+输入关键词获取该词搜索结果页的产品排名列表,识别竞品的关键词占位优势。
+
+**核心业务场景:**
+- 竞品关键词占位分析(竞品在核心词下排名第几)
+- 广告 vs 自然排名分析(IsSponsored 区分广告占位比例)
+- 搜索结果竞争格局(哪些品牌垄断关键词流量)
+
+## 调用链(Workflow)
+
+```
+上游: keyword-search(Keyword) → 确认词的流量价值
+本步: keyword-product-ranking(Keyword) → 获取该词下产品排名列表
+下游: product-detail-query(ASIN) → 获取头部排名产品的完整信息
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| Keyword | string | ✅ | 要查询排名的关键词,如 'reed diffuser'、'candle warmer lamp' |
+| domain | integer | ❌ | 站点 ID: 1=amazon.com 2=amazon.co.uk 3=amazon.de(默认 1) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-ecom/forward`
+
+```json
+{
+  "path": "/api/KeywordProductRanking",
+  "method": "POST",
+  "query": { "domain": 1 },
+  "body": { "Keyword": "reed diffuser" }
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| Asin | 产品 ASIN → 传入 product-detail-query 获取详情 |
+| Rank | 该词下的排名 → **竞品关键词占位分析核心字段** |
+| IsSponsored | 是否广告产品 → 广告占位比例分析 |
+| Price | 售价 → 词下竞品价格带分布 |
+| RatingsCount | 评论数 → 产品竞争成熟度 |
+
+## 依赖要求
+
+- 通过 `https://server.fmode.cn/api/voc-ecom/forward` 统一转发,认证已内置
+- `domain` 必须为整数

+ 153 - 0
dist/skills/keyword-product-ranking/api-config.json

@@ -0,0 +1,153 @@
+{
+  "name": "keyword-product-ranking",
+  "displayName": "关键词产品排名查询",
+  "description": "查询指定关键词下的产品排名列表,获取该关键词搜索结果中的产品排序。用于竞品在关键词下的位置分析、广告优化。",
+  "category": "voc",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-ecom/forward",
+    "headers": {
+      "Content-Type": "application/json",
+    "Authorization": "Bearer {{vocToken}}"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "Keyword"
+    ],
+    "properties": {
+      "Keyword": {
+        "type": "string",
+        "description": "要查询排名的关键词,如 'reed diffuser'"
+      },
+      "domain": {
+        "type": "integer",
+        "description": "Amazon 站点 ID: 1=amazon.com",
+        "default": 1
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "path": "/api/KeywordProductRanking",
+      "method": "POST",
+      "query": {
+        "domain": "{{domain}}"
+      },
+      "body": {
+        "Keyword": "{{Keyword}}"
+      }
+    }
+  },
+  "response": {
+    "type": "array",
+    "description": "关键词下的产品排名列表",
+    "items": {
+      "type": "object",
+      "properties": {
+        "Asin": {
+          "type": "string",
+          "description": "产品 ASIN"
+        },
+        "Title": {
+          "type": "string",
+          "description": "产品标题"
+        },
+        "Rank": {
+          "type": "integer",
+          "description": "在该关键词下的排名"
+        },
+        "Price": {
+          "type": "number",
+          "description": "售价"
+        },
+        "Rating": {
+          "type": "number",
+          "description": "评分"
+        },
+        "RatingsCount": {
+          "type": "integer",
+          "description": "评论数"
+        },
+        "IsSponsored": {
+          "type": "boolean",
+          "description": "是否为广告产品"
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "查询关键词产品排名",
+      "input": {
+        "Keyword": "reed diffuser",
+        "domain": 1
+      },
+      "description": "获取 'reed diffuser' 搜索结果页产品排名"
+    }
+  ],
+  "reportMapping": {
+    "slides": [
+      "趋势雷达(Slide12)",
+      "广告关键词引擎(Slide15)"
+    ],
+    "dataPoints": [
+      "关键词排名",
+      "竞品在关键词下的位置"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 59 - 0
dist/skills/keyword-search-trend/SKILL.md

@@ -0,0 +1,59 @@
+---
+name: keyword-search-trend
+description: 查询指定 Amazon 关键词的历史搜索量趋势曲线,包含日期维度的搜索量变化。适用于品类季节性趋势分析、飙升词识别、报告趋势图数据。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# keyword-search-trend
+
+## 功能用途
+
+获取关键词的历史搜索量趋势曲线,分析品类需求的季节性规律和长期趋势。
+
+**核心业务场景:**
+- 品类季节性趋势分析("candle warmer" Q4 旺季验证)
+- 飙升词时间点定位(搜索量从何时开始激增)
+- 报告趋势图数据(Slide 品类趋势折线图)
+
+## 调用链(Workflow)
+
+```
+上游: keyword-search(Keyword) → 确认词的当前搜索量规模
+本步: keyword-search-trend(Keyword) → 获取历史趋势曲线数据
+分析: 判断词的季节性旺季、增长阶段、是否为飙升词
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| Keyword | string | ✅ | 要查询趋势的关键词,如 'candle warmer lamp aesthetic' |
+| domain | integer | ❌ | 站点 ID: 1=amazon.com 2=amazon.co.uk 3=amazon.de(默认 1) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-ecom/forward`
+
+```json
+{
+  "path": "/api/KeywordSearchResultTrend",
+  "method": "POST",
+  "query": { "domain": 1 },
+  "body": { "Keyword": "candle warmer lamp aesthetic" }
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| TrendData[].Date | 日期 → 时间轴 |
+| TrendData[].SearchVolume | 搜索量 → **趋势曲线核心数据** |
+| TrendData[].ProductCount | 搜索结果产品数 → 竞争者增减趋势 |
+
+## 依赖要求
+
+- 通过 `https://server.fmode.cn/api/voc-ecom/forward` 统一转发,认证已内置
+- `domain` 必须为整数

+ 142 - 0
dist/skills/keyword-search-trend/api-config.json

@@ -0,0 +1,142 @@
+{
+  "name": "keyword-search-trend",
+  "displayName": "关键词搜索趋势查询",
+  "description": "查询指定关键词的搜索结果趋势变化,包括搜索量随时间的变化。用于发现飙升关键词、季节性趋势分析。",
+  "category": "voc",
+  "version": "1.3.0",
+  "endpoint": {
+    "method": "POST",
+    "url": "https://server.fmode.cn/api/voc-ecom/forward",
+    "headers": {
+      "Content-Type": "application/json",
+    "Authorization": "Bearer {{vocToken}}"
+    }
+  },
+  "parameters": {
+    "type": "object",
+    "required": [
+      "Keyword"
+    ],
+    "properties": {
+      "Keyword": {
+        "type": "string",
+        "description": "要查询趋势的关键词"
+      },
+      "domain": {
+        "type": "integer",
+        "description": "Amazon 站点 ID: 1=amazon.com",
+        "default": 1
+      }
+    }
+  },
+  "requestTransform": {
+    "template": {
+      "path": "/api/KeywordSearchResultTrend",
+      "method": "POST",
+      "query": {
+        "domain": "{{domain}}"
+      },
+      "body": {
+        "Keyword": "{{Keyword}}"
+      }
+    }
+  },
+  "response": {
+    "type": "object",
+    "description": "关键词趋势数据",
+    "properties": {
+      "TrendData": {
+        "type": "array",
+        "description": "趋势数据点列表",
+        "items": {
+          "type": "object",
+          "properties": {
+            "Date": {
+              "type": "string",
+              "description": "日期"
+            },
+            "SearchVolume": {
+              "type": "integer",
+              "description": "搜索量"
+            },
+            "ProductCount": {
+              "type": "integer",
+              "description": "搜索结果产品数"
+            }
+          }
+        }
+      }
+    }
+  },
+  "usageExamples": [
+    {
+      "name": "查询关键词搜索趋势",
+      "input": {
+        "Keyword": "candle warmer lamp aesthetic",
+        "domain": 1
+      },
+      "description": "查看 'candle warmer lamp aesthetic' 的搜索量变化趋势"
+    }
+  ],
+  "reportMapping": {
+    "slides": [
+      "趋势雷达(Slide12)"
+    ],
+    "dataPoints": [
+      "关键词搜索趋势",
+      "飙升卖点词增幅"
+    ]
+  },
+  "timeout": 60000,
+  "retry": {
+    "maxAttempts": 3,
+    "delay": 1000,
+    "backoffMultiplier": 2
+  },
+  "tokenConfig": {
+    "type": "bearer",
+    "configFile": "~/.openclaw/voc-credentials.json",
+    "tokenField": "vocToken",
+    "currentToken": "r:858b3ee92314d5447d1fc3cdc10462d7",
+    "resolutionOrder": ["configFile", "currentToken"],
+    "onMissing": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "扫码开通 VOC-AI 数据服务",
+      "message": "请扫描下方二维码完成支付,支付成功后将自动获取 Token 并继续执行。"
+    },
+    "onBalanceInsufficient": {
+      "action": "showPaymentQR",
+      "qrCodeUrl": "https://pwa.fmode.cn/apig-pay.html?user={{user}}&apigid={{apigid}}&fun_id=HOkkX72PMF",
+      "paymentCheckEndpoint": "https://server.fmode.cn/api/apig/getApig",
+      "pollingIntervalMs": 3000,
+      "pollingTimeoutMs": 300000,
+      "onPaymentSuccess": "retrySkillWithNewToken",
+      "title": "VOC-AI Token 余额不足,请扫码充值",
+      "message": "当前 Token 余额不足,请扫描二维码充值,支付完成后将自动继续执行。"
+    }
+  },
+  "errorHandling": {
+    "balanceInsufficient": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [-2, -3, -10, 402, 429] },
+        { "responseField": "msg", "operator": "contains", "value": ["余额不足", "insufficient", "balance", "quota"] },
+        { "responseField": "message", "operator": "contains", "value": ["余额不足", "insufficient", "balance"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onBalanceInsufficient"
+    },
+    "unauthorized": {
+      "conditions": [
+        { "responseField": "code", "operator": "in", "value": [401, 403] },
+        { "responseField": "msg", "operator": "contains", "value": ["unauthorized", "token", "invalid", "auth"] }
+      ],
+      "matchMode": "any",
+      "trigger": "tokenConfig.onMissing"
+    }
+  }
+}

+ 64 - 0
dist/skills/keyword-search/SKILL.md

@@ -0,0 +1,64 @@
+---
+name: keyword-search
+description: 查询 Amazon 关键词的月搜索量、增长率、竞争度、CPC 等核心指标。适用于卖点词飙升雷达、广告出价参考、趋势词筛选、报告关键词表制作。
+version: 1.3.0
+author: nkkj-BrainHack
+---
+
+# keyword-search
+
+## 功能用途
+
+输入关键词获取其 Amazon 搜索流量规模和竞争数据,评估词的价值。
+
+**核心业务场景:**
+- 卖点词飙升雷达(SearchVolumeGrowth 高的词为飙升卖点词)
+- 广告关键词出价参考(CPC 数据直接用于广告预算规划)
+- 报告关键词表制作(Slide 目标词搜索量数据)
+- 竞争度筛选(低竞争高流量词优先布局)
+
+## 调用链(Workflow)
+
+```
+上游: asin-reverse-keywords(ASIN) → 获取候选词列表
+本步: keyword-search(Keyword) → 验证每个词的搜索量和竞争度
+下游: keyword-search-trend(Keyword) → 查看词的历史趋势曲线
+下游: keyword-product-ranking(Keyword) → 查看该词下的产品排名情况
+```
+
+## 入参规则
+
+| 参数 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| Keyword | string | ✅ | 要查询的关键词,如 'reed diffuser'、'candle warmer lamp aesthetic' |
+| domain | integer | ❌ | 站点 ID: 1=amazon.com 2=amazon.co.uk 3=amazon.de(默认 1) |
+
+## 接口调用方式
+
+- **请求方法**: POST
+- **接口地址**: `https://server.fmode.cn/api/voc-ecom/forward`
+
+```json
+{
+  "path": "/api/KeywordQuery",
+  "method": "POST",
+  "query": { "domain": 1 },
+  "body": { "Keyword": "natural reed diffuser" }
+}
+```
+
+## 关键响应字段
+
+| 字段 | 业务用途 |
+|------|---------|
+| SearchVolume | 月搜索量 → **关键词流量价值核心指标** |
+| SearchVolumeGrowth | 搜索量增长率 → 飙升词识别(>30% 为显著增长) |
+| CompetitionLevel | 竞争度(低/中/高/极高)→ 布局难度评估 |
+| CPC | 建议广告出价(美元)→ 广告预算规划 |
+| ConversionRate | 转化率 → 购买意图强度 |
+| RelatedKeywords | 相关关键词列表 → 扩展词表 |
+
+## 依赖要求
+
+- 通过 `https://server.fmode.cn/api/voc-ecom/forward` 统一转发,认证已内置
+- `domain` 必须为整数

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff