wechat-style-publisher

ReviewAudited by ClawScan on May 10, 2026.

Overview

This skill mostly matches its WeChat publishing purpose, but it can use account secrets and automatically upload local files referenced in article or template HTML, so it needs careful review before use.

Install only if you trust the environment and need automated WeChat draft/material creation. Before running it, verify the account list, protect the config and token cache, and inspect article/template HTML for unexpected local image paths because those files may be uploaded to WeChat.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If article or imported template HTML contains an unexpected local path, the skill could read and upload a local file to the WeChat material API while publishing.

Why it was flagged

The publish flow scans generated HTML for local img src values and uploads them to WeChat. The code does not restrict paths to a safe content directory, reject absolute paths, or require per-file confirmation.

Skill content
const imagePath = path.isAbsolute(src) ? src : path.resolve(baseDir, src);
const uploaded = await uploadImage(config, accessToken, imagePath, false);
Recommendation

Only use trusted article/template HTML, review all image paths before publishing, and update the skill to reject absolute paths or '..' traversal and ask for confirmation before uploading files.

What this means

Anyone who can read the config file or token cache may be able to act on the configured WeChat accounts until the token expires or credentials are rotated.

Why it was flagged

The skill uses WeChat account app secrets to obtain access tokens and persists those tokens in a local cache. This is expected for WeChat publishing, but it is sensitive account authority.

Skill content
secret: account.appSecret
...
await fs.writeFile(cacheFile, JSON.stringify({ access_token: result.access_token, expires_at: expiresAt }, null, 2), "utf8");
Recommendation

Keep config and .tokens files out of shared folders and version control, restrict file permissions, and use dedicated WeChat credentials with the minimum needed permissions.

What this means

A saved template may carry unwanted HTML, links, images, or styling into future WeChat drafts.

Why it was flagged

Imported article HTML, CSS, and analysis are stored persistently as reusable template variables. This is a stated feature, but content imported from URLs or untrusted files can be reused later.

Skill content
registry.templates[templateName] = {
  name: templateName,
  importedAt: new Date().toISOString(),
  source: analysis.source,
  introHtml,
  outroHtml,
  customCss: styleOutput,
  ...
  analysis
};
Recommendation

Review and sanitize imported templates before saving or reusing them, especially templates imported from external URLs.

What this means

Installing dependencies later could resolve to newer package versions than the author tested.

Why it was flagged

The skill includes executable Node.js scripts and depends on external npm packages with semver ranges. That is normal for this functionality, but dependency versions are not fully pinned.

Skill content
"dependencies": {
  "highlight.js": "^11.11.1",
  "juice": "^11.0.3"
}
Recommendation

Install in an isolated environment, use lockfiles or pinned versions where possible, and review dependency provenance.