socialdatax-skills 0.2.14 → 0.2.16

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
@@ -68,7 +68,7 @@ Common search phrases for this skill package:
68
68
  - Sensitive Check MCP server name: `sensitive-check`
69
69
  - Sensitive Check future MCP registry name: `com.socialdatax/sensitive-check`
70
70
  - Unified MCP registry name: none; this package installs skills and calls explicit platform services.
71
- - Current public capability version: `0.2.14`
71
+ - Current public capability version: `0.2.16`
72
72
 
73
73
  ## Direct CLI
74
74
 
@@ -139,9 +139,10 @@ npx -y socialdatax-skills@latest wechat user-info --user-id "<finder_user_id>" -
139
139
  npx -y socialdatax-skills@latest wechat user-posts --user-id "<finder_user_id>" --pretty
140
140
  npx -y socialdatax-skills@latest wechat user-posts --url "<wechat_video_url_or_share_text>" --pretty
141
141
  npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty
142
+ cat draft.txt | npx -y socialdatax-skills@latest sensitive-check text --text-stdin --platform xhs --pretty
142
143
  ```
143
144
 
144
- Most direct CLI commands print a JSON envelope with `platform`, `tool`, `arguments`, and `data`. `sensitive-check` prints `platform`, `tool`, and `data` only; it does not echo the original text in CLI output.
145
+ Most direct CLI commands print a JSON envelope with `platform`, `tool`, `arguments`, and `data`. `sensitive-check` prints `platform`, `tool`, and `data` only; it does not echo the original text in CLI output. 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.
145
146
 
146
147
  For XHS outputs with a returned `note_url` field, when `note_url` is non-null, preserve it exactly as the full URL, including `xsec_token` query parameters, such as in final answers or display. Do not modify, truncate, redact, normalize, rebuild, or replace it with a link assembled from `note_id`. If `note_url` is null, do not synthesize a public link from `note_id`.
147
148
 
@@ -168,8 +169,10 @@ Douyin search filters use semantic values: `--sort-type` supports `general`,
168
169
  supports `all`, `video`, and `image`.
169
170
 
170
171
  WeChat Channels search filters use semantic values: `--sort-type` supports
171
- `general`, `time_descending`, and `popularity_descending`; `--duration-range`
172
- supports `all`, `under_5_min`, `between_5_and_20_min`, and `over_20_min`.
172
+ `all`, `time_descending`, and `collect_count_descending`;
173
+ `collect_count_descending` means hottest first / most collected first.
174
+ `--duration-range` supports `all`,
175
+ `under_5_min`, `between_5_and_20_min`, and `over_20_min`.
173
176
 
174
177
  ### Runtime Requirements
175
178
 
@@ -191,7 +194,7 @@ npx -y socialdatax-skills@latest doctor
191
194
  npx -y socialdatax-skills@latest doctor --json
192
195
  ```
193
196
 
194
- The public package declares no npm lifecycle scripts such as `preinstall`, `install`, or `postinstall`. The installer copies AgentSkills files only, does not save API keys, and does not change MCP server configuration. Authenticated data calls require `SOCIALDATAX_API_KEY` at runtime, do not read local browser data, and do not perform account actions.
197
+ The public package declares no npm lifecycle scripts such as `preinstall`, `install`, or `postinstall`. The installer copies AgentSkills files only, does not write API keys to local files, and does not change MCP server configuration. Authenticated data calls require `SOCIALDATAX_API_KEY` at runtime, do not read local browser data, and do not perform account actions.
195
198
 
196
199
  ## Platform Names
197
200
 
@@ -261,6 +264,7 @@ npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
261
264
  npx -y socialdatax-skills@latest wechat hot-search --pretty
262
265
  npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
263
266
  npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty
