微信公众号每日文章创作
自动化工作流,覆盖从热点发现到草稿箱保存的完整环节。
工作流程
搜索热点 → 选题诊断 → 写文章(HTML)→ 生成7张配图 → 保存草稿
第一步:搜索热点
用 web_search 搜索以下关键词组合,获取当日热点:
「今日旅游热点」「今日美食热点」「小红书旅游爆款笔记」「抖音美食热门」
从微博、小红书、抖音、知乎等平台收集热度最高的话题。旅游和美食方向优先。
第二步:写文章
⚠️ 创作前先自检(账号问题诊断检查清单)
写文章前,对照以下问题检查选题和标题,发现问题必须调整:
❌ 已踩坑,避开这些模式:
- 标题过于四平八稳,没有分享钩子 → 必须改!
- 「本地人私藏」「全网爆火」等泛泛表述 → 换成具体数字/反差/独家发现
- 内容同质化,和其他公众号角度一样 → 必须换角度!
- 纯干货罗列,没有情绪共鸣 → 加故事/反常识/引发好奇
✅ 好选题的自检标准:
标题规范(升级版 — 爆款驱动)
核心公式:地域 + 数字 + 情绪刺激 + 好奇缺口
| ❌ 旧版(太平) | ✅ 升级版(爆款) |
|---|
| 成都美食|本地人私藏的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条街,好吃程度外地人不知道(地域+品类+价值)
⑤ 搜一搜优化自检(每次必查)
写完文章后,对照检查:
开头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"
脚本会自动:
- 获取 access_token
- 上传所有图片到微信,获得永久 URL
- 替换 HTML 中的本地路径和占位符
- 自动注入 emoji 关键词
- 清理标题重复
- 创建草稿箱草稿
飞书通知(可选)
草稿创建成功后,可通过飞书通知:
# 获取 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
正文结尾格式(必须同时包含)
互动引导 + 公众号引流 + 二维码引导
例如:
你们觉得呢?👇
关注公众号【镜头逃亡·旅食记】获取更多美食探店攻略
扫码下方二维码 · 免费订阅全文
飞书发送流程
- 获取飞书 token(每次重新获取)
- 发送文字消息(标题+正文)到 open_id: <RECEIVER_OPEN_ID>
- 上传并发送7张图片(每张单独发送)
- 上传图片时必须加
image_type=message 参数,否则400错误!
- 正确格式:
multipart/form-data 包含 image_type=message 和 image 两个字段
- 发送公众号二维码图
/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>