socialdatax-skills 0.2.9 → 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 CHANGED
@@ -21,6 +21,9 @@ Common search phrases for this skill package:
21
21
  - `Hermes Agent social media skills`
22
22
  - `media search skill`
23
23
  - `media comments skill`
24
+ - `media transcript skill`
25
+ - `speech-to-text transcript skill`
26
+ - `口播转文字 skill`
24
27
  - `creator profile skill`
25
28
  - `Xiaohongshu skills`
26
29
  - `XHS skills`
@@ -46,7 +49,7 @@ Common search phrases for this skill package:
46
49
  - WeChat Channels hosted MCP endpoint: `https://mcp.52choujiang.com/wechat/mcp`
47
50
  - Hosted transport: `streamable-http`
48
51
  - Authentication: `Authorization: Bearer <SOCIALDATAX_API_KEY>`
49
- - Website: <https://socialdatax.52choujiang.com>
52
+ - Website: <https://socialdatax.com>
50
53
  - XHS current platform MCP registry name: `com.52choujiang/xhs-insights`
51
54
  - XHS future platform MCP registry name: `com.socialdatax/xhs-insights`
52
55
  - Douyin current platform MCP registry name: `com.52choujiang/douyin-insights`
@@ -58,7 +61,7 @@ Common search phrases for this skill package:
58
61
  - WeChat Channels current platform MCP registry name: `com.52choujiang/wechat-channels-insights`
59
62
  - WeChat Channels future platform MCP registry name: `com.socialdatax/wechat-channels-insights`
60
63
  - Unified MCP registry name: none; this package installs skills and calls explicit platform services.
61
- - Current public capability version: `0.2.9`
64
+ - Current public capability version: `0.2.11`
62
65
 
63
66
  ## Direct CLI
64
67
 
@@ -67,7 +70,7 @@ For most skill users, no MCP client configuration is required. Install the skill
67
70
  Examples:
68
71
 
69
72
  ```bash
70
- npx -y socialdatax-skills@latest xhs search --keyword "露营桌" --pretty
73
+ npx -y socialdatax-skills@latest xhs search --keyword "露营" --pretty
71
74
  npx -y socialdatax-skills@latest xhs hot-search --pretty
72
75
  npx -y socialdatax-skills@latest xhs detail --note-id "<note_id>" --pretty
73
76
  npx -y socialdatax-skills@latest xhs comments --note-id "<note_id>" --pretty
@@ -76,7 +79,7 @@ npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --commen
76
79
  npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty
77
80
  npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --pretty
78
81
  npx -y socialdatax-skills@latest douyin hot-search --pretty
79
- npx -y socialdatax-skills@latest douyin search --keyword "露营桌" --pretty
82
+ npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
80
83
  npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty
81
84
  npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --pretty
82
85
  npx -y socialdatax-skills@latest douyin comments --aweme-id "<aweme_id>" --all --include-replies --pretty
@@ -88,7 +91,7 @@ npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_o
88
91
  npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
89
92
  npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty
90
93
  npx -y socialdatax-skills@latest kuaishou hot-search --pretty
91
- npx -y socialdatax-skills@latest kuaishou search --keyword "露营桌" --pretty
94
+ npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
92
95
  npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty
93
96
  npx -y socialdatax-skills@latest kuaishou detail --url "<kuaishou_content_url_or_share_text>" --pretty
94
97
  npx -y socialdatax-skills@latest kuaishou comments --photo-id "<photo_id>" --pretty
@@ -100,19 +103,21 @@ npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_
100
103
  npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --pretty
101
104
  npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty
102
105
  npx -y socialdatax-skills@latest weibo hot-search --pretty
103
- npx -y socialdatax-skills@latest weibo search --keyword "露营桌" --pretty
106
+ npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
104
107
  npx -y socialdatax-skills@latest weibo detail --post-id "<post_id>" --pretty
105
108
  npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty
106
109
  npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --pretty
107
110
  npx -y socialdatax-skills@latest weibo comments --post-id "<post_id>" --all --include-replies --pretty
108
111
  npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty
109
112
  npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty
113
+ npx -y socialdatax-skills@latest weibo likers --post-id "<post_id>" --pretty
114
+ npx -y socialdatax-skills@latest weibo reposts --post-id "<post_id>" --pretty
110
115
  npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty
111
116
  npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
112
117
  npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty
113
118
  npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty
114
119
  npx -y socialdatax-skills@latest wechat hot-search --pretty
115
- npx -y socialdatax-skills@latest wechat search --keyword "露营桌" --pretty
120
+ npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
116
121
  npx -y socialdatax-skills@latest wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty
117
122
  npx -y socialdatax-skills@latest wechat detail --url "<wechat_video_url_or_share_text>" --pretty
118
123
  npx -y socialdatax-skills@latest wechat comments --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --pretty
@@ -136,9 +141,11 @@ For first-level comments, add `--include-replies` to fetch the second-level repl
136
141
 
137
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.
138
143
 
139
- XHS search uses numeric `--page`; Douyin, Kuaishou, Weibo, and WeChat Channels search do not accept `--page`. For Douyin, Kuaishou, Weibo, and WeChat Channels search, omit `--page-token` on the first request and pass the complete returned `next_page_token` only when continuing the same search chain.
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.
140
145
 
141
- Kuaishou search uses `--keyword` and optional `--page-token`; it does not accept Douyin semantic filters. Weibo and WeChat Channels search use `--keyword` and optional `--page-token`.
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`.
142
149
 
143
150
  Douyin search filters use semantic values: `--sort-type` supports `general`,
144
151
  `time_descending`, and `like_count_descending`; `--publish-time-range` supports
@@ -180,22 +187,22 @@ This project is not affiliated with, endorsed by, or sponsored by Xiaohongshu, R
180
187
 
