Skill: jimo970/wechat-daily-article (version 1.6.1)

--- name: wechat-daily-article description: 微信公众号每日文章自动创作技能。搜索热点 → 撰写SEO优化文章 → 生成配图 → 上传草稿箱。含爆款标题模板、内容类型模板、搜一搜SEO优化。 --- # 微信公众号每日文章创作 自动化工作流，覆盖从热点发现到草稿箱保存的完整环节。 ## 工作流程 ``` 搜索热点 → 选题诊断 → 写文章（HTML）→ 搜索配图 → 保存草稿 ``` --- ## 第一步：搜索热点 用 `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字内）必须出现：**[地域]+[品类] 关键词组合 ```html <!-- ✅ 正确：开头即埋词 --> <p>成都有条巷子，藏着7家「土著才知道」的馆子，连出租车司机换班都要先去吃一碗。</p> <!-- ❌ 错误：开头没有关键词，前100字都被浪费 --> <p>旅行的意义是什么？大概是在陌生的地方找到惊喜……（泛泛而谈，搜不到）</p> ``` **正文中多处长尾词：每个章节至少出现1次**[地域]+[品类]组合 --- #### ③ 结尾标签（必须完整保留） ```html <hr> <p><em>关注【镜头逃亡·旅食记】，用镜头记录旅途，用味蕾丈量世界。</em></p> <p><strong>#旅行 #美食 #探店 #打卡 #[具体地域] #[具体品类]</strong></p> <p>转发给朋友，TA会感谢你！👇</p> ``` **结尾行动钩子（必须加）：** - 在标签后加一句**朋友圈转发诱导语**，格式：`转发给朋友，TA会感谢你！👇` - 或：`你身边有朋友计划去[地名]吗？转发给他，TA会感谢你！` - 目的：触发读者分享到朋友圈，提升社交裂变 **标签格式说明：** - 固定标签：#旅行 #美食 #探店 #打卡 - **动态标签**（每篇文章必加）：# + 地域名，如 #成都 #重庆 #杭州 - **品类标签**（可选）：#火锅 #小吃 #咖啡 #民宿 #攻略 **示例：** ```html <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个，每个章节要有明确的信息增量 --- ### 文章结构模板 ```html <!-- 封面占位 --> <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 正文中插入网络图片 URL（脚本会自动下载并上传）： | 占位符 | 说明 | |--------|------| | `<p><img src="COVERIMG_URL" /></p>` | 封面图（建议用AI生成，填入本地路径 `/tmp/cover.png`）| | `<p><img src="https://...jpg" /></p>` | 章节图，直接填网络URL，脚本自动处理 | ### 字数要求 800-1500 字（不含 HTML 标签）。 --- ## 第三步：搜索配图 用 `web_search` 搜索相关图片，找到可直接访问的图片 URL（优先选 `.jpg` / `.png` 结尾的直链）： **搜索技巧：** - 搜 `高清` `无水印` `版权free` 等关键词 - 优先选花瓣网、堆糖、WallpaperAccess 等图片站的直链 - 避免抖音/小红书等需要登录的链接 ```bash # 示例：搜火影忍者高清图 web_search "火影忍者 海报 高清 site:duitang.com OR site:huaban.com" ``` 把找到的图片 URL 直接写入 HTML（不要先下载，脚本会自动处理）： ```html <p><img src="https://images3.alphacoders.com/602/602092.jpg" /></p> ``` 封面图建议继续用 AI 生成（`image_generate`），保证品牌一致性。 --- ## 第四步：保存文件 ```bash # 保存文章HTML 标题保存到：/tmp/article_title.txt 内容保存到：/tmp/article.html ``` --- ## 第五步：创建草稿 ```bash 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. 创建草稿箱草稿 --- ## 飞书通知（可选） 草稿创建成功后，可通过飞书通知： ```bash # 获取 token [REDACTED_SECRET] -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=message` 和 `image` 两个字段 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` --- ## 定时任务配置 ```json { "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>" } } ``` --- ## 环境变量配置（必填） 首次使用前设置以下环境变量： ```bash export WECHAT_APPID="你的微信公众号AppID" export WECHAT_APPSECRET="你的微信公众号AppSecret" export FEISHU_APP_ID="飞书机器人AppID" export FEISHU_APP_SECRET="飞书机器人AppSecret" export FEISHU_USER_OPEN_ID="接收通知的飞书用户open_id" ``` ## 相关文件 - `scripts/create_draft.py` — 草稿创建脚本（上传图片 + 写草稿 + emoji注入 + 排版美化） - `references/image-prompts.md` — 图片 prompt 规范与示例 - `references/seo-guidelines.md` — 公众号 SEO 规范（本文为升级版，冲突处以本文为准） --- ## 公众号信息 - **名称**：镜头逃亡·旅食记 - **简介**：用镜头记录旅途，用味蕾丈量世界。每一次出发，都是一场与美好相遇的逃亡。 - **二维码图**：`/tmp/wechat_qr.jpg` - **接收通知**：通过飞书机器人发送，open_id 由 FEISHU_USER_OPEN_ID 环境变量指定


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal:  | SkillSpector:  ()