socialdatax-skills 0.2.19 → 0.2.21

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  This public package provides the unified skill installer and direct CLI helper for SocialDataX services.
4
4
 
5
- The current public tools support 小红书 / Xiaohongshu / XHS / RedNote, 抖音 / Douyin, 快手 / Kuaishou / Kwai, 微博 / Weibo, 视频号 / WeChat Channels, and 微信公众号 / WeChat Official Account article content research and analysis workflows, plus SocialDataX 敏感检测 text checks. The public skill layer is intentionally named by capability so supported services can evolve without changing the installation model.
5
+ The current public tools support 小红书 / Xiaohongshu / XHS / RedNote, 抖音 / Douyin, 快手 / Kuaishou / Kwai, 微博 / Weibo, 视频号 / WeChat Channels, and 微信公众号 / WeChat Official Account article content research and analysis workflows, plus 敏感词检测 / 违禁词检查 text checks. The public skill layer is intentionally named by capability so supported services can evolve without changing the installation model.
6
6
 
7
7
  - direct `npx` JSON commands for agents that can run shell commands
8
8
  - AgentSkills-compatible installers split by capability for OpenClaw, Hermes Agent, Codex, Claude Code, and general agent skill directories
@@ -42,7 +42,9 @@ Common search phrases for this skill package:
42
42
  - `mp.weixin.qq.com article detail`
43
43
  - `SocialDataX content research`
44
44
  - `content research assistant`
45
- - `敏感检测 SocialDataX`
45
+ - `敏感词检测`
46
+ - `违禁词检测`
47
+ - `文案发布前检查`
46
48
  - `sensitive check skill`
47
49
  - `content safety skill`
48
50
  - `text safety check`
@@ -54,7 +56,7 @@ Common search phrases for this skill package:
54
56
  - Kuaishou hosted MCP endpoint: `https://mcp.socialdatax.com/kuaishou/mcp`
55
57
  - Weibo hosted MCP endpoint: `https://mcp.socialdatax.com/weibo/mcp`
56
58
  - WeChat / 微信 hosted MCP endpoint: `https://mcp.socialdatax.com/wechat/mcp`
57
- - Sensitive Check hosted MCP endpoint: `https://mcp.socialdatax.com/sensitive-check/mcp`
59
+ - Sensitive Words Check hosted MCP endpoint: `https://mcp.socialdatax.com/sensitive-check/mcp`
58
60
  - Hosted transport: `streamable-http`
59
61
  - Authentication: `Authorization: Bearer <SOCIALDATAX_API_KEY>`
60
62
  - Website: <https://socialdatax.com>
@@ -68,10 +70,10 @@ Common search phrases for this skill package:
68
70
  - Weibo future platform MCP registry name: `com.socialdatax/weibo-insights`
69
71
  - WeChat / 微信 current platform MCP registry name: `com.52choujiang/wechat-channels-insights`
70
72
  - WeChat / 微信 future platform MCP registry name: `com.socialdatax/wechat-channels-insights`
71
- - Sensitive Check MCP server name: `sensitive-check`
72
- - Sensitive Check future MCP registry name: `com.socialdatax/sensitive-check`
73
+ - Sensitive Words Check MCP server name: `sensitive-check`
74
+ - Sensitive Words Check future MCP registry name: `com.socialdatax/sensitive-check`
73
75
  - Unified MCP registry name: none; this package installs skills and calls explicit platform services.
74
- - Current public capability version: `0.2.19`
76
+ - Current public capability version: `0.2.21`
75
77
 
76
78
  ## Direct CLI
77
79
 
@@ -90,6 +92,9 @@ npx -y socialdatax-skills@latest xhs sub-comments --note-id "<note_id>" --commen
90
92
  npx -y socialdatax-skills@latest xhs user-info --user-id "<user_id>" --pretty
91
93
  npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --pretty
92
94
  npx -y socialdatax-skills@latest xhs user-posts --user-id "<user_id>" --since-days 30 --pretty
95
+ npx -y socialdatax-skills@latest xhs transcript --url "<note_url_or_share_text>" --pretty
96
+ npx -y socialdatax-skills@latest xhs transcript --note-id "<note_id>" --pretty
97
+ npx -y socialdatax-skills@latest xhs transcript --job-id "<job_id>" --pretty
93
98
  npx -y socialdatax-skills@latest douyin hot-search --pretty
94
99
  npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
95
100
  npx -y socialdatax-skills@latest douyin detail --aweme-id "<aweme_id>" --pretty
@@ -102,6 +107,9 @@ npx -y socialdatax-skills@latest douyin user-posts --sec-user-id "<sec_user_id>"
102
107
  npx -y socialdatax-skills@latest douyin user-posts --profile-url "<profile_url_or_share_text>" --pretty
103
108
  npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
104
109
  npx -y socialdatax-skills@latest douyin user-series --profile-url "<profile_url_or_share_text>" --pretty
110
+ npx -y socialdatax-skills@latest douyin transcript --url "<douyin_content_url_or_share_text>" --pretty
111
+ npx -y socialdatax-skills@latest douyin transcript --aweme-id "<aweme_id>" --pretty
112
+ npx -y socialdatax-skills@latest douyin transcript --job-id "<job_id>" --pretty
105
113
  npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
106
114
  npx -y socialdatax-skills@latest kuaishou user-search --keyword "露营" --pretty
107
115
  npx -y socialdatax-skills@latest kuaishou detail --photo-id "<photo_id>" --pretty
@@ -114,6 +122,9 @@ npx -y socialdatax-skills@latest kuaishou user-info --user-id "<user_id>" --pret
114
122
  npx -y socialdatax-skills@latest kuaishou user-info --profile-url "<profile_url_or_share_text>" --pretty
115
123
  npx -y socialdatax-skills@latest kuaishou user-posts --user-id "<user_id>" --pretty
116
124
  npx -y socialdatax-skills@latest kuaishou user-posts --profile-url "<profile_url_or_share_text>" --pretty
125
+ npx -y socialdatax-skills@latest kuaishou transcript --url "<kuaishou_content_url_or_share_text>" --pretty
126
+ npx -y socialdatax-skills@latest kuaishou transcript --photo-id "<photo_id>" --pretty
127
+ npx -y socialdatax-skills@latest kuaishou transcript --job-id "<job_id>" --pretty
117
128
  npx -y socialdatax-skills@latest weibo hot-search --pretty
118
129
  npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
119
130
  npx -y socialdatax-skills@latest weibo detail --post-id "<post_id>" --pretty
@@ -128,6 +139,9 @@ npx -y socialdatax-skills@latest weibo user-info --user-id "<user_id>" --pretty
128
139
  npx -y socialdatax-skills@latest weibo user-info --profile-url "<profile_url_or_share_text>" --pretty
129
140
  npx -y socialdatax-skills@latest weibo user-posts --user-id "<user_id>" --pretty
130
141
  npx -y socialdatax-skills@latest weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty
142
+ npx -y socialdatax-skills@latest weibo transcript --post-url "<weibo_post_url_or_share_text>" --pretty
143
+ npx -y socialdatax-skills@latest weibo transcript --post-id "<post_id>" --pretty
144
+ npx -y socialdatax-skills@latest weibo transcript --job-id "<job_id>" --pretty
131
145
  npx -y socialdatax-skills@latest wechat hot-search --pretty
132
146
  npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
