扫描报告
20 /100
xhs-publisher
小红书通用自动发帖技能。全流程自动化:AI生成帖子内容 → 生成封面图(6套风格模板)→ Puppeteer自动发布到小红书创作者中心
A legitimate Xiaohongshu auto-posting tool using Puppeteer for browser automation, with a hardcoded placeholder IP and minor doc gaps, but no evidence of malicious behavior.
可以安装
Approve for use with normal precautions. Replace the hardcoded placeholder IP (122.0.0.0) with a documented test value or constant. Consider documenting the npm install capability in SKILL.md.
安全发现 3 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 低危 | Hardcoded placeholder IP address in source 文档欺骗 | scripts/xhs_publisher.js:641 |
| 低危 | Font download and npm install in setup.md not declared in SKILL.md 文档欺骗 | references/setup.md:1 |
| 低危 | Tencent npm mirror in package-lock.json 供应链 | scripts/package-lock.json:13 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | WRITE | WRITE | ✓ 一致 | fs.writeFileSync, fs.readFileSync, fs.mkdirSync — used for session storage and c… |
| 网络访问 | READ | READ | ✓ 一致 | Puppeteer navigates to creator.xiaohongshu.com via browser automation — consiste… |
| 命令执行 | NONE | NONE | — | No shell command execution found; no subprocess, execSync, or shell spawning |
| 浏览器 | WRITE | WRITE | ✓ 一致 | Full Puppeteer browser control declared via publishPost/generateCoverImage; all … |
| 环境变量 | NONE | READ | ✓ 一致 | process.env.XHS_PROFILE_DIR and os.homedir() accessed for session paths; no cred… |
| 技能调用 | NONE | NONE | — | No cross-skill invocation detected |
| 剪贴板 | NONE | NONE | — | No clipboard access found |
| 数据库 | NONE | NONE | — | No database access |
1 高危 103 项发现
高危 IP 地址 硬编码 IP 地址
122.0.0.0 scripts/xhs_publisher.js:641 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/@babel/code-frame/-/code-frame-7.29.0.tgz scripts/package-lock.json:13 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz scripts/package-lock.json:26 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/@puppeteer/browsers/-/browsers-2.13.0.tgz scripts/package-lock.json:35 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz scripts/package-lock.json:56 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/@types/node/-/node-25.5.2.tgz scripts/package-lock.json:62 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/@types/yauzl/-/yauzl-2.10.3.tgz scripts/package-lock.json:71 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/agent-base/-/agent-base-7.1.4.tgz scripts/package-lock.json:81 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz scripts/package-lock.json:90 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/ansi-styles/-/ansi-styles-4.3.0.tgz scripts/package-lock.json:98 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/argparse/-/argparse-2.0.1.tgz scripts/package-lock.json:113 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/ast-types/-/ast-types-0.13.4.tgz scripts/package-lock.json:118 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/b4a/-/b4a-1.8.0.tgz scripts/package-lock.json:130 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/bare-events/-/bare-events-2.8.2.tgz scripts/package-lock.json:144 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/bare-fs/-/bare-fs-4.6.0.tgz scripts/package-lock.json:158 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/bare-os/-/bare-os-3.8.7.tgz scripts/package-lock.json:182 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/bare-path/-/bare-path-3.0.0.tgz scripts/package-lock.json:191 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/bare-stream/-/bare-stream-2.12.0.tgz scripts/package-lock.json:200 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/bare-url/-/bare-url-2.4.0.tgz scripts/package-lock.json:226 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/basic-ftp/-/basic-ftp-5.2.0.tgz scripts/package-lock.json:235 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/buffer-crc32/-/buffer-crc32-0.2.13.tgz scripts/package-lock.json:244 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/callsites/-/callsites-3.1.0.tgz scripts/package-lock.json:253 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/chromium-bidi/-/chromium-bidi-14.0.0.tgz scripts/package-lock.json:262 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/cliui/-/cliui-8.0.1.tgz scripts/package-lock.json:275 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/color-convert/-/color-convert-2.0.1.tgz scripts/package-lock.json:288 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/color-name/-/color-name-1.1.4.tgz scripts/package-lock.json:300 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/cosmiconfig/-/cosmiconfig-9.0.1.tgz scripts/package-lock.json:305 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz scripts/package-lock.json:330 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/debug/-/debug-4.4.3.tgz scripts/package-lock.json:339 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/degenerator/-/degenerator-5.0.1.tgz scripts/package-lock.json:355 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz scripts/package-lock.json:369 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz scripts/package-lock.json:375 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/end-of-stream/-/end-of-stream-1.4.5.tgz scripts/package-lock.json:381 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/env-paths/-/env-paths-2.2.1.tgz scripts/package-lock.json:390 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/error-ex/-/error-ex-1.3.4.tgz scripts/package-lock.json:399 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/escalade/-/escalade-3.2.0.tgz scripts/package-lock.json:407 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/escodegen/-/escodegen-2.1.0.tgz scripts/package-lock.json:416 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/esprima/-/esprima-4.0.1.tgz scripts/package-lock.json:436 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/estraverse/-/estraverse-5.3.0.tgz scripts/package-lock.json:449 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/esutils/-/esutils-2.0.3.tgz scripts/package-lock.json:457 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/events-universal/-/events-universal-1.0.1.tgz scripts/package-lock.json:466 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/extract-zip/-/extract-zip-2.0.1.tgz scripts/package-lock.json:474 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/fast-fifo/-/fast-fifo-1.3.2.tgz scripts/package-lock.json:494 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/fd-slicer/-/fd-slicer-1.1.0.tgz scripts/package-lock.json:500 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/get-caller-file/-/get-caller-file-2.0.5.tgz scripts/package-lock.json:509 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/get-stream/-/get-stream-5.2.0.tgz scripts/package-lock.json:518 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/get-uri/-/get-uri-6.0.5.tgz scripts/package-lock.json:532 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz scripts/package-lock.json:546 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz scripts/package-lock.json:559 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/import-fresh/-/import-fresh-3.3.1.tgz scripts/package-lock.json:571 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/ip-address/-/ip-address-10.1.0.tgz scripts/package-lock.json:586 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/is-arrayish/-/is-arrayish-0.2.1.tgz scripts/package-lock.json:594 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz scripts/package-lock.json:600 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/js-tokens/-/js-tokens-4.0.0.tgz scripts/package-lock.json:609 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/js-yaml/-/js-yaml-4.1.1.tgz scripts/package-lock.json:614 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz scripts/package-lock.json:626 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/lines-and-columns/-/lines-and-columns-1.2.4.tgz scripts/package-lock.json:632 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/lru-cache/-/lru-cache-7.18.3.tgz scripts/package-lock.json:638 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/mitt/-/mitt-3.0.1.tgz scripts/package-lock.json:647 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/ms/-/ms-2.1.3.tgz scripts/package-lock.json:653 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/netmask/-/netmask-2.0.2.tgz scripts/package-lock.json:659 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/once/-/once-1.4.0.tgz scripts/package-lock.json:668 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz scripts/package-lock.json:677 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/pac-resolver/-/pac-resolver-7.0.1.tgz scripts/package-lock.json:696 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/parent-module/-/parent-module-1.0.1.tgz scripts/package-lock.json:709 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/parse-json/-/parse-json-5.2.0.tgz scripts/package-lock.json:720 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/pend/-/pend-1.2.0.tgz scripts/package-lock.json:738 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/picocolors/-/picocolors-1.1.1.tgz scripts/package-lock.json:743 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/progress/-/progress-2.0.3.tgz scripts/package-lock.json:748 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/proxy-agent/-/proxy-agent-6.5.0.tgz scripts/package-lock.json:756 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz scripts/package-lock.json:775 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/pump/-/pump-3.0.4.tgz scripts/package-lock.json:781 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/puppeteer/-/puppeteer-24.40.0.tgz scripts/package-lock.json:790 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/puppeteer-core/-/puppeteer-core-24.40.0.tgz scripts/package-lock.json:811 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/require-directory/-/require-directory-2.1.1.tgz scripts/package-lock.json:829 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/resolve-from/-/resolve-from-4.0.0.tgz scripts/package-lock.json:838 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/semver/-/semver-7.7.4.tgz scripts/package-lock.json:847 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/smart-buffer/-/smart-buffer-4.2.0.tgz scripts/package-lock.json:858 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/socks/-/socks-2.8.7.tgz scripts/package-lock.json:868 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz scripts/package-lock.json:882 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/source-map/-/source-map-0.6.1.tgz scripts/package-lock.json:896 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/streamx/-/streamx-2.25.0.tgz scripts/package-lock.json:906 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/string-width/-/string-width-4.2.3.tgz scripts/package-lock.json:917 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz scripts/package-lock.json:930 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/tar-fs/-/tar-fs-3.1.2.tgz scripts/package-lock.json:941 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/tar-stream/-/tar-stream-3.1.8.tgz scripts/package-lock.json:955 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/teex/-/teex-1.0.1.tgz scripts/package-lock.json:967 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/text-decoder/-/text-decoder-1.2.7.tgz scripts/package-lock.json:975 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/tslib/-/tslib-2.8.1.tgz scripts/package-lock.json:984 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/typed-query-selector/-/typed-query-selector-2.12.1.tgz scripts/package-lock.json:990 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/undici-types/-/undici-types-7.18.2.tgz scripts/package-lock.json:996 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz scripts/package-lock.json:1003 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz scripts/package-lock.json:1009 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/wrappy/-/wrappy-1.0.2.tgz scripts/package-lock.json:1025 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/ws/-/ws-8.20.0.tgz scripts/package-lock.json:1031 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/y18n/-/y18n-5.0.8.tgz scripts/package-lock.json:1052 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/yargs/-/yargs-17.7.2.tgz scripts/package-lock.json:1060 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/yargs-parser/-/yargs-parser-21.1.1.tgz scripts/package-lock.json:1078 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/yauzl/-/yauzl-2.10.0.tgz scripts/package-lock.json:1087 中危 外部 URL 外部 URL
https://mirrors.tencent.com/npm/zod/-/zod-3.25.76.tgz scripts/package-lock.json:1097 中危 外部 URL 外部 URL
https://creator.xiaohongshu.com/login scripts/xhs_publisher.js:510 中危 外部 URL 外部 URL
https://creator.xiaohongshu.com/publish/publish?source=official scripts/xhs_publisher.js:644 中危 外部 URL 外部 URL
https://creator.xiaohongshu.com scripts/xhs_publisher.js:660 目录结构
6 文件 · 82.0 KB · 2186 行 JSON 2f · 1117L
JavaScript 1f · 776L
Markdown 3f · 293L
├─
▾
references
│ ├─
posting-guide.md
Markdown
│ └─
setup.md
Markdown
├─
▾
scripts
│ ├─
package-lock.json
JSON
│ ├─
package.json
JSON
│ └─
xhs_publisher.js
JavaScript
└─
SKILL.md
Markdown
依赖分析 2 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
puppeteer | ^24.40.0 | npm | 否 | Latest stable; major version pinned but minor not pinned |
ws | 8.20.0 | npm | 否 | Transitive dependency via puppeteer-core; known CVE-2024-37890 mitigated by version range in lockfile |
安全亮点
✓ Content safety filtering is well-implemented with regex patterns blocking hate speech, incitement, and biased characterizations
✓ Session data stored locally in ~/.openclaw-sessions/xiaohongshu/ with no exfiltration observed
✓ Puppeteer browser automation is a legitimate, widely-used tool appropriate for the stated use case
✓ No credential harvesting or environment variable iteration for sensitive keys detected
✓ No base64-encoded payloads, eval(), or obfuscated code paths
✓ No reverse shell, C2 communication, or data exfiltration endpoints
✓ Hardcoded IP 122.0.0.0 is an unroutable placeholder, not an active threat
✓ Verified login flow uses user-supplied phone + OTP with explicit askCodeFn callback — credentials never stored in code
✓ UserDataDir isolation per session prevents cross-contamination
✓ Screenshot capture on failure is scoped to /tmp and workspace directory only