socialdatax-skills 0.2.15 → 0.2.17

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.15`
71
+ - Current public capability version: `0.2.17`
72
72
 
73
73
  ## Direct CLI
74
74
 
@@ -120,9 +120,7 @@ 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
124
123
  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
126
124
  npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty
127
125
  npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
128
126
  npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty
@@ -157,6 +155,8 @@ For commands that accept `--page-token`, continue only with the complete returne
157
155
 
158
156
  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.
159
157
 
158
+ Generated Agent Skill examples include `--source-client socialdatax-skills --source-platform <marketplace> --source-skill <skill-slug>` so SocialDataX can attribute direct CLI usage to the current marketplace Skill. Keep those values unchanged when running commands from a Skill; omit them for ad hoc CLI use. The direct CLI also accepts `SOCIALDATAX_SOURCE_CLIENT`, `SOCIALDATAX_SOURCE_PLATFORM`, and `SOCIALDATAX_SOURCE_SKILL` as environment-variable fallbacks.
159
+
160
160
  XHS, Douyin, Kuaishou, Weibo, and WeChat Channels search use `--keyword` and optional `--page-token`.
161
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`.
162
162
  Weibo and WeChat Channels search use `--keyword` and optional `--page-token`.
@@ -314,8 +314,8 @@ Current Kuaishou workflows include:
314
314
  - Fetch paginated first-level comments for comment analysis.
315
315
  - Fetch paginated replies under a first-level comment.
316
316
  - Continue Kuaishou list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
317
- - Read creator profile data from a profile link, short link, share text, or user_id.
318
- - Fetch paginated creator work lists from a user_id, profile link, short link, or share text.
317
+ - Read creator profile data from a non-empty user_id, profile link, short link, or share text. Live/fw-user profile shares are supported for profile data; successful results return a reusable non-empty user_id.
318
+ - Fetch paginated creator work lists from a non-empty user_id, or from a profile link, short link, or share text that resolves directly to a non-empty user_id. For live/fw-user profile shares, call creator profile first and use the returned non-empty user_id.
319
319
  - Submit and check video work 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
320
320
 
321
321
  Current Douyin workflows include:
@@ -338,10 +338,9 @@ Current Weibo workflows include:
338
338
  - Resolve a Weibo post URL, short link, share text, or post_id into structured post details.
339
339
  - Fetch paginated first-level comments for comment analysis.
340
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.
342
341
  - Continue Weibo list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
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.
342
+ - Read creator profile data from a profile link, short link, share text, or user_id.
343
+ - Fetch paginated creator post lists from a user_id, profile link, short link, or share text.
345
344
  - Submit and check Weibo video 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
346
345
 
347
346
  Current WeChat Channels / 视频号 workflows include:
@@ -414,10 +413,10 @@ Current Sensitive Check workflows include:
414
413
  | `kuaishou_get_video_comments_by_photo_id` | Fetch paginated first-level comments when the caller already has a photo_id. |
415
414
  | `kuaishou_get_video_comments_by_url` | Fetch paginated first-level comments directly from a Kuaishou work page link, short link, or share text. |
416
415
  | `kuaishou_get_video_comment_replies_by_comment_id` | Fetch paginated replies under a first-level comment by photo_id and comment_id. |
417
- | `kuaishou_get_user_info_by_user_id` | Fetch creator profile data when the caller already has a user_id. |
418
- | `kuaishou_get_user_info_by_profile_url` | Resolve a Kuaishou profile link, short link, or share text into creator profile data. |
419
- | `kuaishou_get_user_posted_videos_by_user_id` | Fetch a paginated list of works published by a creator when the caller already has a user_id. |
420
- | `kuaishou_get_user_posted_videos_by_profile_url` | Fetch a paginated list of works published by a creator from a profile link, short link, or share text. |
416
+ | `kuaishou_get_user_info_by_user_id` | Fetch creator profile data when the caller already has a non-empty user_id. |
417
+ | `kuaishou_get_user_info_by_profile_url` | Resolve a Kuaishou profile link, including live/fw-user profile shares, short link, or share text into creator profile data; successful results return a reusable non-empty user_id. |
418
+ | `kuaishou_get_user_posted_videos_by_user_id` | Fetch a paginated list of works published by a creator when the caller already has a non-empty user_id. |
419
+ | `kuaishou_get_user_posted_videos_by_profile_url` | Fetch a paginated list of works published by a creator from a profile link, short link, or share text that resolves directly to a non-empty user_id; for live/fw-user profile shares, call creator profile first and use the returned non-empty user_id. |
421
420
  | `kuaishou_submit_video_speech_text_by_video_url` | Submit a Kuaishou video speech-to-text transcript job from a work page link, short link, or share text; submit waits up to 15 seconds. |
422
421
  | `kuaishou_submit_video_speech_text_by_photo_id` | Submit a Kuaishou video speech-to-text transcript job when the caller already has a photo_id; submit waits up to 15 seconds. |
423
422
  | `kuaishou_get_video_speech_text_job` | Check a Kuaishou speech-to-text transcript job by job_id without creating a new task. |
@@ -433,14 +432,10 @@ Current Sensitive Check workflows include:
433
432
  | `weibo_get_post_comments_by_post_id` | Fetch paginated first-level comments when the caller already has a post_id. |
434
433
  | `weibo_get_post_comments_by_post_url` | Fetch paginated first-level comments directly from a Weibo post URL, short link, or share text. |
435
434
  | `weibo_get_post_comment_replies_by_comment_id` | Fetch paginated replies under a first-level comment by post_id and comment_id. |
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. |
435
+ | `weibo_get_user_info_by_user_id` | Fetch creator profile data when the caller already has a user_id. |
436
+ | `weibo_get_user_info_by_profile_url` | Resolve a Weibo profile link, short link, or share text into creator profile data. |
437
+ | `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. |
438
+ | `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. |
444
439
  | `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. |
445
440
  | `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. |