181
188
  ```bash
182
189
  npm install
183
- SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs xhs search --keyword "露营桌" --pretty
184
- SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs douyin search --keyword "露营桌" --pretty
185
- SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs kuaishou search --keyword "露营桌" --pretty
186
- SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs weibo search --keyword "露营桌" --pretty
187
- SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" node cli.mjs wechat search --keyword "露营桌" --pretty
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
188
195
  ```
189
196
 
190
197
  ### Docker Run
191
198
 
192
199
  ```bash
193
200
  docker build -t socialdatax-skills .
194
- docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills xhs search --keyword "露营桌" --pretty
195
- docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills douyin search --keyword "露营桌" --pretty
196
- docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills kuaishou search --keyword "露营桌" --pretty
197
- docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills weibo search --keyword "露营桌" --pretty
198
- docker run --rm -i -e SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>" socialdatax-skills wechat search --keyword "露营桌" --pretty
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
199
206
  ```
200
207
 
201
208
  If Docker Hub is slow from your network, keep the default image unchanged for normal use and override only during local builds:
@@ -218,6 +225,7 @@ npx -y socialdatax-skills@latest install media-search --target openclaw
218
225
  npx -y socialdatax-skills@latest install media-search --target openclaw --dry-run
219
226
  npx -y socialdatax-skills@latest install media-user-info --target openclaw
220
227
  npx -y socialdatax-skills@latest install media-comments media-detail --target openclaw
228
+ npx -y socialdatax-skills@latest install media-transcript --target openclaw
221
229
  npx -y socialdatax-skills@latest install media-search --target openclaw --scope workspace
222
230
  npx -y socialdatax-skills@latest install media-search --target hermes
223
231
  npx -y socialdatax-skills@latest install media-search --target hermes --scope shared
@@ -226,17 +234,17 @@ npx -y socialdatax-skills@latest install media-search --target codex
226
234
  npx -y socialdatax-skills@latest install media-search --target codex --scope workspace
227
235
  npx -y socialdatax-skills@latest install media-search --target claude-code
228
236
  npx -y socialdatax-skills@latest install media-search --target claude-code --scope workspace
229
- npx -y socialdatax-skills@latest xhs search --keyword "露营桌" --pretty
237
+ npx -y socialdatax-skills@latest xhs search --keyword "露营" --pretty
230
238
  npx -y socialdatax-skills@latest xhs hot-search --pretty
231
239
  npx -y socialdatax-skills@latest douyin hot-search --pretty
232
- npx -y socialdatax-skills@latest douyin search --keyword "露营桌" --pretty
240
+ npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
233
241
  npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
234
242
  npx -y socialdatax-skills@latest kuaishou hot-search --pretty
235
- npx -y socialdatax-skills@latest kuaishou search --keyword "露营桌" --pretty
243
+ npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
236
244
  npx -y socialdatax-skills@latest weibo hot-search --pretty
237
- npx -y socialdatax-skills@latest weibo search --keyword "露营桌" --pretty
245
+ npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
238
246
  npx -y socialdatax-skills@latest wechat hot-search --pretty
239
- npx -y socialdatax-skills@latest wechat search --keyword "露营桌" --pretty
247
+ npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
240
248
  ```
241
249
 
242
250
  Available skills:
@@ -245,6 +253,7 @@ Available skills:
245
253
  - `media-search`: search social media content by keyword; supports XHS notes, Douyin works, Kuaishou works, Weibo posts, and WeChat Channels videos.
246
254
  - `media-detail`: read structured content details and metrics; supports XHS notes, Douyin works, Kuaishou works, Weibo posts, and WeChat Channels videos.
247
255
  - `media-comments`: fetch and analyze XHS comments/replies, Douyin comments/replies, Kuaishou comments/replies, Weibo comments/replies, and WeChat Channels comments/replies.
256
+ - `media-transcript`: submit and check video 口播转文字 / speech-to-text transcript jobs through hosted MCP tools; supports XHS, Douyin, Kuaishou, Weibo, and WeChat Channels.
248
257
  - `media-user-info`: retrieve creator profile information; supports XHS, Douyin, Kuaishou, Weibo, and WeChat Channels creators.
249
258
  - `media-user-posts`: retrieve creator content lists; supports XHS notes, Douyin works, Kuaishou works, Weibo posts, WeChat Channels videos, and Douyin creator short-drama series.
250
259
 
@@ -313,6 +322,7 @@ Current Weibo workflows include:
313
322
  - Continue Weibo list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
314
323
  - Read creator profile data from a profile link, short link, share text, or user_id.
315
324
  - Fetch paginated creator post lists from a user_id, profile link, short link, or share text.
325
+ - Submit and check Weibo video 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
316
326
 
317
327
  Current WeChat Channels / 视频号 workflows include:
318
328
 
@@ -324,6 +334,7 @@ Current WeChat Channels / 视频号 workflows include:
324
334
  - Continue WeChat Channels list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
325
335
  - Read creator profile data from a finder user_id.
326
336
  - Fetch paginated creator video lists from a finder user_id or a video link/share text.
337
+ - Submit and check WeChat Channels / 视频号 video 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
327
338
 
328
339
  ## XHS Tools
329
340
 
@@ -340,6 +351,9 @@ Current WeChat Channels / 视频号 workflows include:
340
351
  | `xhs_get_user_info_by_profile_url` | Resolve a profile link, short link, or share text into creator profile data. |
341
352
  | `xhs_get_user_posted_notes_by_user_id` | Fetch a paginated list of notes published by a creator when the caller already has a user ID. |
342
353
  | `xhs_get_user_posted_notes_by_profile_url` | Fetch a paginated list of notes published by a creator from a profile link, short link, or share text. |
354
+ | `xhs_submit_video_speech_text_by_note_url` | Submit an XHS video note speech-to-text transcript job from a note link, short link, or share text; submit waits up to 15 seconds. |
355
+ | `xhs_submit_video_speech_text_by_note_id` | Submit an XHS video note speech-to-text transcript job when the caller already has a note ID; submit waits up to 15 seconds. |
356
+ | `xhs_get_video_speech_text_job` | Check an XHS speech-to-text transcript job by job_id without creating a new task. |
343
357
 
344
358
  ## Douyin Tools
345
359
 
@@ -358,6 +372,9 @@ Current WeChat Channels / 视频号 workflows include:
358
372
  | `douyin_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. |
