Skill flagged — suspicious patterns detected

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

Wechat Daily Article

v1.6.0

微信公众号每日文章自动创作技能。搜索热点 → 撰写SEO优化文章 → 生成配图 → 上传草稿箱。含爆款标题模板、内容类型模板、搜一搜SEO优化。

1· 124·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for jimo970/wechat-daily-article.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Wechat Daily Article" (jimo970/wechat-daily-article) from ClawHub.
Skill page: https://clawhub.ai/jimo970/wechat-daily-article
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
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 jimo970/wechat-daily-article

ClawHub CLI

Package manager switcher

npx clawhub@latest install wechat-daily-article
Security Scan
Capability signals
Requires OAuth tokenRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
high confidence
!
Purpose & Capability
The declared purpose (auto-create WeChat articles) matches the included code: scripts create drafts and upload images to the WeChat API. However, instead of declaring a required WeChat credential for the account to publish to, the create_draft.py embeds APPID/APPSECRET constants. The presence of Feishu helper with embedded APP_ID/APP_SECRET/USER_OPEN_ID is not explained in SKILL metadata. Requesting or embedding external account credentials without declaring them is disproportionate to the packaging and surprises the user.
!
Instruction Scope
SKILL.md instructs running web_search and image_generate (expected) and then executing scripts that: obtain an access_token from api.weixin.qq.com, upload images, add permanent materials and create drafts, and (optionally) send notifications to Feishu. Those network actions post data to third‑party services and will use credentials found in the code. The SKILL.md does not warn that drafts will be uploaded to an external WeChat account or that notifications will be sent to a fixed Feishu open_id. It also hardcodes a path to run the script (/root/.openclaw/...), which may not match runtime environments.
Install Mechanism
No install spec; this is instruction + included scripts only. No download/install steps that would fetch arbitrary remote archives. Files are present in the skill bundle so nothing is fetched at installation time.
!
Credentials
The skill declares no required env vars or primary credential, yet both scripts contain hardcoded secrets: create_draft.py embeds APPID='wx89c939070fc20789' and APPSECRET='6cb9a52250e39cb52bc61d9f5b520066'; feishu_sender.py embeds APP_ID, APP_SECRET and USER_OPEN_ID. This is disproportionate and opaque: secrets are present but not declared, and the skill therefore can interact with external accounts without the user providing or approving credentials.
Persistence & Privilege
always:false and no modification of other skills or global agent configuration. The agent can invoke the skill autonomously by default (normal), which combined with the embedded credentials increases potential impact — but autonomous invocation alone is not unusual.
What to consider before installing
Do not install or run this skill without addressing the hardcoded credentials. Key concerns: (1) create_draft.py contains embedded WeChat APPID/APPSECRET — if you run the script your generated articles and images will be uploaded to whoever controls that WeChat app; (2) feishu_sender.py includes Feishu app credentials and a fixed recipient open_id so drafts or files may be sent to an external Feishu user; (3) the skill metadata declares no required credentials, so these secrets are hidden in code. Recommended actions before installing: a) Inspect and replace the hardcoded APPID/APPSECRET/Feishu credentials with your own credentials (or modify the scripts to accept credentials via environment variables) and re-run tests in an isolated environment; b) Verify ownership of the embedded credentials (if you must use them) — otherwise assume they route content to someone else; c) Consider removing autonomous invocation or restricting the skill until credential handling is explicit; d) Check and adapt the hardcoded file path (/root/.openclaw/...) to your environment. If you are not comfortable auditing or changing the code, do not install the skill.

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

latestvk976yszxtsf5a5nc96ksqvj87s85bamp
124downloads
1stars
8versions
Updated 5d ago
v1.6.0
MIT-0

微信公众号每日文章创作

自动化工作流,覆盖从热点发现到草稿箱保存的完整环节。

工作流程

搜索热点 → 选题诊断 → 写文章(HTML)→ 生成7张配图 → 保存草稿

第一步:搜索热点

