socialdatax-skills 0.2.13 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -68,7 +68,7 @@ Common search phrases for this skill package:
68
68
  - Sensitive Check MCP server name: `sensitive-check`
69
69
  - Sensitive Check future MCP registry name: `com.socialdatax/sensitive-check`
70
70
  - Unified MCP registry name: none; this package installs skills and calls explicit platform services.
71
- - Current public capability version: `0.2.13`
71
+ - Current public capability version: `0.2.15`
72
72
 
73
73
  ## Direct CLI
74
74
 
@@ -99,8 +99,8 @@ npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>"
99
99
  npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_or_share_text>" --pretty
100
100
  npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
101
101
  npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty
102
- npx -y socialdatax-skills@latest kuaishou hot-search --pretty
103
102
  npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
103
+ npx -y socialdatax-skills@latest kuaishou user-search --keyword "露营" --pretty
104
104
  npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty
105
105
  npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty
106
106
  npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty
@@ -120,7 +120,9 @@ npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --all --in
120
120
  npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty
121
121
  npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty
122
122
  npx -y socialdatax-skills@latest weibo likers --post-id "<post_id>" --pretty
123
+ npx -y socialdatax-skills@latest weibo likers --post-url "<weibo_post_url_or_share_text>" --pretty
123
124
  npx -y socialdatax-skills@latest weibo reposts --post-id "<post_id>" --pretty
125
+ npx -y socialdatax-skills@latest weibo reposts --post-url "<weibo_post_url_or_share_text>" --pretty
124
126
  npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty
125
127
  npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
126
128
  npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty
@@ -156,7 +158,7 @@ For commands that accept `--page-token`, continue only with the complete returne
156
158
  Search pagination uses `--page-token` when continuing with a returned `next_page_token`. Omit `--page-token` on the first search request and pass the complete returned `next_page_token` only when continuing the same search chain.
157
159
 
158
160
  XHS, Douyin, Kuaishou, Weibo, and WeChat Channels search use `--keyword` and optional `--page-token`.
159
- Kuaishou search uses `--keyword` and optional `--page-token`. Kuaishou search does not accept Douyin semantic filters.
161
+ Kuaishou work search uses `kuaishou search --keyword` and optional `--page-token`; Kuaishou creator search uses `kuaishou user-search --keyword` and optional `--page-token`. Kuaishou search does not accept Douyin semantic filters, and `kuaishou user-search` does not support `--since-days`.
160
162
  Weibo and WeChat Channels search use `--keyword` and optional `--page-token`.
161
163
 
162
164
  Douyin search filters use semantic values: `--sort-type` supports `general`,
@@ -166,7 +168,9 @@ Douyin search filters use semantic values: `--sort-type` supports `general`,
166
168
  supports `all`, `video`, and `image`.
167
169
 
168
170
  WeChat Channels search filters use semantic values: `--sort-type` supports
169
- `all`, `latest`, and `popular`; `--duration-range` supports `all`,
171
+ `all`, `time_descending`, and `collect_count_descending`;
172
+ `collect_count_descending` means hottest first / most collected first.
173
+ `--duration-range` supports `all`,
170
174
  `under_5_min`, `between_5_and_20_min`, and `over_20_min`.
171
175
 
172
176
  ### Runtime Requirements
@@ -253,7 +257,6 @@ npx -y socialdatax-skills@latest xhs hot-search --pretty
253
257
  npx -y socialdatax-skills@latest douyin hot-search --pretty
254
258
  npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
255
259
  npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
256
- npx -y socialdatax-skills@latest kuaishou hot-search --pretty
257
260
  npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
258
261
  npx -y socialdatax-skills@latest weibo hot-search --pretty
259
262
  npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
@@ -305,8 +308,8 @@ Current XHS workflows include:
305
308
 
306
309
  Current Kuaishou workflows include:
307
310
 
308
- - Fetch the current Kuaishou / 快手 short-video hot list.
309
311
  - Search related Kuaishou works by keyword.
312
+ - Search Kuaishou creator or account candidates by keyword before profile lookup.
310
313
  - Resolve a Kuaishou work page link, short link, share text, or photo_id into structured work details.
311
314
  - Fetch paginated first-level comments for comment analysis.
312
315
  - Fetch paginated replies under a first-level comment.
@@ -335,9 +338,10 @@ Current Weibo workflows include:
335
338
  - Resolve a Weibo post URL, short link, share text, or post_id into structured post details.
336
339
  - Fetch paginated first-level comments for comment analysis.
337
340
  - Fetch paginated replies under a first-level comment.
341
+ - Fetch paginated liker and repost lists from a post_id, post URL, short link, or share text.
338
342
  - Continue Weibo list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
339
- - Read creator profile data from a profile link, short link, share text, or user_id.
340
- - Fetch paginated creator post lists from a user_id, profile link, short link, or share text.
343
+ - Read user profile data from a profile link, short link, share text, or user_id.
344
+ - Fetch paginated user post lists from a user_id, profile link, short link, or share text.
341
345
  - Submit and check Weibo video 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
342
346
 
343
347
  Current WeChat Channels / 视频号 workflows include:
@@ -403,8 +407,8 @@ Current Sensitive Check workflows include:
403
407
 
404
408
  | Tool | Public purpose |
405
409
  | --- | --- |
406
- | `kuaishou_get_hot_search_list` | Get the current Kuaishou / 快手 short-video hot list. |
407
410
  | `kuaishou_search_videos` | Search Kuaishou works by natural-language keyword with optional `page_token` continuation; do not pass `page`. |