446
441
  | `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.15";
10
+ const PACKAGE_VERSION = "0.2.17";
11
11
  const PACKAGE_SPEC = `${PACKAGE_NAME}@latest`;
12
12
  const LOG_PREFIX = `[${PACKAGE_NAME}]`;
13
13
  const MIN_NODE_VERSION = "20.18.1";
@@ -15,6 +15,16 @@ const HOMEPAGE_URL = "https://socialdatax.com";
15
15
  const PRIMARY_API_KEY_ENV = "SOCIALDATAX_API_KEY";
16
16
  const LEGACY_API_KEY_ENV = "SOCIAL_MEDIA_MCP_API_KEY";
17
17
  const API_KEY_ENV_NAMES = [PRIMARY_API_KEY_ENV, LEGACY_API_KEY_ENV];
18
+ const SOURCE_CLIENT_ENV = "SOCIALDATAX_SOURCE_CLIENT";
19
+ const SOURCE_PLATFORM_ENV = "SOCIALDATAX_SOURCE_PLATFORM";
20
+ const SOURCE_SKILL_ENV = "SOCIALDATAX_SOURCE_SKILL";
21
+ const SOURCE_CLIENT_ENV_NAMES = [SOURCE_CLIENT_ENV];
22
+ const SOURCE_PLATFORM_ENV_NAMES = [SOURCE_PLATFORM_ENV];
23
+ const SOURCE_SKILL_ENV_NAMES = [SOURCE_SKILL_ENV];
24
+ const SOURCE_CLIENT_HEADER = "X-SocialDataX-Client";
25
+ const SOURCE_PLATFORM_HEADER = "X-SocialDataX-Source-Platform";
26
+ const SOURCE_SKILL_HEADER = "X-SocialDataX-Source-Skill";
27
+ const SOURCE_ATTRIBUTION_PATTERN = /^[a-z0-9][a-z0-9-]{0,99}$/;
18
28
  const AVAILABLE_SKILLS = [
19
29
  {
20
30
  name: "socialdatax-content-research-assistant",
@@ -75,6 +85,7 @@ const BOOLEAN_OPTIONS = new Set([
75
85
  "pretty",
76
86
  ]);
77
87
  const DIRECT_BOOLEAN_OPTIONS = new Set(["all", "includeReplies", "pretty"]);
88
+ const DIRECT_META_OPTIONS = ["sourceClient", "sourcePlatform", "sourceSkill"];
78
89
  const INSTALL_TARGETS = ["openclaw", "hermes", "agents", "codex", "claude-code", "claude"];
79
90
  const VALID_SCOPES = ["user", "workspace", "shared"];
80
91
  const XHS_DIRECT_ACTION_OPTIONS = {
@@ -306,8 +317,8 @@ const WEIBO_DIRECT_ACTION_OPTIONS = {
306
317
  "includeReplies",
307
318
  "pretty",
308
319
  ],
309
- likers: ["postId", "postUrl", "pageToken", "pages", "all", "maxItems", "pretty"],
310
- reposts: ["postId", "postUrl", "pageToken", "pages", "all", "maxItems", "pretty"],
320
+ likers: ["postId", "pageToken", "pages", "all", "maxItems", "pretty"],
321
+ reposts: ["postId", "pageToken", "pages", "all", "maxItems", "pretty"],
311
322
  "user-info": ["userId", "profileUrl", "pretty"],
312
323
  "user-posts": [
313
324
  "userId",
@@ -636,19 +647,22 @@ const PLATFORMS = {
636
647
  },
637
648
  {
638
649
  name: "kuaishou_get_user_info_by_user_id",
639
- description: "Fetch creator profile data when the caller already has a user_id.",
650
+ description: "Fetch creator profile data when the caller already has a non-empty user_id.",
640
651
  },
641
652
  {
642
653
  name: "kuaishou_get_user_info_by_profile_url",
643
- description: "Resolve a Kuaishou profile link, short link, or share text into creator profile data.",
654
+ description:
655
+ "Resolve a Kuaishou profile link, including live/fw-user profile shares, short link, or share text into creator profile data; successful results return a reusable non-empty user_id.",
644
656
  },
645
657
  {
646
658
  name: "kuaishou_get_user_posted_videos_by_user_id",
647
- description: "Fetch a paginated list of works published by a creator when the caller already has a user_id.",
659
+ description:
660
+ "Fetch a paginated list of works published by a creator when the caller already has a non-empty user_id.",
648
661
  },
649
662
  {
650
663
  name: "kuaishou_get_user_posted_videos_by_profile_url",
651
- description: "Fetch a paginated list of works published by a creator from a profile link, short link, or share text.",
664
+ description:
665
+ "Fetch a paginated list of works published by a creator from a profile link, short link, or share text that resolves directly to a non-empty user_id; for live/fw-user profile shares, call creator profile first and use the returned non-empty user_id.",
652
666
  },
653
667
  {
654
668
  name: "kuaishou_submit_video_speech_text_by_video_url",
@@ -714,20 +728,10 @@ const PLATFORMS = {
714
728
  name: "weibo_get_post_liker_list_by_post_id",
715
729
  description: "Fetch a paginated list of users who liked a Weibo post by post_id.",
716
730
  },
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
- },
722
731
  {
723
732
  name: "weibo_get_post_repost_list_by_post_id",
724
733
  description: "Fetch a paginated repost list for a Weibo post by post_id.",
725
734
  },
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
- },
731
735
  {
732
736
  name: "weibo_get_user_info_by_user_id",
733
737
  description: "Fetch creator profile data when the caller already has a user_id.",
@@ -968,6 +972,10 @@ function validateKnownOptions(options, allowedOptions) {
968
972
  }
969
973
  }
970
974
 
975
+ function allowedDirectOptions(allowedOptions) {
976
+ return [...allowedOptions, ...DIRECT_META_OPTIONS];
977
+ }
978
+
971
979
  function requireOptionValue(options, key, displayName) {
972
980
  if (options[key] === true || options[key] === "") {
973
981
  throw new Error(`Missing value for ${displayName}.`);
@@ -986,7 +994,8 @@ function validateXhsDirectActionOptions(action, options) {
986
994
  return;
987
995
  }
988
996
 
989
- validateKnownOptions(options, allowedOptions);
997
+ validateKnownOptions(options, allowedDirectOptions(allowedOptions));
998
+ validateDirectMetaOptions(options);
990
999
  validateDirectPaginationOptions("xhs", action, options);
991
1000
  for (const key of allowedOptions) {
992
1001
  if (!DIRECT_BOOLEAN_OPTIONS.has(key)) {
@@ -1001,7 +1010,8 @@ function validateDouyinDirectActionOptions(action, options) {
1001
1010
  return;
1002
1011
  }
1003
1012
 
1004
- validateKnownOptions(options, allowedOptions);
1013
+ validateKnownOptions(options, allowedDirectOptions(allowedOptions));
1014
+ validateDirectMetaOptions(options);
1005
1015
  validateDirectPaginationOptions("douyin", action, options);
1006
1016
  for (const key of allowedOptions) {
1007
1017
  if (!DIRECT_BOOLEAN_OPTIONS.has(key)) {
@@ -1016,7 +1026,8 @@ function validateKuaishouDirectActionOptions(action, options) {
1016
1026
  return;
1017
1027
  }
1018
1028
 
1019
- validateKnownOptions(options, allowedOptions);
1029
+ validateKnownOptions(options, allowedDirectOptions(allowedOptions));
1030
+ validateDirectMetaOptions(options);
1020
1031
  validateDirectPaginationOptions("kuaishou", action, options);
1021
1032
  for (const key of allowedOptions) {
1022
1033
  if (!DIRECT_BOOLEAN_OPTIONS.has(key)) {
@@ -1031,7 +1042,8 @@ function validateWeiboDirectActionOptions(action, options) {
1031
1042
  return;
1032
1043
  }
1033
1044
 
1034
- validateKnownOptions(options, allowedOptions);
1045
+ validateKnownOptions(options, allowedDirectOptions(allowedOptions));
1046
+ validateDirectMetaOptions(options);
1035
1047
  validateDirectPaginationOptions("weibo", action, options);
1036
1048
  for (const key of allowedOptions) {
1037
1049
  if (!DIRECT_BOOLEAN_OPTIONS.has(key)) {
@@ -1046,7 +1058,8 @@ function validateWechatDirectActionOptions(action, options) {
1046
1058
  return;
1047
1059
  }
1048
1060
 
1049
- validateKnownOptions(options, allowedOptions);
1061
+ validateKnownOptions(options, allowedDirectOptions(allowedOptions));
1062
+ validateDirectMetaOptions(options);
1050
1063
  validateDirectPaginationOptions("wechat", action, options);
1051
1064
  for (const key of allowedOptions) {
1052
1065
  if (!DIRECT_BOOLEAN_OPTIONS.has(key)) {
@@ -1061,7 +1074,8 @@ function validateSensitiveCheckDirectActionOptions(action, options) {
1061
1074
  return;
1062
1075
  }
1063
1076
 
1064
- validateKnownOptions(options, allowedOptions);
1077
+ validateKnownOptions(options, allowedDirectOptions(allowedOptions));
1078
+ validateDirectMetaOptions(options);
1065
1079
  validateFlagOption(options, "pretty", "--pretty");
1066
1080
  for (const key of allowedOptions) {
1067
1081
  if (!DIRECT_BOOLEAN_OPTIONS.has(key)) {
@@ -1070,6 +1084,21 @@ function validateSensitiveCheckDirectActionOptions(action, options) {
1070
1084
  }
1071
1085
  }
1072
1086
 
1087
+ function validateDirectMetaOptions(options) {
1088
+ if (options.sourceClient !== undefined) {
1089
+ requireOptionValue(options, "sourceClient", "--source-client");
1090
+ normalizeSourceAttribution(options.sourceClient, "--source-client");
1091
+ }
1092
+ if (options.sourcePlatform !== undefined) {
1093
+ requireOptionValue(options, "sourcePlatform", "--source-platform");
1094
+ normalizeSourceAttribution(options.sourcePlatform, "--source-platform");
1095
+ }
1096
+ if (options.sourceSkill !== undefined) {
1097
+ requireOptionValue(options, "sourceSkill", "--source-skill");
1098
+ normalizeSourceAttribution(options.sourceSkill, "--source-skill");
1099
+ }
1100
+ }
1101
+
1073
1102
  function validateDirectPaginationOptions(platformId, action, options) {
1074
1103
  validateFlagOption(options, "pretty", "--pretty");
1075
1104
  validateFlagOption(options, "all", "--all");
@@ -1219,6 +1248,47 @@ function readFirstEnv(names) {
1219
1248
  return undefined;
1220
1249
  }
1221
1250
 
1251
+ function normalizeSourceAttribution(value, displayName) {
1252
+ const text = String(value || "").trim().toLowerCase();
1253
+ if (!text) {
1254
+ return "";
1255
+ }
1256
+ if (!SOURCE_ATTRIBUTION_PATTERN.test(text)) {
1257
+ throw new Error(
1258
+ `${displayName} must be a lowercase skill slug using letters, numbers, and hyphens.`
1259
+ );
1260
+ }
1261
+ return text;
1262
+ }
1263
+
1264
+ function resolveSourceAttribution(options = {}) {
1265
+ return {
1266
+ sourceClient:
1267
+ options.sourceClient !== undefined
1268
+ ? normalizeSourceAttribution(options.sourceClient, "--source-client")
1269
+ : normalizeSourceAttribution(
1270
+ readFirstEnv(SOURCE_CLIENT_ENV_NAMES) || PACKAGE_NAME,
1271
+ SOURCE_CLIENT_ENV
1272
+ ),
1273
+ sourcePlatform:
1274
+ options.sourcePlatform !== undefined
1275
+ ? normalizeSourceAttribution(options.sourcePlatform, "--source-platform")
1276
+ : normalizeSourceAttribution(
1277
+ readFirstEnv(SOURCE_PLATFORM_ENV_NAMES),
1278
+ SOURCE_PLATFORM_ENV
1279
+ ),
1280
+ sourceSkill:
1281
+ options.sourceSkill !== undefined
1282
+ ? normalizeSourceAttribution(options.sourceSkill, "--source-skill")
1283
+ : normalizeSourceAttribution(readFirstEnv(SOURCE_SKILL_ENV_NAMES), SOURCE_SKILL_ENV),
1284
+ };
1285
+ }
1286
+
1287
+ function attachDirectMetadata(operation, options) {
1288
+ operation.sourceAttribution = resolveSourceAttribution(options);
1289
+ return operation;
1290
+ }
1291
+
1222
1292
  function resolveUpstreamUrl(platform) {
1223
1293
  return readFirstEnv(platform.upstreamEnv) || platform.endpoint;
1224
1294
  }
@@ -1380,10 +1450,15 @@ async function installSkills(args) {
1380
1450
  console.log("Data calls do not perform login, posting, editing, liking, commenting, or account actions.");
1381
1451
  console.log("Configure your API Key before making authenticated calls:");
1382
1452
  console.log(` export ${PRIMARY_API_KEY_ENV}="<${PRIMARY_API_KEY_ENV}>"`);
1453
+ printInstalledSkillAttributionNote();
1454
+ }
1455
+
1456
+ function printInstalledSkillAttributionNote() {
1383
1457
  console.log("");
1384
- console.log("Direct CLI examples:");
1385
- console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "露营" --pretty`);
1386
- console.log(` npx -y ${PACKAGE_SPEC} xhs detail --note-id "<note_id>" --pretty`);
1458
+ console.log(
1459
+ "Direct CLI examples in installed SKILL.md files already include source attribution for agents."
1460
+ );
1461
+ console.log("No extra source attribution setup is required.");
1387
1462
  }
