Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

微信公众号工具包

v1.0.3

微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。

12· 2.5k·33 current·34 all-time
byMrQ@mr-q526

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for mr-q526/wechat-toolkit.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "微信公众号工具包" (mr-q526/wechat-toolkit) from ClawHub.
Skill page: https://clawhub.ai/mr-q526/wechat-toolkit
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: node
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install mr-q526/wechat-toolkit

ClawHub CLI

Package manager switcher

npx clawhub@latest install wechat-toolkit
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
Skill 名称/描述与实际功能(搜索、下载、改写、发布微信公众号文章)一致;包含一个内置 fork 的 wenyan-cli 用于发布,这也是合理的。不过注册时声明的需求很有限(仅 node),而 SKILL.md 明确要求 WECHAT_APP_ID / WECHAT_APP_SECRET、Google Chrome、本地绝对路径等运行前提,注册元数据没有反映这些必需项 → 声明与实际能力不一致。
!
Instruction Scope
SKILL.md 指示脚本会抓取搜狗微信搜索结果并抓取正文、下载文章媒体、对文章进行“洗稿”改写并最终调用 wenyan-cli 发布到微信公众号。发布/渲染流程支持“server 模式”(向可配置的远程 server 发起 POST 请求)和调用用户提供的图片生成 skills。指令要求读取本地 Markdown、绝对图片路径并上传。总体上指令范围包含网络抓取、文件读写、上传到第三方/远程服务器 —— 这些都与技能目的相关, 但需要注意:server 模式允许把文章内容发送到任意 server URL(由用户或配置提供),这构成潜在的数据外泄通道。
Install Mechanism
注册的 install spec 只有 brew 安装 node(合理且低风险)。但仓库包含大量 vendor/依赖(wenyan-cli fork、pnpm lock、多个 npm 包),SKILL.md 仍要求在子目录执行 npm install / 全局安装 cheerio / bootstrap 脚本等。总体安装来源是公开 npm、GitHub 风格项目和本地脚本,没有看到从不可信个人服务器直接下载的归档 URL → 安装机制属于中低风险,但会在本地拉入许多第三方依赖,建议在受控环境中安装并审计依赖。
!
Credentials
注册元数据声明“Required env vars: none”,但 SKILL.md 明确要求设置 WECHAT_APP_ID 和 WECHAT_APP_SECRET(用于调用微信公众号 API),并提到 IP 白名单要求。这是一个显著的不一致(技能在运行时需要敏感凭据,但元数据没有申报)。此外,发布流程允许指定远程 server 与 api-key 参数:如果用户配置为第三方 server,会把文章内容和操作请求转发到该 server(可能接收敏感内容或凭据)。
Persistence & Privilege
技能未设置 always:true,默认允许被用户或 agent 自主调用(platform 默认)。技能会在本地写入/读取配置(例如 downloader 的默认下载路径、wenyan token 存储),这是合理。需要注意的是:自主/自动调用结合对微信公众号凭据的访问与可配置远程 server 会扩大潜在影响范围,应谨慎授权自动化执行。
What to consider before installing
简明建议: - 不建议在不信任的环境下提供 WECHAT_APP_ID / WECHAT_APP_SECRET;先确认你愿意授予该 skill 发布到公众号的权限。 - SKILL.md 要求凭据但 registry 元数据未声明——这是不一致,安装前询问作者或审阅 publish 脚本(scripts/publisher/*.js)以确认凭据如何被使用与保存位置。 - 谨慎使用 server 模式:如果你传入或使用了第三方 server URL 或 api-key,文章内容和发布请求可能被发送到该远端,造成数据外泄。优先使用本地模式(直接调用微信 API 并在本机部署,且仅在受信任网络/受控主机上运行)。 - 若只想做“搜索/下载/改写”功能,可避免执行发布/bootstrap 步骤;在受控目录下先运行脚本并审查输出,避免自动把内容上传到远端。 - 在安装前: - 在隔离环境(容器或虚拟机)中运行并观测网络请求; - 审核 scripts/publisher 与 vendor/wenyan-cli-main 的代码,确认没有将凭据或文章内容发送到未知域名; - 若你关心合规/版权,注意“洗稿”功能可能违反平台或法律政策。
scripts/publisher/manage_draft.js:102
Shell command execution detected (child_process).
scripts/publisher/publish_with_video.js:236
Shell command execution detected (child_process).
scripts/publisher/publish.js:108
Shell command execution detected (child_process).
scripts/publisher/theme_catalog.js:394
Shell command execution detected (child_process).
scripts/publisher/wenyan_runner.js:11
Shell command execution detected (child_process).
scripts/downloader/download.js:161
Environment variable access combined with network send.
vendor/wenyan-cli-main/src/wechat-admin.ts:138
Environment variable access combined with network send.
Patterns worth reviewing
These patterns may indicate risky behavior. Check the VirusTotal and OpenClaw results above for context-aware analysis before installing.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

📦 Clawdis
Binsnode

Install

Install Node.js (brew)
Bins: node
brew install node
latestvk97fqzcr24yqbyvqtamr9h0b7d83tgv7
2.5kdownloads
12stars
4versions
Updated 2h ago
v1.0.3
MIT-0

📦 微信公众号工具包 (wechat-toolkit)

集成四大功能模块:搜索 → 下载 → 洗稿 → 发布,覆盖公众号内容创作全流程。


模块一览

模块功能触发词示例
🔍 搜索按关键词搜索公众号文章"搜XX的公众号文章"
📰 下载下载文章内容/图片/视频"下载这篇公众号文章"
✍️ 洗稿AI去痕迹+原创改写"帮我洗稿/改写这篇文章"
📱 发布发布Markdown到草稿箱"发布到公众号"

🔍 模块一:文章搜索

通过搜狗微信搜索获取公众号文章列表,支持抓取正文。

首次安装依赖

npm install -g cheerio

使用方法

# 基础搜索
node {baseDir}/scripts/search/search_wechat.js "关键词"

# 指定数量
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 15

# 保存到文件
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 20 -o result.json

# 解析真实链接
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 5 -r

# 抓取文章正文(自动启用 -r)
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 5 -c

参数说明

  • query:搜索关键词(必填)
  • -n, --num:返回数量(默认 10,最大 50)
  • -o, --output:输出 JSON 文件路径
  • -r, --resolve-url:解析微信文章真实链接
  • -c, --fetch-content:抓取文章正文内容(自动启用 -r)

输出字段

  • 文章标题、地址、概要、发布时间、来源公众号
  • content:正文内容(使用 -c 时)
  • word_count:字数统计(使用 -c 时)

📰 模块二:文章下载

输入公众号文章链接,自动下载内容(Markdown+HTML)、配图和视频。

首次安装依赖

cd {baseDir}/scripts/downloader && npm install

下载前:确认保存位置

# 查看当前配置
node {baseDir}/scripts/downloader/download.js --show-config

# 设置默认下载路径(仅需一次)
node {baseDir}/scripts/downloader/download.js --set-output ~/Downloads/wechat-articles
  • "isDefault": true → 尚未配置,需询问用户
  • "isDefault": false → 已配置,告知用户当前路径

下载文章

# 使用默认路径
node {baseDir}/scripts/downloader/download.js "<文章URL>"

# 临时指定路径
node {baseDir}/scripts/downloader/download.js "<文章URL>" --output <临时目录>

# 跳过图片/视频
node {baseDir}/scripts/downloader/download.js "<文章URL>" --no-image
node {baseDir}/scripts/downloader/download.js "<文章URL>" --no-video

输出结构

<下载目录>/<文章标题>/
├── content/article.html      # 完整 HTML
├── metadata.json              # 标题、作者、时间等
├── images/                    # 所有配图
└── videos/                    # 所有视频/音频

前置要求

  • Node.js ≥ 18、Google Chrome、npm install(首次)

✍️ 模块三:文章洗稿与改写

将文章改写为自然、原创的风格,去除 AI 写作痕迹,提升原创度。

触发词

  • "帮我洗稿这篇文章"
  • "改写成原创"
  • "降低查重率"
  • "去掉 AI 味"

洗稿工作流

标准洗稿流程

  1. 获取原文 — 通过搜索(-c 抓正文)或下载获得原文
  2. 分析结构 — 识别文章类型、核心论点、段落层次
  3. 深度改写 — 按以下策略执行改写
  4. 添加 frontmatter — 补充 title + cover
  5. 发布 — 推送到公众号草稿箱

改写策略

A. 结构重组(降重核心)

  • 段落重排:调整段落顺序,打乱原文结构
  • 段落拆合:将长段拆为短段,或合并碎片段落
  • 叙事角度转换:时间线 ↔ 问题导向 ↔ 对比分析 ↔ 故事引入
  • 论据重组:保留核心论据,改变展开方式

B. 语言改写(去 AI 痕迹)

  • 删除意义膨胀句:"标志性"、"里程碑"、"深远影响" → 替换为具体事实
  • 去虚假权威:"专家认为"、"业内普遍认为" → 写明来源或删除
  • 去伪深度动词:"提升能力"、"赋能"、"推动进程" → 改为具体动作
  • 去广告语气:"卓越"、"极致体验"、"全方位" → 客观描述
  • 去 AI 高频词:赋能、闭环、生态、抓手、底层逻辑、范式、沉淀、势能
  • 去填充短语:事实上、值得注意的是、总体来说、不难发现
  • 去空洞结尾:"未来可期"、"值得期待" → 实际结论或行动项

C. 标题改写

为每篇文章生成 3-5 个备选标题,涵盖:

  • 疑问型:用问题引发好奇("为什么XX还在用这种方法?")
  • 数字型:用数字增强可信度("3个被忽略的XX技巧")
  • 悬念型:制造信息差("XX的真相,90%的人不知道")
  • 痛点型:戳中读者痛点("别再XX了,试试这个方法")

D. 开头改写

将原文开头转换为以下风格之一:

  • 故事引入:用一个小故事或场景切入
  • 数据引入:用震撼数据开头
  • 痛点引入:直击读者困扰
  • 反问引入:抛出反直觉问题

E. SEO 优化(可选)

  • 在标题和首段自然植入核心关键词
  • 在小标题中分布长尾关键词
  • 控制关键词密度(2%-5%),保持自然可读

AI 痕迹识别清单

改写完成后,逐项检查:

#检查项处理方式
1意义膨胀句替换为具体事实
2虚假权威引用写明来源或删除
3伪深度动词改为具体动作
4广告语气客观描述
5模板段落(挑战→机遇→展望)删除模板,保留结论
6AI 高频词密集出现替换为日常用语
7负向并列滥用(不仅…而且…)直接表达
8三段式强拆保留重点,删填充项
9同义词机械轮换同一概念固定用词
10破折号滥用改为句号或逗号
11加粗强调滥用去掉不必要强调
12列表模板(X:…)合并为自然段
13概念堆砌标题改为口语化标题
14Emoji 泛滥除非指定风格,默认删除
15聊天语残留删除
16知识截止声明删除
17过度讨好语气客观回应
18填充短语删除
19过度模糊(可能会、或许)改为条件判断
20空洞结尾改为实际结论
21假区间表达(从…到…)列举具体事实

输出格式

  1. 改写后全文(Markdown 格式,含 frontmatter)
  2. 备选标题(3-5 个)
  3. 修改说明(可选,简要列出主要改动)

判断标准

改写成功的标志:

  • ✅ 读起来像真人写的,能直接朗读不拗口
  • ✅ 没有空洞句、模板段、"像 AI" 的气味
  • ✅ 信息密度高,每句话都有具体内容
  • ✅ 结构与原文明显不同
  • ✅ 保持原文核心信息完整性

📱 模块四:文章发布

一键发布 Markdown 到微信公众号草稿箱,基于 wenyan-cli。

首次安装

node {baseDir}/scripts/bootstrap/install_wenyan.js

说明:

  • skill 已内置 fork 版 wenyan-cli 源码,位置是 vendor/wenyan-cli-main
  • 首次运行发布脚本时,也会自动执行这一步
  • 如果本机没有 pnpm,可先执行 corepack enable

配置 API 凭证

确保环境变量已设置(或在 TOOLS.md 中配置):

export WECHAT_APP_ID=your_wechat_app_id
export WECHAT_APP_SECRET=your_wechat_app_secret

重要: IP 必须在微信公众号后台白名单中!

Markdown 格式要求

文件顶部必须包含完整 frontmatter:

---
title: 文章标题(必填!)
cover: https://example.com/cover.jpg  # 封面图(必填!)
---

# 正文...

⚠️ titlecover 缺一不可,否则报错。

⚠️ 图片路径必须使用绝对路径,避免 wenyan 路径解析问题。包括 cover 和正文中的所有图片引用:

cover: /Users/minruiqing/photos/cover.jpg        # ✅ 绝对路径
cover: ./assets/cover.jpg                         # ❌ 相对路径可能出错

![配图](/Users/minruiqing/photos/image.jpg)       # ✅ 绝对路径
![配图](./images/photo.jpg)                       # ❌ 相对路径可能出错

⚠️ 图片路径里不要出现空格。 cover 和正文图片一旦带空格,wenyan 上传公众号时很容易失败。建议文章目录、media/ 目录和所有文件名都使用无空格命名。

配图生成

发布前,主动询问用户是否需要生成配图

📸 文章准备就绪!需要我帮你生成配图吗?

  • 封面图(cover,建议 1080×864)
  • 正文插图(根据段落主题生成)
  • 不需要,直接发布

如果用户需要配图:

  1. 根据文章标题和内容,生成合适的图片描述 prompt
  2. 调用用户提供的生图 skill(如 doubao-image、openai-image-gen 等)生成图片
  3. 将生成的图片保存到文章目录,使用绝对路径引用
  4. 封面图设置到 frontmatter 的 cover 字段
  5. 正文插图在合适位置插入 ![描述](绝对路径)

prompt 建议:

  • 封面图:与标题强相关,简洁有冲击力,适合小尺寸预览
  • 正文插图:与对应段落内容一致,辅助理解

发布方式

# 方式 1: 使用 publish.js
node {baseDir}/scripts/publisher/publish.js /path/to/article.md

# 方式 2: 直接用 wenyan-cli
wenyan publish -f article.md -t lapis -h solarized-light

# 方式 3: stdin(推荐,解决路径问题)
# macOS/Linux:
cat "/path/to/article.md" | WECHAT_APP_ID=xxx WECHAT_APP_SECRET=xxx wenyan publish -t lapis -h solarized-light

# 方式 4: 含视频文章(必须用这个)
node {baseDir}/scripts/publisher/publish_with_video.js /path/to/article.md

# 方式 5: 草稿 / 已发布文章管理
node {baseDir}/scripts/publisher/manage_draft.js get MEDIA_ID
node {baseDir}/scripts/publisher/manage_draft.js list --count 10
node {baseDir}/scripts/publisher/manage_draft.js count
node {baseDir}/scripts/publisher/manage_draft.js delete MEDIA_ID
node {baseDir}/scripts/publisher/manage_draft.js publish MEDIA_ID --wait
node {baseDir}/scripts/publisher/manage_draft.js status PUBLISH_ID
node {baseDir}/scripts/publisher/manage_draft.js published-list --count 10
node {baseDir}/scripts/publisher/manage_draft.js published-get ARTICLE_ID
node {baseDir}/scripts/publisher/manage_draft.js published-delete ARTICLE_ID --index 0

草稿删除与正式发布

wenyan 扩展后,现在除了“上传到草稿箱”之外,还支持:

# 直接用 wenyan
wenyan draft get MEDIA_ID
wenyan draft list --count 10
wenyan draft count
wenyan draft delete MEDIA_ID
wenyan draft publish MEDIA_ID --wait
wenyan publish-status PUBLISH_ID
wenyan published list --count 10
wenyan published get ARTICLE_ID
wenyan published delete ARTICLE_ID --index 0

# 或使用 toolkit 包装脚本(自动读取 TOOLS.md 中的凭证)
node {baseDir}/scripts/publisher/manage_draft.js get MEDIA_ID
node {baseDir}/scripts/publisher/manage_draft.js list --count 10
node {baseDir}/scripts/publisher/manage_draft.js count
node {baseDir}/scripts/publisher/manage_draft.js delete MEDIA_ID
node {baseDir}/scripts/publisher/manage_draft.js publish MEDIA_ID --wait
node {baseDir}/scripts/publisher/manage_draft.js status PUBLISH_ID
node {baseDir}/scripts/publisher/manage_draft.js published-list --count 10
node {baseDir}/scripts/publisher/manage_draft.js published-get ARTICLE_ID
node {baseDir}/scripts/publisher/manage_draft.js published-delete ARTICLE_ID --index 0

说明:

  • draft list / published list 支持 --offset--count--no-content
  • draft publish 返回的是异步发布任务,推荐带 --wait
  • publish-status 用来查询正式发布结果
  • published delete --index 0 会删除整篇已发布图文;传具体序号可删单篇
  • 正式发布能力依赖公众号权限;如果微信返回未授权,需要去公众平台确认接口权限

主题选项

先查看 wechat-toolkit 已整理好的主题目录:

node {baseDir}/scripts/publisher/publish.js --list-themes

Bundled 主题(12 个)

  • 内置:defaultorangeheartrainbowlapispiemaizepurplephycat
  • 自定义:auroranewsroomsageember

代码高亮atom-one-darkatom-one-lightdraculagithubgithub-darkmonokaisolarized-darksolarized-lightxcode

主题预览(ClawHub 版本说明)

  • ClawHub 发布包默认不包含 PNG 预览图,避免触发非文本文件限制和体积限制
  • 如果你本地想生成参考图,请运行:
node {baseDir}/scripts/publisher/publish.js --generate-theme-previews
  • 生成目录:{baseDir}/scripts/publisher/theme_previews/
# 使用 bundled 主题发布
node {baseDir}/scripts/publisher/publish.js article.md lapis
node {baseDir}/scripts/publisher/publish.js article.md aurora

# 指定高亮主题
node {baseDir}/scripts/publisher/publish.js article.md newsroom github

# 重新生成全部参考图
node {baseDir}/scripts/publisher/publish.js --generate-theme-previews

视频嵌入(关键)

微信视频必须用 iframe + data-mpvid 格式,publish_with_video.js 已内置此逻辑。

Markdown 中引用:

![视频描述](media/video.mp4)   # 自动上传并嵌入

故障排查

问题解决方法
IP 不在白名单curl ifconfig.me → 添加到公众号后台
内置 wenyan 未就绪node {baseDir}/scripts/bootstrap/install_wenyan.js
环境变量未设置export WECHAT_APP_ID=xxx
缺少 frontmatter添加 title + cover
40001 token 失效publish_with_video.js(已内置 token 管理)
图片路径带空格重命名目录/文件,确保 cover 和正文图片路径都不含空格

完整工作流示例

搜索 → 洗稿 → 发布

1. 搜索文章:node {baseDir}/scripts/search/search_wechat.js "AI教程" -n 5 -c
2. 选择目标文章,执行洗稿改写
3. 保存为 Markdown(含 frontmatter)
4. 发布:node {baseDir}/scripts/publisher/publish.js article.md

下载 → 洗稿 → 发布

1. 下载文章:node {baseDir}/scripts/downloader/download.js "https://mp.weixin.qq.com/s/xxx"
2. 读取下载的 HTML/Markdown,执行洗稿改写
3. 保存为 Markdown(含 frontmatter)
4. 发布:node {baseDir}/scripts/publisher/publish.js article.md

注意事项

  • 所有工具仅供个人学习使用,请遵守版权法规
  • 搜索功能内置防封禁机制(随机UA、请求延迟),请勿高频使用
  • 配置文件:下载器 {baseDir}/scripts/downloader/config.json

Comments

Loading comments...