359
373
  | `douyin_get_user_series_by_sec_user_id` | Fetch a paginated list of short-drama series by a creator when the caller already has a sec_user_id. |
360
374
  | `douyin_get_user_series_by_profile_url` | Fetch a paginated list of short-drama series by a creator from a profile link, short link, or share text. |
375
+ | `douyin_submit_video_speech_text_by_video_url` | Submit a Douyin video speech-to-text transcript job from a content page link, short link, or share text; submit waits up to 15 seconds. |
376
+ | `douyin_submit_video_speech_text_by_aweme_id` | Submit a Douyin video speech-to-text transcript job when the caller already has an aweme_id; submit waits up to 15 seconds. |
377
+ | `douyin_get_video_speech_text_job` | Check a Douyin speech-to-text transcript job by job_id without creating a new task. |
361
378
 
362
379
  ## Kuaishou Tools
363
380
 
@@ -374,6 +391,9 @@ Current WeChat Channels / 视频号 workflows include:
374
391
  | `kuaishou_get_user_info_by_profile_url` | Resolve a Kuaishou profile link, short link, or share text into creator profile data. |
375
392
  | `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. |
376
393
  | `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. |
394
+ | `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. |
395
+ | `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. |
396
+ | `kuaishou_get_video_speech_text_job` | Check a Kuaishou speech-to-text transcript job by job_id without creating a new task. |
377
397
 
378
398
  ## Weibo Tools
379
399
 
@@ -390,6 +410,9 @@ Current WeChat Channels / 视频号 workflows include:
390
410
  | `weibo_get_user_info_by_profile_url` | Resolve a Weibo profile link, short link, or share text into creator profile data. |
391
411
  | `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. |
392
412
  | `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. |
413
+ | `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. |
414
+ | `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. |
415
+ | `weibo_get_video_speech_text_job` | Check a Weibo speech-to-text transcript job by job_id without creating a new task. |
393
416
 
394
417
  ## WeChat Channels Tools
395
418
 
@@ -405,6 +428,9 @@ Current WeChat Channels / 视频号 workflows include:
405
428
  | `wechat_get_user_info_by_user_id` | Fetch creator profile data when the finder user_id is already known. |
406
429
  | `wechat_get_user_posted_videos_by_user_id` | Fetch a paginated list of videos published by a creator when the finder user_id is already known. |
407
430
  | `wechat_get_user_posted_videos_by_url` | Fetch a paginated list of videos published by a creator from a video link or share text. |
431
+ | `wechat_submit_video_speech_text_by_video_url` | Submit a WeChat Channels / 视频号 video speech-to-text transcript job from a video link or share text; submit waits up to 15 seconds. |
432
+ | `wechat_submit_video_speech_text_by_encrypted_object_id` | Submit a WeChat Channels / 视频号 video speech-to-text transcript job when encrypted_object_id is already known; submit waits up to 15 seconds. |
433
+ | `wechat_get_video_speech_text_job` | Check a WeChat Channels / 视频号 speech-to-text transcript job by job_id without creating a new task. |
408
434
 
409
435
  ## Quick Start
410
436
 
@@ -412,11 +438,11 @@ For agents that can execute shell commands, use the direct CLI. This is the reco
412
438
 
413
439
  ```bash
414
440
  export SOCIALDATAX_API_KEY="<SOCIALDATAX_API_KEY>"
415
- npx -y socialdatax-skills@latest xhs search --keyword "露营桌" --pretty
416
- npx -y socialdatax-skills@latest douyin search --keyword "露营桌" --pretty
417
- npx -y socialdatax-skills@latest kuaishou search --keyword "露营桌" --pretty
418
- npx -y socialdatax-skills@latest weibo search --keyword "露营桌" --pretty
419
- npx -y socialdatax-skills@latest wechat search --keyword "露营桌" --pretty
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
420
446
  ```
421
447
 
422
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.
@@ -427,7 +453,7 @@ Aily is treated as an OpenClaw / AgentSkills ecosystem channel for this package.
427
453
 
428
454
  Request or manage API access from the product website:
429
455
 
430
- <https://socialdatax.52choujiang.com/?from=npm>
456
+ <https://socialdatax.com/?from=npm>
431
457
 
432
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.
433
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.9";
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.52choujiang.com";
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];
@@ -40,6 +40,12 @@ const AVAILABLE_SKILLS = [
40
40
  "Fetch and analyze XHS, Douyin, Kuaishou, Weibo, and WeChat Channels comments/replies.",
41
41
  emoji: "💬",
42
42
  },
