Skill flagged — suspicious patterns detected

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

WeMP Ops

微信公众号全流程运营:选题→采集→写作→排版→发布→数据分析→评论管理。 Use when: (1) 用户要写公众号文章或提供了选题方向, (2) 用户说"写一篇关于XXX的文章"/"帮我写篇推文"/"出一篇稿子", (3) 用户要求采集热点/素材/竞品分析, (4) 用户提到公众号日报/周报/数据分析/阅读量/...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 26 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill claims to operate a WeChat public account end-to-end and the repo contains scripts for collecting content, generating images, formatting Markdown/HTML and publishing to WeChat — that's coherent. However the registry metadata declares no required environment variables or primary credential, while SKILL.md explicitly describes using the WeChat Official Account API. Additionally config/default.json contains an appId/appSecret pair hard-coded — a mismatch with the declared requirements and bad practice (secrets in repo).
!
Instruction Scope
Runtime instructions tell the agent to read many workspace files (persona.md, <WORKSPACE>/collections/*, prompts, history), run local scripts (node scripts/*.mjs, python scripts), call external web_search/web_fetch, invoke image-generation tools (Seedream/nano-banana-pro/ComfyUI) and browser screenshot flows, and upload images/content to the WeChat material library. Those actions are largely expected for a publishing workflow, but they also allow broad access to local workspace data and many external endpoints — and the skill does not declare or restrict what credentials/endpoints will be used.
Install Mechanism
There is no install spec (instruction-only), which lowers the install-time risk. However the bundle includes many executable scripts that the agent will run (setup.mjs, publisher.mjs, smart_collect, fetch_news.py, etc.). There are no remote-download install steps, but executing included code is required for full functionality.
!
Credentials
The skill metadata lists no required env vars yet SKILL.md and README say WeChat API credentials are required. Worse, config/default.json in the package contains a weixin.appId and weixin.appSecret value — effectively hard-coded credentials included with the skill. The skill also references API keys for image services (Seedream, Gemini) but does not declare how those keys are provided. Requiring/embedding credentials without declaring them is disproportionate and risky.
Persistence & Privilege
always:false (normal). The skill will read and write files under the user's workspace (create drafts, images, prompts, history files) and may upload content to the user's WeChat account if credentials are present. Autonomous invocation is allowed by default — combined with credential access this increases blast radius, but autonomous invocation alone is not unusual.
Scan Findings in Context
[hardcoded-credentials] unexpected: config/default.json contains a weixin.appId and weixin.appSecret. A publishing skill should request credentials from the user or via environment variables; embedding them in repo is unexpected and a security/privacy risk.
[network-requests] expected: Multiple scripts (fetch_news.py, image-generation scripts, publisher.mjs, mermaid/browser screenshot flows) perform HTTP requests and interact with external services. Network access is expected for collecting references and image generation.
[local-file-io] expected: SKILL.md and scripts explicitly read/write workspace files (collections, prompts, drafts, images). This is expected for a content-generation/publishing workflow but grants broad local data access.
[shell-commands-and-browser-automation] expected: Instructions reference running shell scripts (sips, python http.server) and browser actions for screenshotting. That fits the described image-generation and rendering workflows but lets the skill issue arbitrary shell/OS-level operations via included scripts.
What to consider before installing
This skill is plausibly what it says (a WeChat public-account operations toolkit) but has red flags you should resolve before installing or running it with real data/accounts: - Do not trust embedded credentials. The package contains a weixin.appId and weixin.appSecret in config/default.json — remove them and replace with your own credentials supplied via a secure mechanism (environment variables or a user-only config file). - Ask the author/source for provenance. There is no homepage and the owner is unknown; confirm who published this and why credentials were bundled. - Inspect publisher.mjs and lib/utils.mjs before use. Those likely contain the code paths that call the WeChat API and upload content — verify endpoints, token handling, and that nothing sends unrelated files elsewhere. - Run setup and scripts in a sandboxed/test environment first (use a throwaway WeChat test account) to observe network calls and files written, before giving it access to a production account or your workspace. - If you need only writing/formatting features, consider disabling automatic publishing and image-generation steps until you provide vetted API keys. - Consider requiring the skill to declare required env vars (WEIXIN_APPID, WEIXIN_SECRET, SEEDREAM_KEY, etc.) instead of storing secrets in repo, and limit agent autonomy if you do not want it to publish automatically. Confidence is medium because the code and instructions are coherent with the stated purpose, but the presence of hard-coded credentials and the lack of declared credential requirements are meaningful inconsistencies that should be resolved.
scripts/publisher.mjs:31
Shell command execution detected (child_process).
scripts/setup.mjs:29
Shell command execution detected (child_process).
scripts/smart_collect.mjs:19
Shell command execution detected (child_process).
!
scripts/lib/utils.mjs:5
File read combined with network send (possible exfiltration).
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.

Current versionv1.0.0
Download zip
latestvk979gk1b7px2rd02pzp4p13pes831bhb

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

wemp-ops — 微信公众号运营技能

环境检查

首次使用前执行:

node scripts/setup.mjs

检查 Node.js 版本、Python3、微信公众号 API 配置。

工作流路由

根据用户意图选择对应流程:

意图流程
"写一篇关于 X 的文章"全流程(下方详述)
"采集 X 热点"→ 仅采集
"公众号日报/周报"→ 数据分析
"检查/回复评论"→ 互动管理
"发布文章"→ 仅发布
"选题/有什么可以写的"→ 选题管理(检查 topic-pool.md)

全流程:选题到草稿箱

当用户给出选题方向时,执行以下完整流程。先读 persona.md 确定写作人设。

Step 0: 选题准备

如果老板没有指定具体选题,先检查选题池:

  1. 读取 <WORKSPACE>/collections/topics/topic-pool.md
  2. 列出当前高优选题,每个附带角度和素材情况
  3. 让老板选择,或老板提出新选题
  4. 选定后进入 Step 1

如果老板已有明确选题,直接进入 Step 1。

Step 1: 理解选题

references/article-templates.md 判断内容类型:

  • AI 产品拆解 — 具体产品名 + 分析/拆解
  • 场景解决方案 — "怎么用 AI 做 XXX"
  • 效率提升实战 — 工具 + 技巧/心得
  • 产品方法论 — 抽象话题 + 思考
  • 行业观察 — 新闻/趋势 + 观点

选题模糊时给 2-3 个具体方向让用户选(最多 1 轮澄清)。

Step 2: 素材采集

2a. 收藏库检索(优先) 先从个人收藏库中检索相关素材——这是让文章有"人味"的关键(详见 writing-techniques.md §五):

  1. 标签匹配:grep -i "关键词" <WORKSPACE>/collections/tags.md
  2. 全文搜索:grep -ril "关键词" <WORKSPACE>/collections/
  3. 有匹配时,读取对应文件的核心观点、要点摘录、个人笔记
  4. 标记可用素材的使用场景:开头引入?观点支撑?案例展示?反面论据?
  5. 收藏素材用自己的话重新表述,自然融入文章,不是学术式引用

2b. 外部采集(补充) 收藏库素材不足时,从外部补充:

  1. 根据选题扩展 3-5 个搜索关键词
  2. web_search 搜索 2-3 轮(官方信息→深度分析→对比评测)
  3. web_fetch 抓取 2-4 篇高质量参考文章
  4. 可选:node scripts/smart_collect.mjs 从 20+ 数据源采集相关热点
  5. 提取关键事实、数据、观点备用

2c. 素材整理 合并收藏库 + 外部素材,按相关度排序,标注来源

Step 3: 写作

references/writing-sop.mdreferences/style-guide.mdreferences/writing-techniques.md,按以下流程写作:

3a. 创意排水(正式动笔前必做) 花 2-3 分钟快速列出这个选题的"废水"——套路想法、陈词滥调、第一反应。标记为禁用列表,正式写作中刻意避开。(详见 writing-techniques.md §一)

3b. 正式写作

  • 遵循 persona.md 人设(AI 产品经理第一人称)
  • references/article-templates.md 对应类型的结构模板
  • 2000-3000 字,短句为主
  • 链接用纯文本格式
  • 输出为 Markdown 文件,保存到工作目录(文件名格式:draft-v1.md,放在当前文章的工作目录下,如 wemp-article-NN/draft-v1.md
  • 不要在文中出现 H1 标题(公众号自带标题,正文从 H2 开始)
  • 融入收藏库素材(Step 2 中检索到的真实经历/观点/案例)

写作中运用五大技巧(详见 writing-techniques.md §二):

  • 微幽默:每 200 字至少 1 个嘴角上扬的小细节
  • 强开头:禁止"在当今时代…"等套话,用具体事件/钩子/反常识/提问开头
  • 概念把手:为复杂概念创造 3-6 字记忆短语,每篇至少 1-2 个
  • 句子节奏:短/中/长句交替,不允许连续 3 句同长度
  • 多巴胺密度:每段至少 1 个"有意思"的点,连续 3 段没有 = 危险区域

3c. 标题生成(双轨制) 按 writing-techniques.md §四 生成标题候选:

  1. 爆款标题 3-5 个(金钱数字/暴力隐喻/悬念等要素)
  2. 自然风格标题 3-5 个(经验分享/观点输出/对比评测等)
  3. 可选:组合优化(自然标题 + 注入 1-2 个爆款要素)
  4. 推荐 Top 3 给老板选择

3d. 三遍审校 按 writing-techniques.md §三 结构化审校:

  • 第一遍:内容审校(事实/逻辑/结构)+ 段落迷你论点串联测试
  • 第二遍:风格审校(对照 24 条 AI 味特征清单降 AI 味 + 灵魂注入 + 5 维质量评分 ≥ 35 分才过)
  • 第三遍:细节打磨(句子节奏 + 多巴胺密度 + 微幽默 + 概念把手检查)

⚠️ 写作红线

  • 不暴露 AI 参与写作:不说"这篇文章是 AI 写的"、"让 AI 帮我写"等 — 读者对 AI 生成内容有抵触心理,暴露会显著降低阅读量和信任感
  • 讲故事,不讲论点:用时间线、场景、情绪推进,不用"总结"、"核心观点"、编号式论点堆砌
  • 自然过渡:不用中括号小标题、不用"以下是 N 条心得"式结构
  • 让读者感受到力量:分享经历,不是教学。有踩坑有收获,有真实细节
  • 禁止废水开头:不用"在当今 XX 的时代…"、"随着 XX 的不断发展…"等陈词滥调

Step 4: 封面图

设计指南见 references/cover-image-guide.md。两种方案:

方案 A(优先):Seedream 5.0 Lite 生成

  • <WORKSPACE>/scripts/seedream-generate.sh "prompt" output.jpg "2560x1080" 1
  • 0.22 元/张,质量高,无免费额度限制
  • 根据内容类型选配色(见 cover-image-guide.md)
  • 2.35:1 横版:先用 2560x1440(16:9) 生成,再 sips -c 1090 2560 裁剪为 2.35:1
  • 或用 2880x1280 生成后裁剪
  • ⚠️ 不用 emoji(浏览器截图会变色块),用纯文字 + 几何图形

方案 B(备选):nano-banana-pro 生成

  • Gemini 免费层级,额度可能耗尽
  • 适合轻量配图、额度充足时使用

方案 C(兜底):HTML 渲染 + 浏览器截图

  • 写一个 HTML 页面(渐变背景 + 标题文字 + SVG 图形)
  • python3 -m http.server 本地启动
  • 用 browser 工具 navigate + screenshot 截图
  • 适用于需要精确控制布局时

Step 4.5: 配图规划与生成

完整指南见 references/illustration-prompts.md(Type×Style 矩阵、Prompt 规范、风格锚点)。

4.5a 配图规划(先规划再生图)

  1. 扫描文章结构,按以下规则标注潜在配图位置:

    • ## 标题后的第一段 → 潜在配图点
    • 概念首次出现 → 用插图辅助解释
    • 转折/对比处("但是"、"然而"、"相比之下")→ 适合对比图
    • 连续超 800 字无任何视觉元素 → 需要打断
  2. 内容信号自动匹配,根据段落关键词推荐 Type:

    • 架构/分层/系统 → framework | 步骤/流程 → flowchart | vs/对比 → comparison
    • 数据/百分比 → infographic | 叙事/经历 → scene | 代码/界面 → screenshot
  3. 锁定全文 Style(一篇文章只用一种 AI 生图风格):

    • 技术/产品文 → notion-sketch(默认)| 数据/架构文 → tech-flat | 故事/教育文 → warm-doodle
  4. 输出配图计划表(保存到 illustration-plan.md),让老板确认后再生图。 密度参考:2000 字 3 张、3000 字 4-5 张,正文配图硬上限 5 张。

4.5b 生图执行

配图有两条渲染路径,在配图计划表中按每张图标注:

路径 A:AI 生图(视觉美感优先,适合大部分场景)

  • 优先级:Seedream 5.0 Lite → nano-banana-pro → ComfyUI
    • Seedream: <WORKSPACE>/scripts/seedream-generate.sh "prompt" output.jpg "2560x1440"
    • 正文插图 16:9 2560x1440
  • Prompt 按 LDSCS-R 六层结构构造:Layout → Data → Semantics → Characters → Style → Ratio
  • 风格锚点:第一张图成功后,记录风格特征到 prompts/style-anchor.md,后续图片引用保持一致
  • Prompt 持久化:每张图的 prompt 保存到 prompts/NN-{type}-{slug}.md,便于回溯修改

路径 B:Mermaid 渲染截图(信息精确性优先,技术文章的流程/架构/对比图)

  • 适用条件:配图计划中 Style 标注为 mermaid-render 的插图
  • 工作流
    1. 生成 Mermaid 代码(遵守 references/illustration-prompts.md 中的 Mermaid 规范)
    2. 写入 <WORKSPACE>/scripts/mermaid-render.html(临时 HTML 模板)
    3. 浏览器打开 → resize 2560x1440 → screenshot
    4. 裁剪白边(如需要)→ 存入 images/
  • Mermaid prompt 也持久化:保存到 prompts/NN-{type}-{slug}.md,记录 Mermaid 源码

通用规则

  • 截图美化:<WORKSPACE>/scripts/beautify-screenshot.sh <input> [output] --shadow --bg "#f5f5f5"
  • 水印去除:<WORKSPACE>/scripts/remove-watermark.sh <input> [output](nano-banana-pro 需去水印)
  • 配图数量:宁缺毋滥。不确定要不要配图 → 不配。
  • 同一篇文章中路径 A 和路径 B 可以混用,但渲染方式不超过 2 种。

Step 4.6: 产品截图获取

文章涉及线上产品(AI 工具、SaaS 产品等)时,截取真实产品界面作为配图。

公开页面(无需登录):

# 1. 打开产品页面
browser action:open url:"https://example.com/product"

# 2. 等待加载完成后截图
browser action:screenshot fullPage:false type:png

# 3. 裁剪/缩放(macOS sips 工具)
sips -z <高度> <宽度> screenshot.png                    # 缩放
sips -c <高度> <宽度> screenshot.png                    # 裁剪居中
sips --resampleWidth 800 screenshot.png                  # 按宽度等比缩放

# 4. 上传到微信素材库
node scripts/publisher.mjs  # 通过 --markdown 自动上传
# 或手动:在 utils.mjs 中调用 uploadArticleImage()

需登录页面(付费产品/内部系统):

  1. 让用户在 Chrome 打开目标页面
  2. 用户点击 OpenClaw Browser Relay 工具栏图标 attach 该 tab
  3. browser action:screenshot profile:chrome 截图
  4. 截图后同上流程裁剪上传

截图规范:

  • 宽度 600-900px,避免过大(微信有尺寸限制)
  • 隐藏/打码敏感信息(用户名、私有数据等)
  • 浏览器地址栏按需保留(能说明产品来源时保留)
  • 优先截取核心功能区域,不截全屏
  • 深色/浅色主题根据文章风格选择

Step 5: 排版美化

# 基础排版
python3 scripts/markdown_to_html.py --input article.md --theme tech --output article.html

# 带图片自动上传(本地图片自动上传到微信素材库并替换 URL)
python3 scripts/markdown_to_html.py --input article.md --theme tech --output article.html --upload

主题选择:tech(科技风,默认)、minimal(简约风)、business(商务风)。 排版约束详见 references/weixin-constraints.md

如果有额外配图需要手动插入(非 Markdown 内嵌图片),先上传再手动插入 HTML。

Step 6: 推送草稿箱

# 一键从 Markdown 到草稿(推荐,自动转 HTML + 上传图片 + 清理旧同名草稿)
node scripts/publisher.mjs --markdown article.md --title "文章标题" --cover cover.png

# 或手动分步:先转 HTML 再推送
python3 scripts/markdown_to_html.py --input article.md --theme tech --output article.html --upload
node scripts/publisher.mjs --title "文章标题" --content article.html --cover cover.png

# 跳过自动清理旧草稿
node scripts/publisher.mjs --markdown article.md --title "标题" --cover cover.png --no-cleanup

# 列出草稿
node scripts/publisher.mjs --list

# 删除草稿
node scripts/publisher.mjs --delete --media-id <id>

# 发布草稿(用户确认后)
node scripts/publisher.mjs --publish --media-id <草稿media_id>

默认停在草稿箱,不自动发布。 告知用户草稿已创建,确认后再发布。 推送新版本时自动清理同标题旧草稿(--no-cleanup 跳过)。

Step 7: 读者测试(可选但推荐)

交付前,用一个无上下文的子 Agent 阅读文章全文,检查:

  • 标题是否让人想点开?(不知道背景的人能否被吸引)
  • 开头两段是否抓住注意力?(3 秒法则)
  • 是否有行业黑话/未解释的概念?(非目标读者能否理解)
  • 结尾是否有力?(读完后想做什么) 如果子 Agent 发现盲点,修改后再交付。

Step 8: 交付

向用户汇报:文章标题、字数、草稿状态、封面预览、建议发布时间。

仅采集

node scripts/smart_collect.mjs --query "用户需求" --keywords "AI扩展的关键词" --sources "hackernews,v2ex,36kr" [--deep]

数据源分类:

  • tech: hackernews, github, v2ex, sspai, juejin, ithome, producthunt
  • china: weibo, zhihu, baidu, douyin, bilibili, toutiao, tencent, thepaper, hupu
  • finance: 36kr, wallstreetcn, cls

采集后整理为选题候选清单,每条含:标题、来源、热度、链接、与用户需求的相关度。

数据分析

# 日报(默认昨天)
node scripts/daily_report.mjs [--date YYYY-MM-DD]

# 周报
node scripts/weekly_report.mjs

输出包含:用户增长、阅读数据、热门文章、互动数据、AI 洞察。

互动管理

# 检查新评论
node scripts/check_comments.mjs

# 回复评论
node scripts/reply_comment.mjs --comment-id <id> --content "回复内容"

AI 生成回复建议时遵循 persona.md 的语气规范,用户确认后再执行回复。

配置

公众号凭证配置在 skill 自己的 config/default.json

{
  "weixin": {
    "appId": "你的AppID",
    "appSecret": "你的AppSecret"
  }
}

⚠️ 不要写到 openclaw.jsonchannels 里! channels 只接受 OpenClaw 内置渠道类型(dingtalk/telegram/discord 等),写入未知类型会导致 gateway 校验失败并不断重启。

其他配置(数据源偏好、报告时间等)同样在 config/default.json 中调整。


多版本分发(一篇→多平台)

公众号文章完成后,可一键生成其他平台版本。

触发词

  • "把这篇文章分发到小红书/X"
  • "生成多平台版本"
  • "同步到其他平台"

分发流程

Step 1: 读取源文章

从公众号草稿箱/已发布文章中提取:标题、正文、核心观点、配图

Step 2: 生成小红书版本

自动调用 xiaohongshu-ops 技能:

  1. 标题:从公众号标题中提炼,加 emoji,≤20 字
  2. 正文:缩写到 300-600 字,口语化改写,去掉长段落
  3. 配图:从公众号文章中选 1-3 个核心观点,制作信息卡(Seedream 优先,备选 nano-banana-pro / HTML截图)
  4. 标签:5-10 个小红书话题标签
  5. 通过 openclaw browser 发布到创作中心

Step 3: 生成 X/Twitter 版本

  1. 单条推文(≤280 字符):提炼文章最核心的一个观点,英文或中文
  2. Thread 版本(可选):3-5 条推文,适合深度内容
  3. 通过 openclaw browser 发布(参考 TOOLS.md 中的 X 发帖 SOP)
  4. 发帖前先让老板确认内容 — 外部发布是不可撤回的操作,确认能避免事后删帖的尴尬

Step 4: 记录分发状态

在公众号文章对应的 memory 记录中标注已分发平台和链接

改写原则

  • 每个平台版本重新改写 — 直接复制粘贴会被平台算法降权,且不同平台的受众期待和内容格式差异很大
  • 小红书:口语化、短句、emoji 多用、互动提问结尾
  • X/Twitter:精炼、有冲击力、适合英文受众(如有)
  • 保持核心观点一致,但表达方式适配平台调性

Files

27 total
Select a file
Select a file to preview.

Comments

Loading comments…