411
+ | `kuaishou_search_users` | Search Kuaishou creators by keyword with optional `page_token` continuation; do not pass `page`. |
408
412
  | `kuaishou_get_video_detail_by_photo_id` | Fetch structured work details when the caller already has a photo_id. |
409
413
  | `kuaishou_get_video_detail_by_url` | Resolve a Kuaishou work page link, short link, or share text into structured work details. |
410
414
  | `kuaishou_get_video_comments_by_photo_id` | Fetch paginated first-level comments when the caller already has a photo_id. |
@@ -429,10 +433,14 @@ Current Sensitive Check workflows include:
429
433
  | `weibo_get_post_comments_by_post_id` | Fetch paginated first-level comments when the caller already has a post_id. |
430
434
  | `weibo_get_post_comments_by_post_url` | Fetch paginated first-level comments directly from a Weibo post URL, short link, or share text. |
431
435
  | `weibo_get_post_comment_replies_by_comment_id` | Fetch paginated replies under a first-level comment by post_id and comment_id. |
432
- | `weibo_get_user_info_by_user_id` | Fetch creator profile data when the caller already has a user_id. |
433
- | `weibo_get_user_info_by_profile_url` | Resolve a Weibo profile link, short link, or share text into creator profile data. |
434
- | `weibo_get_user_posts_by_user_id` | Fetch a paginated list of posts published by a creator when the caller already has a user_id. |
435
- | `weibo_get_user_posts_by_profile_url` | Fetch a paginated list of posts published by a creator from a profile link, short link, or share text. |
436
+ | `weibo_get_post_liker_list_by_post_id` | Fetch paginated users who liked a Weibo post by post_id. |
437
+ | `weibo_get_post_liker_list_by_post_url` | Fetch paginated users who liked a Weibo post from a post URL, short link, or share text. |
438
+ | `weibo_get_post_repost_list_by_post_id` | Fetch paginated reposts for a Weibo post by post_id. |
439
+ | `weibo_get_post_repost_list_by_post_url` | Fetch paginated reposts for a Weibo post from a post URL, short link, or share text. |
440
+ | `weibo_get_user_info_by_user_id` | Fetch user profile data when the caller already has a user_id. |
441
+ | `weibo_get_user_info_by_profile_url` | Resolve a Weibo profile link, short link, or share text into user profile data. |
442
+ | `weibo_get_user_posts_by_user_id` | Fetch a paginated list of posts published by a user when the caller already has a user_id. |
443
+ | `weibo_get_user_posts_by_profile_url` | Fetch a paginated list of posts published by a user from a profile link, short link, or share text. |
436
444
  | `weibo_submit_video_speech_text_by_post_url` | Submit a Weibo video speech-to-text transcript job from a post URL, short link, or share text; submit waits up to 15 seconds. |
437
445
  | `weibo_submit_video_speech_text_by_post_id` | Submit a Weibo video speech-to-text transcript job when the caller already has a post_id; submit waits up to 15 seconds. |
438
446
  | `weibo_get_video_speech_text_job` | Check a Weibo speech-to-text transcript job by job_id without creating a new task. |
package/cli.mjs CHANGED
@@ -7,7 +7,7 @@ import { dirname, join, resolve } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
 
9
9
  const PACKAGE_NAME = "socialdatax-skills";
10
- const PACKAGE_VERSION = "0.2.13";
10
+ const PACKAGE_VERSION = "0.2.15";
11
11
  const PACKAGE_SPEC = `${PACKAGE_NAME}@latest`;
12
12
  const LOG_PREFIX = `[${PACKAGE_NAME}]`;
13
13
  const MIN_NODE_VERSION = "20.18.1";
@@ -232,8 +232,8 @@ const DOUYIN_OPTION_DISPLAY_NAMES = {
232
232
  secUserId: "--sec-user-id",
233
233
  };
