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.
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.
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.
const imagePath = path.isAbsolute(src) ? src : path.resolve(baseDir, src); const uploaded = await uploadImage(config, accessToken, imagePath, false);
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.
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.
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.
secret: account.appSecret
...
await fs.writeFile(cacheFile, JSON.stringify({ access_token: result.access_token, expires_at: expiresAt }, null, 2), "utf8");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.
A saved template may carry unwanted HTML, links, images, or styling into future WeChat drafts.
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.
registry.templates[templateName] = {
name: templateName,
importedAt: new Date().toISOString(),
source: analysis.source,
introHtml,
outroHtml,
customCss: styleOutput,
...
analysis
};Review and sanitize imported templates before saving or reusing them, especially templates imported from external URLs.
Installing dependencies later could resolve to newer package versions than the author tested.
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.
"dependencies": {
"highlight.js": "^11.11.1",
"juice": "^11.0.3"
}Install in an isolated environment, use lockfiles or pinned versions where possible, and review dependency provenance.