web_search 搜索以下关键词组合,获取当日热点:

「今日旅游热点」「今日美食热点」「小红书旅游爆款笔记」「抖音美食热门」

从微博、小红书、抖音、知乎等平台收集热度最高的话题。旅游和美食方向优先


第二步:写文章

⚠️ 创作前先自检(账号问题诊断检查清单)

写文章前,对照以下问题检查选题和标题,发现问题必须调整:

❌ 已踩坑,避开这些模式:

  • 标题过于四平八稳,没有分享钩子 → 必须改!
  • 「本地人私藏」「全网爆火」等泛泛表述 → 换成具体数字/反差/独家发现
  • 内容同质化,和其他公众号角度一样 → 必须换角度!
  • 纯干货罗列,没有情绪共鸣 → 加故事/反常识/引发好奇

✅ 好选题的自检标准:

  • 标题有「分享驱动」——读者看完想转发
  • 内容有「反常识」或「信息差」——不是网上随便能搜到的
  • 有具体数据/地点/人物——不说「很好吃」,说「人均48元的巷子小店」
  • 开头50字能抓住眼球——扔一个悬念或共鸣场景
  • 时效性内容在24小时内发出——热点不等人

标题规范(升级版 — 爆款驱动)

核心公式:地域 + 数字 + 情绪刺激 + 好奇缺口

❌ 旧版(太平)✅ 升级版(爆款)
成都美食|本地人私藏的7条美食街成都人嘴太严了!这7条街的馆子,连出租车司机都偷偷去
4月追花指南,全网爆火的赏花目的地今年4月,全网博主都在偷偷去这几个地方拍花海
厦门3天2夜攻略,本地人带路不是鼓浪屿!厦门本地人私藏的6个小众目的地,99%游客不知道

标题模板(直接套用,替换方括号内容):

① [地名]人嘴太严了!这X个[品类],连[特定人群]都[惊人行为]
② 今年[季节],全网[都在做同一件事]的地方,[悬念结尾]
③ 不是[热门]![地名]这X个小众目的地,[反差结果]
④ [地名]|不是[表象],[真实情况]的[品类],本地人[行为]
⑤ [数字]个[品类],[情绪词]:[具体描述](第X个美到窒息/好吃到哭)

禁止出现的标题模式:

  • ❌ 「必看」「必吃」「必去」(夸大,微信打压)
  • ❌ 「震惊」「刚刚」「刚刚发生」(标题党,平台降权)
  • ❌ 纯地名堆砌,不带情绪和角度
  • ❌ 过长(超过35字)

搜一搜 SEO 优化(必做!长尾流量核心)

❗ 搜一搜是公众号长尾流量的最大入口。一篇好文章在搜一搜可以持续3-6个月带来阅读,而爆款只有1-2周。

搜一搜流量目前仅占2.6%,优化空间巨大。目标:提升到10%+。


① 标题埋词规则

标题必须包含:地域词 + 品类词 + 需求词

✅ 正确示例:
「成都美食|本地人私藏的7条美食街,全是烟火气!」
         ↑地域    ↑品类   ↑需求(宝藏/私藏=好奇心)

「五一出游:避开人挤人的6个小众目的地,最后一个没人知道」
  ↑时效  ↑地域词  ↑品类词   ↑需求词

❌ 错误示例(没有搜索关键词):
「这家店真的很好吃」— 地域和品类都不明确,搜一搜无法匹配
「我的旅行日记」— 太泛,没有任何关键词

高搜索量关键词库(旅游美食类):

地域:成都/重庆/杭州/西安/大理/丽江/厦门/青岛/长沙/广州/上海/北京…
品类:美食/小吃/餐厅/火锅/烧烤/咖啡/甜品/景点/民宿/酒店/一日游/自驾
需求:美食推荐/必吃/打卡/拍照/小众/冷门/人少/宝藏/私藏/本地人/攻略/路线
时间:五一/清明/端午/暑假/周末/春季/夏季/春节/圣诞

② 正文关键词布局