234
234
  const KUAISHOU_DIRECT_ACTION_OPTIONS = {
235
- "hot-search": ["pretty"],
236
235
  search: ["keyword", "pageToken", "pages", "all", "maxItems", "sinceDays", "pretty"],
236
+ "user-search": ["keyword", "pageToken", "pages", "maxItems", "pretty"],
237
237
  detail: ["photoId", "url", "pretty"],
238
238
  comments: [
239
239
  "photoId",
@@ -306,8 +306,8 @@ const WEIBO_DIRECT_ACTION_OPTIONS = {
306
306
  "includeReplies",
307
307
  "pretty",
308
308
  ],
309
- likers: ["postId", "pageToken", "pages", "all", "maxItems", "pretty"],
310
- reposts: ["postId", "pageToken", "pages", "all", "maxItems", "pretty"],
309
+ likers: ["postId", "postUrl", "pageToken", "pages", "all", "maxItems", "pretty"],
310
+ reposts: ["postId", "postUrl", "pageToken", "pages", "all", "maxItems", "pretty"],
311
311
  "user-info": ["userId", "profileUrl", "pretty"],
312
312
  "user-posts": [
313
313
  "userId",
@@ -384,7 +384,11 @@ const WECHAT_DIRECT_ACTION_OPTIONS = {
384
384
  ],
385
385
  };
386
386
  const WECHAT_DIRECT_ACTION_NAMES = Object.keys(WECHAT_DIRECT_ACTION_OPTIONS).join(", ");
387
- const WECHAT_SEARCH_SORT_TYPES = ["all", "latest", "popular"];
387
+ const WECHAT_SEARCH_SORT_TYPES = [
388
+ "all",
389
+ "time_descending",
390
+ "collect_count_descending",
391
+ ];
388
392
  const WECHAT_SEARCH_DURATION_RANGES = [
389
393
  "all",
390
394
  "under_5_min",
@@ -600,15 +604,16 @@ const PLATFORMS = {
600
604
  "KUAISHOU_MCP_UPSTREAM_URL",
601
605
  ],
602
606
  tools: [
603
- {
604
- name: "kuaishou_get_hot_search_list",
605
- description: "Get the current Kuaishou / 快手 short-video hot list.",
606
- },
607
607
  {
608
608
  name: "kuaishou_search_videos",
609
609
  description:
610
610
  "Search Kuaishou works by natural-language keyword with optional page_token continuation; do not pass page.",
611
611
  },
612
+ {
613
+ name: "kuaishou_search_users",
614
+ description:
615
+ "Search Kuaishou creators by keyword with optional page_token continuation; do not pass page.",
616
+ },
612
617
  {
613
618
  name: "kuaishou_get_video_detail_by_photo_id",
614
619
  description: "Fetch structured Kuaishou work details when the caller already has a photo_id.",
@@ -709,10 +714,20 @@ const PLATFORMS = {
709
714
  name: "weibo_get_post_liker_list_by_post_id",
710
715
  description: "Fetch a paginated list of users who liked a Weibo post by post_id.",
711
716
  },
717
+ {
718
+ name: "weibo_get_post_liker_list_by_post_url",
719
+ description:
720
+ "Fetch a paginated list of users who liked a Weibo post from a post URL, short link, or share text.",
721
+ },
712
722
  {
713
723
  name: "weibo_get_post_repost_list_by_post_id",
714
724
  description: "Fetch a paginated repost list for a Weibo post by post_id.",
715
725
  },
726
+ {
727
+ name: "weibo_get_post_repost_list_by_post_url",
728
+ description:
729
+ "Fetch a paginated repost list for a Weibo post from a post URL, short link, or share text.",
730
+ },
716
731
  {
717
732
  name: "weibo_get_user_info_by_user_id",
718
733
  description: "Fetch creator profile data when the caller already has a user_id.",
@@ -1654,12 +1669,12 @@ function printHelp() {
1654
1669
  console.log(` npx -y ${PACKAGE_SPEC} douyin user-series --profile-url "<profile_url_or_share_text>" --pretty`);
1655
1670
  console.log(" Call the Douyin creator short-drama series tool from a profile link or share text.");
1656
1671
  console.log("");
1657
- console.log(` npx -y ${PACKAGE_SPEC} kuaishou hot-search --pretty`);
1658
- console.log(" Call the Kuaishou short-video hot list tool directly and print JSON.");
1659
- console.log("");
1660
1672
  console.log(` npx -y ${PACKAGE_SPEC} kuaishou search --keyword "露营" --pretty`);
1661
1673
  console.log(" Call the Kuaishou work search tool directly and print JSON.");
1662
1674
  console.log("");
1675
+ console.log(` npx -y ${PACKAGE_SPEC} kuaishou user-search --keyword "露营" --pretty`);
1676
+ console.log(" Call the Kuaishou creator search tool directly and print JSON.");
1677
+ console.log("");
1663
1678
  console.log(` npx -y ${PACKAGE_SPEC} kuaishou detail --photo-id "<photo_id>" --pretty`);
1664
1679
  console.log(" Call the Kuaishou work detail tool directly and print JSON.");
1665
1680
  console.log("");
@@ -1716,9 +1731,15 @@ function printHelp() {
1716
1731
  console.log(` npx -y ${PACKAGE_SPEC} weibo likers --post-id "<post_id>" --pretty`);
1717
1732
  console.log(" Call the Weibo post liker list tool directly and print JSON.");
1718
1733
  console.log("");
1734
+ console.log(` npx -y ${PACKAGE_SPEC} weibo likers --post-url "<weibo_post_url_or_share_text>" --pretty`);
1735
+ console.log(" Call the Weibo post liker list tool from a post link or share text.");
1736
+ console.log("");
1719
1737
  console.log(` npx -y ${PACKAGE_SPEC} weibo reposts --post-id "<post_id>" --pretty`);
1720
1738
  console.log(" Call the Weibo post repost list tool directly and print JSON.");
1721
1739
  console.log("");
1740
+ console.log(` npx -y ${PACKAGE_SPEC} weibo reposts --post-url "<weibo_post_url_or_share_text>" --pretty`);
1741
+ console.log(" Call the Weibo post repost list tool from a post link or share text.");
1742
+ console.log("");
1722
1743
  console.log(` npx -y ${PACKAGE_SPEC} weibo user-info --user-id "<user_id>" --pretty`);
1723
1744
  console.log(" Call the Weibo creator profile tool directly and print JSON.");
1724
1745
  console.log("");
@@ -1850,7 +1871,7 @@ function printHelp() {
1850
1871
  console.log(" --platform <generic|xhs|douyin|kuaishou>");
1851
1872
  console.log(" Target platform for sensitive-check text; default is generic.");
1852
1873
  console.log(" --pages <number>");
1853
- console.log(" Fetch and merge N pages from the current starting point for search, comments, replies, creator content lists, and creator series.");
1874
+ console.log(" Fetch and merge N pages from the current starting point for search, Kuaishou creator search, comments, replies, creator content lists, and creator series.");
1854
1875
  console.log(" --all");
1855
1876
  console.log(" Continue comments, replies, creator content lists, and creator series until next_page_token is empty; not supported for search.");
1856
1877
  console.log(" --max-items <number>");
@@ -1874,8 +1895,8 @@ function printHelp() {
1874
1895
  console.log(" Douyin content type filter; omit for all content types.");
1875
1896
  console.log(" --page-token <token>");
1876
1897
  console.log(" Continue token-paginated commands with the complete returned next_page_token. For search, omit it on the first request.");
1877
- console.log(" --sort-type <all|latest|popular>");
1878
- console.log(" WeChat Channels / 视频号 search sort; omit for default sort.");
1898
+ console.log(" --sort-type <all|time_descending|collect_count_descending>");
1899
+ console.log(" WeChat Channels / 视频号 search sort; collect_count_descending means hottest first / most collected first; omit for default sort.");
1879
1900
  console.log(" --duration-range <all|under_5_min|between_5_and_20_min|over_20_min>");
1880
1901
  console.log(" WeChat Channels / 视频号 duration filter; omit for no duration filter.");
1881
1902
  console.log(" --pretty Pretty-print direct CLI JSON output.");
@@ -2268,21 +2289,18 @@ function buildDouyinOperation(action, options) {
2268
2289
 
2269
2290
  function buildKuaishouOperation(action, options) {
2270
2291
  switch (action) {
2271
- case "hot-search":
2272
- return buildDirectOperation(
2273
- "hot-search",
2274
- {
2275
- tool: "kuaishou_get_hot_search_list",
2276
- toolArguments: {},
2277
- },
2278
- PLATFORMS.kuaishou
2279
- );
2280
2292
  case "search":
2281
2293
  return buildDirectOperation(
2282
2294
  "search",
2283
2295
  buildKuaishouSearchCall(options),
2284
2296
  PLATFORMS.kuaishou
2285
2297
  );
2298
+ case "user-search":
2299
+ return buildDirectOperation(
2300
+ "user-search",
2301
+ buildKuaishouUserSearchCall(options),
2302
+ PLATFORMS.kuaishou
2303
+ );
2286
2304
  case "detail":
2287
2305
  return buildDirectOperation(
2288
2306
  "detail",
@@ -2415,13 +2433,33 @@ function buildWeiboOperation(action, options) {
2415
2433
  case "likers":
2416
2434
  return buildDirectOperation(
2417
2435
  "likers",
2418
- buildWeiboPostListByPostIdCall(options, "likers", "weibo_get_post_liker_list_by_post_id"),
2436
+ buildOneOfCall(options, {
2437
+ idOption: "postId",
2438
+ urlOption: "postUrl",
2439
+ idTool: "weibo_get_post_liker_list_by_post_id",
2440
+ urlTool: "weibo_get_post_liker_list_by_post_url",
2441
+ idArgument: "post_id",
2442
+ urlArgument: "post_url",
2443
+ idDisplay: "--post-id",
2444
+ urlDisplay: "--post-url",
2445
+ pageToken: options.pageToken,
2446
+ }),
2419
2447
  PLATFORMS.weibo
2420
2448
  );
2421
2449
  case "reposts":
2422
2450
  return buildDirectOperation(
2423
2451
  "reposts",
2424
- buildWeiboPostListByPostIdCall(options, "reposts", "weibo_get_post_repost_list_by_post_id"),
2452
+ buildOneOfCall(options, {
2453
+ idOption: "postId",
2454
+ urlOption: "postUrl",
2455
+ idTool: "weibo_get_post_repost_list_by_post_id",
2456
+ urlTool: "weibo_get_post_repost_list_by_post_url",
2457
+ idArgument: "post_id",
2458
+ urlArgument: "post_url",
2459
+ idDisplay: "--post-id",
2460
+ urlDisplay: "--post-url",
2461
+ pageToken: options.pageToken,
2462
+ }),
2425
2463
  PLATFORMS.weibo
2426
2464
  );
2427
2465
  case "user-info":
@@ -2751,6 +2789,22 @@ function buildKuaishouSearchCall(options) {
2751
2789
  };
2752
2790
  }
2753
2791
 
2792
+ function buildKuaishouUserSearchCall(options) {
2793
+ if (!options.keyword) {
2794
+ throw new Error("Missing --keyword for kuaishou user-search.");
2795
+ }
2796
+ const toolArguments = {
2797
+ keyword: options.keyword,
2798
+ };
2799
+ if (options.pageToken) {
2800
+ toolArguments.page_token = options.pageToken;
2801
+ }
2802
+ return {
2803
+ tool: "kuaishou_search_users",
2804
+ toolArguments,
2805
+ };
2806
+ }
2807
+
2754
2808
  function buildWeiboSearchCall(options) {
2755
2809
  if (!options.keyword) {
2756
2810
  throw new Error("Missing --keyword for weibo search.");
@@ -2783,7 +2837,7 @@ function buildWechatSearchCall(options) {
2783
2837
  WECHAT_SEARCH_SORT_TYPES.join(", ")
2784
2838
  );
2785
2839
  } else if (sinceDays !== undefined) {
2786
- toolArguments.sort_type = "latest";
2840
+ toolArguments.sort_type = "time_descending";
2787
2841
  }
2788
2842
  if (options.durationRange !== undefined) {
2789
2843
  toolArguments.duration_range = parseAllowedStringOption(
@@ -2881,22 +2935,6 @@ function buildWeiboRepliesCall(options) {
2881
2935
  };
2882
2936
  }
2883
2937
 
2884
- function buildWeiboPostListByPostIdCall(options, action, tool) {
2885
- if (!options.postId) {
2886
- throw new Error(`Missing --post-id for weibo ${action}.`);
2887
- }
2888
- const toolArguments = {
2889
- post_id: options.postId,
2890
- };
2891
- if (options.pageToken) {
2892
- toolArguments.page_token = options.pageToken;
2893
- }
2894
- return {
2895
- tool,
2896
- toolArguments,
2897
- };
2898
- }
2899
-
2900
2938
  function buildWechatCommentsCall(options) {
2901
2939
  const hasObjectInput = Boolean(options.objectId || options.objectNonceId);
2902
2940
  const hasUrlInput = Boolean(options.url);
@@ -3196,6 +3234,10 @@ function recordPaginatedItemDedupeKeys(itemDedupeState, dedupeKeys) {
3196
3234
  }
3197
3235
 
3198
3236
  function paginatedItemDedupeKeys(operation, item) {
3237
+ if (operation.operation === "user-search") {
3238
+ const userId = itemStringField(item, "user_id");
3239
+ return userId ? [`${operation.operation}:${operation.platform.id}:user_id:${userId}`] : [];
3240
+ }
3199
3241
  if (shouldDeduplicateCommentItems(operation)) {
3200
3242
  const commentId = itemStringField(item, "comment_id");
3201
3243
  return commentId ? [`comment:${commentId}`] : [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socialdatax-skills",
3
- "version": "0.2.13",
3
+ "version": "0.2.15",
4
4
  "description": "SocialDataX / 社媒数据助手 skill installer and direct CLI helper for hosted platform social media MCP services.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -81,7 +81,7 @@ Optional arguments:
81
81
  - Kuaishou `--page-token <next_page_token>`: opaque pagination token; omit it on the first search request. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
82
82
  - Weibo `--page-token <next_page_token>`: opaque pagination token; omit it on the first search request. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
83
83
  - WeChat Channels / 视频号 `--page-token <next_page_token>`: opaque pagination token; omit it on the first search request. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
84
- - WeChat Channels / 视频号 `--sort-type <all|latest|popular>`: optional sort value; omit it for the default sort.
84
+ - WeChat Channels / 视频号 `--sort-type <all|time_descending|collect_count_descending>`: optional sort value; omit it for the default sort.
85
85
  - WeChat Channels / 视频号 `--duration-range <all|under_5_min|between_5_and_20_min|over_20_min>`: optional duration filter; omit it for no duration filter.
86
86
  - Weibo `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
87
87
  - WeChat Channels / 视频号 `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
@@ -127,15 +127,15 @@ Douyin content type filter values:
127
127
  - `image`: image/text posts.
128
128
 
129
129
  The command prints JSON with `platform`, `tool`, `arguments`, and `data`. Search supports `--pages` and `--max-items`, but not `--all`, because search has no stable complete-result boundary. Multi-page output keeps merged results in `data.items` and adds `page_count`, `item_count`, and the next-page marker.
130
- With CLI `--since-days <n>`, XHS and Douyin search automatically prefer newest-first sorting and the closest native publish-time range unless the user explicitly sets sort or publish-time filters; WeChat Channels search defaults to `latest`; Kuaishou and Weibo only apply CLI-side `publish_time` filtering.
130
+ With CLI `--since-days <n>`, XHS and Douyin search automatically prefer newest-first sorting and the closest native publish-time range unless the user explicitly sets sort or publish-time filters; WeChat Channels search defaults to `time_descending`; Kuaishou and Weibo only apply CLI-side `publish_time` filtering.
131
131
  Kuaishou search pagination:
132
132
  - Continue only when `next_page_token` is not empty.
133
133
  - Pass the complete returned `next_page_token` back unchanged as `page_token` for the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
134
134
 
135
135
  WeChat Channels / 视频号 sort values:
136
- - `all`: default sorting.
137
- - `latest`: newest first.
138
- - `popular`: most popular first.
136
+ - `all`: no sort restriction.
137
+ - `time_descending`: newest first.
138
+ - `collect_count_descending`: hottest first / most collected first.
139
139
 
140
140
  WeChat Channels / 视频号 duration filter values:
141
141
  - `all`: no duration filter.
@@ -197,7 +197,7 @@ For WeChat Channels / 视频号, call `wechat_search_videos` with:
197
197
  - `keyword`: required search phrase or topic.
198
198
  - `page_token`: optional opaque pagination token. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
199
199
  Do not pass `page` to `wechat_search_videos`; omit `page_token` on the first request.
200
- - `sort_type`: optional, one of `all`, `latest`, `popular`; omit it for the default sort.
200
+ - `sort_type`: optional, one of `all`, `time_descending`, `collect_count_descending`; omit it for the default sort.
201
201
  - `duration_range`: optional duration filter, one of `all`, `under_5_min`, `between_5_and_20_min`, `over_20_min`; omit it for no duration filter.
202
202
  Continue WeChat Channels pagination only when `next_page_token` is not empty. Pass the complete returned `next_page_token` back unchanged as `page_token` for the same keyword and filter chain.
203
203
  `--since-days` uses CLI-side filtering only and is not an MCP tool argument; for MCP-only calls, request newest-first/native publish-time filters where available and filter returned `publish_time` values in your analysis.
@@ -28,6 +28,7 @@ Current platform support:
28
28
  - Xiaohongshu / XHS / RedNote creators through the `xhs_get_user_info_by_*` tools.
29
29
  - Douyin / 抖音 creators through the `douyin_get_user_info_by_*` tools.
30
30
  - Kuaishou / 快手 creators through the `kuaishou_get_user_info_by_*` tools.
31
+ - Kuaishou / 快手 creator discovery through `kuaishou_search_users` before profile lookup when only an account keyword or niche is known.
31
32
  - Weibo / 微博 creators through the `weibo_get_user_info_by_*` tools.
32
33
  - WeChat Channels / 视频号 creators through `wechat_get_user_info_by_user_id`.
33
34
 
@@ -45,6 +46,7 @@ npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty
45
46
  npx -y socialdatax-skills@latest xhs user-info --profile-url "<profile_url_or_share_text>" --pretty
46
47
  npx -y socialdatax-skills@latest douyin user-info --sec-user-id "<sec_user_id>" --pretty
47
48
  npx -y socialdatax-skills@latest douyin user-info --profile-url "<profile_url_or_share_text>" --pretty
49
+ npx -y socialdatax-skills@latest kuaishou user-search --keyword "<creator_keyword>" --pretty
48
50
  npx -y socialdatax-skills@latest kuaishou user-info --user-id "<user_id>" --pretty
49
51
  npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_or_share_text>" --pretty
50
52
  npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty
@@ -59,6 +61,9 @@ Optional arguments:
59
61
  - Douyin `--sec-user-id <sec_user_id>`: preferred when the creator sec_user_id is already known.
60
62
  - Douyin `--profile-url <profile_url_or_share_text>`: use for a profile URL, short link, or profile share text.
61
63
  - `--pretty`: output formatting only.
64
+ - Kuaishou `user-search --keyword <creator_keyword>`: use when the user only has a creator name, account keyword, or niche and needs possible Kuaishou user_id candidates before profile lookup.
65
+ - Kuaishou user-search `--page-token <next_page_token>`: opaque pagination token; omit it on the first request and continue only with the complete returned `next_page_token` from the same creator-search chain.
66
+ - Kuaishou user-search `--pages <n>` and `--max-items <n>`: fetch and merge bounded creator-search pages; user-search does not support `--since-days` because creator search results are accounts, not published content items.
62
67
  - Kuaishou `--user-id <user_id>`: preferred when the creator user_id is already known.
63
68
  - Kuaishou `--profile-url <profile_url_or_share_text>`: use for a profile URL, short link, or profile share text.
64
69
  - Weibo `--user-id <user_id>`: preferred when the creator user_id is already known.
@@ -81,6 +86,7 @@ MCP tools matching the direct CLI commands above:
81
86
  - `xhs_get_user_info_by_profile_url`
82
87
  - `douyin_get_user_info_by_sec_user_id`
83
88
  - `douyin_get_user_info_by_profile_url`
89
+ - `kuaishou_search_users`
84
90
  - `kuaishou_get_user_info_by_user_id`
85
91
  - `kuaishou_get_user_info_by_profile_url`
86
92
  - `weibo_get_user_info_by_user_id`
@@ -92,6 +98,7 @@ If MCP tools are already available in the current agent, use one of these tools:
92
98
  - `xhs_get_user_info_by_profile_url`: use for profile URLs, short links, or profile share text.
93
99
  - `douyin_get_user_info_by_sec_user_id`: preferred when `sec_user_id` is already known from search, detail, comments, or creator work lists.
94
100
  - `douyin_get_user_info_by_profile_url`: use for profile URLs, short links, or profile share text.
101
+ - `kuaishou_search_users`: use when the user only has a creator keyword and needs possible Kuaishou user_id candidates. Pass `keyword`; pass `page_token` only for continuation. Do not pass `page`.
95
102
  - `kuaishou_get_user_info_by_user_id`: preferred when `user_id` is already known from search, detail, comments, or creator work lists.
96
103
  - `kuaishou_get_user_info_by_profile_url`: use for profile URLs, short links, or profile share text.
97
104
  - `weibo_get_user_info_by_user_id`: preferred when `user_id` is already known.
@@ -101,3 +108,4 @@ If MCP tools are already available in the current agent, use one of these tools:
101
108
  ## Output Guidance
102
109
 
103
110
  Report profile fields such as name, platform IDs, bio, verification, follower count, following count, received like count, IP location, and gender when available. Separate profile facts from strategic interpretation.
111
+ For Kuaishou creator search results, present account candidates separately from confirmed profile facts; use a returned `user_id` for profile lookup when the user chooses a candidate.
@@ -27,7 +27,6 @@ Current platform support:
27
27
 
28
28
  - Xiaohongshu / XHS / RedNote search hot list through `xhs_get_search_hot_list`.
29
29
  - Douyin / 抖音 hot-search through `douyin_get_hot_search_list`.
30
- - Kuaishou / 快手 hot-search through `kuaishou_get_hot_search_list`.
31
30
  - Weibo / 微博 hot-search through `weibo_get_hot_search_list`.
32
31
  - WeChat Channels / 视频号 hot-search through `wechat_get_hot_search_list`.
33
32
  - Xiaohongshu / XHS / RedNote notes through `xhs_search_notes`.
@@ -48,6 +47,7 @@ Current platform support:
48
47
  - Xiaohongshu / XHS / RedNote creators through the `xhs_get_user_info_by_*` tools.
49
48
  - Douyin / 抖音 creators through the `douyin_get_user_info_by_*` tools.
50
49
  - Kuaishou / 快手 creators through the `kuaishou_get_user_info_by_*` tools.
50
+ - Kuaishou / 快手 creator discovery through `kuaishou_search_users` before profile lookup when only an account keyword or niche is known.
51
51
  - Weibo / 微博 creators through the `weibo_get_user_info_by_*` tools.
52
52
  - WeChat Channels / 视频号 creators through `wechat_get_user_info_by_user_id`.
53
53
  - Xiaohongshu / XHS / RedNote creator notes through the `xhs_get_user_posted_notes_by_*` tools.
@@ -85,9 +85,9 @@ npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all -
85
85
  npx -y socialdatax-skills@latest douyin user-info --sec-user-id "<sec_user_id>" --pretty
86
86
  npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --pretty
87
87
  npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --all --pretty
88
- npx -y socialdatax-skills@latest kuaishou hot-search --pretty
89
88
  npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pretty
90
89
  npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pages 3 --pretty
90
+ npx -y socialdatax-skills@latest kuaishou user-search --keyword "<creator_keyword>" --pretty
91
91
  npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty
92
92
  npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty
93
93
  npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --all --include-replies --pretty
@@ -115,7 +115,6 @@ npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>"
115
115
  ```
116
116
 
117
117
  Additional direct CLI entrypoints:
118
-
119
118
  ```bash
120
119
  npx -y socialdatax-skills@latest xhs detail --url "<note_url_or_share_text>" --pretty
121
120
  npx -y socialdatax-skills@latest xhs comments --url "<note_url_or_share_text>" --pretty
@@ -130,6 +129,7 @@ npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>
130
129
  npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty
131
130
  npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --comment-id "<comment_id>" --pretty
132
131
  npx -y socialdatax-skills@latest douyin replies --aweme-id "<aweme_id>" --comment-id "<comment_id>" --pretty
132
+ npx -y socialdatax-skills@latest kuaishou user-search --keyword "<creator_keyword>" --pages 3 --pretty
133
133
  npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty
134
134
  npx -y socialdatax-skills@latest kuaishou comments --url "<kuaishou_content_url_or_share_text>" --pretty
135
135
  npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_or_share_text>" --pretty
@@ -138,7 +138,9 @@ npx -y socialdatax-skills@latest kuaishou replies --photo-id "<photo_id>" --comm
138
138
  npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty
139
139
  npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty
140
140
  npx -y socialdatax-skills@latest weibo likers --post-id "<post_id>" --pretty
141
+ npx -y socialdatax-skills@latest weibo likers --post-url "<weibo_post_url_or_share_text>" --pretty
141
142
  npx -y socialdatax-skills@latest weibo reposts --post-id "<post_id>" --pretty
143
+ npx -y socialdatax-skills@latest weibo reposts --post-url "<weibo_post_url_or_share_text>" --pretty
142
144
  npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
143
145
  npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty
144
146
  npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty
@@ -155,19 +157,18 @@ Required arguments:
155
157
  - Use `xhs hot-search` without keyword when the user asks for current Xiaohongshu / XHS / RedNote hot topics or 小红书搜索热榜.
156
158
  - Use `douyin hot-search` without keyword when the user asks for current Douyin hot topics.
157
159
  - Use `xhs search --keyword <text>`, `douyin search --keyword <text>`, `kuaishou search --keyword <text>`, `weibo search --keyword <text>`, or `wechat search --keyword <text>` for keyword research.
160
+ - Use `kuaishou user-search --keyword <creator_keyword>` when the user wants to discover Kuaishou creator or account candidates by name, keyword, or niche before profile lookup.
158
161
  - For detail, comments, replies, creator profile, creator posts, and creator series commands, use the ID argument shown in the CLI example or the matching URL/profile-url entrypoint, not both.
159
- - Use `kuaishou hot-search` without keyword when the user asks for current Kuaishou / 快手 hot topics.
160
- - Use `kuaishou search --keyword <text>` for Kuaishou keyword research.
161
- - Use `weibo hot-search` without keyword when the user asks for current Weibo / 微博 hot topics.
162
162
  - Use `wechat hot-search` without keyword when the user asks for current WeChat Channels / 视频号 hot topics.
163
163
 
164
164
  Optional arguments:
165
165
 
166
166
  - Search continuation uses `--page-token <next_page_token>` when a returned `next_page_token` is available. Omit `page_token` on the first token-paginated search request, and continue only with the complete returned `next_page_token` from the same chain.
167
- - `--page-token <next_page_token>`: use for XHS/Douyin/Kuaishou/Weibo/WeChat Channels search continuation and for token-paginated comments, replies, creator posts, creator notes, creator videos, and creator series. Keep the original topic, content item, or creator target stable. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
167
+ - `--page-token <next_page_token>`: use for XHS/Douyin/Kuaishou/Weibo/WeChat Channels search continuation, Kuaishou creator search continuation, and token-paginated comments, replies, creator posts, creator notes, creator videos, and creator series. Keep the original topic, content item, creator-search keyword, or creator target stable. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
168
168
  - `--pages <n>`: fetch and merge N pages for search, comments, replies, creator posts, or creator series.
169
169
  - `--all`: fetch comments, replies, creator posts, or creator series until `next_page_token` is empty; do not use it for search.
170
170
  - `--max-items <n>`: stop after collecting N primary results.
171
+ - Kuaishou `user-search` supports `--pages <n>` and `--max-items <n>` for bounded creator candidate discovery; it does not support `--since-days`.
171
172
  - `--since-days <1-365>`: keep search or creator content-list items whose public `publish_time` is within the last N days. Search stays bounded by `--pages`; creator content lists continue until the publish-time boundary when `--pages` is omitted.
172
173
  - `--include-replies`: for first-level comments, also fetch nested second-level replies under each returned comment.
173
174
  - `--sort-type`, `--note-type`, `--publish-time-range`, `--duration-range`, and `--content-type`: apply only to XHS, Douyin, or WeChat Channels keyword research commands when the user asks for filtering; Kuaishou and Weibo search currently use `--keyword` and optional `--page-token`.
@@ -178,7 +179,7 @@ Optional arguments:
178
179
 
179
180
  - Use XHS commands for Xiaohongshu / XHS / RedNote / 小红书 search hot list, notes, comments, creators, and creator note lists.
180
181
  - Use Douyin commands for Douyin / 抖音 works, comments, creators, hot topics, creator works, and creator short-drama series.
181
- - Use Kuaishou commands for Kuaishou / 快手 short videos, comments, creators, creator works, and hot topics.
182
+ - Use Kuaishou commands for Kuaishou / 快手 short videos, keyword research, comments, creators, and creator works.
182
183
  - Use Weibo commands for Weibo / 微博 posts, comments, creators, creator posts, and hot topics.
183
184
  - Use WeChat Channels / 视频号 commands for videos, comments, creators, creator videos, and hot topics.
184
185
  - If the user asks for both platforms, keep findings separated by platform before comparing patterns.
@@ -198,8 +199,8 @@ MCP tools matching the direct CLI commands above:
198
199
 
199
200
  - XHS: `xhs_get_search_hot_list`, `xhs_search_notes`, `xhs_get_note_detail_by_note_id`, `xhs_get_note_comments_by_note_id`, `xhs_get_user_info_by_user_id`, `xhs_get_user_posted_notes_by_user_id`, `xhs_get_note_detail_by_note_url`, `xhs_get_note_comments_by_note_url`, `xhs_get_user_info_by_profile_url`, `xhs_get_user_posted_notes_by_profile_url`, `xhs_get_note_sub_comments_by_comment_id`
200
201
  - DOUYIN: `douyin_get_hot_search_list`, `douyin_search_videos`, `douyin_get_video_detail_by_aweme_id`, `douyin_get_video_comments_by_aweme_id`, `douyin_get_user_info_by_sec_user_id`, `douyin_get_user_posted_videos_by_sec_user_id`, `douyin_get_video_detail_by_url`, `douyin_get_video_comments_by_url`, `douyin_get_user_info_by_profile_url`, `douyin_get_user_posted_videos_by_profile_url`, `douyin_get_user_series_by_sec_user_id`, `douyin_get_user_series_by_profile_url`, `douyin_get_video_comment_replies_by_comment_id`
201
- - KUAISHOU: `kuaishou_get_hot_search_list`, `kuaishou_search_videos`, `kuaishou_get_video_detail_by_photo_id`, `kuaishou_get_video_comments_by_photo_id`, `kuaishou_get_user_info_by_user_id`, `kuaishou_get_user_posted_videos_by_user_id`, `kuaishou_get_video_detail_by_url`, `kuaishou_get_video_comments_by_url`, `kuaishou_get_user_info_by_profile_url`, `kuaishou_get_user_posted_videos_by_profile_url`, `kuaishou_get_video_comment_replies_by_comment_id`
202
- - WEIBO: `weibo_get_hot_search_list`, `weibo_search_posts`, `weibo_get_post_detail_by_post_id`, `weibo_get_post_comments_by_post_id`, `weibo_get_user_info_by_user_id`, `weibo_get_user_posts_by_user_id`, `weibo_get_post_detail_by_post_url`, `weibo_get_post_comments_by_post_url`, `weibo_get_post_liker_list_by_post_id`, `weibo_get_post_repost_list_by_post_id`, `weibo_get_user_info_by_profile_url`, `weibo_get_user_posts_by_profile_url`, `weibo_get_post_comment_replies_by_comment_id`
202
+ - KUAISHOU: `kuaishou_search_videos`, `kuaishou_search_users`, `kuaishou_get_video_detail_by_photo_id`, `kuaishou_get_video_comments_by_photo_id`, `kuaishou_get_user_info_by_user_id`, `kuaishou_get_user_posted_videos_by_user_id`, `kuaishou_get_video_detail_by_url`, `kuaishou_get_video_comments_by_url`, `kuaishou_get_user_info_by_profile_url`, `kuaishou_get_user_posted_videos_by_profile_url`, `kuaishou_get_video_comment_replies_by_comment_id`
203
+ - WEIBO: `weibo_get_hot_search_list`, `weibo_search_posts`, `weibo_get_post_detail_by_post_id`, `weibo_get_post_comments_by_post_id`, `weibo_get_user_info_by_user_id`, `weibo_get_user_posts_by_user_id`, `weibo_get_post_detail_by_post_url`, `weibo_get_post_comments_by_post_url`, `weibo_get_post_liker_list_by_post_id`, `weibo_get_post_liker_list_by_post_url`, `weibo_get_post_repost_list_by_post_id`, `weibo_get_post_repost_list_by_post_url`, `weibo_get_user_info_by_profile_url`, `weibo_get_user_posts_by_profile_url`, `weibo_get_post_comment_replies_by_comment_id`
203
204
  - WECHAT: `wechat_get_hot_search_list`, `wechat_search_videos`, `wechat_get_video_detail_by_encrypted_object_id`, `wechat_get_video_comments_by_object_id`, `wechat_get_user_info_by_user_id`, `wechat_get_user_posted_videos_by_user_id`, `wechat_get_video_detail_by_url`, `wechat_get_video_comments_by_url`, `wechat_get_user_posted_videos_by_url`, `wechat_get_video_comment_replies_by_comment_id`
204
205
 
205
206
  Use the automatically listed MCP tools above as the source of truth for tool names. Pick the narrowest tool for the user's platform and task.