socialdatax-skills 0.2.10 → 0.2.11
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 +32 -30
- package/cli.mjs +20 -40
- package/package.json +3 -3
- package/skills/media-comments/SKILL.md +3 -3
- package/skills/media-detail/SKILL.md +3 -3
- package/skills/media-search/SKILL.md +9 -8
- package/skills/media-transcript/SKILL.md +3 -3
- package/skills/media-user-info/SKILL.md +3 -3
- package/skills/media-user-posts/SKILL.md +3 -3
- package/skills/socialdatax-content-research-assistant/SKILL.md +6 -6
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ Common search phrases for this skill package:
|
|
|
49
49
|
- WeChat Channels hosted MCP endpoint: `https://mcp.52choujiang.com/wechat/mcp`
|
|
50
50
|
- Hosted transport: `streamable-http`
|
|
51
51
|
- Authentication: `Authorization: Bearer <SOCIALDATAX_API_KEY>`
|
|
52
|
-
- Website: <https://socialdatax.
|
|
52
|
+
- Website: <https://socialdatax.com>
|
|
53
53
|
- XHS current platform MCP registry name: `com.52choujiang/xhs-insights`
|
|
54
54
|
- XHS future platform MCP registry name: `com.socialdatax/xhs-insights`
|
|
55
55
|
- Douyin current platform MCP registry name: `com.52choujiang/douyin-insights`
|
|
@@ -61,7 +61,7 @@ Common search phrases for this skill package:
|
|
|
61
61
|
- WeChat Channels current platform MCP registry name: `com.52choujiang/wechat-channels-insights`
|
|
62
62
|
- WeChat Channels future platform MCP registry name: `com.socialdatax/wechat-channels-insights`
|
|
63
63
|
- Unified MCP registry name: none; this package installs skills and calls explicit platform services.
|
|
64
|
-
- Current public capability version: `0.2.
|
|
64
|
+
- Current public capability version: `0.2.11`
|
|
65
65
|
|
|
66
66
|
## Direct CLI
|
|
67
67
|
|
|
@@ -70,7 +70,7 @@ For most skill users, no MCP client configuration is required. Install the skill
|
|
|
70
70
|
Examples:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
npx -y socialdatax-skills@latest xhs search --keyword "
|
|
73
|
+
npx -y socialdatax-skills@latest xhs search --keyword "露营" --pretty
|
|
74
74
|
npx -y socialdatax-skills@latest xhs hot-search --pretty
|
|
75
75
|
npx -y socialdatax-skills@latest xhs detail --note-id "<note_id>" --pretty
|
|
76
76
|
npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --pretty
|
|
@@ -79,7 +79,7 @@ npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --commen
|
|
|
79
79
|
npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty
|
|
80
80
|
npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --pretty
|
|
81
81
|
npx -y socialdatax-skills@latest douyin hot-search --pretty
|
|
82
|
-
npx -y socialdatax-skills@latest douyin search --keyword "
|
|
82
|
+
npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
|
|
83
83
|
npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty
|
|
84
84
|
npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --pretty
|
|
85
85
|
npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all --include-replies --pretty
|
|
@@ -91,7 +91,7 @@ npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_o
|
|
|
91
91
|
npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
|
|
92
92
|
npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty
|
|
93
93
|
npx -y socialdatax-skills@latest kuaishou hot-search --pretty
|
|
94
|
-
npx -y socialdatax-skills@latest kuaishou search --keyword "
|
|
94
|
+
npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
|
|
95
95
|
npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty
|
|
96
96
|
npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty
|
|
97
97
|
npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty
|
|
@@ -103,7 +103,7 @@ npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_
|
|
|
103
103
|
npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --pretty
|
|
104
104
|
npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty
|
|
105
105
|
npx -y socialdatax-skills@latest weibo hot-search --pretty
|
|
106
|
-
npx -y socialdatax-skills@latest weibo search --keyword "
|
|
106
|
+
npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
|
|
107
107
|
npx -y socialdatax-skills@latest weibo detail --post-id "<post_id>" --pretty
|
|
108
108
|
npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty
|
|
109
109
|
npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --pretty
|
|
@@ -117,7 +117,7 @@ npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_
|
|
|
117
117
|
npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty
|
|
118
118
|
npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty
|
|
119
119
|
npx -y socialdatax-skills@latest wechat hot-search --pretty
|
|
120
|
-
npx -y socialdatax-skills@latest wechat search --keyword "
|
|
120
|
+
npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
|
|
121
121
|
npx -y socialdatax-skills@latest wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty
|
|
122
122
|
npx -y socialdatax-skills@latest wechat detail --url "<wechat_video_url_or_share_text>" --pretty
|
|
123
123
|
npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --pretty
|
|
@@ -141,9 +141,11 @@ For first-level comments, add `--include-replies` to fetch the second-level repl
|
|
|
141
141
|
|
|
142
142
|
For commands that accept `--page-token`, continue only with the complete returned `next_page_token` from the same pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
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.
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
XHS, Douyin, Kuaishou, Weibo, and WeChat Channels search use `--keyword` and optional `--page-token`.
|
|
147
|
+
Kuaishou search uses `--keyword` and optional `--page-token`. Kuaishou search does not accept Douyin semantic filters.
|
|
148
|
+
Weibo and WeChat Channels search use `--keyword` and optional `--page-token`.
|
|
147
149
|
|
|
148
150
|
Douyin search filters use semantic values: `--sort-type` supports `general`,
|
|
149
151
|
`time_descending`, and `like_count_descending`; `--publish-time-range` supports
|
|
@@ -185,22 +187,22 @@ This project is not affiliated with, endorsed by, or sponsored by Xiaohongshu, R
|
|
|
185
187
|
|
|
186
188
|
```bash
|
|
187
189
|
npm install
|
|
188
|
-
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs xhs search --keyword "
|
|
189
|
-
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs douyin search --keyword "
|
|
190
|
-
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs kuaishou search --keyword "
|
|
191
|
-
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs weibo search --keyword "
|
|
192
|
-
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs wechat search --keyword "
|
|
190
|
+
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs xhs search --keyword "露营" --pretty
|
|
191
|
+
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs douyin search --keyword "露营" --pretty
|
|
192
|
+
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs kuaishou search --keyword "露营" --pretty
|
|
193
|
+
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs weibo search --keyword "露营" --pretty
|
|
194
|
+
SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs wechat search --keyword "露营" --pretty
|
|
193
195
|
```
|
|
194
196
|
|
|
195
197
|
### Docker Run
|
|
196
198
|
|
|
197
199
|
```bash
|
|
198
200
|
docker build -t socialdatax-skills .
|
|
199
|
-
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills xhs search --keyword "
|
|
200
|
-
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills douyin search --keyword "
|
|
201
|
-
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills kuaishou search --keyword "
|
|
202
|
-
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills weibo search --keyword "
|
|
203
|
-
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills wechat search --keyword "
|
|
201
|
+
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills xhs search --keyword "露营" --pretty
|
|
202
|
+
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills douyin search --keyword "露营" --pretty
|
|
203
|
+
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills kuaishou search --keyword "露营" --pretty
|
|
204
|
+
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills weibo search --keyword "露营" --pretty
|
|
205
|
+
docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills wechat search --keyword "露营" --pretty
|
|
204
206
|
```
|
|
205
207
|
|
|
206
208
|
If Docker Hub is slow from your network, keep the default image unchanged for normal use and override only during local builds:
|
|
@@ -232,17 +234,17 @@ npx -y socialdatax-skills@latest install media-search --target codex
|
|
|
232
234
|
npx -y socialdatax-skills@latest install media-search --target codex --scope workspace
|
|
233
235
|
npx -y socialdatax-skills@latest install media-search --target claude-code
|
|
234
236
|
npx -y socialdatax-skills@latest install media-search --target claude-code --scope workspace
|
|
235
|
-
npx -y socialdatax-skills@latest xhs search --keyword "
|
|
237
|
+
npx -y socialdatax-skills@latest xhs search --keyword "露营" --pretty
|
|
236
238
|
npx -y socialdatax-skills@latest xhs hot-search --pretty
|
|
237
239
|
npx -y socialdatax-skills@latest douyin hot-search --pretty
|
|
238
|
-
npx -y socialdatax-skills@latest douyin search --keyword "
|
|
240
|
+
npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
|
|
239
241
|
npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
|
|
240
242
|
npx -y socialdatax-skills@latest kuaishou hot-search --pretty
|
|
241
|
-
npx -y socialdatax-skills@latest kuaishou search --keyword "
|
|
243
|
+
npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
|
|
242
244
|
npx -y socialdatax-skills@latest weibo hot-search --pretty
|
|
243
|
-
npx -y socialdatax-skills@latest weibo search --keyword "
|
|
245
|
+
npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
|
|
244
246
|
npx -y socialdatax-skills@latest wechat hot-search --pretty
|
|
245
|
-
npx -y socialdatax-skills@latest wechat search --keyword "
|
|
247
|
+
npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
|
|
246
248
|
```
|
|
247
249
|
|
|
248
250
|
Available skills:
|
|
@@ -436,11 +438,11 @@ For agents that can execute shell commands, use the direct CLI. This is the reco
|
|
|
436
438
|
|
|
437
439
|
```bash
|
|
438
440
|
export SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>"
|
|
439
|
-
npx -y socialdatax-skills@latest xhs search --keyword "
|
|
440
|
-
npx -y socialdatax-skills@latest douyin search --keyword "
|
|
441
|
-
npx -y socialdatax-skills@latest kuaishou search --keyword "
|
|
442
|
-
npx -y socialdatax-skills@latest weibo search --keyword "
|
|
443
|
-
npx -y socialdatax-skills@latest wechat search --keyword "
|
|
441
|
+
npx -y socialdatax-skills@latest xhs search --keyword "露营" --pretty
|
|
442
|
+
npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
|
|
443
|
+
npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
|
|
444
|
+
npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
|
|
445
|
+
npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
|
|
444
446
|
```
|
|
445
447
|
|
|
446
448
|
MCP client configuration belongs to platform MCP listings. For XHS, use the `xhs-insights` docs; for Douyin, use the `douyin-insights` listing; for Kuaishou, use the `kuaishou-insights` listing; for Weibo, use the `weibo-insights` listing; for WeChat Channels / 视频号, use the `wechat-channels-insights` listing.
|
|
@@ -451,7 +453,7 @@ Aily is treated as an OpenClaw / AgentSkills ecosystem channel for this package.
|
|
|
451
453
|
|
|
452
454
|
Request or manage API access from the product website:
|
|
453
455
|
|
|
454
|
-
<https://socialdatax.
|
|
456
|
+
<https://socialdatax.com/?from=npm>
|
|
455
457
|
|
|
456
458
|
Use the key as a Bearer token in the `Authorization` request header. Do not commit real API keys to code, docs, issues, or screenshots.
|
|
457
459
|
|
package/cli.mjs
CHANGED
|
@@ -7,11 +7,11 @@ 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.
|
|
10
|
+
const PACKAGE_VERSION = "0.2.11";
|
|
11
11
|
const PACKAGE_SPEC = `${PACKAGE_NAME}@latest`;
|
|
12
12
|
const LOG_PREFIX = `[${PACKAGE_NAME}]`;
|
|
13
13
|
const MIN_NODE_VERSION = "20.18.1";
|
|
14
|
-
const HOMEPAGE_URL = "https://socialdatax.
|
|
14
|
+
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];
|
|
@@ -75,7 +75,7 @@ const XHS_DIRECT_ACTION_OPTIONS = {
|
|
|
75
75
|
"hot-search": ["pretty"],
|
|
76
76
|
search: [
|
|
77
77
|
"keyword",
|
|
78
|
-
"
|
|
78
|
+
"pageToken",
|
|
79
79
|
"pages",
|
|
80
80
|
"all",
|
|
81
81
|
"maxItems",
|
|
@@ -111,7 +111,6 @@ const XHS_DIRECT_ACTION_OPTIONS = {
|
|
|
111
111
|
const XHS_DIRECT_ACTION_NAMES = Object.keys(XHS_DIRECT_ACTION_OPTIONS).join(", ");
|
|
112
112
|
const XHS_OPTION_DISPLAY_NAMES = {
|
|
113
113
|
keyword: "--keyword",
|
|
114
|
-
page: "--page",
|
|
115
114
|
sortType: "--sort-type",
|
|
116
115
|
noteType: "--note-type",
|
|
117
116
|
publishTimeRange: "--publish-time-range",
|
|
@@ -1226,7 +1225,7 @@ async function installSkills(args) {
|
|
|
1226
1225
|
console.log(` export ${PRIMARY_API_KEY_ENV}="<${PRIMARY_API_KEY_ENV}>"`);
|
|
1227
1226
|
console.log("");
|
|
1228
1227
|
console.log("Direct CLI examples:");
|
|
1229
|
-
console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "
|
|
1228
|
+
console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "露营" --pretty`);
|
|
1230
1229
|
console.log(` npx -y ${PACKAGE_SPEC} xhs detail --note-id "<note_id>" --pretty`);
|
|
1231
1230
|
}
|
|
1232
1231
|
|
|
@@ -1443,7 +1442,7 @@ function printHelp() {
|
|
|
1443
1442
|
console.log(`${PACKAGE_NAME}`);
|
|
1444
1443
|
console.log("");
|
|
1445
1444
|
console.log("Commands:");
|
|
1446
|
-
console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "
|
|
1445
|
+
console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "露营" --pretty`);
|
|
1447
1446
|
console.log(" Call the XHS search tool directly and print JSON.");
|
|
1448
1447
|
console.log("");
|
|
1449
1448
|
console.log(` npx -y ${PACKAGE_SPEC} xhs hot-search --pretty`);
|
|
@@ -1472,7 +1471,7 @@ function printHelp() {
|
|
|
1472
1471
|
console.log(` npx -y ${PACKAGE_SPEC} douyin hot-search --pretty`);
|
|
1473
1472
|
console.log(" Call the Douyin main hot search list tool directly and print JSON.");
|
|
1474
1473
|
console.log("");
|
|
1475
|
-
console.log(` npx -y ${PACKAGE_SPEC} douyin search --keyword "
|
|
1474
|
+
console.log(` npx -y ${PACKAGE_SPEC} douyin search --keyword "露营" --pretty`);
|
|
1476
1475
|
console.log(" Call the Douyin work search tool directly and print JSON.");
|
|
1477
1476
|
console.log("");
|
|
1478
1477
|
console.log(` npx -y ${PACKAGE_SPEC} douyin detail --aweme-id "<aweme_id>" --pretty`);
|
|
@@ -1510,7 +1509,7 @@ function printHelp() {
|
|
|
1510
1509
|
console.log(` npx -y ${PACKAGE_SPEC} kuaishou hot-search --pretty`);
|
|
1511
1510
|
console.log(" Call the Kuaishou short-video hot list tool directly and print JSON.");
|
|
1512
1511
|
console.log("");
|
|
1513
|
-
console.log(` npx -y ${PACKAGE_SPEC} kuaishou search --keyword "
|
|
1512
|
+
console.log(` npx -y ${PACKAGE_SPEC} kuaishou search --keyword "露营" --pretty`);
|
|
1514
1513
|
console.log(" Call the Kuaishou work search tool directly and print JSON.");
|
|
1515
1514
|
console.log("");
|
|
1516
1515
|
console.log(` npx -y ${PACKAGE_SPEC} kuaishou detail --photo-id "<photo_id>" --pretty`);
|
|
@@ -1548,7 +1547,7 @@ function printHelp() {
|
|
|
1548
1547
|
console.log(` npx -y ${PACKAGE_SPEC} weibo hot-search --pretty`);
|
|
1549
1548
|
console.log(" Call the Weibo hot-search list tool directly and print JSON.");
|
|
1550
1549
|
console.log("");
|
|
1551
|
-
console.log(` npx -y ${PACKAGE_SPEC} weibo search --keyword "
|
|
1550
|
+
console.log(` npx -y ${PACKAGE_SPEC} weibo search --keyword "露营" --pretty`);
|
|
1552
1551
|
console.log(" Call the Weibo post search tool directly and print JSON.");
|
|
1553
1552
|
console.log("");
|
|
1554
1553
|
console.log(` npx -y ${PACKAGE_SPEC} weibo detail --post-id "<post_id>" --pretty`);
|
|
@@ -1587,7 +1586,7 @@ function printHelp() {
|
|
|
1587
1586
|
console.log(` npx -y ${PACKAGE_SPEC} wechat hot-search --pretty`);
|
|
1588
1587
|
console.log(" Call the WeChat Channels / 视频号 hot-search list tool directly and print JSON.");
|
|
1589
1588
|
console.log("");
|
|
1590
|
-
console.log(` npx -y ${PACKAGE_SPEC} wechat search --keyword "
|
|
1589
|
+
console.log(` npx -y ${PACKAGE_SPEC} wechat search --keyword "露营" --pretty`);
|
|
1591
1590
|
console.log(" Call the WeChat Channels / 视频号 video search tool directly and print JSON.");
|
|
1592
1591
|
console.log("");
|
|
1593
1592
|
console.log(` npx -y ${PACKAGE_SPEC} wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty`);
|
|
@@ -1695,8 +1694,6 @@ function printHelp() {
|
|
|
1695
1694
|
console.log(" --profile-url <profile-url-or-share-text>");
|
|
1696
1695
|
console.log(" --user-id <user_id>");
|
|
1697
1696
|
console.log(" --sec-user-id <sec_user_id>");
|
|
1698
|
-
console.log(" --page <number>");
|
|
1699
|
-
console.log(" XHS search only. Douyin, Kuaishou, Weibo, and WeChat Channels search do not accept --page.");
|
|
1700
1697
|
console.log(" --pages <number>");
|
|
1701
1698
|
console.log(" Fetch and merge N pages from the current starting point for search, comments, replies, creator content lists, and creator series.");
|
|
1702
1699
|
console.log(" --all");
|
|
@@ -1719,7 +1716,7 @@ function printHelp() {
|
|
|
1719
1716
|
console.log(" --content-type <all|video|image>");
|
|
1720
1717
|
console.log(" Douyin content type filter; omit for all content types.");
|
|
1721
1718
|
console.log(" --page-token <token>");
|
|
1722
|
-
console.log(" Continue token-paginated commands with the complete returned next_page_token. For
|
|
1719
|
+
console.log(" Continue token-paginated commands with the complete returned next_page_token. For search, omit it on the first request.");
|
|
1723
1720
|
console.log(" --sort-type <all|latest|popular>");
|
|
1724
1721
|
console.log(" WeChat Channels / 视频号 search sort; omit for default sort.");
|
|
1725
1722
|
console.log(" --duration-range <all|under_5_min|between_5_and_20_min|over_20_min>");
|
|
@@ -2377,10 +2374,6 @@ function buildXhsSearchCall(options) {
|
|
|
2377
2374
|
if (!options.keyword) {
|
|
2378
2375
|
throw new Error("Missing --keyword for xhs search.");
|
|
2379
2376
|
}
|
|
2380
|
-
const page =
|
|
2381
|
-
options.page === undefined
|
|
2382
|
-
? 1
|
|
2383
|
-
: parsePositiveIntegerOption(options.page, "--page");
|
|
2384
2377
|
const sortType = parseSemanticOption(
|
|
2385
2378
|
options.sortType || "general",
|
|
2386
2379
|
"--sort-type",
|
|
@@ -2404,8 +2397,10 @@ function buildXhsSearchCall(options) {
|
|
|
2404
2397
|
}
|
|
2405
2398
|
const toolArguments = {
|
|
2406
2399
|
keyword: options.keyword,
|
|
2407
|
-
page,
|
|
2408
2400
|
};
|
|
2401
|
+
if (options.pageToken) {
|
|
2402
|
+
toolArguments.page_token = options.pageToken;
|
|
2403
|
+
}
|
|
2409
2404
|
if (options.sortType !== undefined) {
|
|
2410
2405
|
toolArguments.sort_type = sortType;
|
|
2411
2406
|
}
|
|
@@ -2842,7 +2837,7 @@ async function collectPaginatedDirectData(
|
|
|
2842
2837
|
}
|
|
2843
2838
|
if (markerRepeated) {
|
|
2844
2839
|
throw new Error(
|
|
2845
|
-
`Pagination stopped because ${nextMarkerName(
|
|
2840
|
+
`Pagination stopped because ${nextMarkerName()} repeated.`
|
|
2846
2841
|
);
|
|
2847
2842
|
}
|
|
2848
2843
|
seenNextMarkers.add(markerKey);
|
|
@@ -3058,18 +3053,12 @@ function reachedMaxItems(items, maxItems) {
|
|
|
3058
3053
|
}
|
|
3059
3054
|
|
|
3060
3055
|
function readNextPageMarker(operation, pageData) {
|
|
3061
|
-
if (operation.platform.id === "xhs" && operation.operation === "search") {
|
|
3062
|
-
const page = pageData?.next_page;
|
|
3063
|
-
return page === undefined || page === null || page === "" ? undefined : page;
|
|
3064
|
-
}
|
|
3065
3056
|
const token = pageData?.next_page_token;
|
|
3066
3057
|
return typeof token === "string" && token ? token : undefined;
|
|
3067
3058
|
}
|
|
3068
3059
|
|
|
3069
|
-
function nextMarkerName(
|
|
3070
|
-
return
|
|
3071
|
-
? "next_page"
|
|
3072
|
-
: "next_page_token";
|
|
3060
|
+
function nextMarkerName() {
|
|
3061
|
+
return "next_page_token";
|
|
3073
3062
|
}
|
|
3074
3063
|
|
|
3075
3064
|
function initialPaginationMarkers(operation) {
|
|
@@ -3078,19 +3067,13 @@ function initialPaginationMarkers(operation) {
|
|
|
3078
3067
|
}
|
|
3079
3068
|
|
|
3080
3069
|
function currentPageMarker(operation) {
|
|
3081
|
-
if (operation.platform.id === "xhs" && operation.operation === "search") {
|
|
3082
|
-
return operation.arguments.page;
|
|
3083
|
-
}
|
|
3084
3070
|
return operation.arguments.page_token;
|
|
3085
3071
|
}
|
|
3086
3072
|
|
|
3087
3073
|
function operationWithNextPageMarker(operation, nextMarker) {
|
|
3088
3074
|
const nextOperation = cloneDirectOperation(operation);
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
} else {
|
|
3092
|
-
nextOperation.arguments.page_token = nextMarker;
|
|
3093
|
-
}
|
|
3075
|
+
nextOperation.arguments.page_token = nextMarker;
|
|
3076
|
+
delete nextOperation.arguments.page;
|
|
3094
3077
|
return nextOperation;
|
|
3095
3078
|
}
|
|
3096
3079
|
|
|
@@ -3109,11 +3092,8 @@ function buildPaginatedData({
|
|
|
3109
3092
|
page_count: pageCount,
|
|
3110
3093
|
item_count: items.length,
|
|
3111
3094
|
};
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
} else {
|
|
3115
|
-
data.next_page_token = nextMarker || "";
|
|
3116
|
-
}
|
|
3095
|
+
delete data.next_page;
|
|
3096
|
+
data.next_page_token = nextMarker || "";
|
|
3117
3097
|
return data;
|
|
3118
3098
|
}
|
|
3119
3099
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "socialdatax-skills",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.11",
|
|
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",
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
"wechat-channels-data",
|
|
59
59
|
"wechat-channels-search"
|
|
60
60
|
],
|
|
61
|
-
"homepage": "https://socialdatax.
|
|
61
|
+
"homepage": "https://socialdatax.com",
|
|
62
62
|
"bugs": {
|
|
63
|
-
"url": "https://socialdatax.
|
|
63
|
+
"url": "https://socialdatax.com"
|
|
64
64
|
},
|
|
65
65
|
"repository": {
|
|
66
66
|
"type": "git",
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
package: "socialdatax-skills"
|
|
16
16
|
bins: []
|
|
17
17
|
emoji: "💬"
|
|
18
|
-
homepage: "https://socialdatax.
|
|
18
|
+
homepage: "https://socialdatax.com/?from=npm"
|
|
19
19
|
---
|
|
20
20
|
<!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
|
|
21
21
|
|
|
@@ -33,8 +33,8 @@ Current platform support:
|
|
|
33
33
|
|
|
34
34
|
## API Key
|
|
35
35
|
|
|
36
|
-
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.
|
|
37
|
-
获取或管理 API Key:访问 <https://socialdatax.
|
|
36
|
+
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
37
|
+
获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
38
38
|
|
|
39
39
|
## Preferred Direct CLI
|
|
40
40
|
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
package: "socialdatax-skills"
|
|
16
16
|
bins: []
|
|
17
17
|
emoji: "📄"
|
|
18
|
-
homepage: "https://socialdatax.
|
|
18
|
+
homepage: "https://socialdatax.com/?from=npm"
|
|
19
19
|
---
|
|
20
20
|
<!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
|
|
21
21
|
|
|
@@ -33,8 +33,8 @@ Current platform support:
|
|
|
33
33
|
|
|
34
34
|
## API Key
|
|
35
35
|
|
|
36
|
-
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.
|
|
37
|
-
获取或管理 API Key:访问 <https://socialdatax.
|
|
36
|
+
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
37
|
+
获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
38
38
|
|
|
39
39
|
## Preferred Direct CLI
|
|
40
40
|
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
package: "socialdatax-skills"
|
|
16
16
|
bins: []
|
|
17
17
|
emoji: "🔍"
|
|
18
|
-
homepage: "https://socialdatax.
|
|
18
|
+
homepage: "https://socialdatax.com/?from=npm"
|
|
19
19
|
---
|
|
20
20
|
<!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
|
|
21
21
|
|
|
@@ -33,8 +33,8 @@ Current platform support:
|
|
|
33
33
|
|
|
34
34
|
## API Key
|
|
35
35
|
|
|
36
|
-
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.
|
|
37
|
-
获取或管理 API Key:访问 <https://socialdatax.
|
|
36
|
+
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
37
|
+
获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
38
38
|
|
|
39
39
|
## Preferred Direct CLI
|
|
40
40
|
|
|
@@ -63,7 +63,7 @@ Required arguments:
|
|
|
63
63
|
|
|
64
64
|
Optional arguments:
|
|
65
65
|
|
|
66
|
-
- XHS `--page <
|
|
66
|
+
- XHS `--page-token <next_page_token>`: opaque pagination token; omit it on the first search request. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
|
|
67
67
|
- XHS `--sort-type <general|time_descending|like_count_descending|comment_count_descending|collect_count_descending>`: optional sort value; omit it for default sorting.
|
|
68
68
|
- XHS `--note-type <all|image|video>`: optional note type filter; default is `all`.
|
|
69
69
|
- XHS `--publish-time-range <all|day|week|half_year>`: optional publish-time filter; default is `all`.
|
|
@@ -72,7 +72,7 @@ Optional arguments:
|
|
|
72
72
|
- Douyin `--publish-time-range <all|day|week|half_year>`: optional publish-time filter; omit it for no publish-time filter.
|
|
73
73
|
- Douyin `--duration-range <all|under_1_minute|one_to_five_minutes|over_5_minutes>`: optional duration filter; omit it for no duration filter.
|
|
74
74
|
- Douyin `--content-type <all|video|image>`: optional content type filter; omit it for all content types.
|
|
75
|
-
- XHS `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `
|
|
75
|
+
- XHS `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
|
|
76
76
|
- Douyin `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
|
|
77
77
|
- Kuaishou `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
|
|
78
78
|
- `--max-items <n>`: stop after collecting N search results.
|
|
@@ -159,9 +159,9 @@ MCP tools matching the direct CLI commands above:
|
|
|
159
159
|
- `weibo_search_posts`
|
|
160
160
|
- `wechat_search_videos`
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
For XHS, call `xhs_search_notes` with:
|
|
163
163
|
- `keyword`: required search phrase or topic; use the user's actual intent and trim whitespace.
|
|
164
|
-
- `
|
|
164
|
+
- `page_token`: optional opaque pagination token. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
|
|
165
165
|
- `sort_type`: optional, one of `general`, `time_descending`, `like_count_descending`, `comment_count_descending`, `collect_count_descending`; omit it for default sorting.
|
|
166
166
|
- `note_type`: optional search filter, one of `all`, `image`, `video`; default is `all`.
|
|
167
167
|
- `publish_time_range`: optional search filter, one of `all`, `day`, `week`, `half_year`; default is `all`.
|
|
@@ -177,7 +177,8 @@ Do not pass `page` to `douyin_search_videos`; omit `page_token` on the first req
|
|
|
177
177
|
- `duration_range`: optional duration filter, one of `all`, `under_1_minute`, `one_to_five_minutes`, `over_5_minutes`; omit it for no duration filter.
|
|
178
178
|
- `content_type`: optional content type filter, one of `all`, `video`, `image`; omit it for all content types.
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
Do not pass `page` to `xhs_search_notes`; omit `page_token` on the first request.
|
|
181
|
+
Continue XHS pagination only when `next_page_token` is not empty, and pass the complete returned `next_page_token` back unchanged as `page_token` for the same keyword, sort, note type, publish-time range, and caller chain.
|
|
181
182
|
Continue Douyin pagination only when `next_page_token` is not empty. Pass the complete returned `next_page_token` back unchanged as `page_token` for the same keyword and filter chain.
|
|
182
183
|
Do not stop only because one page has empty `items`.
|
|
183
184
|
For Kuaishou, call `kuaishou_search_videos` with:
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
package: "socialdatax-skills"
|
|
16
16
|
bins: []
|
|
17
17
|
emoji: "🎙️"
|
|
18
|
-
homepage: "https://socialdatax.
|
|
18
|
+
homepage: "https://socialdatax.com/?from=npm"
|
|
19
19
|
---
|
|
20
20
|
<!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
|
|
21
21
|
|
|
@@ -33,8 +33,8 @@ Current platform support:
|
|
|
33
33
|
|
|
34
34
|
## API Key
|
|
35
35
|
|
|
36
|
-
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.
|
|
37
|
-
获取或管理 API Key:访问 <https://socialdatax.
|
|
36
|
+
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
37
|
+
获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
38
38
|
|
|
39
39
|
Required arguments:
|
|
40
40
|
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
package: "socialdatax-skills"
|
|
16
16
|
bins: []
|
|
17
17
|
emoji: "👤"
|
|
18
|
-
homepage: "https://socialdatax.
|
|
18
|
+
homepage: "https://socialdatax.com/?from=npm"
|
|
19
19
|
---
|
|
20
20
|
<!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
|
|
21
21
|
|
|
@@ -33,8 +33,8 @@ Current platform support:
|
|
|
33
33
|
|
|
34
34
|
## API Key
|
|
35
35
|
|
|
36
|
-
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.
|
|
37
|
-
获取或管理 API Key:访问 <https://socialdatax.
|
|
36
|
+
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
37
|
+
获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
38
38
|
|
|
39
39
|
## Preferred Direct CLI
|
|
40
40
|
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
package: "socialdatax-skills"
|
|
16
16
|
bins: []
|
|
17
17
|
emoji: "🗂️"
|
|
18
|
-
homepage: "https://socialdatax.
|
|
18
|
+
homepage: "https://socialdatax.com/?from=npm"
|
|
19
19
|
---
|
|
20
20
|
<!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
|
|
21
21
|
|
|
@@ -34,8 +34,8 @@ Current platform support:
|
|
|
34
34
|
|
|
35
35
|
## API Key
|
|
36
36
|
|
|
37
|
-
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.
|
|
38
|
-
获取或管理 API Key:访问 <https://socialdatax.
|
|
37
|
+
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
38
|
+
获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
39
39
|
|
|
40
40
|
## Preferred Direct CLI
|
|
41
41
|
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
package: "socialdatax-skills"
|
|
16
16
|
bins: []
|
|
17
17
|
emoji: "🔎"
|
|
18
|
-
homepage: "https://socialdatax.
|
|
18
|
+
homepage: "https://socialdatax.com/?from=npm"
|
|
19
19
|
---
|
|
20
20
|
<!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
|
|
21
21
|
|
|
@@ -59,8 +59,8 @@ Current platform support:
|
|
|
59
59
|
|
|
60
60
|
## API Key
|
|
61
61
|
|
|
62
|
-
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.
|
|
63
|
-
获取或管理 API Key:访问 <https://socialdatax.
|
|
62
|
+
Use `SOCIALDATAX_API_KEY` for SocialDataX requests. The only official website for requesting or managing API access is <https://socialdatax.com/?from=npm>. If a user asks where to get a key, provide only this URL; do not infer alternate domains.
|
|
63
|
+
获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
|
|
64
64
|
|
|
65
65
|
## Preferred Direct CLI
|
|
66
66
|
|
|
@@ -163,8 +163,8 @@ Required arguments:
|
|
|
163
163
|
|
|
164
164
|
Optional arguments:
|
|
165
165
|
|
|
166
|
-
-
|
|
167
|
-
- `--page-token <next_page_token>`: use for Douyin/Kuaishou/Weibo/WeChat Channels search continuation and for token-paginated comments, replies, creator posts, creator notes, creator videos, and creator series. Keep the original topic, content item, or creator target stable. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
|
|
166
|
+
- Search continuation uses `--page-token <next_page_token>` when a returned `next_page_token` is available. Omit `page_token` on the first token-paginated search request, and continue only with the complete returned `next_page_token` from the same chain.
|
|
167
|
+
- `--page-token <next_page_token>`: use for XHS/Douyin/Kuaishou/Weibo/WeChat Channels search continuation and for token-paginated comments, replies, creator posts, creator notes, creator videos, and creator series. Keep the original topic, content item, or creator target stable. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
|
|
168
168
|
- `--pages <n>`: fetch and merge N pages for search, comments, replies, creator posts, or creator series.
|
|
169
169
|
- `--all`: fetch comments, replies, creator posts, or creator series until `next_page_token` is empty; do not use it for search.
|
|
170
170
|
- `--max-items <n>`: stop after collecting N primary results.
|
|
@@ -201,7 +201,7 @@ MCP tools matching the direct CLI commands above:
|
|
|
201
201
|
- 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`
|
|
202
202
|
|
|
203
203
|
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.
|
|
204
|
-
|
|
204
|
+
For search pagination, omit `page_token` on the first request and pass only the complete returned `next_page_token` when continuing the same chain. Use `page_token` for all new search continuation calls.
|
|
205
205
|
|
|
206
206
|
## Output Guidance
|
|
207
207
|
|