Agent skill · Audited from source
baoyu-post-to-wechat
skill · jimliu/baoyu-skillsMIT licenceAudited 31 Oct 2026 · source ae9966d431c4
Is it safe? No — BLOCK, grade D (69/100). We read this skill's source at commit ae9966d431c4 and observed filesystem, network and shell access and no hard-coded secrets. The audit raised 10 findings, 2 critical or high. What it does: Posts content to WeChat Official Account (微信公众号) via API or Chrome CDP. Supports article posting (文章) with HTML, markdown, or plain text input, and image-text posting (贴图, formerly 图文) with multiple images. Markdown…
Cite
Cite this page
ModelsAtlas. “baoyu-post-to-wechat (jimliu/baoyu-skills)”. Retrieved 31 Oct 2026. https://modelsatlas.com/skills/jimliu/baoyu-post-to-wechat
Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 2 critical or high findings, starting with “Prompt injection” in SKILL.md:170. Do not install it without reading them.
Trust audit
Audit 0.4.1 · source read 31 Oct 2026
BLOCK means the audit found something that could harm you or your machine. Grade D is shared by 721 of 17,602 audited skills.
What the source does
- FilesystemDeclared1 observation
- NetworkDeclared5 observations
- ShellDeclared5 observations
- DependenciesNot pinnedSome versions float
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | PASS | 8 |
L2 Instructions | Prompt injection, authority framing, hidden directives | FAIL | 2 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: critical finding, no behavioural pass, undeclared transfer.
Findings (10)
CRITICALPrompt injectionprompt.transfer_instruction · SKILL.md:170
**`remote-api` method**: WeChat's "公众号设置 → IP 白名单" often limits API access to one or two fixed IPs. If your local machine's IP is not on that list but a cloud server's is, use `remote-api`: all markdo
- Why
- an instruction to move sensitive data to an outside destination
- Fix
- remove; a skill never needs the user's secrets off the machine
HIGHPrompt injectionprompt.credential_read · SKILL.md:274
| Access token error | Verify credentials valid and not expired |
- Why
- asks the agent to read credentials
- Fix
- —
LOWFilesystem / pathfs.credential_store · scripts/wechat-extend-config.test.ts:163
"remote_publish_identity_file: /home/me/.ssh/id_ed25519",
- Why
- touches a credential store
- Fix
- —
LOWFilesystem / pathfs.credential_store · scripts/wechat-extend-config.test.ts:164
"remote_publish_known_hosts_file: /home/me/.ssh/known_hosts",
- Why
- touches a credential store
- Fix
- —
LOWFilesystem / pathfs.credential_store · scripts/wechat-extend-config.test.ts:178
assert.equal(resolved.remote_publish_identity_file, "/home/me/.ssh/id_ed25519");
- Why
- touches a credential store
- Fix
- —
LOWFilesystem / pathfs.credential_store · scripts/wechat-extend-config.test.ts:179
assert.equal(resolved.remote_publish_known_hosts_file, "/home/me/.ssh/known_hosts");
- Why
- touches a credential store
- Fix
- —
LOWFilesystem / pathfs.credential_store · scripts/wechat-remote-publish.test.ts:39
identityFile: "/home/me/.ssh/id_ed25519",
- Why
- touches a credential store
- Fix
- —
LOWNetwork egressnet.raw_ip · scripts/wechat-http.test.ts:37
const baseUrl = `http://127.0.0.1:${address.port}`;- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.raw_ip · scripts/wechat-socks-http.test.ts:38
return { baseUrl: `http://127.0.0.1:${port}`, port, received };- Why
- No further detail recorded for this rule.
- Fix
- —
LOWSupply chainsupply.unpinned · scripts/package.json
@jsquash/webp, baoyu-chrome-cdp, baoyu-md, jimp, socks
- Why
- 5 dependency range(s) float
- Fix
- pin exact versions or ship a lockfile
Audit 0.4.1 · source sha ae9966d431c4 · 31 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherjimliu GitHub userOwner of the repository this skill is read from
- Source folderjimliu/baoyu-skills/skills/baoyu-post-to-wechatThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdictae9966d431c4A new audit runs when the source changes
- Repository statusNot archivedLast push 50 days ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Posts content to WeChat Official Account (微信公众号) via API or Chrome CDP. Supports article posting (文章) with HTML, markdown, or plain text input, and image-text posting (贴图, formerly 图文) with multiple images. Markdown…
---
name: baoyu-post-to-wechat
description: Posts content to WeChat Official Account (微信公众号) via API or Chrome CDP. Supports article posting (文章) with HTML, markdown, or plain text input, and image-text posting (贴图, formerly 图文) with multiple images. Markdown article workflows default to converting ordinary external links into bottom citations for WeChat-friendly output. Use when user mentions "发布公众号", "post to wechat", "微信公众号", or "贴图/图文/文章".
version: 1.118.2
metadata:
openclaw:
homepage: https://github.com/JimLiu/baoyu-skills#baoyu-post-to-wechat
requires:
anyBins:
- bun
- npx
---
# Post to WeChat Official Account
## User Input Tools
When this skill prompts the user, follow this tool-selection rule (priority order):
1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.
2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.
3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.
Concrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.
## Language
Respond in the user's language. If they write in Chinese, reply in Chinese; if English, English. Keep technical tokens (paths, flags, field names) in English.
## Script Directory
`{baseDir}` = this SKILL.md's directory. Resolve `${BUN_X}`: prefer `bun`; else `npx -y bun`; else suggest `brew install oven-sh/bun/bun`.
| Script | Purpose |
|--------|---------|
| `scripts/wechat-browser.ts` | Image-text posts (图文) |
| `scripts/wechat-article.ts` | Article posting via browser (文章) |
| `scripts/wechat-api.ts` | Article posting via API (文章) |
| `scripts/md-to-wechat.ts` | Markdown → WeChat-ready HTML with image placeholders |
| `scripts/check-permissions.ts` | Verify environment & permissions |
## Preferences (EXTEND.md)
Check these paths in order; first hit wins:
| Path | Scope |
|------|-------|
| `.baoyu-skills/baoyu-post-to-wechat/EXTEND.md` | Project |
| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-post-to-wechat/EXTEND.md` | XDG |
| `$HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md` | User home |
Found → read, parse, apply. Not found → run first-time setup (`references/config/first-time-setup.md`) before anything else.
**Minimum keys** (case-insensitive, accept `1/0` or `true/false`):
| Key | Default | Mapping |
|-----|---------|---------|
| `default_author` | empty | Fallback for `author` when CLI/frontmatter not provided |
| `need_open_comment` | `1` | `articles[].need_open_comment` in `draft/add` |
| `only_fans_can_comment` | `0` | `articles[].only_fans_can_comment` in `draft/add` |
**Recommended EXTEND.md**:
```md
default_theme: default
default_color: blue
default_publish_method: browser
default_author: 宝玉
need_open_comment: 1
only_fans_can_comment: 0
chrome_profile_path: /path/to/chrome/profile
# Remote API publishing (optional) — only set if WeChat's IP allowlist
# excludes your local machine. See "Remote API Method" below.
# remote_publish_host: server.example.com
# remote_publish_user: deploy
# remote_publish_port: 22
# remote_publish_identity_file: ~/.ssh/id_ed25519
# remote_publish_known_hosts_file: ~/.ssh/known_hosts
# remote_publish_strict_host_key_checking: accept-new
# remote_publish_connect_timeout: 10
# remote_publish_proxy_jump: bastion.example.com
```
Raw `ssh` / `scp` options are intentionally not supported; only the typed keys above are honored. Authentication is SSH key only (no passwords).
**Theme options**: default, grace, simple, modern. **Color presets**: blue, green, vermilion, yellow, purple, sky, rose, olive, black, gray, pink, red, orange (or hex).
**Value priority**: CLI args → frontmatter → EXTEND.md (account-level → global) → skill defaults.
## Multi-Account Support
EXTEND.md supports an `accounts:` block for managing multiple Official Accounts. With 2+ entries, the workflow inserts a Step 0.5 to prompt for account selection (or auto-selects based on `default: true` or `--account <alias>`).
Full details — compatibility rules, per-account keys, credential resolution, per-account Chrome profiles, CLI usage — in `references/multi-account.md`.
## Pre-flight Check (Optional)
Before first use, suggest the environment check (user can skip):
```bash
${BUN_X} {baseDir}/scripts/check-permissions.ts
```
Checks: Chrome, profile isolation, Bun, Accessibility, clipboard, paste keystroke, API credentials, Chrome conflicts.
| Check fails | Fix |
|-------------|-----|
| Chrome | Install Chrome or set `WECHAT_BROWSER_CHROME_PATH` |
| Profile dir | Shared profile at `baoyu-skills/chrome-profile` |
| Bun runtime | `brew install oven-sh/bun/bun` or `npm install -g bun` |
| Accessibility (macOS) | System Settings → Privacy & Security → Accessibility → enable terminal app |
| Clipboard copy | Ensure Swift/AppKit (macOS: `xcode-select --install`) |
| Paste keystroke (Linux) | Install `xdotool` (X11) or `ydotool` (Wayland) |
| API credentials | Follow guided setup in Step 2, or set in `.baoyu-skills/.env` |
## Image-Text Posting (图文)
Short posts with multiple images (up to 9):
```bash
${BUN_X} {baseDir}/scripts/wechat-browser.ts --markdown article.md --images ./images/
${BUN_X} {baseDir}/scripts/wechat-browser.ts --title "标题" --content "内容" --image img.png --submit
```
Details: `references/image-text-posting.md`.
## Article Posting Workflow (文章)
```
- [ ] Step 0: Load preferences (EXTEND.md)
- [ ] Step 0.5: Resolve account (multi-account only — see references/multi-account.md)
- [ ] Step 1: Determine input type
- [ ] Step 2: Select method and configure credentials
- [ ] Step 3: Resolve theme/color and validate metadata
- [ ] Step 4: Publish to WeChat
- [ ] Step 5: Report comExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit ae9966d
git clone https://github.com/jimliu/baoyu-skills git -C baoyu-skills checkout ae9966d431c4
The author documents no install command, so this uses the repository directly. Our verdict covers commit ae9966d431c4 only.
Works in which agents?
What its own text says, not a test
| Agent | Status | More |
|---|---|---|
| OpenClaw | Mentioned in its text, not tested | Skills for OpenClaw · About OpenClaw |
Audit history
Every audit, every source change
- ✕BLOCK D 69 / 100
first audit · source
ae9966d431c4
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/jimliu/baoyu-post-to-wechat/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
jimliu/baoyu-skills
Generates professional slide deck images from content. Creates outlines with style instructions, then generates individual slide images. Use when user asks to "create slides", "make a presentation", "generate deck",…
jimliu/baoyu-skills
This skill should be used when the user asks to "translate", "翻译", "精翻", "translate article", "translate to Chinese", "translate to English", "改成中文", "改成英文", "convert to Chinese", "localize", "本地化", "refined…
jimliu/baoyu-skills
Posts content to Weibo (微博). Supports regular posts with text, images, and videos, and headline articles (头条文章) with Markdown input via Chrome CDP. Use when user asks to "post to Weibo", "发微博", "发布微博", "publish to…
jimliu/baoyu-skills
Posts content and articles to X (Twitter). Supports regular posts with images/videos and X Articles (long-form Markdown). In Codex, honor explicit requests for the Codex Chrome plugin/@chrome by using the Chrome…
jimliu/baoyu-skills
Converts Markdown to styled HTML with WeChat-compatible themes. Supports code highlighting, math, Mermaid (rendered to PNG via headless Chrome), PlantUML, footnotes, alerts, infographics, and optional bottom citations…
jimliu/baoyu-skills
Generate professional infographics with 21 layout types and 22 visual styles. Analyzes content, recommends layout×style combinations, and generates publication-ready infographics. Use when user asks to create…
Add this badge to your README
[](https://modelsatlas.com/skills/jimliu/baoyu-post-to-wechat/)
<a href="https://modelsatlas.com/skills/jimliu/baoyu-post-to-wechat/"><img src="https://modelsatlas.com/skills/jimliu/baoyu-post-to-wechat/badge.svg" alt="ModelsAtlas: BLOCK D"></a>
Questions about baoyu-post-to-wechat
Is baoyu-post-to-wechat safe to install?
What can baoyu-post-to-wechat access on my machine?
Which assistants does baoyu-post-to-wechat work with?
How current is this page?
Sources
- github.com/jimliu/baoyu-skills/tree/main/skills/baoyu-post-to-we — the audited source at commit ae9966d431c4 and every finding aboveObserved · 31 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- Is baoyu-post-to-wechat safe to install?
- What can baoyu-post-to-wechat access on my machine?
- Which assistants does baoyu-post-to-wechat work with?