第一段(开头50字内)必须出现:[地域]+[品类] 关键词组合

<!-- ✅ 正确:开头即埋词 -->
<p>成都有条巷子,藏着7家「土著才知道」的馆子,连出租车司机换班都要先去吃一碗。</p>

<!-- ❌ 错误:开头没有关键词,前100字都被浪费 -->
<p>旅行的意义是什么?大概是在陌生的地方找到惊喜……(泛泛而谈,搜不到)</p>

正文中多处长尾词:每个章节至少出现1次[地域]+[品类]组合


③ 结尾标签(必须完整保留)

<hr>
<p><em>关注【镜头逃亡·旅食记】,用镜头记录旅途,用味蕾丈量世界。</em></p>
<p><strong>#旅行 #美食 #探店 #打卡 #[具体地域] #[具体品类]</strong></p>
<p>转发给朋友,TA会感谢你!👇</p>

结尾行动钩子(必须加):

  • 在标签后加一句朋友圈转发诱导语,格式:转发给朋友,TA会感谢你!👇
  • 或:你身边有朋友计划去[地名]吗?转发给他,TA会感谢你!
  • 目的:触发读者分享到朋友圈,提升社交裂变

标签格式说明:

  • 固定标签:#旅行 #美食 #探店 #打卡
  • 动态标签(每篇文章必加):# + 地域名,如 #成都 #重庆 #杭州
  • 品类标签(可选):#火锅 #小吃 #咖啡 #民宿 #攻略

示例:

<p><strong>#旅行 #美食 #探店 #打卡 #成都 #美食推荐 #成都美食</strong></p>

④ 搜一搜标题公式(直接套用)

兼顾爆款 + 搜索的标题模板:

[地域]+[数字]+[品类]+[反差/情绪词]
示例:成都人私藏的7条美食街,连本地人都偷偷去(地域+数字+品类+反差)

[五一/端午/暑假]+[地域]+[品类]+[需求]
示例:五一成都周边5个小众目的地,五一出游客必收藏(时效+地域+品类+需求)

[地域]+[品类]|[一句话核心价值]
示例:成都美食|本地人常去的7条街,好吃程度外地人不知道(地域+品类+价值)

⑤ 搜一搜优化自检(每次必查)