267
+ cat draft.txt | npx -y socialdatax-skills@latest sensitive-check text --text-stdin --platform xhs --pretty
264
268
  ```
265
269
 
266
270
  Available skills:
@@ -357,8 +361,10 @@ Current WeChat Channels / 视频号 workflows include:
357
361
  Current Sensitive Check workflows include:
358
362
 
359
363
  - Check draft text for 敏感检测 / sensitive-content risks before publishing.
364
+ - Pass short drafts with `--text`, or pipe longer/sensitive drafts through `--text-stdin` so the text is not placed directly in the shell command.
360
365
  - Choose a platform context with `--platform generic`, `--platform xhs`, `--platform douyin`, or `--platform kuaishou`.
361
366
  - Return structured fields such as `violation`, `risk_level`, `types`, `highlights`, `summary`, `platform`, and `suggestions` when available.
367
+ - SocialDataX service records submitted text and structured detection results for history, billing, and troubleshooting; the local CLI does not write API keys to local files or write local text copies.
362
368
  - Text checks are read-only. Image sensitive detection is reserved for a future separate tool.
363
369
 
364
370
  ## XHS Tools
@@ -479,6 +485,7 @@ npx -y socialdatax-skills@latest kuaishou search --keyword "露营" --pretty
479
485
  npx -y socialdatax-skills@latest weibo search --keyword "露营" --pretty
480
486
  npx -y socialdatax-skills@latest wechat search --keyword "露营" --pretty
481
487
  npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platform xhs --pretty
488
+ cat draft.txt | npx -y socialdatax-skills@latest sensitive-check text --text-stdin --platform xhs --pretty
482
489
  ```
483
490
 
484
491
  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 Channels / 视频号, use the `wechat-channels-insights` listing; for 敏感检测, use the `sensitive-check` server.
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.14";
10
+ const PACKAGE_VERSION = "0.2.16";
11
11
  const PACKAGE_SPEC = `${PACKAGE_NAME}@latest`;
12
12
  const LOG_PREFIX = `[${PACKAGE_NAME}]`;
13
13
  const MIN_NODE_VERSION = "20.18.1";
@@ -73,8 +73,14 @@ const BOOLEAN_OPTIONS = new Set([
73
73
  "includeReplies",
74
74
  "json",
75
75
  "pretty",
76
+ "textStdin",
77
+ ]);
78
+ const DIRECT_BOOLEAN_OPTIONS = new Set([
79
+ "all",
80
+ "includeReplies",
81
+ "pretty",
82
+ "textStdin",
76
83
  ]);
77
- const DIRECT_BOOLEAN_OPTIONS = new Set(["all", "includeReplies", "pretty"]);
78
84
  const INSTALL_TARGETS = ["openclaw", "hermes", "agents", "codex", "claude-code", "claude"];
79
85
  const VALID_SCOPES = ["user", "workspace", "shared"];
