Trusted — Risk Score 5/100
Last scan:2 days ago Rescan
5 /100
baoyu-post-to-wechat
微信公众号文章发布工具,支持通过 API 或浏览器自动化方式发布 Markdown/HTML 文章
baoyu-post-to-wechat 是一个合法的微信公众号文章发布工具,所有能力与声明一致,无恶意行为发现。
Skill Namebaoyu-post-to-wechat
Duration56.0s
Enginepi
Safe to install
该技能可安全使用。所有声明的网络请求指向微信官方 API (api.weixin.qq.com),所有 shell 命令为操作系统标准工具(osascript/xdotool/ydotool),用于剪贴板自动化。硬编码 IP 在第三方依赖中且为合理的 CDN 地址。

Findings 3 items

Severity Finding Location
Info
第三方依赖包含硬编码 IP
scripts/vendor/baoyu-md/src/extensions/alert.ts:157 包含硬编码 IP 138.112.25.25,但分析显示为合理的 SVG 图形数据,非恶意地址
viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"
→ 无需处理,此为第三方依赖中的 SVG 图标数据
scripts/vendor/baoyu-md/src/extensions/alert.ts:157
Low
权限声明与实现差异
SKILL.md 未明确声明使用 shell 命令进行剪贴板自动化,但实际代码使用了 osascript/xdotool/ydotool
spawnSync('osascript', ...)
→ 建议在 SKILL.md 中补充声明 shell:WRITE 权限用于剪贴板操作
scripts/paste-from-clipboard.ts:1
Info
Chrome Profile 隔离
check-permissions.ts 检查 Chrome Profile 隔离,确保不会干扰用户正常浏览器会话
检查 Profile isolation
→ 无需处理,此为安全设计
scripts/check-permissions.ts:1
ResourceDeclaredInferredStatusEvidence
Filesystem NONE WRITE ✓ Aligned scripts/md-to-wechat.ts:62 创建临时 HTML 文件
Network READ READ ✓ Aligned scripts/wechat-api.ts:48 仅向 api.weixin.qq.com 发送文章数据
Browser WRITE WRITE ✓ Aligned scripts/cdp.ts 使用 Chrome CDP 进行自动化
Shell NONE WRITE ✓ Aligned scripts/paste-from-clipboard.ts 使用 osascript/xdotool/ydotool
Environment NONE READ ✓ Aligned scripts/wechat-extend-config.ts 读取配置和凭证
1 High 27 findings
📡
High IP Address 硬编码 IP 地址
138.112.25.25
scripts/vendor/baoyu-md/src/extensions/alert.ts:157
🔗
Medium External URL 外部 URL
https://mp.weixin.qq.com
SKILL.md:322
🔗
Medium External URL 外部 URL
https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKEN
SKILL.md:387
🔗
Medium External URL 外部 URL
https://gemini.google.com/app
scripts/vendor/baoyu-chrome-cdp/src/index.test.ts:242
🔗
Medium External URL 外部 URL
https://softonit.ru/
scripts/vendor/baoyu-md/src/code-themes/1c-light.min.css:6
🔗
Medium External URL 外部 URL
https://highlightjs.org/
scripts/vendor/baoyu-md/src/code-themes/default.min.css:6
🔗
Medium External URL 外部 URL
https://creativecommons.org/licenses/by-sa/4.0
scripts/vendor/baoyu-md/src/code-themes/nnfx-dark.min.css:6
🔗
Medium External URL 外部 URL
http://www.w3.org/2000/svg
scripts/vendor/baoyu-md/src/constants.ts:79
🔗
Medium External URL 外部 URL
https://marked.js.org/
scripts/vendor/baoyu-md/src/extensions/alert.ts:23
🔗
Medium External URL 外部 URL
https://groups.google.com/g/mathjax-users/c/zThKffrrCvE?pli=1
scripts/vendor/baoyu-md/src/extensions/katex.ts:26
🔗
Medium External URL 外部 URL
https://www.plantuml.com/plantuml
scripts/vendor/baoyu-md/src/extensions/plantuml.ts:7
🔗
Medium External URL 外部 URL
https://plantuml.com/text-encoding
scripts/vendor/baoyu-md/src/extensions/plantuml.ts:35
🔗
Medium External URL 外部 URL
https://talk.commonmark.org/t/proper-ruby-text-rb-syntax-support-in-markdown/2279
scripts/vendor/baoyu-md/src/extensions/ruby.ts:5
🔗
Medium External URL 外部 URL
https://www.w3.org/TR/ruby/
scripts/vendor/baoyu-md/src/extensions/ruby.ts:6
🔗
Medium External URL 外部 URL
https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/highlightjs/$
scripts/vendor/baoyu-md/src/utils/languages.ts:80
🔗
Medium External URL 外部 URL
https://mp.weixin.qq.com/
scripts/wechat-agent-browser.ts:6
🔗
Medium External URL 外部 URL
https://api.weixin.qq.com/cgi-bin/token
scripts/wechat-api.ts:54
🔗
Medium External URL 外部 URL
https://api.weixin.qq.com/cgi-bin/material/add_material
scripts/wechat-api.ts:55
🔗
Medium External URL 外部 URL
https://api.weixin.qq.com/cgi-bin/draft/add
scripts/wechat-api.ts:56
🔗
Medium External URL 外部 URL
https://mmbiz.qpic.cn
scripts/wechat-api.ts:179
📧
Info Email 邮箱地址
[email protected]
scripts/vendor/baoyu-md/src/code-themes/1c-light.min.css:4
📧
Info Email 邮箱地址
[email protected]
scripts/vendor/baoyu-md/src/code-themes/agate.min.css:3
📧
Info Email 邮箱地址
[email protected]
scripts/vendor/baoyu-md/src/code-themes/an-old-hope.min.css:3
📧
Info Email 邮箱地址
[email protected]
scripts/vendor/baoyu-md/src/code-themes/default.min.css:4
📧
Info Email 邮箱地址
[email protected]
scripts/vendor/baoyu-md/src/code-themes/felipec.min.css:3
📧
Info Email 邮箱地址
[email protected]
scripts/vendor/baoyu-md/src/code-themes/nnfx-dark.min.css:4
📧
Info Email 邮箱地址
[email protected]
scripts/vendor/baoyu-md/src/code-themes/tokyo-night-dark.min.css:5