133
147
  npx -y socialdatax-skills@latest wechat detail --encrypted-object-id "<encrypted_object_id>" --pretty
@@ -140,6 +154,9 @@ npx -y socialdatax-skills@latest wechat replies --object-id "<object_id>" --obje
140
154
  npx -y socialdatax-skills@latest wechat user-info --user-id "<finder_user_id>" --pretty
141
155
  npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --pretty
142
156
  npx -y socialdatax-skills@latest wechat user-posts --url "<wechat_video_url_or_share_text>" --pretty
157
+ npx -y socialdatax-skills@latest wechat transcript --url "<wechat_video_url_or_share_text>" --pretty
158
+ npx -y socialdatax-skills@latest wechat transcript --encrypted-object-id "<encrypted_object_id>" --pretty
159
+ npx -y socialdatax-skills@latest wechat transcript --job-id "<job_id>" --pretty
143
160
  npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty
144
161
  ```
145
162
 
@@ -159,6 +176,8 @@ For commands that accept `--page-token`, continue only with the complete returne
159
176
 
160
177
  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.
161
178
 
179
+ Transcript commands submit a bounded video speech-to-text job or check an existing job. Pass exactly one entrypoint for each call: URL/share text, platform content ID, or `--job-id`. Completed get-job responses return transcript plus content context, not summary.
180
+
162
181
  Generated Agent Skill examples include `--source-client socialdatax-skills --source-platform <marketplace> --source-skill <skill-slug>` so SocialDataX can attribute direct CLI usage to the current marketplace Skill. Keep those values unchanged when running commands from a Skill; omit them for ad hoc CLI use. The direct CLI also accepts `SOCIALDATAX_SOURCE_CLIENT`, `SOCIALDATAX_SOURCE_PLATFORM`, and `SOCIALDATAX_SOURCE_SKILL` as environment-variable fallbacks.
163
182
 
164
183
  XHS, Douyin, Kuaishou, Weibo, and WeChat Channels search use `--keyword` and optional `--page-token`.
@@ -258,15 +277,20 @@ npx -y socialdatax-skills@latest install media-search --target claude-code
258
277
  npx -y socialdatax-skills@latest install media-search --target claude-code --scope workspace
259
278
  npx -y socialdatax-skills@latest xhs search --keyword "露营" --pretty
260
279
  npx -y socialdatax-skills@latest xhs hot-search --pretty
280
+ npx -y socialdatax-skills@latest xhs transcript --url "<note_url_or_share_text>" --pretty
261
281
  npx -y socialdatax-skills@latest douyin hot-search --pretty
262
282
  npx -y socialdatax-skills@latest douyin search --keyword "露营" --pretty
263
283
  npx -y socialdatax-skills@latest douyin user-series --sec-user-id "<sec_user_id>" --pretty
284
+ npx -y socialdatax-skills@latest douyin transcript --aweme-id "<aweme_id>" --pretty
264
285
  npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
286
+ npx -y socialdatax-skills@latest kuaishou transcript --photo-id "<photo_id>" --pretty
265
287
  npx -y socialdatax-skills@latest weibo hot-search --pretty
266
288
  npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
289
+ npx -y socialdatax-skills@latest weibo transcript --post-id "<post_id>" --pretty
267
290
  npx -y socialdatax-skills@latest wechat hot-search --pretty
268
291
  npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
269
292
  npx -y socialdatax-skills@latest wechat article --url "<mp_article_url_or_share_text>" --pretty
293
+ npx -y socialdatax-skills@latest wechat transcript --encrypted-object-id "<encrypted_object_id>" --pretty
270
294
  npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty
271
295
  ```
272
296
 
@@ -276,10 +300,10 @@ Available skills:
276
300
  - `media-search`: search social media content by keyword; supports XHS notes, Douyin works, Kuaishou works, Weibo posts, and WeChat Channels videos.
277
301
  - `media-detail`: read structured content details and metrics; supports XHS notes, Douyin works, Kuaishou works, Weibo posts, WeChat Channels videos, and WeChat Official Account articles.
278
302
  - `media-comments`: fetch and analyze XHS comments/replies, Douyin comments/replies, Kuaishou comments/replies, Weibo comments/replies, and WeChat Channels comments/replies.
279
- - `media-transcript`: submit and check video 口播转文字 / speech-to-text transcript jobs through hosted MCP tools; supports XHS, Douyin, Kuaishou, Weibo, and WeChat Channels.
303
+ - `media-transcript`: submit and check video 口播转文字 / speech-to-text transcript jobs through direct CLI commands or hosted MCP tools; supports XHS, Douyin, Kuaishou, Weibo, and WeChat Channels.
280
304
  - `media-user-info`: retrieve creator profile information; supports XHS, Douyin, Kuaishou, Weibo, and WeChat Channels creators.
281
305
  - `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.
282
- - `sensitive-check`: run 敏感检测 text checks; supports `generic`, `xhs`, `douyin`, and `kuaishou` platform contexts.
306
+ - `sensitive-check`: run 敏感词检测 / 违禁词检查 text checks; supports `generic`, `xhs`, `douyin`, and `kuaishou` platform contexts.
283
307
 
284
308
  Default install locations:
285
309
 
@@ -297,7 +321,7 @@ If no skill name is provided, all skills are installed. If a destination already
297
321
 
298
322
  ## Workflow Scope
299
323
 
300
- The current platform MCP services are designed for social media content intelligence workflows. Some tools read public content directly; some submit bounded analysis jobs such as video speech-to-text transcript. They do not provide account login, posting, editing, liking, commenting, or other account actions.
324
+ The current direct CLI and platform MCP services are designed for social media content intelligence workflows. Some commands read public content directly; some submit bounded analysis jobs such as video speech-to-text transcript. They do not provide account login, posting, editing, liking, commenting, or other account actions.
301
325
 
302
326
  Current XHS workflows include:
303
327
 
@@ -309,7 +333,7 @@ Current XHS workflows include:
309
333
  - Fetch paginated replies under a first-level comment.
310
334
  - Read creator profile data from a profile link, short link, share text, or user ID.
311
335
  - Fetch paginated creator note lists from a user ID, profile link, short link, or share text for content style and account research.
312
- - Submit and check video note 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
336
+ - Submit and check video note 口播转文字 / speech-to-text transcript jobs; submit tools 提交后最多等待 15 秒.
313
337
 
314
338
  Current Kuaishou workflows include:
315
339
 
@@ -321,7 +345,7 @@ Current Kuaishou workflows include:
321
345
  - Continue Kuaishou list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
322
346
  - Read creator profile data from a non-empty user_id, profile link, short link, or share text. Live/fw-user profile shares are supported for profile data; successful results return a reusable non-empty user_id.
323
347
  - Fetch paginated creator work lists from a non-empty user_id, or from a profile link, short link, or share text that resolves directly to a non-empty user_id. For live/fw-user profile shares, call creator profile first and use the returned non-empty user_id.
324
- - Submit and check video work 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
348
+ - Submit and check video work 口播转文字 / speech-to-text transcript jobs; submit tools 提交后最多等待 15 秒.
325
349
 
326
350
  Current Douyin workflows include:
327
351
 
@@ -334,7 +358,7 @@ Current Douyin workflows include:
334
358
  - Read creator profile data from a profile link, short link, share text, or sec_user_id.
335
359
  - Fetch paginated creator work lists from a sec_user_id, profile link, short link, or share text.
336
360
  - Fetch paginated creator short-drama series lists from a sec_user_id, profile link, short link, or share text.
337
- - Submit and check video work 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
361
+ - Submit and check video work 口播转文字 / speech-to-text transcript jobs; submit tools 提交后最多等待 15 秒.
338
362
 
339
363
  Current Weibo workflows include:
340
364
 
@@ -346,7 +370,7 @@ Current Weibo workflows include:
346
370
  - Continue Weibo list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
347
371
  - Read creator profile data from a profile link, short link, share text, or user_id.
348
372
  - Fetch paginated creator post lists from a user_id, profile link, short link, or share text.
349
- - Submit and check Weibo video 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
373
+ - Submit and check Weibo video 口播转文字 / speech-to-text transcript jobs; submit tools 提交后最多等待 15 秒.
350
374
 
351
375
  Current WeChat / 微信 workflows include:
352
376
 
@@ -359,14 +383,14 @@ Current WeChat / 微信 workflows include:
359
383
  - Continue WeChat Channels list pagination only when `next_page_token` is non-empty; an empty string means there are no more results to request.
360
384
  - Read creator profile data from a finder user_id.
361
385
  - Fetch paginated creator video lists from a finder user_id or a video link/share text.
362
- - Submit and check WeChat Channels / 视频号 video 口播转文字 / speech-to-text transcript jobs; submit tools 提交完成后最多短等 15 秒.
386
+ - Submit and check WeChat Channels / 视频号 video 口播转文字 / speech-to-text transcript jobs; submit tools 提交后最多等待 15 秒.
363
387
 
364
- Current Sensitive Check workflows include:
388
+ Current Sensitive Words Check workflows include:
365
389
 
366
- - Check draft text for 敏感检测 / sensitive-content risks before publishing.
390
+ - Check draft text for 敏感词检测 / 违禁词检查 / sensitive-content risks before publishing.
367
391
  - Choose a platform context with `--platform generic`, `--platform xhs`, `--platform douyin`, or `--platform kuaishou`.
368
392
  - Return structured fields such as `violation`, `risk_level`, `types`, `highlights`, `summary`, `platform`, and `suggestions` when available.
369
- - Text checks are read-only. Image sensitive detection is reserved for a future separate tool.
393
+ - Text checks are read-only. The service records submitted text and structured detection results for history, billing, and troubleshooting. Image sensitive detection is reserved for a future separate tool.
370
394
 
371
395
  ## XHS Tools
372
396
 
@@ -385,7 +409,7 @@ Current Sensitive Check workflows include:
385
409
  | `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. |