43
+ {
44
+ name: "media-transcript",
45
+ summary:
46
+ "Submit and check video speech-to-text transcript jobs for XHS, Douyin, Kuaishou, Weibo, and WeChat Channels through hosted MCP tools.",
47
+ emoji: "🎙️",
48
+ },
43
49
  {
44
50
  name: "media-user-info",
45
51
  summary:
@@ -69,7 +75,7 @@ const XHS_DIRECT_ACTION_OPTIONS = {
69
75
  "hot-search": ["pretty"],
70
76
  search: [
71
77
  "keyword",
72
- "page",
78
+ "pageToken",
73
79
  "pages",
74
80
  "all",
75
81
  "maxItems",
@@ -105,7 +111,6 @@ const XHS_DIRECT_ACTION_OPTIONS = {
105
111
  const XHS_DIRECT_ACTION_NAMES = Object.keys(XHS_DIRECT_ACTION_OPTIONS).join(", ");
106
112
  const XHS_OPTION_DISPLAY_NAMES = {
107
113
  keyword: "--keyword",
108
- page: "--page",
109
114
  sortType: "--sort-type",
110
115
  noteType: "--note-type",
111
116
  publishTimeRange: "--publish-time-range",
@@ -263,6 +268,8 @@ const WEIBO_DIRECT_ACTION_OPTIONS = {
263
268
  "includeReplies",
264
269
  "pretty",
265
270
  ],
271
+ likers: ["postId", "pageToken", "pages", "all", "maxItems", "pretty"],
272
+ reposts: ["postId", "pageToken", "pages", "all", "maxItems", "pretty"],
266
273
  "user-info": ["userId", "profileUrl", "pretty"],
267
274
  "user-posts": ["userId", "profileUrl", "pageToken", "pages", "all", "maxItems", "pretty"],
268
275
  };
@@ -628,6 +635,14 @@ const PLATFORMS = {
628
635
  name: "weibo_get_post_comment_replies_by_comment_id",
629
636
  description: "Fetch paginated replies under a first-level comment by post_id and comment_id.",
630
637
  },
638
+ {
639
+ name: "weibo_get_post_liker_list_by_post_id",
640
+ description: "Fetch a paginated list of users who liked a Weibo post by post_id.",
641
+ },
642
+ {
643
+ name: "weibo_get_post_repost_list_by_post_id",
644
+ description: "Fetch a paginated repost list for a Weibo post by post_id.",
645
+ },
631
646
  {
632
647
  name: "weibo_get_user_info_by_user_id",
633
648
  description: "Fetch creator profile data when the caller already has a user_id.",
@@ -644,6 +659,21 @@ const PLATFORMS = {
644
659
  name: "weibo_get_user_posts_by_profile_url",
645
660
  description: "Fetch creator posts from a profile URL, short link, or profile share text.",
646
661
  },
662
+ {
663
+ name: "weibo_submit_video_speech_text_by_post_url",
664
+ description:
665
+ "Submit a Weibo video speech-to-text transcript task from a post URL, short link, or share text; 提交完成后最多短等 15 秒.",
666
+ },
667
+ {
668
+ name: "weibo_submit_video_speech_text_by_post_id",
669
+ description:
670
+ "Submit a Weibo video speech-to-text transcript task from a post_id; 提交完成后最多短等 15 秒.",
671
+ },
672
+ {
673
+ name: "weibo_get_video_speech_text_job",
674
+ description:
675
+ "Check a Weibo video speech-to-text transcript job by job_id without starting a new task.",
676
+ },
647
677
  ],
648
678
  },
649
679
  wechat: {
@@ -701,6 +731,21 @@ const PLATFORMS = {
701
731
  name: "wechat_get_user_posted_videos_by_url",
702
732
  description: "Fetch creator videos from a WeChat Channels / 视频号 video link or share text.",
703
733
  },
734
+ {
735
+ name: "wechat_submit_video_speech_text_by_video_url",
736
+ description:
737
+ "Submit a WeChat Channels / 视频号 video speech-to-text transcript task from a video link or share text; 提交完成后最多短等 15 秒.",
738
+ },
739
+ {
740
+ name: "wechat_submit_video_speech_text_by_encrypted_object_id",
741
+ description:
742
+ "Submit a WeChat Channels / 视频号 video speech-to-text transcript task from an encrypted_object_id; 提交完成后最多短等 15 秒.",
743
+ },
744
+ {
745
+ name: "wechat_get_video_speech_text_job",
746
+ description:
747
+ "Check a WeChat Channels / 视频号 video speech-to-text transcript job by job_id without starting a new task.",
748
+ },
704
749
  ],
705
750
  },
706
751
  };
@@ -1180,7 +1225,7 @@ async function installSkills(args) {
1180
1225
  console.log(` export ${PRIMARY_API_KEY_ENV}="<${PRIMARY_API_KEY_ENV}>"`);
1181
1226
  console.log("");
1182
1227
  console.log("Direct CLI examples:");
1183
- console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "露营桌" --pretty`);
1228
+ console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "露营" --pretty`);
1184
1229
  console.log(` npx -y ${PACKAGE_SPEC} xhs detail --note-id "<note_id>" --pretty`);
1185
1230
  }
1186
1231
 