80
86
  const XHS_DIRECT_ACTION_OPTIONS = {
@@ -385,9 +391,9 @@ const WECHAT_DIRECT_ACTION_OPTIONS = {
385
391
  };
386
392
  const WECHAT_DIRECT_ACTION_NAMES = Object.keys(WECHAT_DIRECT_ACTION_OPTIONS).join(", ");
387
393
  const WECHAT_SEARCH_SORT_TYPES = [
388
- "general",
394
+ "all",
389
395
  "time_descending",
390
- "popularity_descending",
396
+ "collect_count_descending",
391
397
  ];
392
398
  const WECHAT_SEARCH_DURATION_RANGES = [
393
399
  "all",
@@ -413,7 +419,7 @@ const WECHAT_OPTION_DISPLAY_NAMES = {
413
419
  userId: "--user-id",
414
420
  };
415
421
  const SENSITIVE_CHECK_DIRECT_ACTION_OPTIONS = {
416
- text: ["text", "platform", "pretty"],
422
+ text: ["text", "textStdin", "platform", "pretty"],
417
423
  };
418
424
  const SENSITIVE_CHECK_DIRECT_ACTION_NAMES = Object.keys(
419
425
  SENSITIVE_CHECK_DIRECT_ACTION_OPTIONS
@@ -421,6 +427,7 @@ const SENSITIVE_CHECK_DIRECT_ACTION_NAMES = Object.keys(
421
427
  const SENSITIVE_CHECK_PLATFORMS = ["generic", "xhs", "douyin", "kuaishou"];
422
428
  const SENSITIVE_CHECK_OPTION_DISPLAY_NAMES = {
423
429
  text: "--text",
430
+ textStdin: "--text-stdin",
424
431
  platform: "--platform",
425
432
  };
426
433
  const PLATFORMS = {
@@ -1063,6 +1070,7 @@ function validateSensitiveCheckDirectActionOptions(action, options) {
1063
1070
 
1064
1071
  validateKnownOptions(options, allowedOptions);
1065
1072
  validateFlagOption(options, "pretty", "--pretty");
1073
+ validateFlagOption(options, "textStdin", "--text-stdin");
1066
1074
  for (const key of allowedOptions) {
1067
1075
  if (!DIRECT_BOOLEAN_OPTIONS.has(key)) {
1068
1076
  requireOptionValue(options, key, SENSITIVE_CHECK_OPTION_DISPLAY_NAMES[key]);
@@ -1569,7 +1577,7 @@ function printDoctor(args) {
1569
1577
  console.log("Install safety:");
1570
1578
  console.log("- npm lifecycle scripts: none declared by this package.");
1571
1579
  console.log("- install writes AgentSkills files only.");
1572
- console.log("- install does not store API keys.");
1580
+ console.log("- install does not write API keys to local files.");
1573
1581
  console.log("- install does not change MCP server configuration.");
1574
1582
  console.log("- install --dry-run previews destinations without writing files.");
1575
1583
  console.log("");
@@ -1868,6 +1876,8 @@ function printHelp() {
1868
1876
  console.log(" --sec-user-id <sec_user_id>");
1869
1877
  console.log(" --text <content>");
1870
1878
  console.log(" Text content for sensitive-check text.");
1879
+ console.log(" --text-stdin");
1880
+ console.log(" Read sensitive-check text from stdin instead of a shell argument.");
1871
1881
  console.log(" --platform <generic|xhs|douyin|kuaishou>");
1872
1882
  console.log(" Target platform for sensitive-check text; default is generic.");
1873
1883
  console.log(" --pages <number>");
@@ -1895,8 +1905,8 @@ function printHelp() {
1895
1905
  console.log(" Douyin content type filter; omit for all content types.");
1896
1906
  console.log(" --page-token <token>");
1897
1907
  console.log(" Continue token-paginated commands with the complete returned next_page_token. For search, omit it on the first request.");
1898
- console.log(" --sort-type <general|time_descending|popularity_descending>");
1899
- console.log(" WeChat Channels / 视频号 search sort; omit for default sort.");
1908
+ console.log(" --sort-type <all|time_descending|collect_count_descending>");
1909
+ console.log(" WeChat Channels / 视频号 search sort; collect_count_descending means hottest first / most collected first; omit for default sort.");
1900
1910
  console.log(" --duration-range <all|under_5_min|between_5_and_20_min|over_20_min>");
1901
1911
  console.log(" WeChat Channels / 视频号 duration filter; omit for no duration filter.");
1902
1912
  console.log(" --pretty Pretty-print direct CLI JSON output.");
@@ -2089,7 +2099,8 @@ async function runSensitiveCheckDirectCommand(args) {
2089
2099
  }
2090
2100
  validateSensitiveCheckDirectActionOptions(action, options);
2091
2101
 
2092
- const operation = buildSensitiveCheckOperation(action, options);
2102
+ const resolvedOptions = await resolveSensitiveCheckDirectOptions(action, options);
2103
+ const operation = buildSensitiveCheckOperation(action, resolvedOptions);
2093
2104
  const data = await callDirectOperation(operation);
2094
2105
  const envelope = {
2095
2106
  platform: operation.platform.id,
@@ -2100,6 +2111,38 @@ async function runSensitiveCheckDirectCommand(args) {
2100
2111
  process.stdout.write("\n");
2101
2112
  }
2102
2113
 
2114
+ async function resolveSensitiveCheckDirectOptions(action, options) {
2115
+ if (action !== "text") {
2116
+ return options;
2117
+ }
2118
+ if (options.text !== undefined && options.textStdin !== undefined) {
2119
+ throw new Error("Use only one of --text or --text-stdin for sensitive-check text.");
2120
+ }
2121
+ if (options.textStdin === undefined) {
2122
+ return options;
2123
+ }
2124
+ const text = await readStdinText();
2125
+ if (!text.trim()) {
2126
+ throw new Error("Missing stdin text for --text-stdin.");
2127
+ }
2128
+ return {
2129
+ ...options,
2130
+ text,
2131
+ };
2132
+ }
2133
+
2134
+ async function readStdinText() {
2135
+ if (process.stdin.isTTY) {
2136
+ return "";
2137
+ }
2138
+ process.stdin.setEncoding("utf8");
2139
+ let text = "";
2140
+ for await (const chunk of process.stdin) {
2141
+ text += chunk;
2142
+ }
2143
+ return text;
2144
+ }
2145
+
2103
2146
  function buildXhsOperation(action, options) {
2104
2147
  switch (action) {
2105
2148
  case "hot-search":
@@ -2857,7 +2900,7 @@ function buildWechatSearchCall(options) {
2857
2900
  }
2858
2901
 
2859
2902
  function buildSensitiveCheckTextCall(options) {
2860
- if (!options.text) {
2903
+ if (typeof options.text !== "string" || !options.text.trim()) {
2861
2904
  throw new Error("Missing --text for sensitive-check text.");
2862
2905
  }
2863
2906
  const platform = parseAllowedStringOption(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socialdatax-skills",
3
- "version": "0.2.14",
3
+ "version": "0.2.16",
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",
@@ -88,7 +88,7 @@ The command prints JSON with `platform`, `tool`, `arguments`, and `data`. Multi-
88
88
 
89
89
  ## Safety Boundary
90
90
 
91
- This skill is read-only. It does not read local browser data, does not save API keys, and does not 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.
91
+ This skill is read-only. It does not read local browser data, does not perform login, posting, liking, commenting, or account changes. The local CLI and installer do not write API keys to local files. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
92
92
 
93
93
  ## MCP Tools
94
94
 
@@ -73,7 +73,7 @@ The command prints JSON with `platform`, `tool`, `arguments`, and `data`.
73
73
 
74
74
  ## Safety Boundary
75
75
 
76
- This skill is read-only. It does not read local browser data, does not save API keys, and does not 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.
76
+ This skill is read-only. It does not read local browser data, does not perform login, posting, liking, commenting, or account changes. The local CLI and installer do not write API keys to local files. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
77
77
 
78
78
  ## MCP Tools
79
79
 
@@ -81,7 +81,7 @@ Optional arguments:
81
81
  - Kuaishou `--page-token <next_page_token>`: opaque pagination token; omit it on the first search request. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
82
82
  - Weibo `--page-token <next_page_token>`: opaque pagination token; omit it on the first search request. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
83
83
  - WeChat Channels / 视频号 `--page-token <next_page_token>`: opaque pagination token; omit it on the first search request. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
84
- - WeChat Channels / 视频号 `--sort-type <general|time_descending|popularity_descending>`: optional sort value; omit it for the default sort.
84
+ - WeChat Channels / 视频号 `--sort-type <all|time_descending|collect_count_descending>`: optional sort value; omit it for the default sort.
85
85
  - WeChat Channels / 视频号 `--duration-range <all|under_5_min|between_5_and_20_min|over_20_min>`: optional duration filter; omit it for no duration filter.
86
86
  - Weibo `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
87
87
  - WeChat Channels / 视频号 `--pages <n>`: fetch and merge N search pages from the current starting point; continue with returned `next_page_token`.
@@ -133,9 +133,9 @@ Kuaishou search pagination:
133
133
  - Pass the complete returned `next_page_token` back unchanged as `page_token` for the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
134
134
 
135
135
  WeChat Channels / 视频号 sort values:
136
- - `general`: default sorting.
136
+ - `all`: no sort restriction.
137
137
  - `time_descending`: newest first.
138
- - `popularity_descending`: platform heat first.
138
+ - `collect_count_descending`: hottest first / most collected first.
139
139
 
140
140
  WeChat Channels / 视频号 duration filter values:
141
141
  - `all`: no duration filter.
@@ -149,7 +149,7 @@ Weibo and WeChat Channels search pagination:
149
149
 
150
150
  ## Safety Boundary
151
151
 
152
- This skill is read-only. It does not read local browser data, does not save API keys, and does not 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.
152
+ This skill is read-only. It does not read local browser data, does not perform login, posting, liking, commenting, or account changes. The local CLI and installer do not write API keys to local files. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
153
153
 
154
154
  ## MCP Tools
155
155
 
@@ -197,7 +197,7 @@ For WeChat Channels / 视频号, call `wechat_search_videos` with:
197
197
  - `keyword`: required search phrase or topic.
198
198
  - `page_token`: optional opaque pagination token. Continue only with the complete returned `next_page_token` from the same search pagination chain. Do not modify, truncate, redact, mask, omit, normalize, rebuild, generate, or replace the middle with ellipses.
199
199
  Do not pass `page` to `wechat_search_videos`; omit `page_token` on the first request.
200
- - `sort_type`: optional, one of `general`, `time_descending`, `popularity_descending`; omit it for the default sort.
200
+ - `sort_type`: optional, one of `all`, `time_descending`, `collect_count_descending`; omit it for the default sort.
201
201
  - `duration_range`: optional duration filter, one of `all`, `under_5_min`, `between_5_and_20_min`, `over_20_min`; omit it for no duration filter.
202
202
  Continue WeChat Channels pagination only when `next_page_token` is not empty. Pass the complete returned `next_page_token` back unchanged as `page_token` for the same keyword and filter chain.
203
203
  `--since-days` uses CLI-side filtering only and is not an MCP tool argument; for MCP-only calls, request newest-first/native publish-time filters where available and filter returned `publish_time` values in your analysis.
@@ -47,7 +47,7 @@ Submit tools may wait briefly after creating the job. If the transcript is not r
47
47
 
48
48
  ## Safety Boundary
49
49
 
50
- This skill can submit bounded analysis jobs through hosted MCP tools. It does not read local browser data, does not save API keys, and does not perform login, posting, liking, commenting, or account changes. Use hosted MCP tools only when the current agent already supports authenticated streamable HTTP MCP.
50
+ This skill can submit bounded analysis jobs through hosted MCP tools. It does not read local browser data and does not perform login, posting, liking, commenting, or account changes. The local skill installer does not write API keys to local files. Use hosted MCP tools only when the current agent already supports authenticated streamable HTTP MCP.
51
51
 
52
52
  ## MCP Tools
53
53
 
@@ -76,7 +76,7 @@ The command prints JSON with `platform`, `tool`, `arguments`, and `data`.
76
76
 
77
77
  ## Safety Boundary
78
78
 
79
- This skill is read-only. It does not read local browser data, does not save API keys, and does not 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.
79
+ This skill is read-only. It does not read local browser data, does not perform login, posting, liking, commenting, or account changes. The local CLI and installer do not write API keys to local files. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
80
80
 
81
81
  ## MCP Tools
82
82
 
@@ -89,7 +89,7 @@ For recent creator research, prefer CLI `--since-days 30` or another user-specif
89
89
 
90
90
  ## Safety Boundary
91
91
 
92
- This skill is read-only. It does not read local browser data, does not save API keys, and does not 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.
92
+ This skill is read-only. It does not read local browser data, does not perform login, posting, liking, commenting, or account changes. The local CLI and installer do not write API keys to local files. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
93
93
 
94
94
  ## MCP Tools
95
95
 
@@ -42,20 +42,24 @@ npx -y socialdatax-skills@latest sensitive-check text --text "<content>" --platf
42
42
 
43
43
  Required arguments:
44
44
 
45
- - `sensitive-check text --text <content>`: required text to check. Use the user's draft text for analysis, but do not store it in the skill.
45
+ - `sensitive-check text --text <content>` or `sensitive-check text --text-stdin`: required text to check. Use `--text` for short drafts, or pipe longer/sensitive drafts through `--text-stdin` so the text is not placed directly in the shell command.
46
46
 
47
47
  Optional arguments:
48
48
 
49
+ - `--text-stdin`: read text from stdin instead of `--text`; do not pass both.
49
50
  - `--platform <generic|xhs|douyin|kuaishou>`: platform context; default is `generic`.
50
51
  - `--pretty`: output formatting only.
51
52
 
52
53
  Use this skill when the user wants 敏感检测, sensitive check, content safety review, or platform-aware preflight review for draft text.
54
+ For longer drafts, prefer `cat draft.txt | npx -y socialdatax-skills@latest sensitive-check text --text-stdin --pretty` so the full text is not placed in shell history.
55
+ 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.
56
+ 服务端会保存提交文本和结构化检测结果,用于历史记录、计费和问题排查;本地 CLI 不会把 API Key 写入本地文件,也不会写本地文本副本。
53
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.
54
58
  This v1 skill checks text only. Image sensitive detection is intentionally out of scope until a separate image tool is published.
55
59
 
56
60
  ## Safety Boundary
57
61
 
58
- This skill is read-only. It does not read local browser data, does not save API keys, and does not 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.
62
+ This skill is read-only. It does not read local browser data, does not perform login, posting, liking, commenting, or account changes. The local CLI and installer do not write API keys to local files. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
59
63
 
60
64
  ## MCP Tools
61
65
 
@@ -191,7 +191,7 @@ When the user asks for recent content, pass CLI `--since-days <n>` with bounded
191
191
 
192
192
  ## Safety Boundary
193
193
 
194
- This skill is read-only. It does not read local browser data, does not save API keys, and does not 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.
194
+ This skill is read-only. It does not read local browser data, does not perform login, posting, liking, commenting, or account changes. The local CLI and installer do not write API keys to local files. Prefer the direct CLI; hosted MCP tools are optional when the current agent already supports authenticated streamable HTTP MCP.
195
195
 
196
196
  ## MCP Tools
197
197