386
410
  | `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. |
387
411
  | `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. |
388
- | `xhs_get_video_speech_text_job` | Check an XHS speech-to-text transcript job by job_id without creating a new task. |
412
+ | `xhs_get_video_speech_text_job` | Check an XHS speech-to-text transcript job by job_id without creating a new task. Returns transcript plus content context, not summary. |
389
413
 
390
414
  ## Douyin Tools
391
415
 
@@ -406,7 +430,7 @@ Current Sensitive Check workflows include:
406
430
  | `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. |
407
431
  | `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. |
408
432
  | `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. |
409
- | `douyin_get_video_speech_text_job` | Check a Douyin speech-to-text transcript job by job_id without creating a new task. |
433
+ | `douyin_get_video_speech_text_job` | Check a Douyin speech-to-text transcript job by job_id without creating a new task. Returns transcript plus content context, not summary. |
410
434
 
411
435
  ## Kuaishou Tools
412
436
 
@@ -425,7 +449,7 @@ Current Sensitive Check workflows include:
425
449
  | `kuaishou_get_user_posted_videos_by_profile_url` | Fetch a paginated list of works published by a creator from a profile link, short link, or share text that resolves directly to a non-empty user_id; for live/fw-user profile shares, call creator profile first and use the returned non-empty user_id. |
426
450
  | `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. |
427
451
  | `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. |
428
- | `kuaishou_get_video_speech_text_job` | Check a Kuaishou speech-to-text transcript job by job_id without creating a new task. |
452
+ | `kuaishou_get_video_speech_text_job` | Check a Kuaishou speech-to-text transcript job by job_id without creating a new task. Returns transcript plus content context, not summary. |
429
453
 
430
454
  ## Weibo Tools
431
455
 
@@ -444,7 +468,7 @@ Current Sensitive Check workflows include:
444
468
  | `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. |
445
469
  | `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. |
446
470
  | `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. |
447
- | `weibo_get_video_speech_text_job` | Check a Weibo speech-to-text transcript job by job_id without creating a new task. |
471
+ | `weibo_get_video_speech_text_job` | Check a Weibo speech-to-text transcript job by job_id without creating a new task. Returns transcript plus content context, not summary. |
448
472
 
449
473
  ## WeChat Tools
450
474
 
@@ -463,13 +487,13 @@ Current Sensitive Check workflows include:
463
487
  | `wechat_get_user_posted_videos_by_url` | Fetch a paginated list of videos published by a creator from a video link or share text. |
464
488
  | `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. |
465
489
  | `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. |
466
- | `wechat_get_video_speech_text_job` | Check a WeChat Channels / 视频号 speech-to-text transcript job by job_id without creating a new task. |
490
+ | `wechat_get_video_speech_text_job` | Check a WeChat Channels / 视频号 speech-to-text transcript job by job_id without creating a new task. Returns transcript plus content context, not summary. |
467
491
 
468
- ## Sensitive Check Tools
492
+ ## Sensitive Words Check Tools
469
493
 
470
494
  | Tool | Public purpose |
471
495
  | --- | --- |
472
- | `check_sensitive_text` | Check text for 敏感检测 / sensitive-content risks with `generic`, `xhs`, `douyin`, or `kuaishou` context. |
496
+ | `check_sensitive_text` | Check text for 敏感词检测 / 违禁词检查 / sensitive-content risks with `generic`, `xhs`, `douyin`, or `kuaishou` context. |
473
497
 
474
498
  ## Quick Start
475
499
 
@@ -485,7 +509,7 @@ npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
485
509
  npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty
486
510
  ```
487
511
 
488
- MCP client configuration belongs to platform or capability 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 / 微信, use the `wechat-channels-insights` listing; for 敏感检测, use the `sensitive-check` server.
512
+ MCP client configuration belongs to platform or capability 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 / 微信, use the `wechat-channels-insights` listing; for 敏感词检测 / 违禁词检查, use the `sensitive-check` server.
489
513
 
490
514
  Aily is treated as an OpenClaw / AgentSkills ecosystem channel for this package. Use the OpenClaw skill install flow for now; a dedicated `--target aily` will be added only after its official skill import or package format is confirmed.
491
515
 
@@ -501,7 +525,7 @@ Use the key as a Bearer token in the `Authorization` request header. Do not comm
501
525
 
502
526
  Public metadata files in this repository:
503
527
 
504
- - [skills](skills): AgentSkills-compatible skills split by capability and currently backed by XHS, Douyin, Kuaishou, Weibo, WeChat Channels, and Sensitive Check tools.
528
+ - [skills](skills): AgentSkills-compatible skills split by capability and currently backed by XHS, Douyin, Kuaishou, Weibo, WeChat Channels, and Sensitive Words Check tools.
505
529
 
506
530
  ## License
507
531
 
package/cli.mjs CHANGED
@@ -7,7 +7,7 @@ import { dirname, join, resolve } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
 
9
9
  const PACKAGE_NAME = "socialdatax-skills";
10
- const PACKAGE_VERSION = "0.2.19";
10
+ const PACKAGE_VERSION = "0.2.21";
11
11
  const PACKAGE_SPEC = `${PACKAGE_NAME}@latest`;
12
12
  const LOG_PREFIX = `[${PACKAGE_NAME}]`;
13
13
  const MIN_NODE_VERSION = "20.18.1";
@@ -25,6 +25,13 @@ const SOURCE_CLIENT_HEADER = "X-SocialDataX-Client";
25
25
  const SOURCE_PLATFORM_HEADER = "X-SocialDataX-Source-Platform";
26
26
  const SOURCE_SKILL_HEADER = "X-SocialDataX-Source-Skill";
27
27
  const SOURCE_ATTRIBUTION_PATTERN = /^[a-z0-9][a-z0-9-]{0,99}$/;
28
+ export const TRANSCRIPT_JOB_DESCRIPTION_SUFFIX =
29
+ "Returns transcript plus content context, not summary.";
30
+
31
+ export function buildTranscriptJobDescription(subject) {
32
+ return `Check ${subject} by job_id without starting a new task. ${TRANSCRIPT_JOB_DESCRIPTION_SUFFIX}`;
33
+ }
34
+
28
35
  const AVAILABLE_SKILLS = [
29
36
  {
30
37
  name: "socialdatax-content-research-assistant",
@@ -53,7 +60,7 @@ const AVAILABLE_SKILLS = [
53
60
  {
54
61
  name: "media-transcript",
55
62
  summary:
56
- "Submit and check video speech-to-text transcript jobs for XHS, Douyin, Kuaishou, Weibo, and WeChat Channels through hosted MCP tools.",
63
+ "Submit and check video speech-to-text transcript jobs for XHS, Douyin, Kuaishou, Weibo, and WeChat Channels.",
57
64
  emoji: "🎙️",
58
65
  },
59
66
  {
@@ -134,6 +141,7 @@ const XHS_DIRECT_ACTION_OPTIONS = {
134
141
  "sinceDays",
135
142
  "pretty",
136
143
  ],
144
+ transcript: ["url", "noteId", "jobId", "pretty"],
137
145
  };
138
146
  const XHS_DIRECT_ACTION_NAMES = Object.keys(XHS_DIRECT_ACTION_OPTIONS).join(", ");
139
147
  const XHS_OPTION_DISPLAY_NAMES = {
@@ -152,6 +160,7 @@ const XHS_OPTION_DISPLAY_NAMES = {
152
160
  includeReplies: "--include-replies",
153
161
  profileUrl: "--profile-url",
154
162
  userId: "--user-id",
163
+ jobId: "--job-id",
155
164
  };
156
165
  const XHS_SEARCH_SORT_TYPES = [
157
166
  "general",
@@ -213,6 +222,7 @@ const DOUYIN_DIRECT_ACTION_OPTIONS = {
213
222
  "pretty",
214
223
  ],
215
224
  "user-series": ["secUserId", "profileUrl", "pageToken", "pages", "all", "maxItems", "pretty"],
225
+ transcript: ["url", "awemeId", "jobId", "pretty"],
216
226
  };
217
227
  const DOUYIN_DIRECT_ACTION_NAMES = Object.keys(DOUYIN_DIRECT_ACTION_OPTIONS).join(", ");
218
228
  const DOUYIN_SEARCH_SORT_TYPES = ["general", "time_descending", "like_count_descending"];
@@ -241,6 +251,7 @@ const DOUYIN_OPTION_DISPLAY_NAMES = {
241
251
  awemeId: "--aweme-id",
242
252
  commentId: "--comment-id",
243
253
  secUserId: "--sec-user-id",
254
+ jobId: "--job-id",
244
255
  };
245
256
  const KUAISHOU_DIRECT_ACTION_OPTIONS = {
246
257
  search: ["keyword", "pageToken", "pages", "all", "maxItems", "sinceDays", "pretty"],
@@ -277,6 +288,7 @@ const KUAISHOU_DIRECT_ACTION_OPTIONS = {
277
288
  "sinceDays",
278
289
  "pretty",
279
290
  ],
291
+ transcript: ["url", "photoId", "jobId", "pretty"],
280
292
  };
281
293
  const KUAISHOU_DIRECT_ACTION_NAMES = Object.keys(KUAISHOU_DIRECT_ACTION_OPTIONS).join(", ");
282
294
  const KUAISHOU_OPTION_DISPLAY_NAMES = {
@@ -292,6 +304,7 @@ const KUAISHOU_OPTION_DISPLAY_NAMES = {
292
304
  photoId: "--photo-id",
293
305
  commentId: "--comment-id",
294
306
  userId: "--user-id",
307
+ jobId: "--job-id",
295
308
  };
296
309
  const WEIBO_DIRECT_ACTION_OPTIONS = {
297
310
  "hot-search": ["pretty"],
@@ -330,6 +343,7 @@ const WEIBO_DIRECT_ACTION_OPTIONS = {
330
343
  "sinceDays",
331
344
  "pretty",
332
345
  ],
346
+ transcript: ["postUrl", "postId", "jobId", "pretty"],
333
347
  };
334
348
  const WEIBO_DIRECT_ACTION_NAMES = Object.keys(WEIBO_DIRECT_ACTION_OPTIONS).join(", ");
335
349
  const WEIBO_OPTION_DISPLAY_NAMES = {
@@ -345,6 +359,7 @@ const WEIBO_OPTION_DISPLAY_NAMES = {
345
359
  commentId: "--comment-id",
346
360
  profileUrl: "--profile-url",
347
361
  userId: "--user-id",
362
+ jobId: "--job-id",
348
363
  };
349
364
  const WECHAT_DIRECT_ACTION_OPTIONS = {
350
365
  "hot-search": ["pretty"],
@@ -394,6 +409,7 @@ const WECHAT_DIRECT_ACTION_OPTIONS = {
394
409
  "sinceDays",
395
410
  "pretty",
396
411
  ],
412
+ transcript: ["url", "encryptedObjectId", "jobId", "pretty"],
397
413
  };
398
414
  const WECHAT_DIRECT_ACTION_NAMES = Object.keys(WECHAT_DIRECT_ACTION_OPTIONS).join(", ");
399
415
  const WECHAT_SEARCH_SORT_TYPES = [
@@ -423,6 +439,7 @@ const WECHAT_OPTION_DISPLAY_NAMES = {
423
439
  objectNonceId: "--object-nonce-id",
424
440
  commentId: "--comment-id",
425
441
  userId: "--user-id",
442
+ jobId: "--job-id",
426
443
  };
427
444
  const SENSITIVE_CHECK_DIRECT_ACTION_OPTIONS = {
428
445
  text: ["text", "platform", "pretty"],
@@ -504,17 +521,17 @@ const PLATFORMS = {
504
521
  {
505
522
  name: "xhs_submit_video_speech_text_by_note_url",
506
523
  description:
507
- "Submit a video note speech-to-text transcript task from a note link, short link, or share text; 提交完成后最多短等 15 秒.",
524
+ "Submit a video note speech-to-text transcript task from a note link, short link, or share text; 提交后最多等待 15 秒.",
508
525
  },
509
526
  {
510
527
  name: "xhs_submit_video_speech_text_by_note_id",
511
528
  description:
512
- "Submit a video note speech-to-text transcript task from a note_id; 提交完成后最多短等 15 秒.",
529
+ "Submit a video note speech-to-text transcript task from a note_id; 提交后最多等待 15 秒.",
513
530
  },
514
531
  {
515
532
  name: "xhs_get_video_speech_text_job",
516
533
  description:
517
- "Check a video note speech-to-text transcript job by job_id without starting a new task.",
534
+ buildTranscriptJobDescription("a video note speech-to-text transcript job"),
518
535
  },
519
536
  ],
520
537
  },
@@ -588,17 +605,17 @@ const PLATFORMS = {
588
605
  {
589
606
  name: "douyin_submit_video_speech_text_by_video_url",
590
607
  description:
591
- "Submit a Douyin work video speech-to-text transcript task from a work page link, short link, or share text; 提交完成后最多短等 15 秒.",
608
+ "Submit a Douyin work video speech-to-text transcript task from a work page link, short link, or share text; 提交后最多等待 15 秒.",
592
609
  },
593
610
  {
594
611
  name: "douyin_submit_video_speech_text_by_aweme_id",
595
612
  description:
596
- "Submit a Douyin work video speech-to-text transcript task from an aweme_id; 提交完成后最多短等 15 秒.",
613
+ "Submit a Douyin work video speech-to-text transcript task from an aweme_id; 提交后最多等待 15 秒.",
597
614
  },
598
615
  {
599
616
  name: "douyin_get_video_speech_text_job",
600
617
  description:
601
- "Check a Douyin video speech-to-text transcript job by job_id without starting a new task.",
618
+ buildTranscriptJobDescription("a Douyin video speech-to-text transcript job"),
602
619
  },
603
620
  ],
604
621
  },
@@ -668,17 +685,17 @@ const PLATFORMS = {
668
685
  {
669
686
  name: "kuaishou_submit_video_speech_text_by_video_url",
670
687
  description:
671
- "Submit a Kuaishou work video speech-to-text transcript task from a work page link, short link, or share text; 提交完成后最多短等 15 秒.",
688
+ "Submit a Kuaishou work video speech-to-text transcript task from a work page link, short link, or share text; 提交后最多等待 15 秒.",
672
689
  },
673
690
  {
674
691
  name: "kuaishou_submit_video_speech_text_by_photo_id",
675
692
  description:
676
- "Submit a Kuaishou work video speech-to-text transcript task from a photo_id; 提交完成后最多短等 15 秒.",
693
+ "Submit a Kuaishou work video speech-to-text transcript task from a photo_id; 提交后最多等待 15 秒.",
677
694
  },
678
695
  {
679
696
  name: "kuaishou_get_video_speech_text_job",
680
697
  description:
681
- "Check a Kuaishou video speech-to-text transcript job by job_id without starting a new task.",
698
+ buildTranscriptJobDescription("a Kuaishou video speech-to-text transcript job"),
682
699
  },
683
700
  ],
684
701
  },
@@ -752,17 +769,17 @@ const PLATFORMS = {
752
769
  {
753
770
  name: "weibo_submit_video_speech_text_by_post_url",
754
771
  description:
755
- "Submit a Weibo video speech-to-text transcript task from a post URL, short link, or share text; 提交完成后最多短等 15 秒.",
772
+ "Submit a Weibo video speech-to-text transcript task from a post URL, short link, or share text; 提交后最多等待 15 秒.",
756
773
  },
757
774
  {
758
775
  name: "weibo_submit_video_speech_text_by_post_id",
759
776
  description:
760
- "Submit a Weibo video speech-to-text transcript task from a post_id; 提交完成后最多短等 15 秒.",
777
+ "Submit a Weibo video speech-to-text transcript task from a post_id; 提交后最多等待 15 秒.",
761
778
  },
762
779
  {
763
780
  name: "weibo_get_video_speech_text_job",
764
781
  description:
765
- "Check a Weibo video speech-to-text transcript job by job_id without starting a new task.",
782
+ buildTranscriptJobDescription("a Weibo video speech-to-text transcript job"),
766
783
  },
767
784
  ],
768
785
  },
@@ -829,23 +846,25 @@ const PLATFORMS = {
829
846
  {
830
847
  name: "wechat_submit_video_speech_text_by_video_url",
831
848
  description:
832
- "Submit a WeChat Channels / 视频号 video speech-to-text transcript task from a video link or share text; 提交完成后最多短等 15 秒.",
849
+ "Submit a WeChat Channels / 视频号 video speech-to-text transcript task from a video link or share text; 提交后最多等待 15 秒.",
833
850
  },
834
851
  {
835
852
  name: "wechat_submit_video_speech_text_by_encrypted_object_id",
836
853
  description:
837
- "Submit a WeChat Channels / 视频号 video speech-to-text transcript task from an encrypted_object_id; 提交完成后最多短等 15 秒.",
854
+ "Submit a WeChat Channels / 视频号 video speech-to-text transcript task from an encrypted_object_id; 提交后最多等待 15 秒.",
838
855
  },
839
856
  {
840
857
  name: "wechat_get_video_speech_text_job",
841
858
  description:
842
- "Check a WeChat Channels / 视频号 video speech-to-text transcript job by job_id without starting a new task.",
859
+ buildTranscriptJobDescription(
860
+ "a WeChat Channels / 视频号 video speech-to-text transcript job"
861
+ ),
843
862
  },
844
863
  ],
845
864
  },
846
865
  "sensitive-check": {
847
866
  id: "sensitive-check",
848
- displayName: "Sensitive Check / 敏感检测",
867
+ displayName: "Sensitive Words Check / 敏感词检测",
849
868
  status: "public",
850
869
  registryName: "sensitive-check",
851
870
  futureRegistryName: "com.socialdatax/sensitive-check",
@@ -1622,7 +1641,8 @@ function buildDoctorReport() {
1622
1641
  },
1623
1642
  security: {
1624
1643
  readOnly: false,
1625
- directCliReadOnly: true,
1644
+ directCliReadOnly: false,
1645
+ directCliMaySubmitAnalysisJobs: true,
1626
1646
  platformMcpMaySubmitAnalysisJobs: true,
1627
1647
  accountActions: false,
1628
1648
  readsLocalBrowserData: false,
@@ -1665,6 +1685,7 @@ function printDoctor(args) {
1665
1685
  console.log("");
1666
1686
  console.log("Runtime data calls:");
1667
1687
  console.log("- social media content intelligence workflows.");
1688
+ console.log("- some commands submit bounded analysis jobs such as video speech-to-text transcript.");
1668
1689
  console.log("- no login, posting, editing, liking, commenting, or other account actions.");
1669
1690
  console.log("- no local browser data access.");
1670
1691
  console.log(`- requires ${PRIMARY_API_KEY_ENV} only when making authenticated data calls.`);
@@ -1721,6 +1742,9 @@ function printHelp() {
1721
1742
  console.log(` npx -y ${PACKAGE_SPEC} xhs user-posts --user-id "<user_id>" --since-days 30 --pretty`);
1722
1743
  console.log(" Fetch recent creator posts until the publish-time boundary is reached.");
1723
1744
  console.log("");
1745
+ console.log(` npx -y ${PACKAGE_SPEC} xhs transcript --url "<xhs_note_url_or_share_text>" --pretty`);
1746
+ console.log(" Submit or check an XHS video note speech-to-text transcript job.");
1747
+ console.log("");
1724
1748
  console.log(` npx -y ${PACKAGE_SPEC} douyin hot-search --pretty`);
1725
1749
  console.log(" Call the Douyin main hot search list tool directly and print JSON.");
1726
1750
  console.log("");
@@ -1759,6 +1783,9 @@ function printHelp() {
1759
1783
  console.log(` npx -y ${PACKAGE_SPEC} douyin user-series --profile-url "<profile_url_or_share_text>" --pretty`);
1760
1784
  console.log(" Call the Douyin creator short-drama series tool from a profile link or share text.");
1761
1785
  console.log("");
1786
+ console.log(` npx -y ${PACKAGE_SPEC} douyin transcript --aweme-id "<aweme_id>" --pretty`);
1787
+ console.log(" Submit or check a Douyin video speech-to-text transcript job.");
1788
+ console.log("");
1762
1789
  console.log(` npx -y ${PACKAGE_SPEC} kuaishou search --keyword "露营" --pretty`);
1763
1790
  console.log(" Call the Kuaishou work search tool directly and print JSON.");
1764
1791
  console.log("");
@@ -1799,6 +1826,9 @@ function printHelp() {
1799
1826
  " Call the Kuaishou creator works tool from a profile link or share text that resolves directly to a non-empty user_id."
1800
1827
  );
1801
1828
  console.log("");
1829
+ console.log(` npx -y ${PACKAGE_SPEC} kuaishou transcript --photo-id "<photo_id>" --pretty`);
1830
+ console.log(" Submit or check a Kuaishou video speech-to-text transcript job.");
1831
+ console.log("");
1802
1832
  console.log(` npx -y ${PACKAGE_SPEC} weibo hot-search --pretty`);
1803
1833
  console.log(" Call the Weibo hot-search list tool directly and print JSON.");
1804
1834
  console.log("");
@@ -1838,6 +1868,9 @@ function printHelp() {
1838
1868
  console.log(` npx -y ${PACKAGE_SPEC} weibo user-posts --profile-url "<profile_url_or_share_text>" --pretty`);
1839
1869
  console.log(" Call the Weibo creator posts tool from a profile link or share text.");
1840
1870
  console.log("");
1871
+ console.log(` npx -y ${PACKAGE_SPEC} weibo transcript --post-url "<weibo_post_url_or_share_text>" --pretty`);
1872
+ console.log(" Submit or check a Weibo video speech-to-text transcript job.");
1873
+ console.log("");
1841
1874
  console.log(` npx -y ${PACKAGE_SPEC} wechat hot-search --pretty`);
1842
1875
  console.log(" Call the WeChat Channels / 视频号 hot-search list tool directly and print JSON.");
1843
1876
  console.log("");
@@ -1873,8 +1906,11 @@ function printHelp() {
1873
1906
  console.log(` npx -y ${PACKAGE_SPEC} wechat user-posts --url "<wechat_video_url_or_share_text>" --pretty`);
1874
1907
  console.log(" Call the WeChat Channels / 视频号 creator videos tool from a video link or share text.");
1875
1908
  console.log("");
1909
+ console.log(` npx -y ${PACKAGE_SPEC} wechat transcript --encrypted-object-id "<encrypted_object_id>" --pretty`);
1910
+ console.log(" Submit or check a WeChat Channels / 视频号 video speech-to-text transcript job.");
1911
+ console.log("");
1876
1912
  console.log(` npx -y ${PACKAGE_SPEC} sensitive-check text --text "<content>" --platform xhs --pretty`);
1877
- console.log(" Call the SocialDataX 敏感检测 text tool directly and print JSON.");
1913
+ console.log(" Call the SocialDataX 敏感词检测 / 违禁词检查 text tool directly and print JSON.");
1878
1914
  console.log("");
1879
1915
  console.log(` npx -y ${PACKAGE_SPEC} list`);
1880
1916
  console.log(" List available skills.");
@@ -1950,6 +1986,7 @@ function printHelp() {
1950
1986
  console.log(" --post-id <post_id>");
1951
1987
  console.log(" --post-url <weibo-post-url-or-share-text>");
1952
1988
  console.log(" --encrypted-object-id <encrypted_object_id>");
1989
+ console.log(" --job-id <job_id>");
1953
1990
  console.log(" --object-id <object_id>");
1954
1991
  console.log(" --object-nonce-id <object_nonce_id>");
1955
1992
  console.log(" --comment-id <comment_id>");
@@ -2295,6 +2332,24 @@ function buildXhsOperation(action, options) {
2295
2332
  pageToken: options.pageToken,
2296
2333
  })
2297
2334
  );
2335
+ case "transcript":
2336
+ return buildDirectOperation(
2337
+ "transcript",
2338
+ buildTranscriptCall(options, {
2339
+ urlOption: "url",
2340
+ idOption: "noteId",
2341
+ jobOption: "jobId",
2342
+ urlTool: "xhs_submit_video_speech_text_by_note_url",
2343
+ idTool: "xhs_submit_video_speech_text_by_note_id",
2344
+ jobTool: "xhs_get_video_speech_text_job",
2345
+ urlArgument: "note_url",
2346
+ idArgument: "note_id",
2347
+ jobArgument: "job_id",
2348
+ urlDisplay: "--url",
2349
+ idDisplay: "--note-id",
2350
+ jobDisplay: "--job-id",
2351
+ })
2352
+ );
2298
2353
  default:
2299
2354
  throw new Error(
2300
2355
  `Unsupported XHS command "${action}". Use ${XHS_DIRECT_ACTION_NAMES}.`
@@ -2403,6 +2458,25 @@ function buildDouyinOperation(action, options) {
2403
2458
  }),
2404
2459
  PLATFORMS.douyin
2405
2460
  );
2461
+ case "transcript":
2462
+ return buildDirectOperation(
2463
+ "transcript",
2464
+ buildTranscriptCall(options, {
2465
+ urlOption: "url",
2466
+ idOption: "awemeId",
2467
+ jobOption: "jobId",
2468
+ urlTool: "douyin_submit_video_speech_text_by_video_url",
2469
+ idTool: "douyin_submit_video_speech_text_by_aweme_id",
2470
+ jobTool: "douyin_get_video_speech_text_job",
2471
+ urlArgument: "video_url",
2472
+ idArgument: "aweme_id",
2473
+ jobArgument: "job_id",
2474
+ urlDisplay: "--url",
2475
+ idDisplay: "--aweme-id",
2476
+ jobDisplay: "--job-id",
2477
+ }),
2478
+ PLATFORMS.douyin
2479
+ );
2406
2480
  default:
2407
2481
  throw new Error(
2408
2482
  `Unsupported Douyin command "${action}". Use ${DOUYIN_DIRECT_ACTION_NAMES}.`
@@ -2492,6 +2566,25 @@ function buildKuaishouOperation(action, options) {
2492
2566
  }),
2493
2567
  PLATFORMS.kuaishou
2494
2568
  );
2569
+ case "transcript":
2570
+ return buildDirectOperation(
2571
+ "transcript",
2572
+ buildTranscriptCall(options, {
2573
+ urlOption: "url",
2574
+ idOption: "photoId",
2575
+ jobOption: "jobId",
2576
+ urlTool: "kuaishou_submit_video_speech_text_by_video_url",
2577
+ idTool: "kuaishou_submit_video_speech_text_by_photo_id",
2578
+ jobTool: "kuaishou_get_video_speech_text_job",
2579
+ urlArgument: "video_url",
2580
+ idArgument: "photo_id",
2581
+ jobArgument: "job_id",
2582
+ urlDisplay: "--url",
2583
+ idDisplay: "--photo-id",
2584
+ jobDisplay: "--job-id",
2585
+ }),
2586
+ PLATFORMS.kuaishou
2587
+ );
2495
2588
  default:
2496
2589
  throw new Error(
2497
2590
  `Unsupported Kuaishou command "${action}". Use ${KUAISHOU_DIRECT_ACTION_NAMES}.`
@@ -2596,6 +2689,25 @@ function buildWeiboOperation(action, options) {
2596
2689
  }),
2597
2690
  PLATFORMS.weibo
2598
2691
  );
2692
+ case "transcript":
2693
+ return buildDirectOperation(
2694
+ "transcript",
2695
+ buildTranscriptCall(options, {
2696
+ urlOption: "postUrl",
2697
+ idOption: "postId",
2698
+ jobOption: "jobId",
2699
+ urlTool: "weibo_submit_video_speech_text_by_post_url",
2700
+ idTool: "weibo_submit_video_speech_text_by_post_id",
2701
+ jobTool: "weibo_get_video_speech_text_job",
2702
+ urlArgument: "post_url",
2703
+ idArgument: "post_id",
2704
+ jobArgument: "job_id",
2705
+ urlDisplay: "--post-url",
2706
+ idDisplay: "--post-id",
2707
+ jobDisplay: "--job-id",
2708
+ }),
2709
+ PLATFORMS.weibo
2710
+ );
2599
2711
  default:
2600
2712
  throw new Error(
2601
2713
  `Unsupported Weibo command "${action}". Use ${WEIBO_DIRECT_ACTION_NAMES}.`
@@ -2681,6 +2793,25 @@ function buildWechatOperation(action, options) {
2681
2793
  }),
2682
2794
  PLATFORMS.wechat
2683
2795
  );
2796
+ case "transcript":
2797
+ return buildDirectOperation(
2798
+ "transcript",
2799
+ buildTranscriptCall(options, {
2800
+ urlOption: "url",
2801
+ idOption: "encryptedObjectId",
2802
+ jobOption: "jobId",
2803
+ urlTool: "wechat_submit_video_speech_text_by_video_url",
2804
+ idTool: "wechat_submit_video_speech_text_by_encrypted_object_id",
2805
+ jobTool: "wechat_get_video_speech_text_job",
2806
+ urlArgument: "video_url",
2807
+ idArgument: "encrypted_object_id",
2808
+ jobArgument: "job_id",
2809
+ urlDisplay: "--url",
2810
+ idDisplay: "--encrypted-object-id",
2811
+ jobDisplay: "--job-id",
2812
+ }),
2813
+ PLATFORMS.wechat
2814
+ );
2684
2815
  default:
2685
2816
  throw new Error(
2686
2817
  `Unsupported WeChat command "${action}". Use ${WECHAT_DIRECT_ACTION_NAMES}.`
@@ -2802,6 +2933,58 @@ function buildOneOfCall(
2802
2933
  return { tool, toolArguments };
2803
2934
  }
2804
2935
 
2936
+ function buildTranscriptCall(
2937
+ options,
2938
+ {
2939
+ urlOption,
2940
+ idOption,
2941
+ jobOption,
2942
+ urlTool,
2943
+ idTool,
2944
+ jobTool,
2945
+ urlArgument,
2946
+ idArgument,
2947
+ jobArgument,
2948
+ urlDisplay,
2949
+ idDisplay,
2950
+ jobDisplay,
2951
+ }
2952
+ ) {
2953
+ const choices = [
2954
+ {
2955
+ value: options[urlOption],
2956
+ tool: urlTool,
2957
+ argument: urlArgument,
2958
+ },
2959
+ {
2960
+ value: options[idOption],
2961
+ tool: idTool,
2962
+ argument: idArgument,
2963
+ },
2964
+ {
2965
+ value: options[jobOption],
2966
+ tool: jobTool,
2967
+ argument: jobArgument,
2968
+ },
2969
+ ].filter((choice) => Boolean(choice.value));
2970
+ const displays = `${urlDisplay}, ${idDisplay}, or ${jobDisplay}`;
2971
+
2972
+ if (choices.length === 0) {
2973
+ throw new Error(`Missing input. Use exactly one of ${displays}.`);
2974
+ }
2975
+ if (choices.length > 1) {
2976
+ throw new Error(`Use exactly one of ${displays}.`);
2977
+ }
2978
+
2979
+ const choice = choices[0];
2980
+ return {
2981
+ tool: choice.tool,
2982
+ toolArguments: {
2983
+ [choice.argument]: choice.value,
2984
+ },
2985
+ };
2986
+ }
2987
+
2805
2988
  function buildRequiredIdCall(
2806
2989
  options,
2807
2990
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socialdatax-skills",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "description": "SocialDataX / 社媒数据助手 skill installer and direct CLI helper for hosted platform social media MCP services.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  ---
2
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."
3
+ description: "Submit and check video speech-to-text transcript / 口播转文字 jobs for XHS, Douyin, Kuaishou, Weibo, and WeChat Channels through direct CLI commands or hosted platform MCP tools."
4
4
  source_client: "socialdatax-skills"
5
5
  source_platform: "npm"
6
6
  source_skill: "media-transcript"
@@ -39,30 +39,49 @@ Current platform support:
39
39
  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.
40
40
  获取或管理 API Key:访问 <https://socialdatax.com/?from=npm>,按官网的 API Key 申请/管理入口操作。环境变量名固定使用 `SOCIALDATAX_API_KEY`;不要引导用户使用其他域名。
41
41
 
42
+ ## Preferred Direct CLI
43
+
44
+ Prefer the direct CLI when the agent can run shell commands. It does not require MCP server configuration:
45
+
46
+ ```bash
47
+ npx -y socialdatax-skills@latest xhs transcript --url "<note_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
48
+ npx -y socialdatax-skills@latest xhs transcript --note-id "<note_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
49
+ npx -y socialdatax-skills@latest xhs transcript --job-id "<job_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
50
+ npx -y socialdatax-skills@latest douyin transcript --url "<douyin_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
51
+ npx -y socialdatax-skills@latest douyin transcript --aweme-id "<aweme_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
52
+ npx -y socialdatax-skills@latest douyin transcript --job-id "<job_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
53
+ npx -y socialdatax-skills@latest kuaishou transcript --url "<kuaishou_content_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
54
+ npx -y socialdatax-skills@latest kuaishou transcript --photo-id "<photo_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
55
+ npx -y socialdatax-skills@latest kuaishou transcript --job-id "<job_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
56
+ npx -y socialdatax-skills@latest weibo transcript --post-url "<weibo_post_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
57
+ npx -y socialdatax-skills@latest weibo transcript --post-id "<post_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
58
+ npx -y socialdatax-skills@latest weibo transcript --job-id "<job_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
59
+ npx -y socialdatax-skills@latest wechat transcript --url "<wechat_video_url_or_share_text>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
60
+ npx -y socialdatax-skills@latest wechat transcript --encrypted-object-id "<encrypted_object_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
61
+ npx -y socialdatax-skills@latest wechat transcript --job-id "<job_id>" --pretty --source-client socialdatax-skills --source-platform npm --source-skill media-transcript
62
+ ```
63
+
42
64
  Required arguments:
43
65
 
44
- - Use a submit-by-URL tool when the user provides a content link, short link, or share text.
45
- - 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`.
46
- - Use the matching get-job tool with `job_id` when continuing or checking an existing transcript job.
66
+ - Use a submit-by-URL command when the user provides a content link, short link, or share text.
67
+ - Use a submit-by-ID command 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`.
68
+ - Use the matching `transcript --job-id <job_id>` command when continuing or checking an existing transcript job.
69
+ - For one transcript command, pass exactly one entrypoint: URL/share text, platform content ID, or `job_id`.
70
+
71
+ Optional arguments:
72
+
73
+ - `--source-client socialdatax-skills --source-platform npm --source-skill media-transcript`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
47
74
 
48
- These video speech-to-text transcript / 口播转文字 workflows are MCP-only and not available through the direct CLI.
49
- 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.
75
+ Use the direct CLI first when the agent can run shell commands. These video speech-to-text transcript / 口播转文字 workflows submit a bounded analysis job or check an existing job.
76
+ Submit commands 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.
50
77
 
51
78
  ## Safety Boundary
52
79
 
53
- This skill can submit bounded analysis jobs through hosted MCP tools. It uses authenticated MCP access from the current agent at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Use hosted MCP tools only when the current agent already supports authenticated streamable HTTP MCP.
80
+ This skill can submit bounded video speech-to-text analysis jobs through the direct CLI or hosted MCP tools. It uses `SOCIALDATAX_API_KEY` from the user's environment at runtime. Generated Skill files do not contain API keys. It does not read local browser data or perform login, posting, liking, commenting, or account changes. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
54
81
 
55
82
  ## MCP Tools
56
83
 
57
- If MCP tools are already available in the current agent, choose the platform-specific submit tool by entrypoint:
58
- - XHS: `xhs_submit_video_speech_text_by_note_url`, `xhs_submit_video_speech_text_by_note_id`, `xhs_get_video_speech_text_job`.
59
- - Douyin: `douyin_submit_video_speech_text_by_video_url`, `douyin_submit_video_speech_text_by_aweme_id`, `douyin_get_video_speech_text_job`.
60
- - Kuaishou: `kuaishou_submit_video_speech_text_by_video_url`, `kuaishou_submit_video_speech_text_by_photo_id`, `kuaishou_get_video_speech_text_job`.
61
- - Weibo: `weibo_submit_video_speech_text_by_post_url`, `weibo_submit_video_speech_text_by_post_id`, `weibo_get_video_speech_text_job`.
62
- - 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`.
63
- Do not start a duplicate transcript job only to poll status. Use the platform get-job tool with the returned `job_id`.
64
-
65
- MCP-only tools not available through the direct CLI:
84
+ MCP tools matching the direct CLI commands above:
66
85
 