File Tree

126 files · 404.3 KB · 10777 lines
TypeScript 40f · 8425L CSS 78f · 1408L Markdown 4f · 900L JSON 4f · 44L
├─ 📁 references
│ ├─ 📁 config
│ │ └─ 📝 first-time-setup.md Markdown 203L · 5.2 KB
│ ├─ 📝 article-posting.md Markdown 95L · 2.5 KB
│ └─ 📝 image-text-posting.md Markdown 94L · 2.8 KB
├─ 📁 scripts
│ ├─ 📁 vendor
│ │ ├─ 📁 baoyu-chrome-cdp
│ │ │ ├─ 📁 src
│ │ │ │ ├─ 📜 index.test.ts TypeScript 307L · 9.3 KB
│ │ │ │ └─ 📜 index.ts TypeScript 523L · 16.8 KB
│ │ │ └─ 📋 package.json JSON 9L · 140 B
│ │ └─ 📁 baoyu-md
│ │ ├─ 📁 src
│ │ │ ├─ 📁 code-themes
│ │ │ │ ├─ 📄 1c-light.min.css CSS 8L · 1.1 KB
│ │ │ │ ├─ 📄 a11y-dark.min.css CSS 6L · 1.1 KB
│ │ │ │ ├─ 📄 a11y-light.min.css CSS 6L · 1.1 KB
│ │ │ │ ├─ 📄 agate.min.css CSS 19L · 1.3 KB
│ │ │ │ ├─ 📄 an-old-hope.min.css CSS 8L · 961 B
│ │ │ │ ├─ 📄 androidstudio.min.css CSS 1L · 611 B
│ │ │ │ ├─ 📄 arduino-light.min.css CSS 1L · 844 B
│ │ │ │ ├─ 📄 arta.min.css CSS 1L · 673 B
│ │ │ │ ├─ 📄 ascetic.min.css CSS 1L · 454 B
│ │ │ │ ├─ 📄 atom-one-dark-reasonable.min.css CSS 1L · 1.2 KB
│ │ │ │ ├─ 📄 atom-one-dark.min.css CSS 1L · 856 B
│ │ │ │ ├─ 📄 atom-one-light.min.css CSS 1L · 856 B
│ │ │ │ ├─ 📄 brown-paper.min.css CSS 1L · 656 B
│ │ │ │ ├─ 📄 codepen-embed.min.css CSS 1L · 600 B
│ │ │ │ ├─ 📄 color-brewer.min.css CSS 1L · 631 B
│ │ │ │ ├─ 📄 dark.min.css CSS 1L · 625 B
│ │ │ │ ├─ 📄 default.min.css CSS 8L · 1.1 KB
│ │ │ │ ├─ 📄 devibeans.min.css CSS 6L · 1.1 KB
│ │ │ │ ├─ 📄 docco.min.css CSS 1L · 837 B
│ │ │ │ ├─ 📄 far.min.css CSS 1L · 669 B
│ │ │ │ ├─ 📄 felipec.min.css CSS 6L · 1.2 KB
│ │ │ │ ├─ 📄 foundation.min.css CSS 1L · 779 B
│ │ │ │ ├─ 📄 github-dark-dimmed.min.css CSS 8L · 1.2 KB
│ │ │ │ ├─ 📄 github-dark.min.css CSS 9L · 1.3 KB
│ │ │ │ ├─ 📄 github.min.css CSS 9L · 1.3 KB
│ │ │ │ ├─ 📄 gml.min.css CSS 1L · 787 B
│ │ │ │ ├─ 📄 googlecode.min.css CSS 1L · 835 B
│ │ │ │ ├─ 📄 gradient-dark.min.css CSS 1L · 1.1 KB
│ │ │ │ ├─ 📄 gradient-light.min.css CSS 1L · 1.1 KB
│ │ │ │ ├─ 📄 grayscale.min.css CSS 1L · 1.6 KB
│ │ │ │ ├─ 📄 hybrid.min.css CSS 1L · 897 B
│ │ │ │ ├─ 📄 idea.min.css CSS 1L · 906 B
│ │ │ │ ├─ 📄 intellij-light.min.css CSS 1L · 1.0 KB
│ │ │ │ ├─ 📄 ir-black.min.css CSS 1L · 694 B
│ │ │ │ ├─ 📄 isbl-editor-dark.min.css CSS 1L · 971 B
│ │ │ │ ├─ 📄 isbl-editor-light.min.css CSS 1L · 952 B
│ │ │ │ ├─ 📄 kimbie-dark.min.css CSS 1L · 652 B
│ │ │ │ ├─ 📄 kimbie-light.min.css CSS 1L · 652 B
│ │ │ │ ├─ 📄 lightfair.min.css CSS 1L · 831 B
│ │ │ │ ├─ 📄 lioshi.min.css CSS 1L · 715 B
│ │ │ │ ├─ 📄 magula.min.css CSS 1L · 642 B
│ │ │ │ ├─ 📄 mono-blue.min.css CSS 1L · 631 B
│ │ │ │ ├─ 📄 monokai-sublime.min.css CSS 1L · 826 B
│ │ │ │ ├─ 📄 monokai.min.css CSS 1L · 814 B
│ │ │ │ ├─ 📄 night-owl.min.css CSS 1L · 1.4 KB
│ │ │ │ ├─ 📄 nnfx-dark.min.css CSS 9L · 1.4 KB
│ │ │ │ ├─ 📄 nnfx-light.min.css CSS 9L · 1.4 KB
│ │ │ │ ├─ 📄 nord.min.css CSS 1L · 2.6 KB
│ │ │ │ ├─ 📄 obsidian.min.css CSS 1L · 882 B
│ │ │ │ ├─ 📄 panda-syntax-dark.min.css CSS 1L · 1.1 KB
│ │ │ │ ├─ 📄 panda-syntax-light.min.css CSS 1L · 1.0 KB
│ │ │ │ ├─ 📄 paraiso-dark.min.css CSS 1L · 637 B
│ │ │ │ ├─ 📄 paraiso-light.min.css CSS 1L · 637 B
│ │ │ │ ├─ 📄 pojoaque.min.css CSS 1L · 814 B
│ │ │ │ ├─ 📄 purebasic.min.css CSS 1L · 734 B
│ │ │ │ ├─ 📄 qtcreator-dark.min.css CSS 1L · 815 B
│ │ │ │ ├─ 📄 qtcreator-light.min.css CSS 1L · 810 B
│ │ │ │ ├─ 📄 rainbow.min.css CSS 1L · 826 B
│ │ │ │ ├─ 📄 routeros.min.css CSS 1L · 862 B
│ │ │ │ ├─ 📄 school-book.min.css CSS 1L · 664 B
│ │ │ │ ├─ 📄 shades-of-purple.min.css CSS 1L · 854 B
│ │ │ │ ├─ 📄 srcery.min.css CSS 1L · 795 B
│ │ │ │ ├─ 📄 stackoverflow-dark.min.css CSS 12L · 1.2 KB
│ │ │ │ ├─ 📄 stackoverflow-light.min.css CSS 12L · 1.3 KB
│ │ │ │ ├─ 📄 sunburst.min.css CSS 1L · 950 B
│ │ │ │ ├─ 📄 tokyo-night-dark.min.css CSS 7L · 1.2 KB
│ │ │ │ ├─ 📄 tokyo-night-light.min.css CSS 7L · 1.2 KB
│ │ │ │ ├─ 📄 tomorrow-night-blue.min.css CSS 1L · 648 B
│ │ │ │ ├─ 📄 tomorrow-night-bright.min.css CSS 1L · 648 B
│ │ │ │ ├─ 📄 vs.min.css CSS 1L · 640 B
│ │ │ │ ├─ 📄 vs2015.min.css CSS 1L · 1.1 KB
│ │ │ │ ├─ 📄 xcode.min.css CSS 1L · 945 B
│ │ │ │ └─ 📄 xt256.min.css CSS 1L · 765 B
│ │ │ ├─ 📁 extensions
│ │ │ │ ├─ 📜 alert.ts TypeScript 284L · 19.3 KB
│ │ │ │ ├─ 📜 footnotes.ts TypeScript 89L · 2.4 KB
│ │ │ │ ├─ 📜 index.ts TypeScript 10L · 280 B
│ │ │ │ ├─ 📜 infographic.ts TypeScript 119L · 3.6 KB
│ │ │ │ ├─ 📜 katex.ts TypeScript 162L · 4.6 KB
│ │ │ │ ├─ 📜 markup.ts TypeScript 87L · 2.3 KB
│ │ │ │ ├─ 📜 plantuml.ts TypeScript 289L · 8.1 KB
│ │ │ │ ├─ 📜 ruby.ts TypeScript 125L · 3.9 KB
│ │ │ │ ├─ 📜 slider.ts TypeScript 73L · 2.9 KB
│ │ │ │ └─ 📜 toc.ts TypeScript 74L · 2.1 KB
│ │ │ ├─ 📁 themes
│ │ │ │ ├─ 📄 base.css CSS 39L · 816 B
│ │ │ │ ├─ 📄 default.css CSS 434L · 7.7 KB
│ │ │ │ ├─ 📄 grace.css CSS 136L · 2.5 KB
│ │ │ │ ├─ 📄 modern.css CSS 465L · 8.2 KB
│ │ │ │ └─ 📄 simple.css CSS 129L · 2.7 KB
│ │ │ ├─ 📁 utils
│ │ │ │ └─ 📜 languages.ts TypeScript 238L · 8.1 KB
│ │ │ ├─ 📜 cli.ts TypeScript 163L · 5.7 KB
│ │ │ ├─ 📜 constants.ts TypeScript 84L · 3.3 KB
│ │ │ ├─ 📜 content.test.ts TypeScript 93L · 2.3 KB
│ │ │ ├─ 📜 content.ts TypeScript 105L · 3.1 KB
│ │ │ ├─ 📜 document.test.ts TypeScript 140L · 4.3 KB
│ │ │ ├─ 📜 document.ts TypeScript 206L · 6.7 KB
│ │ │ ├─ 📜 extend-config.ts TypeScript 57L · 2.3 KB
│ │ │ ├─ 📜 html-builder.test.ts TypeScript 71L · 2.5 KB
│ │ │ ├─ 📜 html-builder.ts TypeScript 142L · 4.4 KB
│ │ │ ├─ 📜 images.test.ts TypeScript 79L · 2.5 KB
│ │ │ ├─ 📜 images.ts TypeScript 156L · 4.1 KB
│ │ │ ├─ 📜 index.ts TypeScript 10L · 307 B
│ │ │ ├─ 📜 render.ts TypeScript 43L · 1.2 KB
│ │ │ ├─ 📜 renderer.test.ts TypeScript 64L · 2.0 KB
│ │ │ ├─ 📜 renderer.ts TypeScript 442L · 13.3 KB
│ │ │ ├─ 📜 themes.ts TypeScript 62L · 1.8 KB
│ │ │ └─ 📜 types.ts TypeScript 78L · 1.8 KB
│ │ └─ 📋 package.json JSON 21L · 450 B
│ ├─ 📜 cdp.ts TypeScript 255L · 8.2 KB
│ ├─ 📜 check-permissions.ts TypeScript 251L · 8.6 KB
│ ├─ 📜 copy-to-clipboard.ts TypeScript 380L · 11.9 KB
│ ├─ 📜 md-to-wechat.ts TypeScript 170L · 4.7 KB
│ ├─ 📋 package.json JSON 9L · 208 B
│ ├─ 📜 paste-from-clipboard.ts TypeScript 194L · 5.5 KB
│ ├─ 📜 wechat-agent-browser.ts TypeScript 363L · 11.1 KB
│ ├─ 📜 wechat-api.ts TypeScript 664L · 21.0 KB
│ ├─ 📜 wechat-article.ts TypeScript 787L · 32.0 KB
│ ├─ 📜 wechat-browser.ts TypeScript 741L · 27.7 KB
│ └─ 📜 wechat-extend-config.ts TypeScript 245L · 7.7 KB
├─ 📋 _meta.json JSON 5L · 141 B
└─ 📝 SKILL.md Markdown 508L · 19.7 KB

Dependencies 4 items

PackageVersionSourceKnown VulnsNotes
marked ^15.0.6 npm No 标准 Markdown 解析库
highlight.js ^11.11.1 npm No 代码高亮库
juice ^11.0.1 npm No HTML 内联样式库
fflate ^0.8.2 npm No 压缩库

Security Positives

✓ 所有网络请求指向微信官方 API (api.weixin.qq.com),非外部服务器
✓ 使用 Chrome 独立的 --user-data-dir 实现浏览器隔离
✓ 凭证仅用于本地 API 调用,不会上传到任何外部服务器
✓ 代码结构清晰,无混淆或隐藏逻辑
✓ 使用标准 TypeScript 和 npm 包,无可疑依赖
✓ 支持多账户隔离,每个账户使用独立的 Chrome Profile
✓ 临时文件在 /tmp 目录创建,使用后自动清理