@@ -1397,7 +1442,7 @@ function printHelp() {
1397
1442
  console.log(`${PACKAGE_NAME}`);
1398
1443
  console.log("");
1399
1444
  console.log("Commands:");
1400
- console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "露营桌" --pretty`);
1445
+ console.log(` npx -y ${PACKAGE_SPEC} xhs search --keyword "露营" --pretty`);
1401
1446
  console.log(" Call the XHS search tool directly and print JSON.");
1402
1447
  console.log("");
1403
1448
  console.log(` npx -y ${PACKAGE_SPEC} xhs hot-search --pretty`);
@@ -1426,7 +1471,7 @@ function printHelp() {
1426
1471
  console.log(` npx -y ${PACKAGE_SPEC} douyin hot-search --pretty`);
1427
1472
  console.log(" Call the Douyin main hot search list tool directly and print JSON.");
1428
1473
  console.log("");
1429
- console.log(` npx -y ${PACKAGE_SPEC} douyin search --keyword "露营桌" --pretty`);
1474
+ console.log(` npx -y ${PACKAGE_SPEC} douyin search --keyword "露营" --pretty`);
1430
1475
  console.log(" Call the Douyin work search tool directly and print JSON.");
1431
1476
  console.log("");
1432
1477
  console.log(` npx -y ${PACKAGE_SPEC} douyin detail --aweme-id "<aweme_id>" --pretty`);
@@ -1464,7 +1509,7 @@ function printHelp() {
1464
1509
  console.log(` npx -y ${PACKAGE_SPEC} kuaishou hot-search --pretty`);
1465
1510
  console.log(" Call the Kuaishou short-video hot list tool directly and print JSON.");
1466
1511
  console.log("");
1467
- console.log(` npx -y ${PACKAGE_SPEC} kuaishou search --keyword "露营桌" --pretty`);
1512
+ console.log(` npx -y ${PACKAGE_SPEC} kuaishou search --keyword "露营" --pretty`);
1468
1513
  console.log(" Call the Kuaishou work search tool directly and print JSON.");
1469
1514
  console.log("");
1470
1515
  console.log(` npx -y ${PACKAGE_SPEC} kuaishou detail --photo-id "<photo_id>" --pretty`);
@@ -1502,7 +1547,7 @@ function printHelp() {
1502
1547
  console.log(` npx -y ${PACKAGE_SPEC} weibo hot-search --pretty`);
1503
1548
  console.log(" Call the Weibo hot-search list tool directly and print JSON.");
1504
1549
  console.log("");
1505
- console.log(` npx -y ${PACKAGE_SPEC} weibo search --keyword "露营桌" --pretty`);
1550
+ console.log(` npx -y ${PACKAGE_SPEC} weibo search --keyword "露营" --pretty`);
1506
1551
  console.log(" Call the Weibo post search tool directly and print JSON.");
1507
1552
  console.log("");
1508
1553
  console.log(` npx -y ${PACKAGE_SPEC} weibo detail --post-id "<post_id>" --pretty`);
@@ -1520,6 +1565,12 @@ function printHelp() {
1520
1565
  console.log(` npx -y ${PACKAGE_SPEC} weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty`);
1521
1566
  console.log(" Call the Weibo comment replies tool directly and print JSON.");
1522
1567
  console.log("");
1568
+ console.log(` npx -y ${PACKAGE_SPEC} weibo likers --post-id "<post_id>" --pretty`);
1569
+ console.log(" Call the Weibo post liker list tool directly and print JSON.");
1570
+ console.log("");
1571
+ console.log(` npx -y ${PACKAGE_SPEC} weibo reposts --post-id "<post_id>" --pretty`);
1572
+ console.log(" Call the Weibo post repost list tool directly and print JSON.");
1573
+ console.log("");
1523
1574
  console.log(` npx -y ${PACKAGE_SPEC} weibo user-info --user-id "<user_id>" --pretty`);
1524
1575
  console.log(" Call the Weibo creator profile tool directly and print JSON.");
1525
1576
  console.log("");
@@ -1535,7 +1586,7 @@ function printHelp() {
1535
1586
  console.log(` npx -y ${PACKAGE_SPEC} wechat hot-search --pretty`);
1536
1587
  console.log(" Call the WeChat Channels / 视频号 hot-search list tool directly and print JSON.");
1537
1588
  console.log("");
1538
- console.log(` npx -y ${PACKAGE_SPEC} wechat search --keyword "露营桌" --pretty`);
1589
+ console.log(` npx -y ${PACKAGE_SPEC} wechat search --keyword "露营" --pretty`);
1539
1590
  console.log(" Call the WeChat Channels / 视频号 video search tool directly and print JSON.");
1540
1591
  console.log("");
1541
1592
  console.log(` npx -y ${PACKAGE_SPEC} wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty`);
@@ -1643,8 +1694,6 @@ function printHelp() {
1643
1694
  console.log(" --profile-url <profile-url-or-share-text>");
1644
1695
  console.log(" --user-id <user_id>");
1645
1696
  console.log(" --sec-user-id <sec_user_id>");
1646
- console.log(" --page <number>");
1647
- console.log(" XHS search only. Douyin, Kuaishou, Weibo, and WeChat Channels search do not accept --page.");
1648
1697
  console.log(" --pages <number>");
1649
1698
  console.log(" Fetch and merge N pages from the current starting point for search, comments, replies, creator content lists, and creator series.");
1650
1699
  console.log(" --all");
@@ -1667,7 +1716,7 @@ function printHelp() {
1667
1716
  console.log(" --content-type <all|video|image>");
1668
1717
  console.log(" Douyin content type filter; omit for all content types.");
1669
1718
  console.log(" --page-token <token>");
1670
- console.log(" Continue token-paginated commands with the complete returned next_page_token. For Douyin, Kuaishou, Weibo, and WeChat Channels search, omit it on the first request.");
1719
+ console.log(" Continue token-paginated commands with the complete returned next_page_token. For search, omit it on the first request.");
1671
1720
  console.log(" --sort-type <all|latest|popular>");
1672
1721
  console.log(" WeChat Channels / 视频号 search sort; omit for default sort.");
1673
1722
  console.log(" --duration-range <all|under_5_min|between_5_and_20_min|over_20_min>");
@@ -2182,6 +2231,18 @@ function buildWeiboOperation(action, options) {
2182
2231
  buildWeiboRepliesCall(options),
2183
2232
  PLATFORMS.weibo
2184
2233
  );
2234
+ case "likers":
2235
+ return buildDirectOperation(
2236
+ "likers",
2237
+ buildWeiboPostListByPostIdCall(options, "likers", "weibo_get_post_liker_list_by_post_id"),
2238
+ PLATFORMS.weibo
2239
+ );
2240
+ case "reposts":
2241
+ return buildDirectOperation(
2242
+ "reposts",
2243
+ buildWeiboPostListByPostIdCall(options, "reposts", "weibo_get_post_repost_list_by_post_id"),
2244
+ PLATFORMS.weibo
2245
+ );
2185
2246
  case "user-info":
2186
2247
  return buildDirectOperation(
2187
2248
  "user-info",
@@ -2313,10 +2374,6 @@ function buildXhsSearchCall(options) {
2313
2374
  if (!options.keyword) {
2314
2375
  throw new Error("Missing --keyword for xhs search.");
2315
2376
  }
2316
- const page =
2317
- options.page === undefined
2318
- ? 1
2319
- : parsePositiveIntegerOption(options.page, "--page");
2320
2377
  const sortType = parseSemanticOption(
2321
2378
  options.sortType || "general",
2322
2379
  "--sort-type",
@@ -2340,8 +2397,10 @@ function buildXhsSearchCall(options) {
2340
2397
  }
2341
2398
  const toolArguments = {
2342
2399
  keyword: options.keyword,
2343
- page,
2344
2400
  };
2401
+ if (options.pageToken) {
2402
+ toolArguments.page_token = options.pageToken;
2403
+ }
2345
2404
  if (options.sortType !== undefined) {
2346
2405
  toolArguments.sort_type = sortType;
2347
2406
  }
@@ -2584,6 +2643,22 @@ function buildWeiboRepliesCall(options) {
2584
2643
  };
2585
2644
  }
2586
2645
 
2646
+ function buildWeiboPostListByPostIdCall(options, action, tool) {
2647
+ if (!options.postId) {
2648
+ throw new Error(`Missing --post-id for weibo ${action}.`);
2649
+ }
2650
+ const toolArguments = {
2651
+ post_id: options.postId,
2652
+ };
2653
+ if (options.pageToken) {
2654
+ toolArguments.page_token = options.pageToken;
2655
+ }
2656
+ return {
2657
+ tool,
2658
+ toolArguments,
2659
+ };
2660
+ }
2661
+
2587
2662
  function buildWechatCommentsCall(options) {
2588
2663
  const hasObjectInput = Boolean(options.objectId || options.objectNonceId);
2589
2664
  const hasUrlInput = Boolean(options.url);
@@ -2762,7 +2837,7 @@ async function collectPaginatedDirectData(
2762
2837
  }
2763
2838
  if (markerRepeated) {
2764
2839
  throw new Error(
2765
- `Pagination stopped because ${nextMarkerName(currentOperation)} repeated.`
2840
+ `Pagination stopped because ${nextMarkerName()} repeated.`
2766
2841
  );
2767
2842
  }
2768
2843
  seenNextMarkers.add(markerKey);
@@ -2978,18 +3053,12 @@ function reachedMaxItems(items, maxItems) {
2978
3053
  }
2979
3054
 
2980
3055
  function readNextPageMarker(operation, pageData) {
2981
- if (operation.platform.id === "xhs" && operation.operation === "search") {
2982
- const page = pageData?.next_page;
2983
- return page === undefined || page === null || page === "" ? undefined : page;
2984
- }
2985
3056
  const token = pageData?.next_page_token;
2986
3057
  return typeof token === "string" && token ? token : undefined;
2987
3058
  }
2988
3059
 
2989
- function nextMarkerName(operation) {
2990
- return operation.platform.id === "xhs" && operation.operation === "search"
2991
- ? "next_page"
2992
- : "next_page_token";
3060
+ function nextMarkerName() {
3061
+ return "next_page_token";
2993
3062
  }
2994
3063
 
2995
3064
  function initialPaginationMarkers(operation) {
@@ -2998,19 +3067,13 @@ function initialPaginationMarkers(operation) {
2998
3067
  }
2999
3068
 
3000
3069
  function currentPageMarker(operation) {
3001
- if (operation.platform.id === "xhs" && operation.operation === "search") {
3002
- return operation.arguments.page;
3003
- }
3004
3070
  return operation.arguments.page_token;
3005
3071
  }
3006
3072
 
3007
3073
  function operationWithNextPageMarker(operation, nextMarker) {
3008
3074
  const nextOperation = cloneDirectOperation(operation);
3009
- if (operation.platform.id === "xhs" && operation.operation === "search") {
3010
- nextOperation.arguments.page = nextMarker;
3011
- } else {
3012
- nextOperation.arguments.page_token = nextMarker;
3013
- }
3075
+ nextOperation.arguments.page_token = nextMarker;
3076
+ delete nextOperation.arguments.page;
3014
3077
  return nextOperation;
3015
3078
  }
3016
3079
 
@@ -3029,11 +3092,8 @@ function buildPaginatedData({
3029
3092
  page_count: pageCount,
3030
3093
  item_count: items.length,
3031
3094
  };
3032
- if (operation.platform.id === "xhs" && operation.operation === "search") {
3033
- data.next_page = nextMarker ?? null;
3034
- } else {
3035
- data.next_page_token = nextMarker || "";
3036
- }
3095
+ delete data.next_page;
3096
+ data.next_page_token = nextMarker || "";
3037
3097
  return data;
3038
3098
  }
3039
3099
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socialdatax-skills",
3
- "version": "0.2.9",
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",
@@ -39,6 +39,10 @@
39
39
  "social-insights",
40
40
  "social-media",
41
41
  "media-search",
42
+ "media-transcript",
43
+ "speech-to-text",
44
+ "transcript",
45
+ "video-transcript",
42
46
  "content-analysis",
43
47
  "creator-analytics",
44
48
  "kuaishou",
@@ -54,9 +58,9 @@
54
58
  "wechat-channels-data",
55
59
  "wechat-channels-search"
56
60
  ],
57
- "homepage": "https://socialdatax.52choujiang.com",
61
+ "homepage": "https://socialdatax.com",
58
62
  "bugs": {
59
- "url": "https://socialdatax.52choujiang.com"
63
+ "url": "https://socialdatax.com"
60
64
  },
61
65
  "repository": {
62
66
  "type": "git",
@@ -15,7 +15,7 @@ metadata:
15
15
  package: "socialdatax-skills"
16
16
  bins: []
17
17
  emoji: "💬"
18
- homepage: "https://socialdatax.52choujiang.com/?from=npm"
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.52choujiang.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.52choujiang.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
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
 
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "Media Comments"
3
3
  short_description: "Fetch social comments"
4
- default_prompt: "Use $media-comments to fetch and analyze XHS comments/replies or Douyin comments/replies."
4
+ default_prompt: "Use $media-comments to fetch and analyze XHS, Douyin, Kuaishou, Weibo, or WeChat Channels comments and replies."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true
@@ -15,7 +15,7 @@ metadata:
15
15
  package: "socialdatax-skills"
16
16
  bins: []
17
17
  emoji: "📄"
18
- homepage: "https://socialdatax.52choujiang.com/?from=npm"
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.52choujiang.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.52choujiang.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
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
 
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "Media Detail"
3
3
  short_description: "Read content details"
4
- default_prompt: "Use $media-detail to read structured details and metrics for supported social media content."
4
+ default_prompt: "Use $media-detail to read structured details and metrics for supported XHS, Douyin, Kuaishou, Weibo, or WeChat Channels content."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true
@@ -15,7 +15,7 @@ metadata:
15
15
  package: "socialdatax-skills"
16
16
  bins: []
17
17
  emoji: "🔍"
18
- homepage: "https://socialdatax.52choujiang.com/?from=npm"
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.52choujiang.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.52choujiang.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
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 <number>`: 1-based page number; use `1` for the first page and only increase it when continuing pagination.
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 `next_page`.
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
- If MCP tools are already available in the current agent, call `xhs_search_notes` with:
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
- - `page`: optional 1-based page number; use `1` for the first page.
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
- Continue XHS pagination only when `next_page` is not `null`, and keep the same `keyword`, `sort_type`, `note_type`, and `publish_time_range` while changing only `page`.
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:
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "Media Search"
3
3
  short_description: "Search content by keyword"
4
- default_prompt: "Use $media-search to search supported social media content by keyword and choose an appropriate sort when useful."
4
+ default_prompt: "Use $media-search to search supported social media content by keyword across XHS, Douyin, Kuaishou, Weibo, and WeChat Channels."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: "media-transcript"
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
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - "SOCIALDATAX_API_KEY"
9
+ bins:
10
+ - "node"
11
+ - "npm"
12
+ primaryEnv: "SOCIALDATAX_API_KEY"
13
+ install:
14
+ - kind: "node"
15
+ package: "socialdatax-skills"
16
+ bins: []
17
+ emoji: "🎙️"
18
+ homepage: "https://socialdatax.com/?from=npm"
19
+ ---
20
+ <!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
21
+
22
+ # Media Transcript
23
+
24
+ Use this skill when the user wants video speech-to-text, 口播转文字, transcript extraction, spoken-word extraction, or to check an existing transcript job for supported social media content.
25
+
26
+ Current platform support:
27
+
28
+ - Xiaohongshu / XHS / RedNote video note speech-to-text transcript jobs through the `xhs_*video_speech_text*` tools.
29
+ - Douyin / 抖音 video work speech-to-text transcript jobs through the `douyin_*video_speech_text*` tools.
30
+ - Kuaishou / 快手 video work speech-to-text transcript jobs through the `kuaishou_*video_speech_text*` tools.
31
+ - Weibo / 微博 video post speech-to-text transcript jobs through the `weibo_*video_speech_text*` tools.
32
+ - WeChat Channels / 视频号 video speech-to-text transcript jobs through the `wechat_*video_speech_text*` tools.
33
+
34
+ ## API Key
35
+
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
+
39
+ Required arguments:
40
+
41
+ - Use a submit-by-URL tool when the user provides a content link, short link, or share text.
42
+ - Use a submit-by-ID tool only when the platform content ID is already known: XHS `note_id`, Douyin `aweme_id`, Kuaishou `photo_id`, Weibo `post_id`, or WeChat Channels / 视频号 `encrypted_object_id`.
43
+ - Use the matching get-job tool with `job_id` when continuing or checking an existing transcript job.
44
+
45
+ These video speech-to-text transcript / 口播转文字 workflows are MCP-only and not available through the direct CLI.
46
+ Submit tools may wait briefly after creating the job. If the transcript is not ready, return the `job_id` and next action instead of starting a second job.
47
+
48
+ ## Safety Boundary
49
+
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.
51
+
52
+ ## MCP Tools
53
+
54
+ If MCP tools are already available in the current agent, choose the platform-specific submit tool by entrypoint:
55
+ - XHS: `xhs_submit_video_speech_text_by_note_url`, `xhs_submit_video_speech_text_by_note_id`, `xhs_get_video_speech_text_job`.
56
+ - Douyin: `douyin_submit_video_speech_text_by_video_url`, `douyin_submit_video_speech_text_by_aweme_id`, `douyin_get_video_speech_text_job`.
57
+ - Kuaishou: `kuaishou_submit_video_speech_text_by_video_url`, `kuaishou_submit_video_speech_text_by_photo_id`, `kuaishou_get_video_speech_text_job`.
58
+ - Weibo: `weibo_submit_video_speech_text_by_post_url`, `weibo_submit_video_speech_text_by_post_id`, `weibo_get_video_speech_text_job`.
59
+ - WeChat Channels / 视频号: `wechat_submit_video_speech_text_by_video_url`, `wechat_submit_video_speech_text_by_encrypted_object_id`, `wechat_get_video_speech_text_job`.
60
+ Do not start a duplicate transcript job only to poll status. Use the platform get-job tool with the returned `job_id`.
61
+
62
+ MCP-only tools not available through the direct CLI:
63
+
64
+ - `xhs_submit_video_speech_text_by_note_url`
65
+ - `xhs_submit_video_speech_text_by_note_id`
66
+ - `xhs_get_video_speech_text_job`
67
+ - `douyin_submit_video_speech_text_by_video_url`
68
+ - `douyin_submit_video_speech_text_by_aweme_id`
69
+ - `douyin_get_video_speech_text_job`
70
+ - `kuaishou_submit_video_speech_text_by_video_url`
71
+ - `kuaishou_submit_video_speech_text_by_photo_id`
72
+ - `kuaishou_get_video_speech_text_job`
73
+ - `weibo_submit_video_speech_text_by_post_url`
74
+ - `weibo_submit_video_speech_text_by_post_id`
75
+ - `weibo_get_video_speech_text_job`
76
+ - `wechat_submit_video_speech_text_by_video_url`
77
+ - `wechat_submit_video_speech_text_by_encrypted_object_id`
78
+ - `wechat_get_video_speech_text_job`
79
+
80
+ ## Output Guidance
81
+
82
+ Return the transcript text when available. When a job is still running, include the `job_id`, status, and next action so the user or agent can check later.
83
+ If the result says no processable video resource is available or the job failed, report that as the observed job result instead of retrying with another platform.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Media Transcript"
3
+ short_description: "Submit video transcripts"
4
+ default_prompt: "Use $media-transcript to submit and check video speech-to-text transcript jobs for XHS, Douyin, Kuaishou, Weibo, and WeChat Channels content."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -15,7 +15,7 @@ metadata:
15
15
  package: "socialdatax-skills"
16
16
  bins: []
17
17
  emoji: "👤"
18
- homepage: "https://socialdatax.52choujiang.com/?from=npm"
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.52choujiang.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.52choujiang.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
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
 
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "Media User Info"
3
3
  short_description: "Retrieve creator profiles"
4
- default_prompt: "Use $media-user-info to retrieve creator profile information from a user ID, profile URL, short link, or share text."
4
+ default_prompt: "Use $media-user-info to retrieve creator profile information from supported XHS, Douyin, Kuaishou, Weibo, or WeChat Channels user IDs, profile URLs, short links, or share text."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true
@@ -15,7 +15,7 @@ metadata:
15
15
  package: "socialdatax-skills"
16
16
  bins: []
17
17
  emoji: "🗂️"
18
- homepage: "https://socialdatax.52choujiang.com/?from=npm"
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.52choujiang.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.52choujiang.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
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
 
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "Media User Posts"
3
3
  short_description: "Retrieve creator content"
4
- default_prompt: "Use $media-user-posts to retrieve a creator's published content list from a platform user ID, profile URL, short link, or share text."
4
+ default_prompt: "Use $media-user-posts to retrieve supported XHS, Douyin, Kuaishou, Weibo, or WeChat Channels creator content lists from a platform user ID, profile URL, short link, or share text."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true
@@ -15,7 +15,7 @@ metadata:
15
15
  package: "socialdatax-skills"
16
16
  bins: []
17
17
  emoji: "🔎"
18
- homepage: "https://socialdatax.52choujiang.com/?from=npm"
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.52choujiang.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.52choujiang.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
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
 
@@ -137,6 +137,8 @@ npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url
137
137
  npx -y socialdatax-skills@latest kuaishou replies --photo-id "<photo_id>" --comment-id "<comment_id>" --pretty
138
138
  npx -y socialdatax-skills@latest weibo detail --post-url "<weibo_post_url_or_share_text>" --pretty
139
139
  npx -y socialdatax-skills@latest weibo comments --post-url "<weibo_post_url_or_share_text>" --pretty
140
+ npx -y socialdatax-skills@latest weibo likers --post-id "<post_id>" --pretty
141
+ npx -y socialdatax-skills@latest weibo reposts --post-id "<post_id>" --pretty
140
142
  npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
141
143
  npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty
142
144
  npx -y socialdatax-skills@latest weibo replies --post-id "<post_id>" --comment-id "<comment_id>" --pretty
@@ -146,7 +148,7 @@ npx -y socialdatax-skills@latest wechat user-posts --url "<wechat_video_url_or_s
146
148
  npx -y socialdatax-skills@latest wechat replies --object-id "<object_id>" --object-nonce-id "<object_nonce_id>" --comment-id "<comment_id>" --pretty
147
149
  ```
148
150
 
149
- For hot topics, content URLs, profile URLs, comment 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.
151
+ 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.
150
152
 
151
153
  Required arguments:
152
154
 
@@ -161,8 +163,8 @@ Required arguments:
161
163
 
162
164
  Optional arguments:
163
165
 
164
- - XHS numeric `page` is only for XHS search; Douyin, Kuaishou, Weibo, and WeChat Channels search use `page_token` only and do not accept `page`. Omit `page_token` on the first token-paginated search request, and continue only with the complete returned `next_page_token` from the same chain.
165
- - `--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.
166
168
  - `--pages <n>`: fetch and merge N pages for search, comments, replies, creator posts, or creator series.
167
169
  - `--all`: fetch comments, replies, creator posts, or creator series until `next_page_token` is empty; do not use it for search.
168
170
  - `--max-items <n>`: stop after collecting N primary results.
@@ -195,11 +197,11 @@ MCP tools matching the direct CLI commands above:
195
197
  - 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`
196
198
  - 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`
197
199
  - KUAISHOU: `kuaishou_get_hot_search_list`, `kuaishou_search_videos`, `kuaishou_get_video_detail_by_photo_id`, `kuaishou_get_video_comments_by_photo_id`, `kuaishou_get_user_info_by_user_id`, `kuaishou_get_user_posted_videos_by_user_id`, `kuaishou_get_video_detail_by_url`, `kuaishou_get_video_comments_by_url`, `kuaishou_get_user_info_by_profile_url`, `kuaishou_get_user_posted_videos_by_profile_url`, `kuaishou_get_video_comment_replies_by_comment_id`
198
- - 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_user_info_by_profile_url`, `weibo_get_user_posts_by_profile_url`, `weibo_get_post_comment_replies_by_comment_id`
200
+ - 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`
199
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`
200
202
 
201
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.
202
- Use numeric `page` only for `xhs_search_notes`. Do not pass `page` to `douyin_search_videos`, `kuaishou_search_videos`, `weibo_search_posts`, or `wechat_search_videos`; omit `page_token` on the first request and pass only the complete returned `next_page_token` when continuing the same chain.
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.
203
205
 
204
206
  ## Output Guidance
205
207
 
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "SocialDataX Content Research"
3
- short_description: "Research XHS and Douyin content"
4
- default_prompt: "Use $socialdatax-content-research-assistant to research Xiaohongshu, XHS, RedNote, and Douyin content across search, details, comments, and creators."
3
+ short_description: "Research cross-platform social content"
4
+ default_prompt: "Use $socialdatax-content-research-assistant to research Xiaohongshu / XHS / RedNote, Douyin, Kuaishou, Weibo, and WeChat Channels content across search, details, comments, and creators."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true