写完文章后,对照检查:

  • 标题包含**[地域][品类]**两个以上关键词
  • 正文第一段出现**[地域+品类]**组合
  • 每个章节至少1次**[地域+品类]**组合
  • 结尾标签包含**[地域标签]**(如 #成都)
  • 没有使用「必吃」「必去」「最」等极限词

开头50字模板(直接套用)

反常识开头:
"大家都去[热门地],[我]却偏偏去了[小众地],结果……[意外结局]"

共鸣场景开头:
"[具体场景描述,带日期/地点/人物],这一刻我突然明白……"

数据冲击开头:
"[惊人数字],[某个现象],[谁]却在悄悄……"

好奇缺口开头:
"[普遍认知]?错了![地名]人其实……"

正文规范

  • 主题鲜明统一,围绕一个主旨展开
  • 内容详实有深度,提供具体论据(地址、人均、必玩必吃清单)
  • 表达简洁流畅,口语化,不要书面报告腔
  • 鼓励原创,拒绝搬运
  • 必须有反常识或独家信息,不是网上随便能搜到的内容
  • 全文信息密度高,不要水字数
  • 结尾要有引导话术(关注+互动)
  • 每300字一个悬念或反转,不要超过500字才换场景

内容类型模板(根据选题选择最合适的一种)

写文章前先判断选题适合哪种内容类型。详见 references/content-types.md,包含6种内容类型的结构模板和开头写法示例。

6种内容类型速查:

类型适合场景核心特点
🎬 故事叙事型有事件/人物/转折第一人称,像短篇小说
📋 清单攻略型目的地合集/榜单信息密度高,收藏驱动
⚡ 对比揭秘型网红打假/热门vs小众制造冲突,引发辩论
🌿 沉浸体验型目的地探访/美食画面感强,文字即画面
💬 人物访谈型店主故事/本地人有声音有态度
📊 数据盘点型年度总结/榜单用数字说话

排版规范

  • 章节标题用 emoji 装饰:🌸 一、xxx
  • 正文段落用 emoji 开头:🌼 说到四月...
  • 列表项用 emoji:<li>🦐 必吃推荐:...</li>
  • 适当分段,避免过度加粗
  • 章节控制在3-4个,每个章节要有明确的信息增量

文章结构模板

<!-- 封面占位 -->
<p><img src="COVERIMG_URL" /></p>

<h2>🌸 一、[章节1标题]</h2>
<p>🌼 [内容]</p>

<h2>🍜 二、[章节2标题]</h2>
<p>🥟 [内容]</p>

<!-- ... 3-4个章节 ... -->

<hr>
<p><em>关注【镜头逃亡·旅食记】,用镜头记录旅途,用味蕾丈量世界。</em></p>
<p><strong>#旅行 #美食 #探店 #打卡</strong></p>

图片占位符

在 HTML 正文中需要插入图片的位置使用占位符,生成图片后脚本会自动替换:

占位符说明
<p><img src="COVERIMG_URL" /></p>封面图,1张
<p><img src="CHAPIMG1_URL" /></p>章节图1
<p><img src="CHAPIMG2_URL" /></p>章节图2
<p><img src="CHAPIMG3_URL" /></p>章节图3
<p><img src="CHAPIMG4_URL" /></p>章节图4
<p><img src="CHAPIMG5_URL" /></p>章节图5
<p><img src="CHAPIMG6_URL" /></p>章节图6

字数要求

800-1500 字(不含 HTML 标签)。


第三步:生成配图

image_generate 生成 7 张图,保存到 /tmp/

# 封面图
image_generate "旅行/美食主题封面,高清,电影感,温馨氛围,浅景深,柔和色调" -> /tmp/cover.png

# 章节图1-6
image_generate "具体场景描述,高清,摄影作品,电影感,浅景深" -> /tmp/chap1.png ~ /tmp/chap6.png

图片 prompt 规范:

  • 必须包含:具体场景 + 标志性元素 + 摄影风格
  • 风格词:摄影作品、高清、电影感、温馨氛围(美食类用:烟火气/温馨家常)、浅景林、柔和色调
  • 不要只写目的地名称,要有视觉元素

第四步:保存文件

# 保存文章HTML
标题保存到:/tmp/article_title.txt
内容保存到:/tmp/article.html

# 文件名格式
/tmp/cover.png        # 封面
/tmp/chap1.png ~ /tmp/chap6.png  # 章节图

第五步:创建草稿

python3 /root/.openclaw/workspace/skills/wechat-daily-article/scripts/create_draft.py \
  "$(cat /tmp/article_title.txt)" \
  "/tmp/article.html"

脚本会自动:

  1. 获取 access_token
  2. 上传所有图片到微信,获得永久 URL
  3. 替换 HTML 中的本地路径和占位符
  4. 自动注入 emoji 关键词
  5. 清理标题重复
  6. 创建草稿箱草稿

飞书通知(可选)

草稿创建成功后,可通过飞书通知:

# 获取 token
TOKEN=$(curl -s -X POST 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' \
  -H 'Content-Type: application/json' \
  -d '{"app_id": "<YOUR_APP_ID>", "app_secret": "<YOUR_APP_SECRET>"}' \
  | grep -o '"tenant_access_token":"[^"]*"' | cut -d'"' -f4)

# 发送文本
curl -s -X POST 'https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id' \
  -H "Authorization: Bearer ${TOKEN}" \
  -H 'Content-Type: application/json' \
  -d '{"receive_id": "<RECEIVER_OPEN_ID>", "msg_type": "text", "content": "{\"text\": \"📝 公众号文章已生成\\n标题:'$(cat /tmp/article_title.txt)'\\n请前往公众号后台草稿箱查看发布\"}"}'

内容选题方向(优先级排序)

当前账号「镜头逃亡·旅食记」已验证高效的方向,按优先级排列:

优先级类型示例选题优势
⭐⭐⭐时效热点追击「淄博又火了?五一后淄博人少的正确打开方式」平台流量倾斜,24小时内必须发
⭐⭐⭐清单合集「成都人私藏的7条街,好吃程度本地人都服」收藏驱动,分享率高
⭐⭐反常识/打假「被小红书骗去吃的3家网红店 vs 本地人真爱店」引发讨论,评论区活跃
⭐⭐城市专题深度「不是洪崖洞,是这5条老街才是真的重庆」建立地域权威性
季节刚需「五一出游:避开人挤人的6个小众目的地」搜索流量大,长尾效应强

季节时间节点提醒:

  • 五一前1周:出游攻略类搜索峰值
  • 清明/端午:短途周边游攻略
  • 暑假:亲子游、小众目的地
  • 年底:美食年终盘点

发布时间建议

内容类型最佳发布时间原因
旅游攻略周二/四 早上9点上班族刷手机高峰,提前收藏周末
美食探店周五/六 下午5点决定周末去哪吃
热点追击事件发酵24小时内时效性决定传播量
清单合集周六/日 上午10点休闲阅读场景,收藏率高

抖音图文发布规范

当用户要求发布抖音图文、探店内容、种草笔记时触发。

内容规范

  • 标题:≤20字,简洁有力,如「杭州人都去这家!」
  • 正文:≤1000字,分3-5段,每段 emoji + 内容(2-3句话),口语化、有共鸣感
  • 图片:最少7张,高度相关,图片比例 3:4 或 4:3

正文结尾格式(必须同时包含)

互动引导 + 公众号引流 + 二维码引导
例如:
你们觉得呢?👇
关注公众号【镜头逃亡·旅食记】获取更多美食探店攻略
扫码下方二维码 · 免费订阅全文

飞书发送流程

  1. 获取飞书 token(每次重新获取)
  2. 发送文字消息(标题+正文)到 open_id: <RECEIVER_OPEN_ID>
  3. 上传并发送7张图片(每张单独发送)
  4. 上传图片时必须加 image_type=message 参数,否则400错误!
    • 正确格式:multipart/form-data 包含 image_type=messageimage 两个字段
  5. 发送公众号二维码图 /tmp/wechat_qr.jpg

飞书图片上传关键(修复)

常见错误: file_type='file'file_type='image' → 400 Invalid request param

正确方式:

  • POST /open-apis/im/v1/images
  • multipart/form-data 中加 image_type=message 字段(不是 file_type!)
  • 参考脚本:scripts/create_draft.py

定时任务配置

{
  "name": "公众号文章每日创作",
  "schedule": "cron 5 12 * * *",
  "payload": {
    "kind": "agentTurn",
    "message": "执行公众号文章每日创作流程。参考 skill: wechat-daily-article",
    "timeoutSeconds": 3600
  },
  "delivery": {
    "mode": "announce",
    "channel": "feishu",
    "to": "user:<RECEIVER_OPEN_ID>"
  }
}

相关文件

  • scripts/create_draft.py — 草稿创建脚本(上传图片 + 写草稿 + emoji注入 + 排版美化)
  • references/image-prompts.md — 图片 prompt 规范与示例
  • references/seo-guidelines.md — 公众号 SEO 规范(本文为升级版,冲突处以本文为准)

公众号信息

  • 名称:镜头逃亡·旅食记
  • 简介:用镜头记录旅途,用味蕾丈量世界。每一次出发,都是一场与美好相遇的逃亡。
  • 二维码图/tmp/wechat_qr.jpg
  • 飞书接收者 open_id<RECEIVER_OPEN_ID>
  • 飞书 app_id<YOUR_APP_ID>
  • 飞书 app_secret<YOUR_APP_SECRET>

Comments

Loading comments...