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 +50 -26
- package/cli.mjs +203 -20
- package/package.json +1 -1
- package/skills/media-transcript/SKILL.md +46 -17
- package/skills/sensitive-check/SKILL.md +5 -4
- package/skills/sensitive-check/agents/openai.yaml +3 -3
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
|
|
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
|
-
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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;
|
|
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;
|
|
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
|
-
"
|
|
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;
|
|
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;
|
|
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
|
-
"
|
|
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;
|
|
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;
|
|
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
|
-
"
|
|
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;
|
|
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;
|
|
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
|
-
"
|
|
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;
|
|
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;
|
|
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
|
-
|
|
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:
|
|
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
|
|
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: "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
|
|
45
|
-
- Use a submit-by-ID
|
|
46
|
-
- Use the matching
|
|
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
|
|
49
|
-
Submit
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
#
|
|
25
|
+
# 敏感词检测与违禁词检查
|
|
26
26
|
|
|
27
|
-
Use this skill when the user wants 敏感检测, sensitive
|
|
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
|
-
|
|
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: "
|
|
3
|
-
short_description: "Check
|
|
4
|
-
default_prompt: "Use $sensitive-check to check text
|
|
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
|