67
86
  - `xhs_submit_video_speech_text_by_note_url`
68
87
  - `xhs_submit_video_speech_text_by_note_id`
@@ -80,7 +99,17 @@ MCP-only tools not available through the direct CLI:
80
99
  - `wechat_submit_video_speech_text_by_encrypted_object_id`
81
100
  - `wechat_get_video_speech_text_job`
82
101
 
102
+ If MCP tools are already available in the current agent, choose the platform-specific submit tool by entrypoint:
103
+ - XHS: `xhs_submit_video_speech_text_by_note_url`, `xhs_submit_video_speech_text_by_note_id`, `xhs_get_video_speech_text_job`.
104
+ - Douyin: `douyin_submit_video_speech_text_by_video_url`, `douyin_submit_video_speech_text_by_aweme_id`, `douyin_get_video_speech_text_job`.
105
+ - Kuaishou: `kuaishou_submit_video_speech_text_by_video_url`, `kuaishou_submit_video_speech_text_by_photo_id`, `kuaishou_get_video_speech_text_job`.
106
+ - Weibo: `weibo_submit_video_speech_text_by_post_url`, `weibo_submit_video_speech_text_by_post_id`, `weibo_get_video_speech_text_job`.
107
+ - 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`.
108
+ Do not start a duplicate transcript job only to poll status. Use the platform get-job tool with the returned `job_id`.
109
+
83
110
  ## Output Guidance
84
111
 
85
- 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.
112
+ Return the transcript text and content context when available; include content IDs, titles or descriptions, author facts, and duration when the response provides them.
113
+ This v1 surface does not return summary.
114
+ When a job is still running, include the `job_id`, status, and next action so the user or agent can check later.
86
115
  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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "sensitive-check"
3
- description: "Check draft text for sensitive-content risks before publishing. Supports generic, xhs, douyin, and kuaishou contexts through SocialDataX."
3
+ description: "Check draft text for 敏感词检测, 违禁词检查, content safety, copy compliance, and safer rewrite suggestions before publishing. Supports generic, xhs, douyin, and kuaishou contexts through SocialDataX."
4
4
  source_client: "socialdatax-skills"
5
5
  source_platform: "npm"
6
6
  source_skill: "sensitive-check"
@@ -22,9 +22,9 @@ metadata:
22
22
  ---
23
23
  <!-- AUTO-GENERATED from socialdatax-skill-source. Do not edit directly; run `node scripts/generate_socialdatax_skills.mjs`. -->
24
24
 
25
- # 敏感检测 SocialDataX
25
+ # 敏感词检测与违禁词检查
26
26
 
27
- Use this skill when the user wants 敏感检测, sensitive check, content safety review, or platform-aware review for text drafts before publishing.
27
+ Use this skill when the user wants 敏感词检测, 违禁词检查, 敏感检测, 文案合规, 发布前检查, 能不能发, sensitive words, prohibited words, content safety review, or platform-aware review for text drafts before publishing.
28
28
 
29
29
  Current platform support:
30
30
 
@@ -53,8 +53,9 @@ Optional arguments:
53
53
  - `--pretty`: output formatting only.
54
54
  - `--source-client socialdatax-skills --source-platform npm --source-skill sensitive-check`: usage attribution for this Agent Skill; keep these values unchanged when running examples from this Skill.
55
55
 
56
- 适用于文本敏感检测、content safety review、发布前风险检查和 safer rewrite suggestions for draft text.
56
+ 适用于敏感词检测、违禁词检查、文案发布前检查、content safety review、文案合规审核、能不能发判断和 safer rewrite suggestions for draft text.
57
57
  The command prints JSON with `platform`, `tool`, and `data`; it does not echo the original text back in CLI arguments. The service returns `violation`, `risk_level`, `types`, `highlights`, `summary`, `platform`, and `suggestions` when available.
58
+ Service note: SocialDataX service records the submitted text and structured detection result for history, billing, and troubleshooting; the local CLI does not write API keys to local files or write local text copies.
58
59
  This v1 skill checks text only. Image sensitive detection is intentionally out of scope until a separate image tool is published.
59
60
 
60
61
  ## Safety Boundary
@@ -1,7 +1,7 @@
1
1
  interface:
2
- display_name: "Sensitive Check"
3
- short_description: "Check draft text risks"
4
- default_prompt: "Use $sensitive-check to check text drafts for sensitive-content risks with SocialDataX."
2
+ display_name: "敏感词检测"
3
+ short_description: "Check sensitive words"
4
+ default_prompt: "Use $sensitive-check to check draft text for sensitive words, prohibited words, and publishing risks with SocialDataX."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true