1388
1463
 
1389
1464
  function resolveInstallDestination({
@@ -1705,7 +1780,9 @@ function printHelp() {
1705
1780
  console.log(" Call the Kuaishou creator works tool directly and print JSON.");
1706
1781
  console.log("");
1707
1782
  console.log(` npx -y ${PACKAGE_SPEC} kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty`);
1708
- console.log(" Call the Kuaishou creator works tool from a profile link or share text.");
1783
+ console.log(
1784
+ " Call the Kuaishou creator works tool from a profile link or share text that resolves directly to a non-empty user_id."
1785
+ );
1709
1786
  console.log("");
1710
1787
  console.log(` npx -y ${PACKAGE_SPEC} weibo hot-search --pretty`);
1711
1788
  console.log(" Call the Weibo hot-search list tool directly and print JSON.");
@@ -1731,15 +1808,9 @@ function printHelp() {
1731
1808
  console.log(` npx -y ${PACKAGE_SPEC} weibo likers --post-id "<post_id>" --pretty`);
1732
1809
  console.log(" Call the Weibo post liker list tool directly and print JSON.");
1733
1810
  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("");
1737
1811
  console.log(` npx -y ${PACKAGE_SPEC} weibo reposts --post-id "<post_id>" --pretty`);
1738
1812
  console.log(" Call the Weibo post repost list tool directly and print JSON.");
1739
1813
  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("");
1743
1814
  console.log(` npx -y ${PACKAGE_SPEC} weibo user-info --user-id "<user_id>" --pretty`);
1744
1815
  console.log(" Call the Weibo creator profile tool directly and print JSON.");
1745
1816
  console.log("");
@@ -1895,6 +1966,12 @@ function printHelp() {
1895
1966
  console.log(" Douyin content type filter; omit for all content types.");
1896
1967
  console.log(" --page-token <token>");
1897
1968
  console.log(" Continue token-paginated commands with the complete returned next_page_token. For search, omit it on the first request.");
1969
+ console.log(" --source-client <slug>");
1970
+ console.log(" Attribution client slug for authenticated direct CLI calls; defaults to socialdatax-skills.");
1971
+ console.log(" --source-platform <slug>");
1972
+ console.log(" Attribution marketplace/platform slug for the current Agent Skill, such as modelscope or skillhub.");
1973
+ console.log(" --source-skill <slug>");
1974
+ console.log(" Attribute authenticated direct CLI calls to the current Agent Skill usage slug.");
1898
1975
  console.log(" --sort-type <all|time_descending|collect_count_descending>");
1899
1976
  console.log(" WeChat Channels / 视频号 search sort; collect_count_descending means hottest first / most collected first; omit for default sort.");
1900
1977
  console.log(" --duration-range <all|under_5_min|between_5_and_20_min|over_20_min>");
@@ -1954,7 +2031,7 @@ async function runXhsDirectCommand(args) {
1954
2031
  }
1955
2032
  validateXhsDirectActionOptions(action, options);
1956
2033
 
1957
- const operation = buildXhsOperation(action, options);
2034
+ const operation = attachDirectMetadata(buildXhsOperation(action, options), options);
1958
2035
  const data = shouldUsePaginatedDirectOutput(options)
1959
2036
  ? await callPaginatedDirectOperation(operation, options)
1960
2037
  : await callDirectOperation(operation);
@@ -1981,7 +2058,7 @@ async function runDouyinDirectCommand(args) {
1981
2058
  }
1982
2059
  validateDouyinDirectActionOptions(action, options);
1983
2060
 
1984
- const operation = buildDouyinOperation(action, options);
2061
+ const operation = attachDirectMetadata(buildDouyinOperation(action, options), options);
1985
2062
  const data = shouldUsePaginatedDirectOutput(options)
1986
2063
  ? await callPaginatedDirectOperation(operation, options)
1987
2064
  : await callDirectOperation(operation);
@@ -2008,7 +2085,7 @@ async function runKuaishouDirectCommand(args) {
2008
2085
  }
2009
2086
  validateKuaishouDirectActionOptions(action, options);
2010
2087
 
2011
- const operation = buildKuaishouOperation(action, options);
2088
+ const operation = attachDirectMetadata(buildKuaishouOperation(action, options), options);
2012
2089
  const data = shouldUsePaginatedDirectOutput(options)
2013
2090
  ? await callPaginatedDirectOperation(operation, options)
2014
2091
  : await callDirectOperation(operation);
@@ -2035,7 +2112,7 @@ async function runWeiboDirectCommand(args) {
2035
2112
  }
2036
2113
  validateWeiboDirectActionOptions(action, options);
2037
2114
 
2038
- const operation = buildWeiboOperation(action, options);
2115
+ const operation = attachDirectMetadata(buildWeiboOperation(action, options), options);
2039
2116
  const data = shouldUsePaginatedDirectOutput(options)
2040
2117
  ? await callPaginatedDirectOperation(operation, options)
2041
2118
  : await callDirectOperation(operation);
@@ -2062,7 +2139,7 @@ async function runWechatDirectCommand(args) {
2062
2139
  }
2063
2140
  validateWechatDirectActionOptions(action, options);
2064
2141
 
2065
- const operation = buildWechatOperation(action, options);
2142
+ const operation = attachDirectMetadata(buildWechatOperation(action, options), options);
2066
2143
  const data = shouldUsePaginatedDirectOutput(options)
2067
2144
  ? await callPaginatedDirectOperation(operation, options)
2068
2145
  : await callDirectOperation(operation);
@@ -2089,7 +2166,10 @@ async function runSensitiveCheckDirectCommand(args) {
2089
2166
  }
2090
2167
  validateSensitiveCheckDirectActionOptions(action, options);
2091
2168
 
2092
- const operation = buildSensitiveCheckOperation(action, options);
2169
+ const operation = attachDirectMetadata(
2170
+ buildSensitiveCheckOperation(action, options),
2171
+ options
2172
+ );
2093
2173
  const data = await callDirectOperation(operation);
2094
2174
  const envelope = {
2095
2175
  platform: operation.platform.id,
@@ -2433,33 +2513,13 @@ function buildWeiboOperation(action, options) {
2433
2513
  case "likers":
2434
2514
  return buildDirectOperation(
2435
2515
  "likers",
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
- }),
2516
+ buildWeiboPostListByPostIdCall(options, "likers", "weibo_get_post_liker_list_by_post_id"),
2447
2517
  PLATFORMS.weibo
2448
2518
  );
2449
2519
  case "reposts":
2450
2520
  return buildDirectOperation(
2451
2521
  "reposts",
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
- }),
2522
+ buildWeiboPostListByPostIdCall(options, "reposts", "weibo_get_post_repost_list_by_post_id"),
2463
2523
  PLATFORMS.weibo
2464
2524
  );
2465
2525
  case "user-info":
@@ -2935,6 +2995,22 @@ function buildWeiboRepliesCall(options) {
2935
2995
  };
2936
2996
  }
2937
2997
 
2998
+ function buildWeiboPostListByPostIdCall(options, action, tool) {
2999
+ if (!options.postId) {
3000
+ throw new Error(`Missing --post-id for weibo ${action}.`);
3001
+ }
3002
+ const toolArguments = {
3003
+ post_id: options.postId,
3004
+ };
3005
+ if (options.pageToken) {
3006
+ toolArguments.page_token = options.pageToken;
3007
+ }
3008
+ return {
3009
+ tool,
3010
+ toolArguments,
3011
+ };
3012
+ }
3013
+
2938
3014
  function buildWechatCommentsCall(options) {
2939
3015
  const hasObjectInput = Boolean(options.objectId || options.objectNonceId);
2940
3016
  const hasUrlInput = Boolean(options.url);
@@ -3456,6 +3532,9 @@ async function attachRepliesToCommentItems(operation, items, pageData) {
3456
3532
  operation.arguments,
3457
3533
  pageData
3458
3534
  );
3535
+ repliesOperation.sourceAttribution = operation.sourceAttribution
3536
+ ? { ...operation.sourceAttribution }
3537
+ : undefined;
3459
3538
  const repliesData = await collectPaginatedDirectData(
3460
3539
  repliesOperation,
3461
3540
  { all: true, pages: undefined, maxItems: undefined },
@@ -3618,11 +3697,22 @@ async function callMcpBackend(operation) {
3618
3697
  { name: PACKAGE_NAME, version: PACKAGE_VERSION },
3619
3698
  { capabilities: {} }
3620
3699
  );
3700
+ const headers = {
3701
+ Authorization: `Bearer ${apiKey}`,
3702
+ };
3703
+ const sourceAttribution = operation.sourceAttribution || {};
3704
+ if (sourceAttribution.sourceClient) {
3705
+ headers[SOURCE_CLIENT_HEADER] = sourceAttribution.sourceClient;
3706
+ }
3707
+ if (sourceAttribution.sourcePlatform) {
3708
+ headers[SOURCE_PLATFORM_HEADER] = sourceAttribution.sourcePlatform;
3709
+ }
3710
+ if (sourceAttribution.sourceSkill) {
3711
+ headers[SOURCE_SKILL_HEADER] = sourceAttribution.sourceSkill;
3712
+ }
3621
3713
  const transport = new StreamableHTTPClientTransport(new URL(upstreamUrl), {
3622
3714
  requestInit: {
3623
- headers: {
3624
- Authorization: `Bearer ${apiKey}`,
3625
- },
3715
+ headers,
3626
3716
  },
3627
3717
  });
3628
3718
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socialdatax-skills",
3
- "version": "0.2.15",
3
+ "version": "0.2.17",
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",
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "media-comments"
3
3
  description: "Fetch and analyze XHS comments/replies, Douyin comments/replies, Kuaishou comments/replies, Weibo comments/replies, and WeChat Channels / 视频号 comments/replies. This version is backed by hosted platform MCP services and supports Xiaohongshu, 小红书, XHS, RedNote, Douyin / 抖音, Kuaishou / 快手 / Kwai, Weibo / 微博, and WeChat Channels / 视频号."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "media-comments"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -41,26 +44,26 @@ Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website fo
41
44
  Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
42
45
 
43
46
  ```bash
44
- npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --pretty
45
- npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --all --include-replies --pretty
46
- npx -y socialdatax-skills@latest xhs comments --url "<note_url_or_share_text>" --pretty
47
- npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --comment-id "<comment_id>" --pretty
48
- npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --pretty
49
- npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all --include-replies --pretty
50
- npx -y socialdatax-skills@latest douyin comments --url "<douyin_content_url_or_share_text>" --pretty
51
- npx -y socialdatax-skills@latest douyin replies --aweme-id "<aweme_id>" --comment-id "<comment_id>" --pretty
52
- npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty
53
- npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --all --include-replies --pretty
54
- npx -y socialdatax-skills@latest kuaishou comments --url "<kuaishou_content_url_or_share_text>" --pretty
55
- npx -y socialdatax-skills@latest kuaishou replies --photo-id "<photo_id>" --comment-id "<comment_id>" --pretty
56
- npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --pretty
57
- npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --all --include-replies --pretty
58
- npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty
59
- npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty
60
- npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --pretty
61
- npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --all --include-replies --pretty
62
- npx -y socialdatax-skills@latest wechat comments --url "<wechat_video_url_or_share_text>" --pretty
63
- npx -y socialdatax-skills@latest wechat replies --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --comment-id "<comment_id>" --pretty
47
+ npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
48
+ npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
49
+ npx -y socialdatax-skills@latest xhs comments --url "<note_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
50
+ npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
51
+ npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
52
+ npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
53
+ npx -y socialdatax-skills@latest douyin comments --url "<douyin_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
54
+ npx -y socialdatax-skills@latest douyin replies --aweme-id "<aweme_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
55
+ npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
56
+ npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
57
+ npx -y socialdatax-skills@latest kuaishou comments --url "<kuaishou_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
58
+ npx -y socialdatax-skills@latest kuaishou replies --photo-id "<photo_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
59
+ npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
60
+ npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
61
+ npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
62
+ npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
63
+ npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
64
+ npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
65
+ npx -y socialdatax-skills@latest wechat comments --url "<wechat_video_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
66
+ npx -y socialdatax-skills@latest wechat replies --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-comments
64
67
  ```
65
68
 
66
69
  Optional arguments:
@@ -81,6 +84,7 @@ Optional arguments:
81
84
  - Weibo `--post-url <weibo_post_url_or_share_text>`: use for a Weibo post URL, short link, or share text for first-level comments.
82
85
  - WeChat Channels / 视频号 `--object-id <object_id>` and `--object-nonce-id <object_nonce_id>`: use together when both values are already known and should anchor the comment thread.
83
86
  - WeChat Channels / 视频号 `--url <wechat_video_url_or_share_text>`: use for a WeChat Channels video link or share text for first-level comments.
87
+ - `--source-client socialdatax-skills --source-platform npm --source-skill media-comments`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
84
88
 
85
89
  Use either the content ID option or the URL option for first-level comments, not both. For reply commands, use the content ID together with `--comment-id`.
86
90
 
@@ -88,7 +92,7 @@ The command prints JSON with `platform`, `tool`, `arguments`, and `data`. Multi-
88
92
 
89
93
  ## Safety Boundary
90
94
 
91
- This skill is read-only. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
95
+ This skill is read-only. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
92
96
 
93
97
  ## MCP Tools
94
98
 
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "media-detail"
3
3
  description: "Read structured social media content details and metrics from content IDs, URLs, short links, or share text. This version is backed by hosted platform MCP services and supports Xiaohongshu, 小红书, XHS, RedNote, Douyin / 抖音, Kuaishou / 快手 / Kwai, Weibo / 微博, and WeChat Channels / 视频号."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "media-detail"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -41,16 +44,16 @@ Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website fo
41
44
  Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
42
45
 
43
46
  ```bash
44
- npx -y socialdatax-skills@latest xhs detail --note-id "<note_id>" --pretty
45
- npx -y socialdatax-skills@latest xhs detail --url "<note_url_or_share_text>" --pretty
46
- npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty
47
- npx -y socialdatax-skills@latest douyin detail --url "<douyin_content_url_or_share_text>" --pretty
48
- npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty
49
- npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty
50
- npx -y socialdatax-skills@latest weibo detail --post-id "<post_id>" --pretty
51
- npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty
52
- npx -y socialdatax-skills@latest wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty
53
- npx -y socialdatax-skills@latest wechat detail --url "<wechat_video_url_or_share_text>" --pretty
47
+ npx -y socialdatax-skills@latest xhs detail --note-id "<note_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
48
+ npx -y socialdatax-skills@latest xhs detail --url "<note_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
49
+ npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
50
+ npx -y socialdatax-skills@latest douyin detail --url "<douyin_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
51
+ npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
52
+ npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
53
+ npx -y socialdatax-skills@latest weibo detail --post-id "<post_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
54
+ npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
55
+ npx -y socialdatax-skills@latest wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
56
+ npx -y socialdatax-skills@latest wechat detail --url "<wechat_video_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-detail
54
57
  ```
55
58
 
56
59
  Optional arguments:
@@ -66,6 +69,7 @@ Optional arguments:
66
69
  - Weibo `--post-url <weibo_post_url_or_share_text>`: use for a Weibo post URL, short link, or share text.
67
70
  - WeChat Channels / 视频号 `--encrypted-object-id <encrypted_object_id>`: use when the encrypted_object_id from search is already known.
68
71
  - WeChat Channels / 视频号 `--url <wechat_video_url_or_share_text>`: use for a WeChat Channels video link or share text.
72
+ - `--source-client socialdatax-skills --source-platform npm --source-skill media-detail`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
69
73
 
70
74
  Use either the ID option or the URL option for detail commands, not both.
71
75
 
@@ -73,7 +77,7 @@ The command prints JSON with `platform`, `tool`, `arguments`, and `data`.
73
77
 
74
78
  ## Safety Boundary
75
79
 
76
- This skill is read-only. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
80
+ This skill is read-only. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
77
81
 
78
82
  ## MCP Tools
79
83
 
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "media-search"
3
3
  description: "Search social media content by keyword for social research, competitor research, topic discovery, content planning, market observation, and trend scanning. This version is backed by hosted platform MCP services and supports Xiaohongshu, 小红书, XHS, RedNote, Douyin / 抖音, Kuaishou / 快手 / Kwai, Weibo / 微博, and WeChat Channels / 视频号."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "media-search"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -41,16 +44,16 @@ Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website fo
41
44
  Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
42
45
 
43
46
  ```bash
44
- npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pretty
45
- npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pages 3 --pretty
46
- npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pretty
47
- npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pages 3 --pretty
48
- npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pretty
49
- npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pages 3 --pretty
50
- npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pretty
51
- npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pages 3 --pretty
52
- npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pretty
53
- npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pages 3 --pretty
47
+ npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
48
+ npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
49
+ npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
50
+ npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
51
+ npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
52
+ npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
53
+ npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
54
+ npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
55
+ npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
56
+ npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-search
54
57
  ```
55
58
 
56
59
  Required arguments:
@@ -85,6 +88,7 @@ Optional arguments:
85
88
  - 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
89
  - Weibo `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
87
90
  - WeChat Channels / 视频号 `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
91
+ - `--source-client socialdatax-skills --source-platform npm --source-skill media-search`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
88
92
 
89
93
  XHS sort values:
90
94
  - `general`: default sorting.
@@ -149,7 +153,7 @@ Weibo and WeChat Channels search pagination:
149
153
 
150
154
  ## Safety Boundary
151
155
 
152
- This skill is read-only. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
156
+ This skill is read-only. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
153
157
 
154
158
  ## MCP Tools
155
159
 
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "media-transcript"
3
3
  description: "Submit and check video speech-to-text transcript / 口播转文字 jobs for XHS, Douyin, Kuaishou, Weibo, and WeChat Channels through hosted platform MCP tools."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "media-transcript"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -47,7 +50,7 @@ Submit tools may wait briefly after creating the job. If the transcript is not r
47
50
 
48
51
  ## Safety Boundary
49
52
 
50
- This skill can submit bounded analysis jobs through hosted MCP tools. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Use hosted MCP tools only when the current agent already supports authenticated streamable HTTP MCP.
53
+ This skill can submit bounded analysis jobs through hosted MCP tools. It uses authenticated MCP access from the current agent at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Use hosted MCP tools only when the current agent already supports authenticated streamable HTTP MCP.
51
54
 
52
55
  ## MCP Tools
53
56
 
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "media-user-info"
3
3
  description: "Retrieve social media creator profile information from platform user IDs, profile URLs, short links, or share text. This version is backed by hosted platform MCP services and supports Xiaohongshu, 小红书, XHS, RedNote, Douyin / 抖音, Kuaishou / 快手, Weibo / 微博, and WeChat Channels / 视频号 creators."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "media-user-info"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -42,16 +45,16 @@ Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website fo
42
45
  Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
43
46
 
44
47
  ```bash
45
- npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty
46
- npx -y socialdatax-skills@latest xhs user-info --profile-url "<profile_url_or_share_text>" --pretty
47
- npx -y socialdatax-skills@latest douyin user-info --sec-user-id "<sec_user_id>" --pretty
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
50
- npx -y socialdatax-skills@latest kuaishou user-info --user-id "<user_id>" --pretty
51
- npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_or_share_text>" --pretty
52
- npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty
53
- npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
54
- npx -y socialdatax-skills@latest wechat user-info --user-id "<finder_user_id>" --pretty
48
+ npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
49
+ npx -y socialdatax-skills@latest xhs user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
50
+ npx -y socialdatax-skills@latest douyin user-info --sec-user-id "<sec_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
51
+ npx -y socialdatax-skills@latest douyin user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
52
+ npx -y socialdatax-skills@latest kuaishou user-search --keyword "<creator_keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
53
+ npx -y socialdatax-skills@latest kuaishou user-info --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
54
+ npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
55
+ npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
56
+ npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
57
+ npx -y socialdatax-skills@latest wechat user-info --user-id "<finder_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-info
55
58
  ```
56
59
 
57
60
  Optional arguments:
@@ -64,11 +67,12 @@ Optional arguments:
64
67
  - 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
68
  - 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
69
  - 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.
67
- - Kuaishou `--user-id <user_id>`: preferred when the creator user_id is already known.
68
- - Kuaishou `--profile-url <profile_url_or_share_text>`: use for a profile URL, short link, or profile share text.
70
+ - Kuaishou `--user-id <user_id>`: use only when a non-empty creator user_id is already known.
71
+ - Kuaishou `--profile-url <profile_url_or_share_text>`: use for a profile URL, short link, or profile share text. Live/fw-user profile shares are supported; successful profile results return a reusable non-empty user_id.
69
72
  - Weibo `--user-id <user_id>`: preferred when the creator user_id is already known.
70
73
  - Weibo `--profile-url <profile_url_or_share_text>`: use for a profile URL, short link, or profile share text.
71
74
  - WeChat Channels / 视频号 `--user-id <finder_user_id>`: use when the creator user_id ending with `@finder` is already known.
75
+ - `--source-client socialdatax-skills --source-platform npm --source-skill media-user-info`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
72
76
 
73
77
  Use either the ID option or the profile URL option for a single command, not both.
74
78
 
@@ -76,7 +80,7 @@ The command prints JSON with `platform`, `tool`, `arguments`, and `data`.
76
80
 
77
81
  ## Safety Boundary
78
82
 
79
- This skill is read-only. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
83
+ This skill is read-only. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
80
84
 
81
85
  ## MCP Tools
82
86
 
@@ -99,8 +103,8 @@ If MCP tools are already available in the current agent, use one of these tools:
99
103
  - `douyin_get_user_info_by_sec_user_id`: preferred when `sec_user_id` is already known from search, detail, comments, or creator work lists.
100
104
  - `douyin_get_user_info_by_profile_url`: use for profile URLs, short links, or profile share text.
101
105
  - `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`.
102
- - `kuaishou_get_user_info_by_user_id`: preferred when `user_id` is already known from search, detail, comments, or creator work lists.
103
- - `kuaishou_get_user_info_by_profile_url`: use for profile URLs, short links, or profile share text.
106
+ - `kuaishou_get_user_info_by_user_id`: preferred when a non-empty `user_id` is already known from search, detail, comments, or creator work lists.
107
+ - `kuaishou_get_user_info_by_profile_url`: use for profile URLs, short links, or profile share text, including live/fw-user profile shares; successful results return a reusable non-empty `user_id`.
104
108
  - `weibo_get_user_info_by_user_id`: preferred when `user_id` is already known.
105
109
  - `weibo_get_user_info_by_profile_url`: use for profile URLs, short links, or profile share text.
106
110
  - `wechat_get_user_info_by_user_id`: use when the WeChat Channels / 视频号 creator user_id ending with `@finder` is already known.
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "media-user-posts"
3
3
  description: "Retrieve social media creator content lists from platform user IDs, profile URLs, short links, or share text for account research and content style analysis. This version is backed by hosted platform MCP services and supports Xiaohongshu, 小红书, XHS, RedNote, Douyin / 抖音, Kuaishou / 快手, Weibo / 微博, and WeChat Channels / 视频号 creators."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "media-user-posts"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -42,24 +45,24 @@ Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website fo
42
45
  Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
43
46
 
44
47
  ```bash
45
- npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --pretty
46
- npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --all --pretty
47
- npx -y socialdatax-skills@latest xhs user-posts --profile-url "<profile_url_or_share_text>" --pretty
48
- npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --pretty
49
- npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --all --pretty
50
- npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_or_share_text>" --pretty
51
- npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
52
- npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --all --pretty
53
- npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty
54
- npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --pretty
55
- npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --all --pretty
56
- npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty
57
- npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty
58
- npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --all --pretty
59
- npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty
60
- npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --pretty
61
- npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --all --pretty
62
- npx -y socialdatax-skills@latest wechat user-posts --url "<wechat_video_url_or_share_text>" --pretty
48
+ npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
49
+ npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
50
+ npx -y socialdatax-skills@latest xhs user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
51
+ npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
52
+ npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
53
+ npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
54
+ npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
55
+ npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
56
+ npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
57
+ npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
58
+ npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
59
+ npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
60
+ npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
61
+ npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
62
+ npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
63
+ npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
64
+ npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
65
+ npx -y socialdatax-skills@latest wechat user-posts --url "<wechat_video_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-user-posts
63
66
  ```
64
67
 
65
68
  Optional arguments:
@@ -75,12 +78,13 @@ Optional arguments:
75
78
  - `--max-items <n>`: stop after collecting N creator content or series items.
76
79
  - `--since-days <1-365>`: keep only creator content whose public `publish_time` is within the last N days. When `--pages` is omitted, the CLI continues creator content lists until the publish-time boundary is reached.
77
80
  - `--pretty`: output formatting only.
78
- - Kuaishou `--user-id <user_id>`: preferred when the creator user_id is already known.
79
- - Kuaishou `--profile-url <profile_url_or_share_text>`: use for a profile URL, short link, or profile share text.
81
+ - Kuaishou `--user-id <user_id>`: use only when a non-empty creator user_id is already known.
82
+ - Kuaishou `--profile-url <profile_url_or_share_text>`: use only for a profile URL, short link, or profile share text that resolves directly to a non-empty user_id. For live/fw-user profile shares, call Kuaishou creator profile first and use the returned non-empty user_id.
80
83
  - Weibo `--user-id <user_id>`: preferred when the creator user_id is already known.
81
84
  - Weibo `--profile-url <profile_url_or_share_text>`: use for a profile URL, short link, or profile share text.
82
85
  - WeChat Channels / 视频号 `--user-id <finder_user_id>`: preferred when the creator user_id ending with `@finder` is already known.
83
86
  - WeChat Channels / 视频号 `--url <wechat_video_url_or_share_text>`: use a video link or share text to resolve the author and list that creator's videos.
87
+ - `--source-client socialdatax-skills --source-platform npm --source-skill media-user-posts`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
84
88
 
85
89
  Use either the ID option or the profile URL option for a single command, not both.
86
90
 
@@ -89,7 +93,7 @@ For recent creator research, prefer CLI `--since-days 30` or another user-specif
89
93
 
90
94
  ## Safety Boundary
91
95
 
92
- This skill is read-only. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
96
+ This skill is read-only. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
93
97
 
94
98
  ## MCP Tools
95
99
 
@@ -117,8 +121,8 @@ If MCP tools are already available in the current agent, use one of these tools:
117
121
  - `douyin_get_user_series_by_profile_url`: use for creator short-drama series from profile URLs, short links, or profile share text.
118
122
 
119
123
  Creator content-list and series pagination use opaque `page_token` values. Pass the complete returned `next_page_token` back unchanged for the same user and command family. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses. Prefer CLI `--pages`, `--all`, and `--max-items` when the user asks for multiple pages or all available creator content.
120
- - `kuaishou_get_user_posted_videos_by_user_id`: preferred when `user_id` is already known.
121
- - `kuaishou_get_user_posted_videos_by_profile_url`: use for profile URLs, short links, or profile share text.
124
+ - `kuaishou_get_user_posted_videos_by_user_id`: preferred when a non-empty `user_id` is already known.
125
+ - `kuaishou_get_user_posted_videos_by_profile_url`: use only for profile URLs, short links, or profile share text that resolves directly to a non-empty `user_id`; for live/fw-user profile shares, call Kuaishou creator profile first and use the returned non-empty `user_id`.
122
126
  Kuaishou creator work pagination uses opaque `page_token` values; pass the complete returned `next_page_token` back unchanged for the same user. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
123
127
  - `weibo_get_user_posts_by_user_id`: preferred when `user_id` is already known.
124
128
  - `weibo_get_user_posts_by_profile_url`: use for profile URLs, short links, or profile share text.
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "sensitive-check"
3
3
  description: "Check draft text for sensitive-content risks before publishing. Supports generic, xhs, douyin, and kuaishou contexts through SocialDataX."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "sensitive-check"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -37,7 +40,7 @@ Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website fo
37
40
  Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
38
41
 
39
42
  ```bash
40
- npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty
43
+ npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty --source-client socialdatax-skills --source-platform npm --source-skill sensitive-check
41
44
  ```
42
45
 
43
46
  Required arguments:
@@ -48,14 +51,15 @@ Optional arguments:
48
51
 
49
52
  - `--platform <generic|xhs|douyin|kuaishou>`: platform context; default is `generic`.
50
53
  - `--pretty`: output formatting only.
54
+ - `--source-client socialdatax-skills --source-platform npm --source-skill sensitive-check`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
51
55
 
52
- Use this skill when the user wants 敏感检测, sensitive check, content safety review, or platform-aware preflight review for draft text.
56
+ 适用于文本敏感检测、content safety review、发布前风险检查和 safer rewrite suggestions for draft text.
53
57
  The command prints JSON with `platform`, `tool`, and `data`; it does not echo the original text back in CLI arguments. The service returns `violation`, `risk_level`, `types`, `highlights`, `summary`, `platform`, and `suggestions` when available.
54
58
  This v1 skill checks text only. Image sensitive detection is intentionally out of scope until a separate image tool is published.
55
59
 
56
60
  ## Safety Boundary
57
61
 
58
- This skill is read-only. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
62
+ This skill is read-only. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
59
63
 
60
64
  ## MCP Tools
61
65
 
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: "socialdatax-content-research-assistant"
3
3
  description: "Use when doing cross-platform content research, topic planning, competitor research, trend insight, comment insight, or creator research across 小红书 / Xiaohongshu / XHS / RedNote, 抖音 / Douyin, 快手 / Kuaishou / Kwai, 微博 / Weibo, and 视频号 / WeChat Channels."
4
+ source_client: "socialdatax-skills"
5
+ source_platform: "npm"
6
+ source_skill: "socialdatax-content-research-assistant"
4
7
  metadata:
5
8
  openclaw:
6
9
  requires:
@@ -67,87 +70,86 @@ Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website fo
67
70
  Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
68
71
 
69
72
  ```bash
70
- npx -y socialdatax-skills@latest xhs hot-search --pretty
71
- npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pretty
72
- npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pages 3 --pretty
73
- npx -y socialdatax-skills@latest xhs detail --note-id "<note_id>" --pretty
74
- npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --pretty
75
- npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --all --include-replies --pretty
76
- npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty
77
- npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --pretty
78
- npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --all --pretty
79
- npx -y socialdatax-skills@latest douyin hot-search --pretty
80
- npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pretty
81
- npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pages 3 --pretty
82
- npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty
83
- npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --pretty
84
- npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all --include-replies --pretty
85
- npx -y socialdatax-skills@latest douyin user-info --sec-user-id "<sec_user_id>" --pretty
86
- npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --pretty
87
- npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --all --pretty
88
- npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pretty
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
- npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty
92
- npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty
93
- npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --all --include-replies --pretty
94
- npx -y socialdatax-skills@latest kuaishou user-info --user-id "<user_id>" --pretty
95
- npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --pretty
96
- npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --all --pretty
97
- npx -y socialdatax-skills@latest weibo hot-search --pretty
98
- npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pretty
99
- npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pages 3 --pretty
100
- npx -y socialdatax-skills@latest weibo detail --post-id "<post_id>" --pretty
101
- npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --pretty
102
- npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --all --include-replies --pretty
103
- npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty
104
- npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty
105
- npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --all --pretty
106
- npx -y socialdatax-skills@latest wechat hot-search --pretty
107
- npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pretty
108
- npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pages 3 --pretty
109
- npx -y socialdatax-skills@latest wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty
110
- npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --pretty
111
- npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --all --include-replies --pretty
112
- npx -y socialdatax-skills@latest wechat user-info --user-id "<finder_user_id>" --pretty
113
- npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --pretty
114
- npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --all --pretty
73
+ npx -y socialdatax-skills@latest xhs hot-search --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
74
+ npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
75
+ npx -y socialdatax-skills@latest xhs search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
76
+ npx -y socialdatax-skills@latest xhs detail --note-id "<note_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
77
+ npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
78
+ npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
79
+ npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
80
+ npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
81
+ npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
82
+ npx -y socialdatax-skills@latest douyin hot-search --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
83
+ npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
84
+ npx -y socialdatax-skills@latest douyin search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
85
+ npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
86
+ npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
87
+ npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
88
+ npx -y socialdatax-skills@latest douyin user-info --sec-user-id "<sec_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
89
+ npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
90
+ npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
91
+ npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
92
+ npx -y socialdatax-skills@latest kuaishou search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
93
+ npx -y socialdatax-skills@latest kuaishou user-search --keyword "<creator_keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
94
+ npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
95
+ npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
96
+ npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
97
+ npx -y socialdatax-skills@latest kuaishou user-info --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
98
+ npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
99
+ npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
100
+ npx -y socialdatax-skills@latest weibo hot-search --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
101
+ npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
102
+ npx -y socialdatax-skills@latest weibo search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
103
+ npx -y socialdatax-skills@latest weibo detail --post-id "<post_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
104
+ npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
105
+ npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
106
+ npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
107
+ npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
108
+ npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
109
+ npx -y socialdatax-skills@latest wechat hot-search --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
110
+ npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
111
+ npx -y socialdatax-skills@latest wechat search --keyword "<keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
112
+ npx -y socialdatax-skills@latest wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
113
+ npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
114
+ npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --all --include-replies --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
115
+ npx -y socialdatax-skills@latest wechat user-info --user-id "<finder_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
116
+ npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
117
+ npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
115
118
  ```
116
119
 
117
120
  Additional direct CLI entrypoints:
121
+
118
122
  ```bash
119
- npx -y socialdatax-skills@latest xhs detail --url "<note_url_or_share_text>" --pretty
120
- npx -y socialdatax-skills@latest xhs comments --url "<note_url_or_share_text>" --pretty
121
- npx -y socialdatax-skills@latest xhs user-info --profile-url "<profile_url_or_share_text>" --pretty
122
- npx -y socialdatax-skills@latest xhs user-posts --profile-url "<profile_url_or_share_text>" --pretty
123
- npx -y socialdatax-skills@latest douyin detail --url "<douyin_content_url_or_share_text>" --pretty
124
- npx -y socialdatax-skills@latest douyin comments --url "<douyin_content_url_or_share_text>" --pretty
125
- npx -y socialdatax-skills@latest douyin user-info --profile-url "<profile_url_or_share_text>" --pretty
126
- npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_or_share_text>" --pretty
127
- npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
128
- npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --all --pretty
129
- npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty
130
- npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --comment-id "<comment_id>" --pretty
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
- npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty
134
- npx -y socialdatax-skills@latest kuaishou comments --url "<kuaishou_content_url_or_share_text>" --pretty
135
- npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_or_share_text>" --pretty
136
- npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty
137
- npx -y socialdatax-skills@latest kuaishou replies --photo-id "<photo_id>" --comment-id "<comment_id>" --pretty
138
- npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty
139
- npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty
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
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
144
- npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
145
- npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty
146
- npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty
147
- npx -y socialdatax-skills@latest wechat detail --url "<wechat_video_url_or_share_text>" --pretty
148
- npx -y socialdatax-skills@latest wechat comments --url "<wechat_video_url_or_share_text>" --pretty
149
- npx -y socialdatax-skills@latest wechat user-posts --url "<wechat_video_url_or_share_text>" --pretty
150
- npx -y socialdatax-skills@latest wechat replies --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --comment-id "<comment_id>" --pretty
123
+ npx -y socialdatax-skills@latest xhs detail --url "<note_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
124
+ npx -y socialdatax-skills@latest xhs comments --url "<note_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
125
+ npx -y socialdatax-skills@latest xhs user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
126
+ npx -y socialdatax-skills@latest xhs user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
127
+ npx -y socialdatax-skills@latest douyin detail --url "<douyin_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
128
+ npx -y socialdatax-skills@latest douyin comments --url "<douyin_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
129
+ npx -y socialdatax-skills@latest douyin user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
130
+ npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
131
+ npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
132
+ npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --all --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
133
+ npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
134
+ npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
135
+ npx -y socialdatax-skills@latest douyin replies --aweme-id "<aweme_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
136
+ npx -y socialdatax-skills@latest kuaishou user-search --keyword "<creator_keyword>" --pages 3 --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
137
+ npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
138
+ npx -y socialdatax-skills@latest kuaishou comments --url "<kuaishou_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
139
+ npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
140
+ npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
141
+ npx -y socialdatax-skills@latest kuaishou replies --photo-id "<photo_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
142
+ npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
143
+ npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
144
+ npx -y socialdatax-skills@latest weibo likers --post-id "<post_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
145
+ npx -y socialdatax-skills@latest weibo reposts --post-id "<post_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
146
+ npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
147
+ npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
148
+ npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
149
+ npx -y socialdatax-skills@latest wechat detail --url "<wechat_video_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
150
+ npx -y socialdatax-skills@latest wechat comments --url "<wechat_video_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
151
+ npx -y socialdatax-skills@latest wechat user-posts --url "<wechat_video_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
152
+ npx -y socialdatax-skills@latest wechat replies --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --comment-id "<comment_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant
151
153
  ```
152
154
 
153
155
  For hot topics, content URLs, profile URLs, comment review, Weibo liker/repost review, creator facts, creator content lists, or short-drama series, call the matching `socialdatax-skills` platform subcommand instead of forcing every request through keyword research.
@@ -159,6 +161,8 @@ Required arguments:
159
161
  - 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
162
  - 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.
161
163
  - 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.
164
+ - Use `kuaishou search --keyword <text>` for Kuaishou keyword research.
165
+ - Use `weibo hot-search` without keyword when the user asks for current Weibo / 微博 hot topics.
162
166
  - Use `wechat hot-search` without keyword when the user asks for current WeChat Channels / 视频号 hot topics.
163
167
 
164
168
  Optional arguments:
@@ -174,6 +178,7 @@ Optional arguments:
174
178
  - `--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`.
175
179
  - `--comment-id`: required for reply/sub-comment commands together with the content ID.
176
180
  - `--pretty`: output formatting only.
181
+ - `--source-client socialdatax-skills --source-platform npm --source-skill socialdatax-content-research-assistant`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
177
182
 
178
183
  ## Choose The Platform
179
184
 
@@ -191,7 +196,7 @@ When the user asks for recent content, pass CLI `--since-days <n>` with bounded
191
196
 
192
197
  ## Safety Boundary
193
198
 
194
- This skill is read-only. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
199
+ This skill is read-only. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
195
200
 
196
201
  ## MCP Tools
197
202
 
@@ -200,7 +205,7 @@ MCP tools matching the direct CLI commands above:
200
205
  - 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`
201
206
  - 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`
202
207
  - 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`
208
+ - 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`
204
209
  - 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`
205
210
 
206
211
  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.