socialdatax-skills 0.2.45 → 0.2.47
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 +6 -2
- package/cli.mjs +99 -7
- package/package.json +1 -1
- package/skills/media-comments/SKILL.md +14 -0
- package/skills/media-detail/SKILL.md +14 -0
- package/skills/media-search/SKILL.md +14 -0
- package/skills/media-transcript/SKILL.md +14 -0
- package/skills/media-user-info/SKILL.md +14 -0
- package/skills/media-user-posts/SKILL.md +14 -0
- package/skills/sensitive-check/SKILL.md +14 -0
- package/skills/socialdatax-content-research-assistant/SKILL.md +14 -0
package/README.md
CHANGED
|
@@ -89,11 +89,11 @@ Common search phrases for this skill package:
|
|
|
89
89
|
- Reserved future SocialDataX namespace names for existing platform listings without draft files yet: `com.socialdatax/kuaishou-insights`, `com.socialdatax/bilibili-insights`, `com.socialdatax/weibo-insights`, `com.socialdatax/wechat-channels-insights`, `com.socialdatax/zhihu-insights`, `com.socialdatax/instagram-insights`, `com.socialdatax/x-insights`, `com.socialdatax/youtube-insights`, and `com.socialdatax/tiktok-insights`.
|
|
90
90
|
- Hosted endpoint without a repo-tracked standalone listing: Sensitive Words Check.
|
|
91
91
|
- Unified MCP registry name: none; this package installs skills and calls explicit hosted MCP entries.
|
|
92
|
-
- Current public capability version: `0.2.
|
|
92
|
+
- Current public capability version: `0.2.47`
|
|
93
93
|
|
|
94
94
|
## XHS 蒲公英 / Pugongying commercial note details
|
|
95
95
|
|
|
96
|
-
Version `0.2.
|
|
96
|
+
Version `0.2.47` adds npm metadata-based Skill update checks. Version `0.2.45` added `xhs pgy-detail` and the matching `media-detail` Skill routing:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
99
|
npx -y socialdatax-skills@latest xhs pgy-detail --note-id "<note_id>" --pretty
|
|
@@ -127,6 +127,8 @@ npx -y socialdatax-skills@latest xhs download-media --url "<xhs_media_url>" --ou
|
|
|
127
127
|
npx -y socialdatax-skills@latest douyin hot-search --pretty
|
|
128
128
|
npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
|
|
129
129
|
npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty
|
|
130
|
+
npx -y socialdatax-skills@latest douyin share-link --aweme-id "<aweme_id>" --pretty
|
|
131
|
+
npx -y socialdatax-skills@latest douyin share-link --url "<work_url_or_share_text>" --pretty
|
|
130
132
|
npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --pretty
|
|
131
133
|
npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all --include-replies --pretty
|
|
132
134
|
npx -y socialdatax-skills@latest douyin replies --aweme-id "<aweme_id>" --comment-id "<comment_id>" --pretty
|
|
@@ -652,6 +654,8 @@ Current Sensitive Words Check workflows include:
|
|
|
652
654
|
| `douyin_search_users` | Search Douyin creators/accounts by keyword with optional `page_token` continuation and filters; do not pass `page`. |
|
|
653
655
|
| `douyin_get_video_detail_by_aweme_id` | Fetch structured Douyin work details when the caller already has an aweme_id. |
|
|
654
656
|
| `douyin_get_video_detail_by_url` | Resolve a Douyin content page link, short link, or share text into structured Douyin work details. |
|
|
657
|
+
| `douyin_get_video_share_link_by_aweme_id` | Generate a work share short link and copyable share text by aweme_id. |
|
|
658
|
+
| `douyin_get_video_share_link_by_url` | Generate a share short link and copyable share text from a work page link, short link, or share text. |
|
|
655
659
|
| `douyin_get_video_comments_by_aweme_id` | Fetch paginated first-level comments when the caller already has an aweme_id. |
|
|
656
660
|
| `douyin_get_video_comments_by_url` | Fetch paginated first-level comments directly from a Douyin content page URL, short link, or share text. |
|
|
657
661
|
| `douyin_get_video_comment_replies_by_comment_id` | Fetch paginated replies under a first-level Douyin comment; pass both aweme_id and comment_id, and use page_token to continue pagination. |
|
package/cli.mjs
CHANGED
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
import { existsSync, realpathSync } from "node:fs";
|
|
4
4
|
import {
|
|
5
5
|
cp,
|
|
6
|
+
lstat,
|
|
6
7
|
mkdir,
|
|
8
|
+
mkdtemp,
|
|
7
9
|
readFile,
|
|
10
|
+
rename,
|
|
8
11
|
rm,
|
|
9
12
|
stat,
|
|
10
13
|
} from "node:fs/promises";
|
|
@@ -22,7 +25,7 @@ import { decryptWechatMediaCommand } from "./lib/media/wechat-decrypt.mjs";
|
|
|
22
25
|
export { decryptWechatMediaCommand };
|
|
23
26
|
|
|
24
27
|
const PACKAGE_NAME = "socialdatax-skills";
|
|
25
|
-
const PACKAGE_VERSION = "0.2.
|
|
28
|
+
const PACKAGE_VERSION = "0.2.47";
|
|
26
29
|
const PACKAGE_SPEC = `${PACKAGE_NAME}@latest`;
|
|
27
30
|
const LOG_PREFIX = `[${PACKAGE_NAME}]`;
|
|
28
31
|
const MIN_NODE_VERSION = "20.18.1";
|
|
@@ -231,6 +234,7 @@ const DOUYIN_DIRECT_ACTION_OPTIONS = {
|
|
|
231
234
|
"pretty",
|
|
232
235
|
],
|
|
233
236
|
detail: ["awemeId", "url", "pretty"],
|
|
237
|
+
"share-link": ["awemeId", "url", "pretty"],
|
|
234
238
|
comments: [
|
|
235
239
|
"awemeId",
|
|
236
240
|
"url",
|
|
@@ -985,6 +989,14 @@ const PLATFORMS = {
|
|
|
985
989
|
name: "douyin_get_video_detail_by_url",
|
|
986
990
|
description: "Resolve a Douyin content page link, short link, or share text into structured details.",
|
|
987
991
|
},
|
|
992
|
+
{
|
|
993
|
+
name: "douyin_get_video_share_link_by_url",
|
|
994
|
+
description: "Generate a Douyin work share short link and copyable share text from a work page link, short link, or share text. Use the ID tool when aweme_id is known. To read work content, use a detail tool.",
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
name: "douyin_get_video_share_link_by_aweme_id",
|
|
998
|
+
description: "Generate a Douyin work share short link and copyable share text by aweme_id. Use a user-provided ID directly; no prior search or detail request is needed. To read work content, use a detail tool.",
|
|
999
|
+
},
|
|
988
1000
|
{
|
|
989
1001
|
name: "douyin_get_video_comments_by_aweme_id",
|
|
990
1002
|
description: "Fetch paginated first-level comments by aweme_id.",
|
|
@@ -2658,13 +2670,14 @@ async function validateInstallPlan({ skillName, destination, force }) {
|
|
|
2658
2670
|
);
|
|
2659
2671
|
}
|
|
2660
2672
|
|
|
2661
|
-
|
|
2673
|
+
const destinationExists = await pathExists(destination);
|
|
2674
|
+
if (destinationExists && !force) {
|
|
2662
2675
|
throw new Error(
|
|
2663
2676
|
`Skill already exists at ${destination}. Re-run with --force to replace it.`
|
|
2664
2677
|
);
|
|
2665
2678
|
}
|
|
2666
2679
|
|
|
2667
|
-
if (
|
|
2680
|
+
if (destinationExists && force) {
|
|
2668
2681
|
await ensureSafeToReplaceSkill(destination, skillName);
|
|
2669
2682
|
}
|
|
2670
2683
|
}
|
|
@@ -2682,22 +2695,82 @@ async function installOneSkill({
|
|
|
2682
2695
|
);
|
|
2683
2696
|
}
|
|
2684
2697
|
|
|
2685
|
-
|
|
2698
|
+
const destinationExists = await pathExists(destination);
|
|
2699
|
+
if (destinationExists && !force) {
|
|
2686
2700
|
throw new Error(
|
|
2687
2701
|
`Skill already exists at ${destination}. Re-run with --force to replace it.`
|
|
2688
2702
|
);
|
|
2689
2703
|
}
|
|
2690
2704
|
|
|
2691
|
-
if (
|
|
2705
|
+
if (destinationExists && force) {
|
|
2692
2706
|
await ensureSafeToReplaceSkill(destination, skillName);
|
|
2693
|
-
await rm(destination, { recursive: true, force: true });
|
|
2694
2707
|
}
|
|
2695
2708
|
|
|
2696
2709
|
await mkdir(dirname(destination), { recursive: true });
|
|
2697
|
-
|
|
2710
|
+
const stagingRoot = await mkdtemp(
|
|
2711
|
+
join(dirname(destination), `.${skillName}-install-`)
|
|
2712
|
+
);
|
|
2713
|
+
const stagedDestination = join(stagingRoot, "next");
|
|
2714
|
+
let preserveStagingRoot = false;
|
|
2715
|
+
|
|
2716
|
+
try {
|
|
2717
|
+
await cp(sourceDir, stagedDestination, { recursive: true });
|
|
2718
|
+
|
|
2719
|
+
if (!(await pathExists(destination))) {
|
|
2720
|
+
await rename(stagedDestination, destination);
|
|
2721
|
+
return;
|
|
2722
|
+
}
|
|
2723
|
+
|
|
2724
|
+
if (!force) {
|
|
2725
|
+
throw new Error(
|
|
2726
|
+
`Skill already exists at ${destination}. Re-run with --force to replace it.`
|
|
2727
|
+
);
|
|
2728
|
+
}
|
|
2729
|
+
|
|
2730
|
+
await ensureSafeToReplaceSkill(destination, skillName);
|
|
2731
|
+
const backupDestination = join(stagingRoot, "previous");
|
|
2732
|
+
await rename(destination, backupDestination);
|
|
2733
|
+
|
|
2734
|
+
try {
|
|
2735
|
+
await rename(stagedDestination, destination);
|
|
2736
|
+
} catch (installError) {
|
|
2737
|
+
try {
|
|
2738
|
+
await rename(backupDestination, destination);
|
|
2739
|
+
} catch (restoreError) {
|
|
2740
|
+
preserveStagingRoot = true;
|
|
2741
|
+
throw new Error(
|
|
2742
|
+
`Skill replacement failed: ${installError.message}. The previous Skill remains at ${backupDestination} because restore failed: ${restoreError.message}`
|
|
2743
|
+
);
|
|
2744
|
+
}
|
|
2745
|
+
throw installError;
|
|
2746
|
+
}
|
|
2747
|
+
} finally {
|
|
2748
|
+
if (!preserveStagingRoot) {
|
|
2749
|
+
await rm(stagingRoot, { recursive: true, force: true }).catch(() => {});
|
|
2750
|
+
}
|
|
2751
|
+
}
|
|
2752
|
+
}
|
|
2753
|
+
|
|
2754
|
+
async function pathExists(path) {
|
|
2755
|
+
try {
|
|
2756
|
+
await lstat(path);
|
|
2757
|
+
return true;
|
|
2758
|
+
} catch (error) {
|
|
2759
|
+
if (error?.code === "ENOENT") {
|
|
2760
|
+
return false;
|
|
2761
|
+
}
|
|
2762
|
+
throw error;
|
|
2763
|
+
}
|
|
2698
2764
|
}
|
|
2699
2765
|
|
|
2700
2766
|
async function ensureSafeToReplaceSkill(destination, skillName) {
|
|
2767
|
+
const destinationLinkStats = await lstat(destination);
|
|
2768
|
+
if (destinationLinkStats.isSymbolicLink()) {
|
|
2769
|
+
throw new Error(
|
|
2770
|
+
`Refusing to replace ${destination}: existing path is a symbolic link. Choose the actual Skill directory instead.`
|
|
2771
|
+
);
|
|
2772
|
+
}
|
|
2773
|
+
|
|
2701
2774
|
const destinationStats = await stat(destination);
|
|
2702
2775
|
if (!destinationStats.isDirectory()) {
|
|
2703
2776
|
throw new Error(
|
|
@@ -2907,6 +2980,10 @@ function printHelp() {
|
|
|
2907
2980
|
console.log(` npx -y ${PACKAGE_SPEC} douyin search --keyword "露营" --pretty`);
|
|
2908
2981
|
console.log(" Call the Douyin work search tool directly and print JSON.");
|
|
2909
2982
|
console.log("");
|
|
2983
|
+
console.log(` npx -y ${PACKAGE_SPEC} douyin share-link --aweme-id "<aweme_id>" --pretty`);
|
|
2984
|
+
console.log(` npx -y ${PACKAGE_SPEC} douyin share-link --url "<work_url_or_share_text>" --pretty`);
|
|
2985
|
+
console.log(" Generate a share short link and copyable share text for a Douyin work.");
|
|
2986
|
+
console.log("");
|
|
2910
2987
|
console.log(` npx -y ${PACKAGE_SPEC} douyin detail --aweme-id "<aweme_id>" --pretty`);
|
|
2911
2988
|
console.log(" Call the Douyin work detail tool directly and print JSON.");
|
|
2912
2989
|
console.log("");
|
|
@@ -4055,6 +4132,21 @@ function buildDouyinOperation(action, options) {
|
|
|
4055
4132
|
}),
|
|
4056
4133
|
PLATFORMS.douyin
|
|
4057
4134
|
);
|
|
4135
|
+
case "share-link":
|
|
4136
|
+
return buildDirectOperation(
|
|
4137
|
+
"share-link",
|
|
4138
|
+
buildOneOfCall(options, {
|
|
4139
|
+
idOption: "awemeId",
|
|
4140
|
+
urlOption: "url",
|
|
4141
|
+
idTool: "douyin_get_video_share_link_by_aweme_id",
|
|
4142
|
+
urlTool: "douyin_get_video_share_link_by_url",
|
|
4143
|
+
idArgument: "aweme_id",
|
|
4144
|
+
urlArgument: "url",
|
|
4145
|
+
idDisplay: "--aweme-id",
|
|
4146
|
+
urlDisplay: "--url",
|
|
4147
|
+
}),
|
|
4148
|
+
PLATFORMS.douyin
|
|
4149
|
+
);
|
|
4058
4150
|
case "comments":
|
|
4059
4151
|
return buildDirectOperation(
|
|
4060
4152
|
"comments",
|
package/package.json
CHANGED
|
@@ -45,6 +45,20 @@ Current platform support:
|
|
|
45
45
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
46
46
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
47
47
|
|
|
48
|
+
## Skill Updates
|
|
49
|
+
|
|
50
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm view socialdatax-skills@latest version --json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
57
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
58
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
59
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
60
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
61
|
+
|
|
48
62
|
## Preferred Direct CLI
|
|
49
63
|
|
|
50
64
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|
|
@@ -47,6 +47,20 @@ Current platform support:
|
|
|
47
47
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
48
48
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
49
49
|
|
|
50
|
+
## Skill Updates
|
|
51
|
+
|
|
52
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm view socialdatax-skills@latest version --json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
59
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
60
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
61
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
62
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
63
|
+
|
|
50
64
|
## Preferred Direct CLI
|
|
51
65
|
|
|
52
66
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|
|
@@ -45,6 +45,20 @@ Current platform support:
|
|
|
45
45
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
46
46
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
47
47
|
|
|
48
|
+
## Skill Updates
|
|
49
|
+
|
|
50
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm view socialdatax-skills@latest version --json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
57
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
58
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
59
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
60
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
61
|
+
|
|
48
62
|
## Preferred Direct CLI
|
|
49
63
|
|
|
50
64
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|
|
@@ -45,6 +45,20 @@ Current platform support:
|
|
|
45
45
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
46
46
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
47
47
|
|
|
48
|
+
## Skill Updates
|
|
49
|
+
|
|
50
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm view socialdatax-skills@latest version --json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
57
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
58
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
59
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
60
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
61
|
+
|
|
48
62
|
## Preferred Direct CLI
|
|
49
63
|
|
|
50
64
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|
|
@@ -46,6 +46,20 @@ Current platform support:
|
|
|
46
46
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
47
47
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
48
48
|
|
|
49
|
+
## Skill Updates
|
|
50
|
+
|
|
51
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npm view socialdatax-skills@latest version --json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
58
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
59
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
60
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
61
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
62
|
+
|
|
49
63
|
## Preferred Direct CLI
|
|
50
64
|
|
|
51
65
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|
|
@@ -46,6 +46,20 @@ Current platform support:
|
|
|
46
46
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
47
47
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
48
48
|
|
|
49
|
+
## Skill Updates
|
|
50
|
+
|
|
51
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npm view socialdatax-skills@latest version --json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
58
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
59
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
60
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
61
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
62
|
+
|
|
49
63
|
## Preferred Direct CLI
|
|
50
64
|
|
|
51
65
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|
|
@@ -35,6 +35,20 @@ Current context support:
|
|
|
35
35
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
36
36
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
37
37
|
|
|
38
|
+
## Skill Updates
|
|
39
|
+
|
|
40
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm view socialdatax-skills@latest version --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
47
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
48
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
49
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
50
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
51
|
+
|
|
38
52
|
## Preferred Direct CLI
|
|
39
53
|
|
|
40
54
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|
|
@@ -98,6 +98,20 @@ Current platform support:
|
|
|
98
98
|
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/ai?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
99
99
|
获取或管理 API Key:访问 <https://socialdatax.com/ai?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
100
100
|
|
|
101
|
+
## Skill Updates
|
|
102
|
+
|
|
103
|
+
Before each SocialDataX data operation, check the published npm version metadata:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npm view socialdatax-skills@latest version --json
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
- Compare the JSON version with this installed Skill version: `0.2.47`. Compare `MAJOR.MINOR.PATCH` fields as integers from left to right, not as strings. Treat other published values as invalid.
|
|
110
|
+
- If the published semantic version is higher, ask the user: `检测到 SocialDataX Skill 新版本,是否现在升级?` Do not expose targets, local paths, or shell commands unless the user asks for technical details.
|
|
111
|
+
- Only after the user confirms, use the current AI client's Skill installation flow with overwrite enabled to replace this exact Skill from `socialdatax-skills@latest`; for the direct CLI, pass this Skill's slug, add `--force`, and keep the current client's target and `--scope`. If it was installed with `--path`, reuse this Skill's own directory, not the parent directory, so other Skills are not installed. Then report the result. Never update automatically without confirmation.
|
|
112
|
+
- If the version is unchanged, invalid, or unavailable, do not mention updates and continue the current request.
|
|
113
|
+
- Do not ask the user to identify a target, local path, or installation command. Do not guess one. If the current AI client cannot safely complete the replacement, report that result.
|
|
114
|
+
|
|
101
115
|
## Preferred Direct CLI
|
|
102
116
|
|
|
103
117
|
Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
|